Hangkártya használata (r)tty eszközként

Fórumok

A hangeszközt szeretném tty eszközként használni. Van egy fldigi nevű program, ami tud olyat, ami egy karaktersort átalakít hangimpulzusokká, vagy ilyen hangimpulzust a vonalbemenetről értelmezni tud karaktersorként. Az a bajom, hogy ez grafikus felületű program, de nekem ez virtuális eszköz formájában lenne jó, pl. ha úgy működne, mintha soros port lenne.

A google barátomat kérdezgetve sajnos csak az fldigi-hez hasonló programok kerülnek terítékre.

Hozzászólások

Valójában egy soft modem az álmod?

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

iaxmodem valahogy nem akarja megrecsegtetni a hangeszközt:

fellegis@DSK01:~$ sudo echo "kjhkjhkjhkj" >/dev/ttyIAX
bash: /dev/ttyIAX: Engedély megtagadva

Így viszont nem parázik az engedélyek miatt, de így sem sípol egyik hangkártyám kimenete sem.

fellegis@DSK01:~$ sudo bash
root@DSK01:~# echo "kjhkjhkjhkj" >/dev/ttyIAX
root@DSK01:~#

A configjában meg nem látom, hol lehet megadni, hogy melyik hangkártyán dolgozzon.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.

Nem a root jog a megoldás, hanem az, hogy megnézed a device file tulajdonosát, csoportját és jogait. Valószínűleg crw-rw---- root:dialout. Aztán felveszed magad a dialout csoportba. Nem biztos, hogy hangkártyával kommunikál, teheti ezt a hangszerver felé, és akkor a default sink.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Szerkesztve: 2020. 05. 01., p - 19:50

Egyébként nekem egyszer volt szükségem ilyenre. Olyan kódolást választottam, ami talán az FSK-nak egy szélsőséges esete. Szóval bithatáron ellenkező logikai szintre váltunk, azaz van él, míg 1-es bitnél bitközépen szintén van élváltás, míg 0-ás bitnél nincs.

Esetemben külön kaland volt, hogy a vétel mikrokontrollerrel történt, nagyjából relatív prím mintavételi frekvenciával a hankkártya sampling rate-jéhez képest. Na jó, nem relatív prím, de túl sok közük nem volt egymáshoz. Ilyen környezetben izgalmas meghatározni a maximális bitrátát stabil adatátvitelhez. :)

Aztán írtam egy C programot, ami az inputomból csinált egy hatalmas, talán 100 MB körüli wav file-t. A végén ezt simán lejátszottam paplay paranccsal, a mikrokontrolleres hardware-em ezt vette, majd flash memóriába írta a vett adatot. Természetesen az elején szinkronizáció, blokkonként CRC, kutyafüle, minden volt ott. :)

Érdemes arra is figyelni, hogy DC-ben kiegyenlített legyen, azaz a 0-s bitek száma célszerűen blokkonként páros legyen. Erre jó lehet 15 bites CRC, és egy bit, ami 0, ha amúgy a blokkban páratlan darabszámú 0 van, egyébként meg 1.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Félig megoldva. Találtam egy minimodem nevű programot, fsk modulációval elmuzsikál bármit. Igaz, nem emulál portot, de pipe-rol kezelhető.

echo "valami" | minimodem -t 350 -S 1500 -M 2000 --alsa=3,0

A fogadás viszont érdekes móka lesz, stdout-ra szépen írogat, viszont az adás végeztével nem lép ki :D ... tesztelésre viszont kiváló.

-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.