Рабочий стол > Музыка в Linux

HOWTO: Работа с картой E-MU 1212M PCI в Ubuntu 10.04

(1/3) > >>

Alex Shade:
Текст ниже вряд ли претендует на полноценный HOWTO, здесь слишком много лирических отсуплений и слишком мало команд. Текст предназначен для пользователей, которые только начинают свой путь в интересном и занимательном мире звука в Linux. :) Далее курсив - это лирические отсупления, можно не читать. ;)

Для меня началось все с того, что брат заменил винду на gentoo linux на своем компе, где стояла карточка Audigy 2. Не надо было обладать абсолютным музыкальным слухом, чтобы понять, насколько лучше зазвучала система. Меня это заинтересовало, и я решил проверить, как поведет себя с линуксом моя E-MU 1212M. Gentoo мне оказался не по зубам ::) , и я начал с Ubuntu. в своих исканиях я руководствовался следующим принципом. Есть программы, которые напрямик отрабатывают свой алгоритм и свое назначение. Они минималистичны, легки, просты. Есть программы, давно развивающиеся, обросшие многочисленными надстройками, заплатками, отягощенные ненужным функционалом в угоду функциональности и страдающие симптоматическим лечением собственных багов. Мы выбираем первый тип программ. 8) Собственно, переход с винды на линукс - первый шаг в этом направлении. Итак, поставили линукс. Что дальше?

1) Установка low-latency ядра.

В инете можно встретить массу мнений о нужности/полезности низких задержек. С одной стороны, чем меньше задержка, тем лучше, это было понятно мне изначально, как инженеру. С другой стороны, многие тычут пальцем в сторону Маков, дескать, там задержки большие - и все ок, и цитируют Лао Цзы отца-основателя OSS. Но у нас не Mac, а linux, не OSS, а ALSA, поэтому я сравнил 2 варианта: low-latency лучше. Кстати, переход с ALSA на OSSv4 проделан многими энтузиастами, и он в каком-то роде сответствует вышеизложенной концепции, но меня не устроил недостаток функционала OSSv4 применительно к моей карте...

Идем в Synaptic, ставим пакеты

* linux-headers-2.6.32-xx-preempt
* linux-image-2.6.32-xx-preempt(xx - самая свежая версия ядра в списке)

2) Редактирование настроек GRUB.

В Ubuntu 10.04 используется вторая версия GRUB. Знакомого и любимого файлика menu.lst уже нет, поэтому...
Выполняем команду

--- Code: ---sudo gedit
--- End code ---
В открывшемся мега-редакторе  :D открываем файлик /etc/default/grub. Находим там строчку

--- Code: ---GRUB_HIDDEN_TIMEOUT=0
--- End code ---
и сажаем ее за решетку:

--- Code: ---#GRUB_HIDDEN_TIMEOUT=0
--- End code ---
В строчке

--- Code: ---GRUB_TIMEOUT=10
--- End code ---
ставим число секунд, необходимых нам для осознанного выбора загружаемого ядра. Сохраняем файл и перезагружаемся. В меню GRUB находим наше установленное ядро с индексом preempt, выбираем его, грузимся. Если все прошло хорошо и ядро загрузилось, идем обратно в /etc/default/grub, находим там строчку

--- Code: ---GRUB_DEFAULT=0
--- End code ---
и устанавливаем вместо нуля тот номер записи GRUB, который соответствует ядру preempt, и сохраняем файлик конфигурации. Все, на этом ядерные дела можно забыть. До следующего обновления.  :D

3) Компилим firmware.

В дистрибутиве 10.04 из коробки присутствует ALSA и пакет build-essentials. Если они отсутствуют, то идем в Synaptic и устанавливаем их.
Идем на сайт проекта под кодовым названием ALSA. Там находим исходники alsa-firmware-1.0.хх, скачиваем себе на винт, распаковываем. Открываем терминал, выполняем команды

--- Code: ---cd path_to_unzipped_firmware_folder
--- End code ---
где path_to_unzipped_firmware_folder - это путь к папке, куда распаковывали архив. Далее

--- Code: ---./configure
sudo make
sudo make install
--- End code ---
то есть все, как обычно. После того, как это сделано, перезагружаем машинку. Звук должен появиться. Если этого не происходит, то в терминале набираем

