De una {tabla con sonidos} reproducirlos de manera aleatoria. Cuando empiece un sonido, debe escucharse entero, y luego debe reproducirse el siguiente

sonido1 = audio.loadSound( "sonido1.mp3" ) sonido2 = audio.loadSound( "sonido2.mp3" ) sonido3 = audio.loadSound( "sonido3.mp3" ) sonidos = {sonido1, sonido2, sonido3} for i=1, #sonidos do math.randomseed(os.time()) aleatorio = math.random (#sonidos) playSound () audio.play (sonidos[aleatorio], {onComplete = ¿?¿?¿?¿?¿? }) table.remove (sonidos, aleatorio) end

De esta manera se reproducen los 3 sonidos de golpe, ya que al ejecutarlo, no se como ahcer para que cuando se reproduzca el sonido 1, se pare la ejecución del programa. y Cuando se acabe, siga por el siguiente que le toque…

AYUDA POR FAVOR!

ayudaaaaaaaaaaaaaaaa

Buenas Javi. Lo que veo es que al pasar por el for hasta el número de veces del array 3 hecha las 3 canciones a la vez. Ahora mismo no puedo ayudarte porque he formateado el pc. Una vez instale y lo tenga listo le pego un vistazo… Un saludo

Prueba esto… No tengo el pc delante para saber si funciona… sonido1 = audio.loadSound( “sonido1.mp3” ) sonido2 = audio.loadSound( “sonido2.mp3” ) sonido3 = audio.loadSound( “sonido3.mp3” ) sonidos = {sonido1, sonido2, sonido3} i = 1 function reproducirCancion() math.randomseed(os.time()) playSound () audio.play (sonidos[i], {onComplete = reproducirCancion }) table.remove (sonidos, i) i = i + 1 end reproducirCancion() Pruébalo y me dices… Como t digo no tengo el pc delante y no lo he probado.

Prueba esto… No tengo el pc delante para saber si funciona… sonido1 = audio.loadSound( “sonido1.mp3” ) sonido2 = audio.loadSound( “sonido2.mp3” ) sonido3 = audio.loadSound( “sonido3.mp3” ) sonidos = {sonido1, sonido2, sonido3} i = 1 function reproducirCancion() math.randomseed(os.time()) playSound () audio.play (sonidos[i], {onComplete = reproducirCancion }) table.remove (sonidos, i) i = i + 1 end reproducirCancion() Pruébalo y me dices… Como t digo no tengo el pc delante y no lo he probado.

Gracias, pero esta solución no vale, porque pierdo la aleatoriedad…

Quiero que cada vez que ejecute el programa, se reproduzcan en orden aleatorio, y hasta que no acabe una, no salte la siguiente.

Ayudaaaaaaa!!!

Necesito ayuda por favor!!!

Hola Javi acabo de leer esto y aunque ya pasaron unos días se me ocurre que puedes hacer esto. Espero que te sirva.

Saludos

math.randomseed(os.time())

sonido1 = audio.loadSound( “sonido1.mp3” )

sonido2 = audio.loadSound( “sonido2.mp3” )

sonido3 = audio.loadSound( “sonido3.mp3” )

sonidos = {sonido1, sonido2 ,sonido3}

local function numerosAleatorios (num)

local vector = {}

for i=1,num do

local bool = false

repeat

vector[i] = math.random( num )

bool = true

for j=1,#vector-1 do

if vector[j] == vector[i] then bool=false end

end

until bool == true

print (i, vector[i])

end

return vector

end

local function reproducirSonido (vector)

local i=1

local function sonido()

audio.play( sonidos[vector[i]], {onComplete =

function()

if i<#vector then

i=i+1

sonido()

end

end

})

end

sonido()

end

reproducirSonido(numerosAleatorios(3))

ayudaaaaaaaaaaaaaaaa

Buenas Javi. Lo que veo es que al pasar por el for hasta el número de veces del array 3 hecha las 3 canciones a la vez. Ahora mismo no puedo ayudarte porque he formateado el pc. Una vez instale y lo tenga listo le pego un vistazo… Un saludo

Prueba esto… No tengo el pc delante para saber si funciona… sonido1 = audio.loadSound( “sonido1.mp3” ) sonido2 = audio.loadSound( “sonido2.mp3” ) sonido3 = audio.loadSound( “sonido3.mp3” ) sonidos = {sonido1, sonido2, sonido3} i = 1 function reproducirCancion() math.randomseed(os.time()) playSound () audio.play (sonidos[i], {onComplete = reproducirCancion }) table.remove (sonidos, i) i = i + 1 end reproducirCancion() Pruébalo y me dices… Como t digo no tengo el pc delante y no lo he probado.

Prueba esto… No tengo el pc delante para saber si funciona… sonido1 = audio.loadSound( “sonido1.mp3” ) sonido2 = audio.loadSound( “sonido2.mp3” ) sonido3 = audio.loadSound( “sonido3.mp3” ) sonidos = {sonido1, sonido2, sonido3} i = 1 function reproducirCancion() math.randomseed(os.time()) playSound () audio.play (sonidos[i], {onComplete = reproducirCancion }) table.remove (sonidos, i) i = i + 1 end reproducirCancion() Pruébalo y me dices… Como t digo no tengo el pc delante y no lo he probado.

Gracias, pero esta solución no vale, porque pierdo la aleatoriedad…

Quiero que cada vez que ejecute el programa, se reproduzcan en orden aleatorio, y hasta que no acabe una, no salte la siguiente.

Ayudaaaaaaa!!!

Necesito ayuda por favor!!!

Hola Javi acabo de leer esto y aunque ya pasaron unos días se me ocurre que puedes hacer esto. Espero que te sirva.

Saludos

math.randomseed(os.time())

sonido1 = audio.loadSound( “sonido1.mp3” )

sonido2 = audio.loadSound( “sonido2.mp3” )

sonido3 = audio.loadSound( “sonido3.mp3” )

sonidos = {sonido1, sonido2 ,sonido3}

local function numerosAleatorios (num)

local vector = {}

for i=1,num do

local bool = false

repeat

vector[i] = math.random( num )

bool = true

for j=1,#vector-1 do

if vector[j] == vector[i] then bool=false end

end

until bool == true

print (i, vector[i])

end

return vector

end

local function reproducirSonido (vector)

local i=1

local function sonido()

audio.play( sonidos[vector[i]], {onComplete =

function()

if i<#vector then

i=i+1

sonido()

end

end

})

end

sonido()

end

reproducirSonido(numerosAleatorios(3))