Oppure

Loading
20/03/09 23:18
munkaka
ciao
sto cercando una funzione che mi riproduce un file audio (wav,mp3,wma,non importa) perchè sto creando un programma che mi legge un file di testo
il problema è che con PlaySound mi legge la prima lettera e poi passa subito alla seconda senza neanche fare a a tempo a riprodurre la prima, e cosi non mi riproduce niente perchè quando sta per riprodurre una lettera è gia a passato a quella successiva e non riproduce un bel niente
qualcuno di voi conosce un modo per fermare il programma finche non viene riprodotto il file fino alla fine? senza usare sleep perchè ogni file ha una lunghezza diversa
grazie
aaa
20/03/09 23:27
theprogrammer
Riprodurre parola per parola non ha molto senso perche' non si capirebbe nulla della parola.

Dovresti costruire un algoritmo che traduca le parole in insieme di "fonemi" e li riproduca in sequenza.
aaa
21/03/09 11:22
munkaka
si hai ragione, adesso per cominciare volevo fargli riprodurre lettera per lettera, ma poi vorrei fargli riprodurre delle sillabe
ma comunque il problema è che dove riuscire a fermare il programma quando riproduce un file, altrimenti intanto che riproduce passa gia al file successivo e non fa a tempo a riprodurre quello di prima
aaa
21/03/09 11:43
theprogrammer
Usa il flag

SND_NOSTOP
aaa
21/03/09 17:18
munkaka
adesso mi da il problema contrario
mi legge il primo e intanto passa alle lettere successive, ma non le riproduce perchè sta ancora riproducendo la prima
aaa
21/03/09 20:48
theprogrammer
E non e' quello che volevi?

Scusa, ma se non mostri il codice e non spieghi meglio, la cosa non si comprende ...
aaa
22/03/09 20:38
munkaka
si hai ragione, ecco il codice
char c;
CString ripr;
ifstream leggi ("testo.txt");

	while(!leggi.eof())
	{
		leggi.get(c);

		ripr=linea[k];
		ripr+=".wav";
		PlaySound(ripr, NULL, SND_FILENAME | SND_ASYNC);
	}

è un ciclo che mi legge un file di testo, un carattere per volta. I file audio hanno il nome del carattere. In pratica io voglio che mi legge un carattere dal file di testo e mi riproduce il file audio corrispondente. Il problema è che il codice come è adesso mi riproduce soltanto l'ultima lettera del testo, perchè quando sta per riprodurre una letttera il ciclo è già arrivato alla lettera successiva e gli da l'ordine di riprodurre la lettera attuale, che poi non farà a tempo a riprodurre, perchè sarà gia arrivato alla lettera dopo ecc. Con il comando NOSTOP fa esattamente il contrario. Mi riproduce la prima, intanto che sta riproducendo la prima è gia arrivato alla seconda, che però non riproduce perché sta ancora riproducendo la prima, allora passa alla terza, che non riproduce perchè sta ancora riproducendo la prima, ecc.
Avete soluzioni?
aaa
22/03/09 20:45
theprogrammer
Togli SND_ASYNC e inserisci SND_NOSTOP
aaa