PDA

Visualizza la versione completa : c++ programma che emetta suoni


iacoposk8
19-01-2010, 17:13
ciao a tutti... devo creare un programmino che a seconda del tasto che schiaccio sulla tastiera, mi emetta un suono... però se schiaccio due tasti mi deve dare 2 suoni sovrapposti e se li schiaccio a ripetizioni, molto velocemente si deve sentire giusto... ovvero tanti suoni quante volte schiaccio il tasto... però non me li deve accodare e far sentire in ritardo se è troppo veloce... praticamente l'inizio del secondo suono di deve sovrapporre con la fine del primo suono..
mi potreste indirizzare ad una funzione o un modo per creare questo programma??
grazie

MItaly
19-01-2010, 18:19
Piattaforma?

iacoposk8
19-01-2010, 19:56
piattaforma??
mi sa che l'ho sempre chiamata in un altro modo
comunque lavoro su windows con visual c++ in c/c++
spero di averci preso :D

MItaly
19-01-2010, 22:50
Potresti creare una normale applicazione GUI win32, processare l'input tramite i messaggi ricevuti dalla tua finestra ed emettere i suoni tramite le API del MIDI.

iacoposk8
20-01-2010, 07:54
com'è l'applicazione GUI win32??
è un modo diverso di aprire il progetto?? io disolito apro progetto console win32...
che differenze ci sono??

ma poi con i suoni midi riesco a riprodurre il suono di una batteria per esempio?

iacoposk8
20-01-2010, 16:42
perchè su google ho trovato solo la funzione beep, che emette un segnale acustico standard, io posso cambiare poche cose... io vorrei poter riprodurre un file wav o mp3

MItaly
20-01-2010, 16:47
Originariamente inviato da iacoposk8
com'è l'applicazione GUI win32??
è un modo diverso di aprire il progetto?? io disolito apro progetto console win32...
È un tipo di progetto differente, comunque se non hai mai programmato win32 sarebbe meglio che prima ti leggessi un libro a proposito...


che differenze ci sono??
Un'applicazione console è un'applicazione che lavora in modalità testo, di solito in una finestra a sfondo nero e scritte bianche. Un'applicazione GUI è un'applicazione "normale". L'ho citata perché vuoi processare le pressioni di tasti in maniera immediata e non bufferizzata, ma se non hai mai scritto applicazioni GUI forse è meglio usare le funzioni non-standard di input non bufferizzato su console (per quanto siano piuttosto limitate).


ma poi con i suoni midi riesco a riprodurre il suono di una batteria per esempio?
Sì; se non sbaglio basta usare il canale 10.

perchè su google ho trovato solo la funzione beep, che emette un segnale acustico standard, io posso cambiare poche cose... io vorrei poter riprodurre un file wav o mp3
Questo è un altro paio di maniche... per i wav si può usare la PlaySound, per gli mp3 ti devi appoggiare a librerie di terze parti o ad applicazioni separate.

iacoposk8
20-01-2010, 17:02
no, wav va più che bene... ora mi leggo come usare la PlaySound..
ma poi il programma quando esegue il suono, non esegue altre istruzioni, finchè il suono non è finito o esegue il suono e subito esegue anche le altre righe di codice??

MItaly
20-01-2010, 17:32
Dipende dal flag SND_ASYNC. Leggiti la documentazione (http://msdn.microsoft.com/en-us/library/dd743680%28VS.85%29.aspx) della funzione.

iacoposk8
21-01-2010, 17:55
per fare una prova ho scritto:


#include <windows.h>
int main()
{
PlaySound(TEXT("D:\liljon.wav"), NULL, SND_ASYNC);
}

e mi dice sulla line 4:
warning C4129: 'l': sequenza di caratteri di escape sconosciuta

Loading