|
|
<!-- <?xml version="1.0" ?>
|
|
|
<!DOCTYPE chapter PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd">
|
|
|
To validate or process this file as a standalone document, uncomment
|
|
|
this prolog. Be sure to comment it out again when you are done -->
|
|
|
|
|
|
<chapter id="midi">
|
|
|
<title>&MIDI;</title>
|
|
|
|
|
|
<sect1 id="midi-overview">
|
|
|
<title>Обзор</title>
|
|
|
|
|
|
<!-- what-to-say-here: aRts has three roles
|
|
|
* moving midi events around between applications
|
|
|
* abstracting the hardware
|
|
|
* synthesizer -->
|
|
|
|
|
|
<para>Поддержка &MIDI; в &arts; обширна. Она разрешает <emphasis>обмен</emphasis> данными между приложениями, генерирующими &MIDI;-события, и получателями этих событий. К примеру, если вы используете синтезатор и сэмплер, поддерживающие &arts;, вы можете посылать &MIDI;-события от синтезатора сэмплеру. </para>
|
|
|
|
|
|
<para>С другой стороны, &arts; позволяет приложениям <emphasis>взаимодействовать с оборудованием</emphasis>. Если какое-то приложение (сэмплер, к примеру) работает с &arts;, оно сможет получать &MIDI;-события со внешней &MIDI;-клавиатуры. </para>
|
|
|
|
|
|
<para>Наконец, &arts; - это замечательный <emphasis>модульный синтезатор</emphasis>. Он был разработан именно для использования в таком качестве. То есть вы можете создавать инструменты из небольших модулей, используя artsbuilder. В &arts; есть и модули-сэмплеры. Таким образом, &arts; - это мощный сэмплер и синтезатор, он состоит из отдельных модулей, поэтому его легко расширять. </para>
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="midi-manager">
|
|
|
<title>Менеджер &MIDI;</title>
|
|
|
<!-- what-to-say-here:
|
|
|
* how to use artscontrol - view midimanager
|
|
|
* what does autorestore do? (not yet implemented - so not yet documented) -->
|
|
|
|
|
|
<para>Главный компонент &arts; - это Менеджер &MIDI;, он знает, как связаны приложения и как должна пересылаться информация. Чтобы посмотреть, что он делает или настроить его, выберите <menuchoice><guilabel>Вид</guilabel><guilabel>Показать midi-менеджера</guilabel> </menuchoice> в меню &artscontrol;. </para>
|
|
|
|
|
|
<para>Слева вы видите <guilabel>Входные каналы MIDI</guilabel>. Там перечислены все объекты, которые могут производить &MIDI;-события: внешний &MIDI;-порт, к которому подключена &MIDI;-клавиатура, синтезатор и т. д. Справа - <guilabel>Выходные каналы MIDI</guilabel>. Это, к примеру, приложение-сэмплер или внешний &MIDI;-порт, к которому подключен сэмплер. Новые приложения, например, синтезатор, регистрируются сами, поэтому список будет меняться. </para>
|
|
|
|
|
|
<para>Входные и выходные каналы можно соединить, щелкнув по соответствующим объектам и нажав на кнопку <guilabel>Соединиться</guilabel> внизу. Аналогично работает кнопка <guilabel>Разъединиться</guilabel>. Если два устройства подключены, между ними будет нарисована линия. Заметьте, что к одному входу можно подключить несколько выходов и наборот. </para>
|
|
|
|
|
|
<para>Приложения (вроде синтезатора Brahms) будут автоматически добавляться в список при запуске и удаляться при выходе. Однако вы можете самостоятельно добавить их в меню <guilabel>Добавить</guilabel>: </para>
|
|
|
|
|
|
<variablelist>
|
|
|
<varlistentry>
|
|
|
<term><guimenuitem>Порт MIDI на эту систему (OSS)</guimenuitem></term>
|
|
|
<listitem>
|
|
|
<para>Создаст новый объект &arts;, который будет посылать данные на внешний MIDI-порт. </para>
|
|
|
|
|
|
<para>Внешние MIDI-порты могут как получать, так и посылать данные. Эта операция позволяет создаьт входной и выходной каналы MIDI. Для работы вам необходима <acronym>OSS</acronym> (или <acronym>OSS</acronym>/Free, она идёт с ядром &Linux;) или драйвер звуковой карты <acronym>ALSA</acronym>. Имя устройства обычно такое: <filename class="devicefile">/dev/midi</filename> или <filename class="devicefile">/dev/midi00</filename>. </para>
|
|
|
|
|
|
<para>Однако, если у вас более одного MIDI-устройства или установлен драйвер, имитирующий MIDI-устройство, выбор становится шире. Чтобы получить дополнительную информацию о ваших портах MIDI, запустите &kcontrolcenter; и зайдите в <menuchoice><guilabel>Информация</guilabel> <guilabel>Звук</guilabel></menuchoice>. </para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
|
<term><guimenuitem>Синтезированный вывод MIDI aRts</guimenuitem></term>
|
|
|
<listitem>
|
|
|
<para>Будет создан новый &MIDI;-выход синтезатора &arts;. Если вы выберете соответствующий пункт в меню, откроется диалоговое окно, в котором можно будет указать инструмент. Вы можете создавать новые инструменты, используя artsbuilder. Все файлы с расширением <literal role="extension">.arts</literal> и именем, начинающимся с <filename>instrument_</filename>, будут отображены здесь. </para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
</variablelist>
|
|
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="brahms">
|
|
|
<title>Использование &arts; и Brahms</title>
|
|
|
|
|
|
<para>Запустить &brahms; достаточно просто, вам нужна версия &brahms; для &kde; 2.1,которую можно найти в модуле <literal>kmusic</literal><acronym>CVS</acronym>. Также есть информация о том, где взять &brahms; на <ulink url="http://www.arts-project.org/">Домашней странице aRts</ulink> в разделе <quote>Download</quote>. </para>
|
|
|
|
|
|
<para>При запуске вызывается Менеджер &MIDI;. Если вы хотите получить синтезатор, просто добавьте &MIDI;-инструмент в <menuchoice><guilabel>Добавить</guilabel><guilabel>Синтезированный вывод MIDI aRts</guilabel></menuchoice>. </para>
|
|
|
|
|
|
<para>Выберите инструмент (к примеру, <guilabel>organ2</guilabel>). Подключите его, нажав на кнопку <guilabel>Соединиться</guilabel>. Теперь вы можете писать музыку в &brahms;, а играть её будет &arts;. </para>
|
|
|
|
|
|
<para>Очень удобно держать открытым окно &artscontrol;, чтобы контролировать громкость (качество звука теряется, когда уровень звука выше определённых границ). Сейчас вы можете начать работу над новой композицией в &arts;, а когда закончите, сможете опубликовать её на aRts-project.org ;-). </para>
|
|
|
|
|
|
<!-- TODO: how to do more than one instrument in Brahms (hm, not implemented
|
|
|
yet, not documented yet), how to use samples, mapping and so on. These
|
|
|
things need to be implemented, too. -->
|
|
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="midisend">
|
|
|
<title>midisend</title>
|
|
|
|
|
|
<para><command>midisend</command> - это небольшое приложение, позволяющее отправлять &MIDI;-события из оболочки. Оно регистрирует себя как клиента. Самый простой способ использования: <screen><prompt>%</prompt> <userinput><command>midisend</command> <option>-f</option> <parameter> <replaceable>/dev/midi00</replaceable></parameter></userinput> </screen>, результат будет почти таким же, как если бы вы добавили &MIDI;-порт в &artscontrol; (<quote>почти</quote> потому, что <command>midisend</command> только отправляет события). Разница в том, что <command>midisend</command> гораздо проще запустить на разных компьютерах. </para>
|
|
|
|
|
|
<para>Также есть возможность с помощью <command>midisend</command> посылать данные из <filename class="devicefile">stdin</filename>, которые могут использоваться для переноса данных из приложений, не поддерживающих &arts;, в &arts;. К примеру: <screen><prompt>%</prompt> <userinput><command><replaceable> applicationwhichproducesmidieventsonstdout</replaceable></command> | <command>midisend</command> <option>-f</option> <option><replaceable>-</replaceable></option></userinput></screen>
|
|
|
<!-- TODO: document all options -->
|
|
|
</para>
|
|
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="midi-creating-instruments">
|
|
|
<title>Создание инструментов</title>
|
|
|
|
|
|
<para>В &arts; синтезатор работает следующим образом: со входных портов структур получаются данные о частоте, громкости и устанавливается параметр нажатия клавиши. Затем структура синтезирует необходимую ноту заданной громкости, а также считывает параметр нажатия (где 1 значит, что клавиша ещё нажата, а 0 - отпущена). </para>
|
|
|
|
|
|
<para>Когда &MIDI;-событие получено, &arts; создаёт новую структуру для необходимых нот и передаёт ей параметры. После завершения процесса структура удаляется. </para>
|
|
|
|
|
|
<para>Чтобы создать и использовать структуру, необходимо сделать следущее: </para>
|
|
|
|
|
|
<itemizedlist>
|
|
|
<listitem>
|
|
|
<para>Самый удобный способ запуска: открыть <filename>template_Instrument.arts</filename> в &arts-builder;. </para>
|
|
|
|
|
|
<para>Это может быть сделано так: <menuchoice><guimenu>Файл</guimenu><guimenuitem>Открыть пример</guimenuitem></menuchoice> и выбрать <guimenuitem>template_Instrument</guimenuitem>. Таким образом будет создана пустая структура с необходимыми параметрами, которую вам нужно только <quote>заполнить</quote>. </para>
|
|
|
</listitem>
|
|
|
|
|
|
<listitem>
|
|
|
<para>Для обработки параметра нажатия удобно использовать Synth_ENVELOPE_ADSR или, если идёт воспроизведение wav с ударными, просто игнорируйте его. </para>
|
|
|
</listitem>
|
|
|
|
|
|
<listitem>
|
|
|
<para>Структура должна отображать, нужна ли она. Если done содержит значение <returnvalue>1</returnvalue>, &arts; удаляет структуру. Для удобства оболочка ADSR предоставляет такой параметр, вам нужно только подключить его к выходу структуры. </para>
|
|
|
</listitem>
|
|
|
|
|
|
<listitem>
|
|
|
<para>Вам нужно переименовать структуру, начиная имя файла с <filename>instrument_</filename>, к примеру, <filename>instrument_piano.arts</filename>, и сохранить её в каталоге <filename class="directory">$<envar>HOME</envar>/arts/structures</filename> (это стандартный каталог для сохранения файлов). </para>
|
|
|
</listitem>
|
|
|
|
|
|
<listitem>
|
|
|
<para>Теперь, когда вы её сохранили, вы сможете использовать её в &artscontrol; в Менеджере &MIDI;.</para>
|
|
|
</listitem>
|
|
|
|
|
|
<listitem>
|
|
|
<para>И, конечно, ваша структура должна уметь проигрывать сгенерированные аудиоданные, которые будут потом воспроизводиться Менеджером аудио (это можно увидеть в &artscontrol;) и которые вы сможете обработать с помощью эффектов. </para>
|
|
|
</listitem>
|
|
|
</itemizedlist>
|
|
|
|
|
|
<para>Хороший способ поучиться созданию инструментов - это открыть уже существующие в <menuchoice><guilabel>Файл</guilabel><guilabel>Открыть пример</guilabel> </menuchoice> и посмотреть, как они работают ;) </para>
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="mapped-instruments">
|
|
|
<title>Карты инструментов</title>
|
|
|
|
|
|
<para>Карты инструментов - это такие инструменты, звучание которых меняется в зависимости от высоты, программы, канала или скорости. К примеру, вы можете создать пианино с пятью октавами, и оно будет звучать намного лучше, чем просто один сэмпл. </para>
|
|
|
|
|
|
<para>Также вы можете создать карту ударных инструментов, тогда при нажатии на определённую клавишу будет проигрываться соответствующий сэмпл. </para>
|
|
|
|
|
|
<para>Очень удобно помещать разные звуки на одну карту, но с разными программами. В этом случае вы сможете использовать синтезатор, внешнюю &MIDI;-клавиатуру или что-нибудь ещё для переключения звуков. </para>
|
|
|
|
|
|
<para>Хороший пример этого инструмента - <filename>arts_all</filename>, в котором собраны все инструменты &arts; на одной карте. С ним вам нужно только настроить его в &artscontrol; на использование <quote>инструмента</quote>, а потом писать музыку на синтезаторе, не думая об &arts;. Понадобился другой звук? Поменяйте программу синтезатора. </para>
|
|
|
|
|
|
<para>Создать такую карту очень просто. Нужно создать текстовый файл и записать туда правила, которые выглядят примерно так: </para>
|
|
|
|
|
|
<programlisting>ON <replaceable>[ условия ...]</replaceable> DO structure=<replaceable>какая-то структура</replaceable>.arts
|
|
|
</programlisting>
|
|
|
|
|
|
<para>Условий может быть и более одного: </para>
|
|
|
|
|
|
<variablelist>
|
|
|
|
|
|
<varlistentry>
|
|
|
<term><option>pitch</option></term>
|
|
|
|
|
|
<listitem>
|
|
|
<para>Высота проигрываемой ноты. Это нужно, если вы хотите создать зависящий от высоты инструмент. В одном из наших примеров для разных октав пианино используются разные сэмплы с этим условием. Вы можете задать одну высоту: <userinput><option>pitch</option>=<parameter>62</parameter></userinput> или диапазон: <userinput><option>pitch</option>=<parameter>60</parameter>-<parameter>72</parameter></userinput>. Допустимый диапазон: от <parameter>0</parameter> до <parameter>127</parameter>. </para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
|
<term><option>program</option></term>
|
|
|
<listitem>
|
|
|
<para>Если на канал, который использует какая-то программа, посылается нота, программа становится активной. Обычно <quote>инструмент</quote> можно указать в настройках программы, которых может быть и несколько: <userinput><option>program </option>=<parameter>3</parameter></userinput> или <userinput> <option>program</option>=<parameter>3</parameter>-<parameter>6 </parameter></userinput>. Диапазон номеров программ: от <parameter>0</parameter> до <parameter>127</parameter>. </para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
|
<term><option>channel</option></term>
|
|
|
<listitem>
|
|
|
<para>Канал, на который посылается нота. Возможен выбор одного или нескольких каналов: <userinput><option>channel</option>=<parameter>0</parameter></userinput> или <userinput><option>channel</option>=<parameter>0</parameter>-<parameter>8</parameter></userinput>. Допустимые каналы: от <parameter>0</parameter> до <parameter>15</parameter>. </para>
|
|
|
</listitem>
|
|
|
|
|
|
</varlistentry>
|
|
|
<varlistentry>
|
|
|
<term><option>velocity</option></term>
|
|
|
<listitem>
|
|
|
<para>Это скорость (громкость) ноты. Вы можете выбрать одну (кому она только нужна?) или диапазон: <userinput><option>velocity</option>=<parameter>127</parameter></userinput> или <userinput><option>velocity</option>=<parameter>64</parameter>-<parameter>127</parameter></userinput>. Диапазон: от <parameter>0</parameter> до <parameter>127</parameter>. </para>
|
|
|
</listitem>
|
|
|
</varlistentry>
|
|
|
</variablelist>
|
|
|
|
|
|
<para>Законченный пример карты (взят из текущего <filename>instrument_arts_all.arts-map</filename>): </para>
|
|
|
|
|
|
<programlisting>ON program=0 DO structure=instrument_tri.arts
|
|
|
ON program=1 DO structure=instrument_organ2.arts
|
|
|
ON program=2 DO structure=instrument_slide1.arts
|
|
|
ON program=3 DO structure=instrument_square.arts
|
|
|
ON program=4 DO structure=instrument_neworgan.arts
|
|
|
ON program=5 DO structure=instrument_nokind.arts
|
|
|
ON program=6 DO structure=instrument_full_square.arts
|
|
|
ON program=7 DO structure=instrument_simple_sin.arts
|
|
|
ON program=8 DO structure=instrument_simple_square.arts
|
|
|
ON program=9 DO structure=instrument_simple_tri.arts
|
|
|
ON program=10 DO structure=instrument_slide.arts
|
|
|
ON program=11 pitch=60 DO structure=instrument_deepdrum.arts
|
|
|
ON program=11 pitch=61 DO structure=instrument_chirpdrum.arts
|
|
|
</programlisting>
|
|
|
|
|
|
<para>Как вы видите, структура выбирается в зависимости от программы. В программе 11 задана <quote>карта ударных</quote> (с двумя входами), которая будет играть <quote>deepdrum</quote> C-5 (высота=60) и <quote>chirpdrum</quote> C#5 (высота=61). </para>
|
|
|
|
|
|
<para>Чтобы карты появлялись в &artscontrol; как вариант инструмента, их нужно вызвать так: <filename>instrument_<replaceable>что-то</replaceable>.arts-map</filename> и перенести в домашний каталог <filename class="directory">$<envar>HOME</envar>/arts/structures</filename>или в каталог &kde; <filename class="directory">$<envar>TDEDIR</envar>/usr/local/kde/share/apps/artsbuilder/examples</filename>. Используемые картами структуры могут иметь как полный путь, так и путь до каталога карты. </para>
|
|
|
|
|
|
<para>Расширение карты arts_all или даже создание законченной общей &MIDI;-карты для &arts; поможет сделать &arts; проще. Подумайте над опубликованием своих интересных инструментов, которые мы можем включить в следущую версию &arts;. </para>
|
|
|
</sect1>
|
|
|
|
|
|
<!-- TODO: Maybe helpful
|
|
|
* using an external keyboard
|
|
|
* loopback midi device
|
|
|
|
|
|
<sect1 id="quick-start">
|
|
|
<title>Quick Start</title>
|
|
|
|
|
|
</sect1>
|
|
|
<sect1 id="internal-details">
|
|
|
<title>More Internal Details</title>
|
|
|
|
|
|
</sect1>
|
|
|
|
|
|
<sect1 id="other-considerations">
|
|
|
<title>Other Considerations</title>
|
|
|
|
|
|
</sect1>
|
|
|
-->
|
|
|
|
|
|
</chapter>
|