Hangkártya programozás

 ( gyunix | 2009. december 29., kedd - 11:32 )

Sziasztok!

Tud nekem abban segíteni valaki, hogy hangkártyás hogyan lehet programozni főleg linux alatt. Olyat lehet csinálni, hogy azt mondom a hangkártyának, hogy itt vannaek ezek a hangminták ezeket keverd össze. Vagy pl. csinálj egy looping-ot. Bár c++ -ban nem vagyok jártas, de egyelőre csak információt gyűjtök.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Attol fugg mit szeretnel egeszen pontosan:
- speci hangformatumu fileok feldolgozasa: adott konyvtarakkal (peldak: mp3: libmad, flac: libFLAC, stb), minden konyvtarhoz szokott lenni pelda (legrosszabb esetben a neten), kb feltucat fv van amit kell hivogatni, stbstb.
- hanganalizis: tudomanyosabb konyvtarak (fourier trafohoz, ilyesmikhez), pl libgsl, es ezek alapjan sajat magad megirod ami kell, a kedvenc nyelvedben.
- hang kiadasa/felvetele: alacsony szinten (C): /dev/audio megnyitasa + ioctl-ek, magasabb szinten: ehhez is vannak konyvtarak, azokat elesben me'g nem lattam, de leteznek (libao, peldaul), vagy megmagasabb szinten: sound serverekhez valo csatlakozas (libjack, vagy pl. az artsd kde alatt).

Vannak nekem wave formátumban orgona hangmintáim. Ezekből szeretnék egyelőre egy kisebb, demo jellegű digitális orgonát készíteni. Első körben ehhez úgy gondolom, hogy az kellen, hogy tudjak össze keverni hangokat, illetve valahogyan ebből, akár kevert hanogokból vagy egyszerűbb hangokból loop-ot csinálni.
Gondolom ilyet tudnak a mai hangkártyák.

Nem jellemző... ma az a divat, hogy egy digitális sztereo sávod van. Ha kevert jelet szeretnél kiadni, Neked kell szoftveresen hangmintánként keverni. Max. 1-2 plusz csatorna a surround-os hangkártyákon, de az ugye másra való. A loop-ot is Neked kell ismételgetned.

Aztán biztos találsz előre megírt libeket is...

De megpróbálkozhatsz valamilyen tracker-rel is, pl. van soundtracker, cheesetracker (azt nem próbáltam), vagy nézd meg az Ardour-t... :)

jaja, elottem szolo kollegahoz csatlakozva: legegyszerubb a csatornakat sajat magadnak osszekeverni. egy + muvelet nem nagy cucc, ellentetben igy joval kisebb (csatornak szamanak aranyaval) lesz az userspace <=> driver kommunikacio, ami mondjuk egy valos ideju alkalmazasnal hatarozottan nem baj. a loopolas sem veszes, /dev/audio-ra kiadott write() muveleteket beleteszed egy while ( 1 ) { ...} ciklusba ;) (ha nagyon lowlevel c-t hasznalsz; nyilvan adott lib/api eseten a megfelelo kikuldo izet kell egy while ( 1 ) { ... } ciklusba tenni).

Kezdésnek: http://0pointer.de/blog/projects/guide-to-sound-apis.html
Valamint google-ben valami ilyesmire keress rá: linux sound api

-----
Dropbox tárhely igénylése: https://www.getdropbox.com/referrals/NTI2MzM2MjA5

Köszönöm mindenkinek. Hasznos információk mind. Aki még tud segíteni megteheti.
Köszönettel.

Nem elég egy Fast Tracker szentű dolog? Ha nagyon bonyolult kell, akkor LMMS

--
http://sandor.czettner.hu

Igazából nem konkrét program kell. Azt szeretném megírni a saját szájizem szerint.

És a loop-ot hogyan lehet megoldani? Gondolok itt arra, hogy hangonként csinálom a loop-ot aztán ősszekeverem vagy fordítva és kiadom a kimenetre?

Javaslom, hogy ne szaladj ennyire előre. Először írj egy progrmot amivel ki tudsz küldeni valamit a hangkártyára (a kiválasztott API segígségével). Ha ez megy, akkor foglalkozz a keveréssel, majd ha már ez is megy, akkor jöhet a loop (és a többi).

-----
Dropbox tárhely igénylése: https://www.getdropbox.com/referrals/NTI2MzM2MjA5

Rendben. Mindenképpen ezt szeretném követni, csupán a logikájára vagyok kiváncsi. Amúgy API-t javasolt erre a feladatra?

Az API kiválasztásáról szól a korábban linkelt oldal.

-----
Dropbox tárhely igénylése: https://www.getdropbox.com/referrals/NTI2MzM2MjA5