Portál AbcLinuxu, 30. dubna 2025 11:33
Narazil jsem na docela nedoceněnou oblast open source - možnost rozšíření funkčnosti stávajícího hardwarového vybavení s otevřenými ovladači a zdokumentovanými čipy. Výrobci obvykle nabízejí základní režimy, zatímco s otevřenými ovladači si člověk může pohrát a přidat nové funkce nebo upravit stávající.
Mám zvukovku Audiotrak Prodigy192 s rozšiřující deskou MI/ODI/O, která umožňuje externí hodiny přes SPDIF. Pro jeden hračičkoidní projekt jsem potřeboval co nejkvalitněji vzorkovat analogový výstup CD přehrávače, opakovaně stejný track z různých médií. Jednoduché řešení je propojit SPDIF výstup přehrávače se vstupem externích hodin zvukovky a vzorkovat analogový výstup, což zajistí sejmutí vzorků pokaždé ve stejných časových bodech nahrávky.
Protože SPDIF výstup CD přehrávače obsahuje data s vzorkovací frekvencí 44.1kHz, pojede zvukovka logicky také na 44.1kHz, což je pro relevantní výsledky poněkud málo. Podrobnější pročtení datasheetu použitých čipů však ukáže, že pouhou překonfigurací z ovladače by bylo možné dosáhnout násobků základní frekvence. Po přidání několika řádků do ovladače (přepnutí ICE1724 do režimu 128x, nastavení správné kombinace vstupních filtrů a násobků hodin na kodeku STAC9460) mi zvukovka vzorkuje korektně na 88.2kHz. Kdyby AD převodník ve STAC9460 nekončil na 96kHz, vzorkovala by spokojeně na 176.4kHz. A to vše při časování signálem 44.1kHz.
Otevřené ovladače tak umožní udělat z pouhé zvukovky s pevně danými funkcemi daleko mocnější analytický nástroj, snadno upravitelný pro konkrétní potřebu.
No a dalším přínosem využívání plného potenciálu otevřených ovladačů je to, že se často narazí na více či méně závažné bugy ovladače ... takže tentokrát již opravdu funkční nahrávání analogových vstupů u Prodigy192 pro různé vzorkovací frekvence pošlu do pár dní správcům alsy. As it should be :)
Tiskni
Sdílej:
X: symbol lookup error: /usr/lib64/xorg/modules/input//wizardpen_drv.so: undefined symbol: xf86IsCorePointerFunkce xf86IsCorePointer kdysi byla v souboru xf86Xinput.h, ale teď už není. Nikde v /usr/include není nadefinovaná, ale kompilace přesto úspěšně proběhne. Nechápu, jak je to možné
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.