Miten saan luettua äänikotin line-in:n signaalin peräkkäisiä arvoja suoraan vaikkapa 1000 alkion taulukkoon tai tietyn ajan jakson arvot taulukkoon VB6:ssa? Ei tiedostoon tallentamisen kautta, koska se on liian hidasta. Kaikkia arvoja ei tarvitse saada käsittelyyn, ainoastaan lyhyitä ja yhtenäisiä pätkiä.
-JuGe-
Mikäli sinulla on vanha windows (95 ..98), jossa äänenvoimakkuuden säätöpanelissa näkyy äänenvoimakkuuden mittari, niin siitä lukemalla saa yksittäisiä arvoja talteen.
Koodi on pitkä, joten katso ensin, näkyykö Options/recording ja Options/playback paneleissa äänenvoimakkuutta kuvaavaa mittaria, laitan sitten linkin koodiin.
Mieluummin tekisin tuon homman XP:lle, mutta löytyy minulta myös 98 kone, josta äänenvoimakkuuden mittarit löytyvät.
Käsittykseni äänisignaaleista ja äänisignaalin lukemisesta on seuraavan lainen:
Ko. äänenvoimakkuudenmittari näyttää enemmänkin signaalin amplitudin arvoja, kuin signaalin todellisia jännitteen vaihtelun arvoja tietyissä ajankohdissa. Ääni signaali saa jännitteen arvoja nollatason molemmin puolin.
Näytteenottotajuus parhaalla laadulla (CD-Laatu) on 44,1 kHz, eli signaalista saa otettua 44100 arvoa (näytettä) sekunnissa. Olisi tärkeää saada mahdollisimman yhtenäinen kuva signaalista.
Äänikortti muuttaa analogisen signaalin suureksi kasaksi digitaalisia arvoja, jotka voidaan tallentaa esim. wave tiedostoksi. Tarkoituksena on saada suoraan signaalin arvojono äänikortilta taulukkoon.
Korjatkaa jos käsitykseni on virheellinen, kiitos.
Saisko tuon homman toimimaan esim, jollain abi-kutsuilla tai ohjailemalla Winkkarin mukana tullutta Sound Recorderia?
-JuGe-
Väsäätkö jonkinlaista puheen-/äänen tunnistusohjelmaa?
Siis kyllähän ne äänenvoimakkuuden muutokset ovat juuri niitä "näytteitä".
Homma kannattanee hoitaa Windowsin multimedia-API:lla, katsele MSDN:stä (ja Googlesta) waveInOpen:sta eteenpäin.
Koulussa tuli tehtyä Lab-Wieillä PC:llä toimiva oskilloskooppi ohjelma. Mutta siellä oli käytössä kallis tiedonkeruu kortti, johon kotona ei ole ikinä varaa, joten ajattelin tehdä äänikorttia hyväksi käyttävän oskilloskoopin. Mittapään elektroniikka on jo suunniteltu, enää puuttuu teito/taito napata äänikortilta samplatut arvot suoraan taulukkoon käsiteltäväksi ja piirrettäväksi.
Digitaalisessa skooppi softassa on se hyvä puoli, että siihen on aika helppo ohjelmoida myös signaalin spektri-näyttö.
Minun mielestä äänen voimakkuuden muutokset eivät ole ko. näytteitä, koska ääni signaalin hetkelliset arvot ovat nolla tason molemmin puoleisia, eli äänisignaalin arvot ovat negatiivisia ja positiivisia, ellei siinä ole tasajännite komponenttia mukana. Ja äänenvoimakkuuden muutokset ovat pelkästään positiivisia arvoja.
Voi olla, että äänikortti mittausteknisistä syistä lisää signaaliin tasajännite komponentin, mutta se vähennetään signaalin samplatuista arvoista jossain vaiheessa pois.
JuGe: totta, totta.
Mutta tosiaan, tuolta sivulta kun eteenpäin katselet niin pitäisi onnistua: http://msdn.microsoft.com/library/default.asp?
Tässä koodi esimerkki, ei tosin VBllä.
http://www.techmind.org/wave/
Tein aiheesta koodivinkin:
https://www.ohjelmointiputka.net/koodivinkit/
lukee äänikortilta taulukoon 5 s näytteen.
VB.net koodia. Vb6 muunnos lienee helppo. Muista myös että vb.net muuttujat tupla pituisia eli int32 paikalle long, Short ja int16 paikalle integer jne.
Aihe on jo aika vanha, joten et voi enää vastata siihen.