--- Code: ---alsamixer
--- End code ---
и выставляем все ползунки на максимум. Если звука все еще нет, то следует проверить усилительный тракт от выходов звуковой карты до ваших ушей.  :) В любом случае, окошко с alsamixer закрывать не спешим. Там можно найти большое количество всяких переключателей. Они там стоят не просто так. Настоятельно рекомендую установить их в соответствии с ТАБЛИЦЕЙ.
Если вдруг с течением времени ссылка на таблицу помрет, пишите. Она есть у меня на винте. По идее, с этого момента система в состоянии записывать и воспроизводить звук. Например, с помощью проги Audacity. Но делать это она будет далеко не так, как нам хотелось бы. Поэтому двигаемся дальше.

4) Ставим Jack.

Открываем любимый Synaptic и ставим пакеты:

* jackd
* qjackctl
* jack-rack
* jack-tools
* jackeq
Прога qjackctl - штука хорошая, полезная и нужная. Но часто нужно просто запустить JACK и работать с прогами (например, Hydrogen) без всяких излишеств, поэтому я предпочитаю запускать, когда надо, JACK кнопкой с панели запуска. Добавляем на панель кнопку запуска, в соответствующей строке пишем команду

--- Code: ---jackd -dalsa
--- End code ---
Конечно же, JACK - это звуковой сервер именно для профессиональной работы с музыкой. Мне лично не всегда нужно работать именно с ним, поэтому я и вывел его запуск отдельной кнопкой. Тем не менее, сейчас большинство нужных приложений (вплоть до WINE, что немаловажно, если у вас есть Guitar Pro) уже научились работать с JACK. Поэтому вполне резонно было бы добавить приведенную выше строчку в init.d.

5) Устанавливаем нужные проги.

Для каждого существует свой "джентельменский набор" программ. Отмечу следующие, а уж что ставить - выбор за вами.

* ardour
* gtick
* tuxguitar
* hydrogen
6) Выковыриваем PulseAudio.

JACK поставили, но что тогда делает в нашей системе другой звуковой сервер, громоздкий, неповоротливый, но отлично подходящий для мобильников PulseAudio? Правильно, глючит и тормозит. Приговор - изгнание из системы. Идем и изучаем первые страницы соответствующего топика. Довольно быстро находим сакральное руководство к действию:

--- Quote ---1. прибиваем и удаляем pulseaudio

--- Code: ---sudo apt-get remove pulseaudio gstreamer0.10-pulseaudio
killall pulseaudio
--- End code ---
2. убираем мусор из гномовской сессии:

--- Code: ---gnome-session-properties
--- End code ---
в открывшемся окне ищем и снимаем галку с gnome-volume-control-applet - он все равно ничего не может, кроме как жаловаться на отсутствие pulseaudio

3. обновляемся из этого PPA: https://launchpad.net/~dtl131/+archive/ppa - восстанавливает микшер, апплет, управление с клавиатуры.

4. добавляем на панель регулятор громкости.

5. приводим в порядок gconf:

--- Code: ---gconftool-2 -s --type string /desktop/gnome/sound/default_mixer_device "alsamixer"
gconftool-2 -s --type list --list-type string /desktop/gnome/sound/default_mixer_tracks "[Master]"
gconftool-2 -s --type boolean /desktop/gnome/sound/enable_esd false
gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosink "alsasink"
gconftool-2 -s --type string /system/gstreamer/0.10/default/audiosrc "alsasrc"
gconftool-2 -s --type string /system/gstreamer/0.10/default/chataudiosink "alsasink"
gconftool-2 -s --type string /system/gstreamer/0.10/default/musicaudiosink "alsasink"
--- End code ---

6. теперь осталось только перезапустить gnome-settings-daemon, лучше это делать не из терминала, а из диалога запуска alt+F2 или другого командного лончера.

--- Code: ---killall gnome-settings-daemon && sleep 2s && gnome-settings-daemon
--- End code ---

--- End quote ---

После этой процедуры я лично поставил Esound.

--- Code: ---sudo apt-get install -y esound esound-clients esound-common libesd-alsa0
sudo reboot
--- End code ---
Возможно, после этой процедуры "упадет" движок Master в микшере. Его надо поднять, запустив alsamixer или один из микшеров, указанных в обсуждении по ссылке выше.

7) Разбираемся с MIDI.

