PDA

Visualizza la versione completa : [C++] Cattura audio da microfono


gianvituzzi
03-12-2009, 11:03
Salve,

a scopo didattico avrei bisogno di scrivere un programma che registri 10 secondi di audio dal microfono incorporato del laptop. volevo sapere se è una cosa preferibile da farsi in visual c++ o anche visualbasic. Quali sono le API con il quale devo interagire? sto su windows vista.

Grazie

ESSE-EFFE
03-12-2009, 12:10
a scopo didattico avrei bisogno di scrivere un programma che registri 10 secondi di audio dal microfono incorporato del laptop. volevo sapere se è una cosa preferibile da farsi in visual c++ o anche visualbasic.

Tra i due non saprei. Non c'è molta differenza comunque, il grosso del lavoro è la chiamata alle API.


Quali sono le API con il quale devo interagire? sto su windows vista.

Come ti ho già indicato altrove, la cosa non è banale, e le funzioni da utilizzare sono le waveInXXX. Il tutto diventa più semplice se trovi una libreria o un componente che faccia al caso tuo.

HTH,

gianvituzzi
04-12-2009, 00:32
ok, ho iniziato a giocare un pò con la API waveform ma per adesso solo tramite perl, ho provato a vedere quali device audio sono disponibli sul mio sistema e relative informazioni. Dato chde mi interessa registrare ho estrapolato solo i device WAVEIN



'MIXER0' => {
'voices' => 0,
'product_id' => 104,
'manufacturer_id' => 1,
'name' => 'Altoparlanti (IDT High Definiti',
'destinations' => 1,
'driver_version' => '6.0'
}

'WAVEIN1' => {
'formats' => 1048575,
'product_id' => 101,
'channels' => 2,
'manufacturer_id' => 1,
'name' => 'Missaggio stereo (IDT High Defi',
'driver_version' => '6.0'
}

'WAVEIN0' => {
'formats' => 1048575,
'product_id' => 101,
'channels' => 2,
'manufacturer_id' => 1,
'name' => 'Gruppo microfoni (IDT High Defi',
'driver_version' => '6.0'
}

'WAVEIN2' => {
'formats' => 1048575,
'product_id' => 101,
'channels' => 2,
'manufacturer_id' => 1,
'name' => 'Mic estermo (IDT High Definitio',
'driver_version' => '6.0'
}


Immagino che channels rappresenti la stereofonia, mentre non so a cosa si riferisce formats, cmq per adesso il dato più importante è name che mi ritorna in ordine:

WAVEIN0 Gruppo microfoni (IDT High Defi
WAVEIN1 Missaggio stereo (IDT High Defi
WAVEIN2 Mic estermo (IDT High Definitio

Allora, per registrare dal mic interno quale device dovrò selezionare?? 0 oppure 1 ??

grazie

MItaly
04-12-2009, 00:37
Se vuoi registrare dal microfono, direi 2. Comunque fai sempre a tempo a cambiare, credo che questo sia attualmente l'ultimo dei problemi.

gianvituzzi
04-12-2009, 00:43
tanto per curiosità cosa sono: Missaggio stereo e Gruppo microfoni ?

MItaly
04-12-2009, 00:46
"Missaggio stereo" di solito è l'output corrente della scheda audio; "gruppo microfoni" non ne ho idea. Comunque puoi fare esperimenti direttamente utilizzando un programma come Audacity per registrare e selezionando nel mixer di Windows l'input che deve impiegare.

gianvituzzi
04-12-2009, 01:06
a dire la verità credo che il microfono incorporato (interno) nel laptop sia proprio Gruppo microfoni

http://theartofweb.net/gruppomic.PNG

gianvituzzi
04-12-2009, 01:14
mi domando se c'è qualche differenza nel registrare audio dal microfono interno usando la Waveform API oppure la Media Control Interface (MCI)...

MItaly
05-12-2009, 15:09
Dovrebbero essere due API differenti per fare la stessa cosa; tuttavia mi pare che MCI sia obsoleto.

Loading