Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET] Riprodurre un beep su altoparlanti esterni
Forum - C# / VB.NET - [VB.NET] Riprodurre un beep su altoparlanti esterni

Avatar
jack92 (Member)
Pro


Messaggi: 100
Iscritto: 06/08/2010

Segnala al moderatore
Postato alle 18:25
Mercoledì, 06/10/2010
Ciao a tutti
Esiste un modo per riprodurre il suono , del metodo "beep(frq,tempo)", sulle 'casse esterne' del PC ? O è pura fantascienza :D  


"Il sapere umano appartiene al mondo"
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
1
Down
V
Segnala al moderatore
Postato alle 12:29
Giovedì, 07/10/2010
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:
Codice sorgente - presumibilmente C# / VB.NET

  1. 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.
Codice sorgente - presumibilmente Plain Text

  1. W.Save("C:\onda.wav") 'salva l'onda



Per l'altoparlante interno c'è la funzione VisualBaisc.Beep, ma non ti fa scegliere la frequenza.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
jack92 (Member)
Pro


Messaggi: 100
Iscritto: 06/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 16:43
Giovedì, 07/10/2010
Grazie mille per la risposta totem ma non c'è un modo più semplice tipo ... (codice inventato sul momento :D)
Codice sorgente - presumibilmente C++

  1. [DllImport("Kernel32.dll")]
  2. public static extern bool Beep(UInt32 frequency, UInt32 duration);
  3.  
  4. audio.play(beep(100,200));




"Il sapere umano appartiene al mondo"
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
0
Down
V
Segnala al moderatore
Postato alle 16:57
Giovedì, 07/10/2010
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 il 07/10/2010 alle 16:57


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
jack92 (Member)
Pro


Messaggi: 100
Iscritto: 06/08/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 9:30
Venerdì, 08/10/2010
Ok , allora userò la tua libreria "WaveLib" , grazie :)
Testo quotato

Postato originariamente da Il Totem:

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


Congratulazioni !! :D


"Il sapere umano appartiene al mondo"
PM