Il tuo messaggio mi ha
costretto ad inseguire il tentativo di approfondire la conoscenza del componente
gb.sdl.sound...
Dopo varie prove ecco di seguito cosa ne ho ricavato.
Allora... bisogna distinguere la classe
Music dalla classe
Sound.
La classe
Music consente di ascoltare
un solo file sonoro (.wav, .mp3, .ogg) per volta.
La classe
Sound consente, invece, di ascoltare
contemporaneamente fino a 32 file sonori (di tipo .wav).
In questo caso, per far eseguire un file sonoro, è
necessario caricarlo in memoria assegnando ad una specifica variabile di tipo "
Sound" un singolo file sonoro.
Ogni file sarà fatto suonare in un canale, cosicché è possibile decidere mediante la classe "
Channels" quanti canali saranno attivati per la riproduzione, e dunque quanti file, caricati in memoria nelle predette variabili, saranno eseguiti.
La classe "
Channels" ci consente, inoltre, di impostare il volume all'interno di una gamma tra 0.00 e 1 .
Dalla teoria alla pratica.....
Per comprendere meglio quanto detto sopra, facciamo questo test: tentiamo di far eseguire tre file sonori ad entrambe le Classi prima descritte.
Prova con la Classe
Sound:
Public Sub Button1_Click()
' dichiariamo tre variabili del tipo "Sound":
Dim s1, s2, s3 As Sound
' Attiviamo, però, soltanto 2 canali.
' Questo determinerà l'esecuzione di solo due file sonori:
Channels.Count = 2
' Impostiamo il volume di quei 2 canali attivati a metà:
Channels.Volume = 0.5
'...carichiamo "in memoria" (come dice la documentazione) tre file sonori.
' Dovremo caricarli ciascuno in una singola variabile di tipo della classe "Sound":
s1 = New Sound("/alibaba.wav")
s2 = New Sound("/aladino.wav")
s3 = New Sound("/simbad.wav")
' Li andiamo a far eseguire... "contemporaneamente":
s1.Play()
s2.Play()
s3.Play()
'...ma poiché abbiamo attivato solo due canali,
' sentiremo soltanto i primi due file sonori.
End
Prova con la Classe
Music:
Public Sub Button1_Click()
'...nel tentativo disperato di far eseguire contemporaneamente
' anche qui tre file sonori, li carichiamo tutti e tre:
Music.Load("/alibaba.wav")
Music.Load("/aladino.wav")
Music.Load("/simbad.wav")
' Poi, come vada vada, cerchiamo di eseguirli contemporaneamente:
Music.Play
Music.Play
Music.Play
'...non c'è niente da fare, ahimé: sarà eseguito soltanto l'ultimo file sonoro del gruppo !
' Ugualmente si fa cilecca, anche provando ad usare (come abbiamo fatto per la Classe "Sound")
' delle variabili di tipo "Music".
End
segue..........