|
|
<!-- <?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>
|