Oppure

Loading
06/10/10 16:25
jack92
Ciao a tutti
Esiste un modo per riprodurre il suono , del metodo "beep(frq,tempo)", sulle 'casse esterne' del PC ? O è pura fantascienza :D
aaa
07/10/10 10:29
Il Totem
Sulle casse esterne, quindi intendi come un suono normale (wav, mp3, ogg, ecc...)? Sì, è possibile.
Potresti creare un file wave con una sola onda di data frequenza e durata e riprodurlo. Se guardi il mio progetto Music Rider, troverai nella directory bin una libreria compilata che si chiama WaveLib. Puoi importare quella libreria e usare la classe Wave per creare un'onda. Esempio:
Dim w As Wave = Wave.MakeWave(1, 44100, 16, 2.0f, 440, 100)

Crea un'onda in mono (1 canale), a 44100 campioni al secondo, 16 bit, che dura 2 secondi ha una frequenza di 440Hz e il 100% di volume.
W.Save("C:\onda.wav") 'salva l'onda


Per l'altoparlante interno c'è la funzione VisualBaisc.Beep, ma non ti fa scegliere la frequenza.
aaa
07/10/10 14:43
jack92
Grazie mille per la risposta totem ma non c'è un modo più semplice tipo ... (codice inventato sul momento :D)
[DllImport("Kernel32.dll")]
public static extern bool Beep(UInt32 frequency, UInt32 duration);

audio.play(beep(100,200));

aaa
07/10/10 14:57
Il Totem
Quella funzione usa il PC Speaker, ossia l'altoparlante interno del computer. Non c'entra nulla con la scheda audio e non è influenzato dal volume di sistema. Le casse esterne non hanno quindi nulla a che fare con il pc speaker.

P.S.: Non capisco quell'audio.play; beep restituisce un valore booleano. Inoltre, beep è una funzione sincrona e non avrebbe comunque alcun senso.

P.P.S.: Festeggio il 3000esimo messaggio!
Ultima modifica effettuata da Il Totem 07/10/10 14:57
aaa
08/10/10 7:30
jack92
Ok , allora userò la tua libreria "WaveLib" , grazie :)
Postato originariamente da Il Totem:

P.P.S.: Festeggio il 3000esimo messaggio!

Congratulazioni !! :D
aaa