kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
А, поскольку это программа звукосинтеза в реальном времени – начну с того, как настроить систему для вменяемой работы с ней (ага, в этом месте все достают заготовленные напильники и бубны, заседание умелых ручек можно считать открытым). Итак, нам потребуется ядро реального времени. Его сборка – тема отдельной статьи (если повезёт, можно даже поставить из AUR). Также не стоит забывать, что под новое ядро, возможно, придётся ставить и новые модули, например, проприетарные драйвера на видиоконтроллер. Разобравшись с ядром, следует поставить ограничения на PAM, вписав нужное в /etc/security/limits.conf (когда-то я уже это делал) и не забыть проверить инициализацию PAM в любимом login manager (раскомментировать в /etc/pam.d/<ваш_любимый_LM> всё нужное). Теперь ставим аудиосервер jack. Его настройка уже сильно зависит от имеющегося железа, единственное требование – запустить его в режиме реального времени с наименьшей задержкой, но достаточным буффером, чтобы избавиться от рипения. У меня он показывает хороший результат при запуске jackd -Rv -p512 -d alsa -dhw:0 -r48000 -p4096 -n2 |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
А теперь – самое интересное :) – ставим SuperCollider. Если повезёт – из AUR, нет – просим у h4rtr3d'а ;) (как оказалось, для работы программа требует avahi, хотя как зависимость, оно почему-то не тянется, так что будьте осторожны). После установки необходимо настроить – SuperCollider для EMACSа и EMACS для SuperCollider'а ;D Итак, находим в исходниках linux/examples/{sclang.cfg.in, sclang.sc} и копируем их в ~/{.sclang.cfg, .sclang.sc} соответственно. Далее – правим под свои нужды. Если кому лень рыться в исходниках – выкладываю свои конфиги – на данный момент они должны работать в Arch Linux (хотя бывает всякое). // ===================================================================== // file: sclang.sc // content: example sclang startup file // author: stefan kersten <[email protected]> // ===================================================================== // NOTE: this is just an example not needed for // regular operation of sclang! // ===================================================================== // set up Server to use a different executable Server.program = "/usr/bin/scsynth"; // same for Score Score.program = Server.program; // set some server options for a different setup #[\internal, \local].do { |s| s = Server.perform(s); s.options.numInputBusChannels = 2; s.options.numOutputBusChannels = 5; }; // hook up jack ports to audio channels "SC_JACK_DEFAULT_INPUTS".setenv( "system:capture_1," "system:capture_2" ); "SC_JACK_DEFAULT_OUTPUTS".setenv( "system:playback_1," "system:playback_2," // "system:playback_3" // "system:playback_4," // "system:playback_5" ); // EOF # ====================================================================== # file: sclang.cfg # content: SuperCollider library configuration file # author: stefan kersten <[email protected]> # ====================================================================== # usage: install as /etc/sclang.cfg or ~/.sclang.cfg # ====================================================================== # default class library +/usr/share/SuperCollider/SCClassLibrary # system-wide extensions +/usr/share/SuperCollider/Extensions # in case you don't want to use add-on libraries, uncomment as necessary #-/usr/share/SuperCollider/SCClassLibrary/crucial #-/usr/share/SuperCollider/SCClassLibrary/JITLib # EOF Достаточно в .emacs вписать (require 'sclang) Для загрузки режима для любого открытого файла можно использовать M-x sclang-mode (Жмём Alt+x и набираем sclang mode ; не забываем об автодополнении) Если не хочется редактировать конфиг EMACS'а – можно запустить как emacs -sclang |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
Итак, предположим, самые стойкие, преодолев сий тернистый путь, задались вопросом – а как всё это работает, как теперь извлечь хоть какой-нибудь звук. Итак! Загрузившись с rt-ядра, запустив jackd в rt режиме, теперь – запускаем emacs в режиме SCLang. Теперь – в EMACS – жмём C-c C-l (Ctrl+c и Ctrl+l – правда весело?), после чего sclang загрузит Super Collider, и подключится к jack. Всё! Можно писать код своего музыкального шедевра. Запускается каждая строчка кода сочитанием C-c C-c (Ctrl+c два раза подряд). Код для примера: Server.default = s = Server.internal.boot; {SinOsc.ar(LFNoise0.ar([10,15],400,800),0,0.3)}.play; Тем, кому надоест слушать мой шедевр, подскажу – выключить всё это можно набрав M-x sclang-stop. Настоянельно рекомендуемая информация для дополнительного ознакомления: тут, и, особенно, тут: /usr/share/SuperCollider/Help/Linux/EmacsEditor.html |
kamiel |
|
Темы:
14
Сообщения:
74
Участник с: 29 апреля 2009
|
Естественно, для работы с SC требуются элементарные знания звукотехники, но не нужно быть гением, чтобы понимать Преобразование Фурье, например. Тем, кто еще не пробовал себя в звукосинтезе – рекомендую для начала модульные синтезаторы, коих под Linux, конечно, есть. Как-то: gAlan, Spiral Synth, ALSA Modular synth, Ingen (много их) Более продвинутых могут заинтересовать языки визуального алгоритмического звукосинтеза: Pure Date, JMax. Также существуют алгоритмические секвенсоры AlgoScore и KyCE (да-да, есть под Linux и такое). Да и SuperCollider, конечно, не одинок – CSound, Chuck, Q_mus, Faust (и это только самые известные из них) Для тех, кто, всё-же выберет изучение Super Collider – выложил учебник. |
h4tr3d |
|
Темы:
34
Сообщения:
2656
Участник с: 12 июля 2007
|
Молодец что выложил :-) если будет время - оформи в статью на wiki, или хотя бы Зевсу на easylinux.ru отпубликуй, коротенький такой обзор для понимания ху из ху.
systemd должен умереть.
|