PDA

Visualizza la versione completa : [C] Come faccio eseguire un suono?


=tW=
04-11-2006, 18:49
ciao a tutti!
io sto iniziando a programmare in C, ho una curiosit: come faccio a far suonare magari un MP3 in un programma da console? mi piacerebbe capire e avere uno spunto per poi studiarci sopra...vi ringrazio in anticipo.

P.S. se vi pu essere utile, uso il Code::Blocks come compilatore...non so, l'ho scritto xke molti usano il dev-c++ e se non sbaglio qualche lieve differenza tra i due c'...

MItaly
04-11-2006, 21:36
Non un lavoro semplice... lavori sotto Windows o sotto Linux?

XWolverineX
05-11-2006, 09:46
Windows o Linux io ti consiglio vivamente Audiere (http://audiere.sf.net)

=tW=
05-11-2006, 19:06
lavoro sia con windows che con linux, su entrambi uso il code::blocks...scusa la mancanza :)

XWolverineX
05-11-2006, 19:14
Ripeto, audiere, anche se ora il sito non va.

UltraBeginner
06-11-2006, 16:17
Guarda io sono riuscito a farle suonare...se ti serve ti posto il codice...credimi alla fine e abbastanza facile e poi se c sono riuscito io che non ho neanke finito di imparare il C... :D :D :D

saluti!

norbix
17-11-2006, 16:38
puoi postare il sorgente per favore?

UltraBeginner
17-11-2006, 17:22
chiaro che non e nulla di ottimizzato, pero funzia! :D se poi vai sul sito di audiere ce la descrizione di tutte le funzioni (puoi far suonare persino il rumore bianco, i file mp3 etc)




#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <time.h>
#include <conio.h>
#include "audiere.h"

void wait ( float seconds );
using namespace audiere;
using namespace std;
int main(int argc, char *argv[])
{

int i;
char musicfilename[100],c;
cout << "Tastiera musicale, le note vanno dal Do al Do successivo"<<endl;
cout << "Premi dalla 'a' alla 'k', 'e' se vuoi uscire dal programma "<<endl;


AudioDevicePtr device(OpenDevice()); //apre un device
SampleSourcePtr Do (CreateTone(261.6)); // qui creo vari toni a frequenza diverse
SampleSourcePtr Re (CreateTone(293.7));
SampleSourcePtr Mi (CreateTone(329.7));
SampleSourcePtr Fa (CreateTone(349.2));
SampleSourcePtr Sol (CreateTone(392));
SampleSourcePtr La (CreateTone(440));
SampleSourcePtr Si (CreateTone(493));
SampleSourcePtr DoS (CreateTone(523.3));

OutputStreamPtr Do1(OpenSound(device,Do,true)); // qua si creano le varie note associandole ai toni prima creati
OutputStreamPtr Re1(OpenSound(device,Re,true));
OutputStreamPtr Mi1(OpenSound(device,Mi,true));
OutputStreamPtr Fa1(OpenSound(device,Fa,true));
OutputStreamPtr Sol1(OpenSound(device,Sol,true));
OutputStreamPtr La1(OpenSound(device,La,true));
OutputStreamPtr Si1(OpenSound(device,Si,true));
OutputStreamPtr DoS1(OpenSound(device,DoS,true));





c=getch();
while(c!='e')
{
switch(c)
{
case 'a':
Do1->play(); // play fa suonare gli output stream che hai definito prima
wait(0.1);
Do1->stop();
break;

case 's':
Re1->play();
wait(0.1);
Re1->stop();
break;

case 'd':
Mi1->play();
wait(0.1);
Mi1->stop();
break;

case 'f':
Fa1->play();
wait(0.1);
Fa1->stop();
break;

case 'g':
Sol1->play();
wait(0.1);
Sol1->stop();
break;

case 'h':
La1->play();
wait(0.1);
La1->stop();
break;

case 'j':
Si1->play();
wait(0.1);
Si1->stop();
break;

case 'k':
DoS1->play();
wait(0.1);
DoS1->stop();
break;
}
c=getch();
}
system("PAUSE");
return EXIT_SUCCESS;
}



void wait ( float seconds )
{
float endwait;
endwait = clock () + seconds * CLK_TCK ;
while (clock() < endwait) {}
}

lloyd27
17-11-2006, 18:42
questo c++
mi sembra che lui avesse chiesto in C normale

norbix
17-11-2006, 20:39
c o c++, secondo me uno dovrebbe saperli tutti e 2 o non saperli proprio.....

Loading