Pagina 1 di 2
[c++] gestire microfono con linux
Inviato: mar 21 dic 2004, 14:09
da nik600
ciao a tutti...vorrei fare un programma che "ascolta" il microfono del pc...non so molto in fatto di audio..in pratica vorrei un programma che sia in grado di identificare i cambiamenti di audio...tipo contare i battiti x minuto o cose di questo tipo so programmare abbastanza in c++ ma non ho la minima idea di come interfacciarmi con la periferica audio...e soprattutto con il microfono!
<BR>
<BR>avete suggerimenti?
<BR>
<BR>grazie nik<br>
[c++] gestire microfono con linux
Inviato: mar 21 dic 2004, 14:17
da meritil
Guarda anch´io sono un caprone multimediale però posso dirti che Linux mappa ogni dispositivo come fosse un file... quindi l´interfaccia è quella classica dell´I/O su file.
<BR>Una volta individuato tale file devi aprirlo in lettura e leggere da lì.. non so però qual´è la semantica di quello che leggerai.. cioè non so dirti come interpretarlo...
<BR>Da un occhiata dentro /dev/sound li ci sono i dispositivi audio.. se scopro altro ti faccio sapere.. e tienimi aggiornato please mi interessa la faccenda^^
<BR>
<BR>Ciao<br>
[c++] gestire microfono con linux
Inviato: mar 21 dic 2004, 14:19
da useless
dai anche un occhio a cosa ti mettono a disposizione i vari header in /usr/include/alsa/.<br>
[c++] gestire microfono con linux
Inviato: mar 21 dic 2004, 16:41
da nik600
ciao
<BR>
<BR>io mi sono scaricato questo
<BR>
<BR>
http://prdownloads.sourceforge.net/xmms ... z?download
<BR>
<BR>è un plugin di xmms x registrare...domani sera do un occhio al codice e vedo cosa si può capirne!!
<BR>
<BR>
<BR>ti faccio sapere ora devo strudiare x un esame merdosissimo

<BR>
<BR>(IBM Rational Rose)
<BR>
<BR><br>
[c++] gestire microfono con linux
Inviato: mer 22 dic 2004, 11:20
da nik600
ciao!
<BR>
<BR>è possibile lavorare ad un livello molto più basso!
<BR>
<BR>come ben saprai in linux quasi tutto è un file...la periferica audio scrive sul file
<BR>
<BR>/dev/audio
<BR>
<BR>x una dimostrazione pratica ti basta fare
<BR>
<BR>cp /dev/audio ~/prova_audio
<BR>
<BR>e aspetti una decina di secondi, poi killi il processo con un CTRL+C
<BR>(altrimenti continuerebbe all´infinito, perchè la scheda audio continua ad inviare info)
<BR>
<BR>poi fai il processo inverso...
<BR>
<BR>cp /~prova_audio /dev/audio
<BR>
<BR>se stavi ascoltando musica sentirai quello che veniva riprodotto in quel momento! se hai un microfono e hai parlato mentre copiavi sentirai quello che ha registrato il microfono!
<BR>
<BR>ora dovrei capire come analizzare quel file...se lo apro con emacs non ci si capisce niente...bisognerà fare una fread()...io vorrei tagliare la frequenza e capire solo quando viene sorpassata la frequenza dei bassi!
<BR>
<BR><br>
[c++] gestire microfono con linux
Inviato: mer 22 dic 2004, 21:53
da useless
<!-- BBCode Quote Start --><TABLE BORDER=0 ALIGN=CENTER WIDTH=85%><TR><TD><font size=-1>Quote:</font><HR></TD></TR><TR><TD><FONT SIZE=-1><BLOCKQUOTE>
<BR> 22-12-2004 alle ore 11:20, nik600 :
<BR>io vorrei tagliare la frequenza e capire solo quando viene sorpassata la frequenza dei bassi!
<BR></BLOCKQUOTE></FONT></TD></TR><TR><TD><HR></TD></TR></TABLE><!-- BBCode Quote End -->
<BR>
<BR>giù di analisi di fourier

.<br>
[c++] gestire microfono con linux
Inviato: gio 23 dic 2004, 9:22
da nik600
AHIA!
<BR>
<BR>mi sono fatto male!
<BR>
<BR>ma prima di partire con fourier...come interpreto quei dati?
<BR>
<BR>cosa contengono?
<BR>
<BR>cioè è un ammasso di bit e non so come sono organizzati?
<BR>
<BR>è un vettore? di cosa? <br>
[c++] gestire microfono con linux
Inviato: gio 23 dic 2004, 11:32
da meritil
Prova a leggere l´output a blocchi da 16 (o 32 bit) , printali come interi e vedi se cambia qualcosa quando il volume si alza ...magari ti inventi una puzzonata in questo modo...
<BR>
<BR>Ciao
<BR>
<BR>ps: E´ un consiglio di m... lo so! :-] Non si sà mai....<br>
[c++] gestire microfono con linux
Inviato: gio 23 dic 2004, 20:04
da useless
premetto che quanto sto per dire è una pura supposizione:
<BR>potrebbero semplicemente essere i valori dei campioni nel tempo. dovresti provare a disegnarne un paio consecutivi su un grafico e vedere se esce una qualche forma d´onda sensata.<br>
[c++] gestire microfono con linux
Inviato: gio 23 dic 2004, 23:29
da nik600
infatti..più o meno è cosi...il problema è che per fare in modo che il grafico che esce sia sensato sono necessari almeno un paio di litri di birra!
<BR>
<BR>scherzi a parte se non altro ora c´è una base su cui lavorare...appena ho un attimo vi posto gli scrrensho dei grafinci
<BR>
<BR>comunque sostanzialmente i punti sono concentrati in due zone...tra
<BR>
<BR>+ 1 500 000 000 e 2 400 000 000 000
<BR>
<BR>e
<BR>
<BR>- 1 500 000 000 e - 2 400 000 000 000
<BR>
<BR>+ o meno i valori positivi corrispondono al volume...ma si aggiornano con un paio di secondi rispetto alla realtà<br>
[c++] gestire microfono con linux
Inviato: ven 24 dic 2004, 13:45
da useless
uhm, i valori penso siano su interi signed da 16bit, quindi compresi tra -65536 e 65535, sicuro di averli letti bene? credo che ti convenga usare short int.<br>
[c++] gestire microfono con linux
Inviato: ven 24 dic 2004, 14:49
da nik600
grazie mille della risposta!
<BR>
<BR>ora ha già molto + senso!
<BR>
<BR>se traccio un grafico dei punti ottengo + o - l´andamento del volume...e questo mi va bene!
<BR>
<BR>ma come posso fare ora a tirare fuori la frequenza dei bassi?<br>
[c++] gestire microfono con linux
Inviato: ven 24 dic 2004, 15:43
da useless
non capisco cosa intendi x "frequenza dei bassi"!<br>
[c++] gestire microfono con linux
Inviato: ven 24 dic 2004, 16:28
da nik600
a questo punto vorrei fare un filtro , tipo equalizzatore, in modo da poter fare dei controlli sulla frequenza...ad esempio
<BR>
<BR>se ho una canzone dance potrei contare i battiti x minuto...una cosa di questo tipo...
<BR>
<BR>posso già farlo con il volume...ma non è completamente corretto..<br>
[c++] gestire microfono con linux
Inviato: ven 24 dic 2004, 19:04
da useless
erm, non ho una grande idea di come si faccia, xò se passi dal dominio del tempo a quello della frequenza (w fourier), probabilmente il tutto è + semplice. dai un occhio ai sorgenti di xmms et similia vah

.<br>