Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Äänikortin Line-in signaali käsittelyyn

Sivun loppuun

JuGe [07.11.2004 03:30:17]

#

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-

tnb [07.11.2004 19:37:19]

#

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.

JuGe [08.11.2004 10:25:41]

#

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-

mikeful [08.11.2004 13:31:45]

#

Väsäätkö jonkinlaista puheen-/äänen tunnistusohjelmaa?

thefox [08.11.2004 21:04:54]

#

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.

JuGe [10.11.2004 09:47:08]

#

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.

thefox [10.11.2004 18:16:19]

#

JuGe: totta, totta.

Mutta tosiaan, tuolta sivulta kun eteenpäin katselet niin pitäisi onnistua: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_waveinopen.asp

tnb [10.11.2004 20:09:35]

#

Tässä koodi esimerkki, ei tosin VBllä.
http://www.techmind.org/wave/

tnb [13.11.2004 01:18:38]

#

Tein aiheesta koodivinkin:
https://www.ohjelmointiputka.net/koodivinkit/24594-vb-net-äänikortilta-näytteen-luku
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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta