|
|||||||
Работа с эффект-процессором EMU10K1 под Linux
Время создания: 27.01.2010 01:11
Автор: Xintrea
Текстовые метки: linux, sblive, emu10k1, DSP
Раздел: Компьютер - Linux - Звук и аудио - SBLive! 5.1
Запись: xintrea/mytetra_syncro/master/base/0000001396/text.html на raw.github.com
|
|||||||
|
|||||||
Термины, использующиеся в тексте:
Чтобы воспользоваться возможностями обработки звука в реальном времени, нужны программы:
Где взять ld10k1 и lo10k1? В Debin 6 и 7 эти файлы входили в пакет alsa-tools. Однако была проблема: lo10k1 не мог приконнектиться к ld10k1, и на любую команду выдавая ошибку: # lo10k1 --debug 8 Error: unable to connect ld10k1 В Debian 8 эти файлы из пакета alsa-tools убрали, и перенесли в пакет с именем ld10k1. Только проблема осталась: клиент и сервер друг с другом не работают. Это происходит по причине того, что в пакет входит кривой скрипт /usr/bin/lo10k1. При запуске в консоли команды lo10k1 запускается именно он, а не программа lo10k1. Кривой скрипт имеет следующее содержимое: #!/bin/bash PIPE_NAME=/var/run/ld10k1/ld10k1.socket if [ -r /etc/default/ld10k1 ]; then . /etc/default/ld10k1 fi # FIXME: exec -a is a bashism exec -a lo10k1 lo10k1.bin --pipe_name $PIPE_NAME "$@" Настоящая, правильная программа расположена в файле /usr/bin/lo10k1.bin. И если ее вызвать в консоли, она будет работать правильно. Я ничего лучшего не придумал, как удалить кривой скрипт /usr/bin/lo10k1, а программу /usr/bin/lo10k1.bin переименовать в /usr/bin/lo10k1. На то, чтобы это выяснить, у меня ушло более 10 лет. Как работать с ld10k1 и lo10k1? Вначале нужно запустить сервер ld10k1. Делается это под рутом, командой # ld10k1 -d Опция "-d" означает, что сервер надо запустить в виде демона. Если запуск прошел молча, то это значит, что скорее всего сервер запустился и работает как положено. Затем можно от обычного пользователя загрузить код какого-нибудь эффекта в память звукового процессора. Делается это с помощью опции "-a" программы lo10k1. Например, команда: # lo10k1 -a sine.emu10k1 загрузит в DSP код генератора синуса. Зачем вообще нужен генератор синуса? Это же не эффект обработки. Ответ прост - генератор синуса хорош именно для отладки, чтобы легко услышать результат, и убедиться, что EMU10K1 действительно работает. После загрузки, код размещается в памяти DSP, но сразу не запускается на выполнение. Чтобы микропрограмма стала работать, надо связать ее вход и выход с какими-нибудь входами и выходами. Вначале нужно проверить, что код действительно загрузился. Для этого нужно дать команду: # lo10k1 --debug 5 которая означает, что нужно показать информацию о загруженных микропрограммах. В ответ должен выдаваться список: Patch List: 000 Sine wave Gen Данный список означает, что в EMU10K1 загружена микропрограмма синус-генератора, и ее номер 000. Сразу предупрежу любителей сокращать опции команды. Для опции "--debug" нет сокращения. Сокращение "-d" является сокращением от опции "--del", которая используется для удаления микропрограмм из памяти DSP. В опции печати отладочной информации можно задавать и другие номера. Вот что они означают: 1 - Просмотр информации о регистрах 2 - Просмотр списка констант 3 - Просмотр списка инструкций DSP 4 - Просмотр информации о занятой помяти 5 - Просмотр списка загруженных микропрограмм 6 - Просмотр списка загруженных микропрограмм в порядке их использования в момент оработки звука 7 - Список FX (потоков ?) 8 - Список входов 9 - Список выходов 100 + номер микропрограммы - Просмотр информации о микропрограмме Соединение звуковых блоков друг с другом Обычный микрофонный вход в карточку обозначается IN(0). Обычный вывод из карточки обозначается OUT(0). Вход и выход микропрограммы обозначается PIN(N) и POUT(N) соответственно. Где N - номер микропрограммы. (Узнать номер микропрограммы можно с помощью команды lo10k1 --debug 5). Чтобы услышать, как микропрограмма обрабатывает звуковой поток с микрофона, надо дать команды: lo10k1 --conadd "PIN(0)=IN(0)" lo10k1 --conadd "POUT(0)=OUT(0)" Если при выполнении этих команд будет выведена ошибка Error: wrong parameter - connection string то это значит, что какой-то "коннектор" не существует. Скорее всего, не существует входной или выходной коннектор микропрограммы - PIN(0) или POUT(0). А не существует потому, что на каком-то предыдущем шаге микропрограмма не была загружена. В этом можно убедиться, дав команду "lo10k1 --debug 5". Если в ее выводе нет микропрограммы с условным номером 000, значит и коннекторов этой программы не существует, следовательно, соединять нечего. Кроме того, нужно учитывать, что у некоторых микропрограмм нет входного коннектора. Например, у синус-генератора входного коннектора нет. Поэтому при загруженном синус-генераторе с условным номером 000, команда: lo10k1 --conadd "PIN(0)=IN(0)" выдаст ошибку: Error: wrong parameter - connection string from <> to Сброс DSP Сброс осуществляется командой lo10k1 -s после этой команды с ошибкой вываливается kmix. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|