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
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.
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.
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...
Aihe on jo aika vanha, joten et voi enää vastata siihen.