Собственно, остался заключительный штрих. Мне категорически не нравится, как работает TuxGuitar с Timidity. Есть мнение, то Timidity - громоздкий, тормозной и глючный программный секвенсер, поэтому его ждет участь Pulseaudio. =) Но с ним проще. Находим Timidity в Synaptic и удаляем его. Вместо него ставим

* fluidsynth
* qsynthДля qsynth имеет смысл сделать кнопку быстрого запуска на панели. Это и есть графический фронтенд нашего нового программного синтезатора. Запускаем, лезем в настройки. Находим много интересного и полезного. Для человека, который имеет самое общее представление о миди, там должно быть все понятно. Тем, кто не в теме, скажу только, что компания E-MU, она же Creative и производитель нашей карты, придумала формат sf2 для библиотек семплов, и их можно подгружать для воспроизведения MIDI, используя интерфейс qsynth. Где скачать эти библиотеки, знает гугл.  :) Но, например, "родную" библиотеку можно найти на диске с драйверами, идущем в комплекте с картой. Для тех, кто потерял диски, вот ссылка.

8) ТВОРИМ!

Теперь можно вспомнить, для чего мы потратили столько времени на работу с подготовкой софта, и начинать писать Музыку! Всем - успехов в этом увлекательном и полезном занятии.

Проблема увеличения скорости воспроизведения и конвертации.
Так уж задумали производители нашей карты, что она поддерживает частоты дискретизации как 44100, так и 48000 Гц. Хорошо это или плохо - судить не нам, нам приходится сталкиваться иногда с тем, что некоторые приложения воспроизводят звук быстрее, чем это надо. Причина - в несовпадении частот дискретизации, с которыми работают приложения. Алгоритм решения следующий:

* Понимаем, работает приложение со звуковым сервером либо напрямую с ALSA.
* Обычно, если приложение работает со звуковым сервером, проблем не возникает. Однако, если приложение имеет собственную настройку частоты дискретизации (а не берет ее от сервера), либо, например, запущено через WINE, проблема может возникнуть. Решение - указываем приложению (WINE-e) ту частоту, на которой работает сервер.
* Если приложение не поддерживает работу со звуковым сервером и предпочитает работать напрямую с ALSA, то решение - установить частоту ALSA (например, через alsamixer) такой же, как и у воспроизводящего приложения. Например, Rhythmbox работает именно на той частоте, на которой дикретизирован воспроизводимый файл (для многих mp3шек это 44100 Гц), поэтому единственный выход - переключить ALSA на те же 44100 Гц.
PS При копипастинге прошу указывать ссылку на первоисточник.

Lynx:
Вопрос: сравнивалось ли звучание под linux и под виндой? Если под виндой - то с какой звуковой системой? Стандартной или, например, ASIO ?
Если сравнивалось - то какой источник был - мрЗ, ЦД, Вав ... ?
Заранее спасибо.

Alex Shade:
В линухе однозначно все звучит лучше: мп3, КД, вав, флак и т.д. Кроме того, записанные гитарные треки, семплы драм-машин - все звучит реалистичнее. Под виндой при установке драйверов звуковая система автоматически меняется на ASIO. В переходном периоде на компе стояло 2 системы одновременно, сравнивал, удивлялся. В целом, под виндой звук зажат и замылен. В линухе он динамичнее и реалистичнее.
Сейчас работаю над автоматическим ресемплингом, как бы заставить ESound это делать. Если не сможет, то на фиг он нужен...

Lynx:
Совершенно дурацкий вопрос: а если сгенерить чистую синусоиду и поглядеть на выход осциллографом на винде и на линухах, что будет?
Прошу не считать за подъеколку, такие вот иногда в ночь перед работой вопросы рождаются.
Сам регулярно мучаю комп разными линухами в том числе и с целью слушания звука, вот и интересуюсь.

Alex Shade:
Lynx, вопрос совершенно не дурацкий! А очень даже правильный.
Только надо делать это не так. Синусоиду (а лучше - меандр) надо сгенерить нормальным аппаратным генератором с заданным Кни и подать на вход. А к выходу уже подключить осциллограф, 2-канальный, на один канал подать генератор, на другой - выход карты. И посмотреть, например, задержку. Кстати, есть мнение, что таким образом и АЧХ даже будет разная.
Другое дело, что, когда у меня на компе стояли 2 системы, парка приборов для таких измерений еще не было. Поэтому таких измерений и не проводил.

Navigation

[0] Message Index

[#] Next page

Go to full version