Hangkártya programozás

Fórumok

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ások

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).

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

É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