Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Äänen syöttä äänikortille

kayttaja-3842 [21.08.2009 09:26:54]

#

Tervehdys kaikille,

Elikkäs sain tässä eilen valmiiksi yhden projektini ja olen tässä mietiskellytkin mitä alan seuraavaksi kirjoittelemaan.

Noh päädyin oman "syntikan" kirjoittamiseen. Eli syntikka joka generoi äänen softa pohjallisesti ajon aikana. Tulikin tässä mieleen, että onko mahdollista kirjoittaa oma äänen syöttä kirjasto? Eli onko mahdollista syöttää ääni äänikirjastolle ilman mitään väli kirjastoja esim. fmod:ia tai sitten winAPI:a. WinAPI:llahan on muistaakseni funktio nimeltään waveout tjt. jolla äänen voi söyttää äänikortille. Mutta onko mahdollista kirjoittaa oma "waveout" funktio, vai tuleeko ongelmaksi äänikorttien ajurit?

-Kiitos

Metabolix [21.08.2009 11:33:57]

#

Arvasit oikein: ongelmaksi tulevat äänikorttien ajurit. WinAPIn äänifunktiot ovat Windowsissa kahdesta syystä: eri äänikortit toimivat hyvinkin eri tavoilla mutta WinAPI piilottaa nämä erot käyttäjältä, eikä normaalilla ohjelmalla ole edes oikeutta näpertää suoraan laitteiston kanssa (tämä oikeus on varattu ajureille).

Hyvä syy vielä muiden kirjastojen käyttöön on taas se, että kun WinAPI toimii usealla äänikortilla, esimerkiksi SDL toimii WinAPIlla, lukuisilla Linuxin äänentoistojärjestelmillä, Macissa ja muuallakin. Jos siis ohjelma ei muuten ole tuomittu vain Windowsia käyttämään, kannattaa jatkaa samalla linjalla ja valita äänentoistoonkin jokin vaihtoehto, joka selviää useasta käyttöjärjestelmästä.

SDL:n äänitoiminnallisuus on sellainen, että tuo oma syntikka sopii siihen kiinni aivan täydellisesti. Siinä nimittäin kuuluu kirjoittaa vain yksi funktio, jolta SDL pyytää lisää äänidataa, kun puskuri alkaa tyhjetä. Useimmissa tapauksissa tämä ei riitä alkuunkaan, koska niin paljon jää itse tehtäväksi, mutta sinulla tämä on kai tarkoituskin.

kayttaja-3842 [21.08.2009 12:52:53]

#

Näin vähän arvelinkin, että ajurit ovat esteenä. Ajattelin, että teen sen tuolla WinAPI:lla, koska tarkoitus on luoda mahdollisimman pitkälle oma tekemä äänikirjasto ja toimivuus ei tarvitse katata muita OS:iä kuin Windowsin. Toiseksi, en voi käyttää SDL:ää, koska syntikka tulee 4k introoni ja 4k intron säännöt sanovat, että ei saa sisältää kuin yhden exen joka toimii suoraa ilman mitää väännöksiä.

SDL:ää käyttäessäni joudun laittaa mukaa SDL.dll ja näin 4k intro ei ole "standardin" mukainen.


Kiitos kuitenkin vastauksestasi.

Grez [21.08.2009 15:50:55]

#

Paljonkohan muuten tuo SDL puskuroi tuota. Syntikassahan olisi periaatteessa toivottavaa mahdollisimman pieni puskuri. Eli jos se vaikka puskuroisi 1/10 s verran ääntää, niin mahdolliset koskettimien painallukset tulisivat pahimmillaan 1/10 s viiveellä.

Tosin luultavasti sille saa kertoa kuinka suuren puskurin haluaa, tms...

Vastaus

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

Tietoa sivustosta