<!-- 
<?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="arts-tools">
<title
>Инструменты &arts;</title>

<para
>Это набор управляющих &arts; модулей. Чтобы пользоваться &arts; эффективно, нужно уметь ими пользоваться. В этом разделе описывается каждый из модулей и параметры их команд. </para>

<sect1 id="kde-control-center">
<title
>&kcontrol;</title>

<para
>Если &arts; запущен в &kde;, &kcontrolcenter; размещает его настройками в категории <guilabel
>Звук</guilabel
>. Вы можете связать звуки с различными событиями менеджера окон и &kde; в категории <menuchoice
><guilabel
>Звук</guilabel
><guilabel
>Системные оповещения</guilabel
></menuchoice
>. О настройках панели управления читайте в справочнике по &kcontrol;. </para>

</sect1>

<sect1 id="artsd">
<title
>&artsd;</title>

<para
>&artsd; управляет доступом к звуковому оборудованию, это один из сервисов &arts;. Он позволяет разным приложениям одновременно посылать запросы серверу, где они будут накладываться друг на друга и воспроизводиться. Без единого звукового сервера одно приложение, использующее звуковое устройство, будет блокировать запросы остальных. </para>

<para
>Для работы &arts; нужно, чтобы была запущена только одна копия модуля &artsd;. Если это указано в панели &kcontrol; <guilabel
>Звуковая подсистема</guilabel
>, &artsd; будет запускаться автоматически при входе в систему. </para>

<para
>Аргументами программы могут быть:</para>

<!-- LW: FIX THIS -->

<cmdsynopsis
><command
>artsd</command
> <group choice="opt"
> <option
>-n</option
> <option
>-p</option
> <option
>-N</option
> <option
>-W <replaceable
>n</replaceable
></option
> </group
> <group choice="opt"
> <option
>-a <replaceable
>audiomethod</replaceable
></option
> <option
>-r <replaceable
>sampling rate</replaceable
></option
> <option
>-b <replaceable
>bits</replaceable
></option
> <option
>-d</option
> <option
>-D <replaceable
>devicename</replaceable
></option
> <option
>-F <replaceable
>fragments</replaceable
></option
> <option
>-S <replaceable
>size</replaceable
></option
> <option
>-s <replaceable
>seconds</replaceable
></option
> <option
>-m <replaceable
>appName</replaceable
></option
> </group
> <group choice="opt"
> <option
>-h</option
> <option
>-A</option
> <option
>-v</option
> <option
>-l <replaceable
>level</replaceable
></option
> </group
> </cmdsynopsis>

<variablelist
><varlistentry>
<term
><option
>-r <replaceable
>частота дискретизации</replaceable
></option
></term>
<listitem>
<para
>Задайте используемую частоту дискретизации.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Справка по использованию команды.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-n</option
></term>
<listitem>
<para
>Использовать работу в сети.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-p <replaceable
>порт</replaceable
></option>
</term>
<listitem>
<para
>Задать <acronym
>TCP</acronym
> порт (подразумевает указание и <option
>-n</option
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-u</option
></term>
<listitem>
<para
>Открытый доступ без аутентификации (опасно).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-d</option
></term>
<listitem>
<para
>Включить режим двустороннего ввода-вывода.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-D <replaceable
>имя устройства</replaceable
></option
></term>
<listitem>
<para
>Укажите аудиоустройство (обычно <filename
>/dev/dsp</filename
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-F <replaceable
>блоки</replaceable
></option
></term>
<listitem>
<para
>Установите количество блоков.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-S <replaceable
>размер</replaceable
></option
></term>
<listitem>
<para
>Установите размер блока в байтах.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-s <replaceable
>секунды</replaceable
></option
></term>
<listitem>
<para
>Установите время отключения сервера при бездействии в секундах. Значение ноль отменяет автоматическое отключение.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-m <replaceable
>имя приложения</replaceable
></option
></term>
<listitem>
<para
>Укажите имя приложения, которое будет использоваться для сообщений об ошибках, предостережениях и отображения информации. Если вы используете KDE, это может делать <application
>artsmessage</application
>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-N</option
></term>
<listitem>
<para
>Увеличивает размер сетевого буфера до значения, подходящего при использовании локальной сети 10 мбит/. То же самое, что и параметр -w 5 (смотрите ниже). </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-w <replaceable
>число</replaceable
></option
></term>
<listitem>
<para
>При использовании <application
>artsd</application
> в сети обычно стоит использовать сетевой буфер большего размера, чтобы избежать пропадания звука. ARts предоставляет минимальный буфер для приложений. Без указания данного параметра за минимальный размер буфера берется размер блока, умноженный на число блоков (см. выше). Данный же параметр позволяет увеличить стандартный размер с коэффициентом <replaceable
>число</replaceable
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-l <replaceable
>уровень</replaceable
></option
></term>
<listitem>
<para
>Установите уровень вывода служебной информации: - 3 (нет), 2 (предупреждения), 1 (информация), 0 (отладка).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-v</option
></term>
<listitem>
<para
>Показать версию.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>В большинстве случаев достаточно просто запустить &artsd;. </para>
</sect1>

<sect1 id="artswrapper">
<title
>&artswrapper;</title>

<para
>Чтобы добиться хорошего времени отклика, &artsd; запускается как процесс реального времени (на тех платформах, где это возможно). Для этого требуются права пользователя <systemitem class="username"
>root</systemitem
>, поэтому, чтобы снизить риски, связанные с безопасностью, &artsd; можно запускать с помощью небольшой программы &artswrapper;, которая, будучи запущенной от <systemitem class="username"
>root</systemitem
>, получает приоритет выполнения в реальном времени и запускает &artsd; от непривелигированного пользователя (не <systemitem class="username"
>root</systemitem
>). </para>

<para
>Если для этой небольшой программы вы сделаете UID <systemitem class="username"
>root</systemitem
>, вероятнее всего, качество воспроизведения будет улучшено, так как должны исчезнуть задержки при воспроизведении. Однако при этом увеличивается риск того, что ошибка в программе или недобросовестный пользователь могут нарушить работу всей системы или как-то иначе повредить ее работе. Кроме того, на машине, которой пользуются несколько человек одновременно, приоритет реального времени для сервера может помещать пользователям, которые занимаются какой-то серьезной работой.</para>

</sect1>

<sect1 id="artsshell">
<title
>&artsshell;</title>

<para
>&artsshell; выполняет различные функции, связанные со звуковым сервером. Мы предполагаем дополнить модуль новыми командами в будущем (об этом смотрите в комментариях кода). </para>

<para
>Формат команды: </para>

<!-- LW: FIX THIS -->

<cmdsynopsis
><command
>artsshell</command
> <group
> <arg
>suspend</arg
><arg
>status</arg
> <arg
>terminate</arg
> <arg
>autosuspend <replaceable
>secs</replaceable
></arg
> <arg
>networkbuffers <replaceable
>n</replaceable
></arg
> <arg
>volume [<replaceable
>volume</replaceable
>]</arg
> <arg
>stereoeffect <replaceable
>options</replaceable
></arg
> </group
> <group
> <option
>-h</option
> <option
>-q</option
> </group
> </cmdsynopsis>

<para
>artsshell [параметры] <replaceable
>команда</replaceable
> [<replaceable
>параметры команды</replaceable
>] </para>

<para
>Поддерживаются следущие параметры: </para>

<variablelist>

<varlistentry>
<term
><option
>-q</option
></term>
<listitem>
<para
>Подавлять весь вывод.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Справка по использованию команды.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>Поддерживаются следущие команды:</para>

<variablelist>

<varlistentry>
<term
><option
>suspend</option
></term>
<listitem>
<para
>Отключить звуковой сервер. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>status</option
></term>
<listitem>
<para
>Показать информацию о состоянии сервера.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>terminate</option
></term>
<listitem>
<para
>Отключить звуковой сервер. Если какие-то приложения его используют, они сообщат об ошибках. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>autosuspend</option
> <parameter
>секунды</parameter
></term>
<listitem>
<para
>Установите время ожидания в секундах. Если звуковой сервер будет бездействовать это количество времени, он отключится. Значение ноль отменяет автоотключение. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>networkbuffers</option
> <parameter
>число</parameter
></term>
<listitem>
<para
>Размер сетевых буферов вычисляется как стандартный размер буфера по умолчанию, умноженный на <parameter
>число</parameter
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>volume</option
> [<replaceable
>громкость</replaceable
>]</term>
<listitem>
<para
>Установите громкость аудио вывода звуковым сервером. Аргумент <replaceable
>громкость</replaceable
> - это число с плавающей точкой. Если команда будет без парамеров, отобразится текущий уровень громкости. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect list</option
></term>
<listitem>
<para
>Список всех модулей стереоэффектов.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect insert [top|bottom]</option
> <replaceable
>название</replaceable
></term>
<listitem>
<para
>Помещает стререоэффект в стек и возвращает идентификатор, с помощью которого можно будет извлечь этот эффект. Эффект может быть помещён в начало или конец стека.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect remove</option
> <replaceable
>идентификатор</replaceable
></term>
<listitem>
<para
>Извлекает стереоэффект с указанным <replaceable
>идентификатором</replaceable
> из стека.</para>
</listitem>
</varlistentry>

</variablelist>

</sect1>

<sect1 id="artsplay">
<title
><application
>artsplay</application
></title>

<para
><application
>artsplay</application
> проигрывает звуковые файлы. У команды может быть только один аргумент - имя файла, который посылается звуковому серверу. Типом этого файла может быть <literal role="extension"
>wav</literal
>, <literal role="extension"
>au</literal
> или другой распространённый. Этот модуль полезен для тестирования активности звукового сервера. Запустив две команды параллельно или через малый промежуток времени, вы увидите, как звуковой сервер накладывает несколько сигналов друг на друга.</para>

</sect1>

<sect1 id="artsdsp">
<title
><application
>artsdsp</application
></title>

<para
>Звуковой сервер поддерживает только совместимые с &arts; приложения. Многие приложения пытаются обратиться к звуковой карте напрямую, тогда команда &artsdsp; позволяет, не внося в них исправления, работать с &arts;. </para>

<para
>Если приложение запущено под &artsdsp;, все его попытки обратиться к устройству <filename class="devicefile"
>/dev/dsp</filename
> перехватываются и преобразовываются в вызовы &arts; <acronym
>API</acronym
>. Поскольку эмуляция устройства несовершенна, большинство приложений работает, хотя и замечается увеличение задержки и снижается быстродействие. </para>

<para
>Формат команды &artsdsp;: </para>

<!-- LW: FIX THIS -->
<para
>artsdsp [<replaceable
>параметры</replaceable
>] <replaceable
>аргументы приложения</replaceable
> </para>

<para
>Возможны следущие параметры: </para>

<variablelist>

<varlistentry>
<term
><option
>-h</option
>, <option
>--помощь</option
></term>
<listitem>
<para
>Вызов краткой справки.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-n</option
> <option
>--name</option
> = <replaceable
>имя</replaceable
></term>
<listitem>
<para
>Испульзуйте <replaceable
>имя</replaceable
> для определения проигрывателя <command
>artsd</command
>.</para>

</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-m</option
> <option
>--mmap</option
></term>
<listitem>
<para
>Эмулировать отображение в память (например, для <application
>Quake</application
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-v</option
> <option
>--verbose</option
></term>
<listitem>
<para
>Вывести параметры.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>Пример вызова: </para>

<para>
<userinput
><command
>artsdsp</command
> <option
>-v</option
> <option
>-m</option
> <parameter
>realplay <replaceable
>song.mp3</replaceable
></parameter
></userinput>
</para>

<para
>Некоторые приложения работают лучше, если задан параметр <option
>--mmap</option
>. Конечно, эмулируются не все характеристики устройства, но большинство работает. Если вы обнаружили неработающее приложение, отправьте подробный отчёт об ошибке, чтобы разработчики смогли это исправить. Не забывайте о встроенной поддержке &arts;. Если ваше любимое приложение не поддерживается, попросите разработчиков его добавить. </para>

</sect1>

<sect1 id="artscat">
<title
><application
>artscat</application
></title>

<para
>Это простой модуль, отправляющий необработанные данные звуковому серверу. Вам необходимо только указать формат данных (частоту дискретизации, размер сэмплов и количество каналов). Вы, скорее всего, не будете его часто использовать, но он удобен для тестирования. Синтаксис команды: </para>

<!-- LW: FIX THIS -->
 
<para
>artscat [ <replaceable
>параметры</replaceable
> ] [ <replaceable
>имя файла</replaceable
> ] </para>

<para
>Если имя файла не указано, чтение идёт из потока стандартного ввода. Поддерживаются следущие параметры: </para>

<variablelist>
<varlistentry>
<term
><option
>-r</option
> <parameter
>частота дискретизации</parameter
></term>
<listitem>
<para
>Установите частоту дискретизации. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-b</option
> <parameter
>биты</parameter
></term>
<listitem>
<para
>Установите размер сэмпла (8 или 16). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-c</option
> <parameter
>каналы</parameter
></term>
<listitem>
<para
>Установите количество каналов (1 или 2). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Показать использование команды и выйти. </para>
</listitem>
</varlistentry>

</variablelist>
</sect1>

<sect1 id="artscontrol">
<title
>&artscontrol;</title>

<para
>Графический модуль для выполнения задач, связанных со звуковым сервером. По умолчанию отображаются два индикатора уровня громкости и ползунок для регулировки громкости. В меню <guimenu
>Вид</guimenu
> вы можете выбрать и другие функции: </para>

<variablelist>

<varlistentry>
<term
><guimenuitem
>Показать область БПФ</guimenuitem
></term>
<listitem>
<para
>Открывает окно с анализатором спектра в реальном времени.  </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Показать менеджера аудио</guimenuitem
></term>
<listitem>
<para
>Показывает активные источники звука и позволяет подключить их к любой доступной шине. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Показать состояние aRts</guimenuitem
></term>
<listitem>
<para
>С помощью этого модуля вы будете знать, активен ли сервер и обладает ли он приоритетом работы в реальном времени. Он также показывает, сколько времени осталось для автоматического отключения сервера, и позволяет вам немедленно его отключить вручную. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Показать midi-менеджера</guimenuitem
></term>
<listitem>
<para
>Отображает активные входы и выходы &MIDI; и позволяет их подключать друг к другу. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>FreeVerb</guimenuitem
></term>
<listitem>
<para
>Подключает эффект эха к стеку &arts; и позволяет вам графически изменять параметры эффекта. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Указатель громкости в цифровом виде</guimenuitem
></term>
<listitem>
<para
>Показывает индикаторы громкости в главном окне в форме цветных индикаторов вместо строк состояния. </para>
</listitem>
</varlistentry>

</variablelist>

</sect1>

<sect1 id="artsc-config">
<title
><application
>artsc-config</application
></title>

<para
>Этот модуль поможет разработчикам в использовании &arts; C <acronym
>API</acronym
>. Он выбирает подходящие параметры компилятора и компоновщика при компиляции и компоновке кода с помощью &arts;. Желательно его использовать в сборочных файлах для обеспечения переносимости. Допустимы три параметра: </para>

<variablelist>
<varlistentry>
<term
><option
>--cflags</option
></term>
<listitem>
<para
>Показывает необходимые компилятору флаги при использовании &arts; C <acronym
>API</acronym
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>--libs</option
></term>
<listitem>
<para
>Показывает необходимые компоновщику флаги при компоновке с использованием &arts; C <acronym
>API</acronym
>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><acronym
>--version</acronym
></term>
<listitem>
<para
>Показывает версию <command
>artsc-config</command
>. </para>
</listitem>
</varlistentry>
</variablelist>

<para
>Пример вывода команды:</para>

<screen width="40"
><prompt
>%</prompt
> <userinput
><command
>artsc-config</command
> <option
>--cflags</option
></userinput>
<computeroutput
>-I/usr/local/kde2/include/artsc</computeroutput>
<prompt
>%</prompt
> <userinput
><command
>artsc-config</command
> <option
>--libs</option
></userinput>
<computeroutput
>-L/usr/local/kde2/lib -ldl -lartsc -DPIC -fPIC -lpthread</computeroutput>
<prompt
>%</prompt
> <userinput
><command
>artsc-config</command
> <option
>--version</option
></userinput>
<computeroutput
>0.9.5</computeroutput
>
</screen>

<para
>Вы можете использовать этот модуль в сборочном файле по такому правилу: </para>

<programlisting
>artsc: artsc.c
        gcc `artsc-config --cflags` -o artsc artsc.c `artsc-config --libs`
</programlisting>

</sect1>

<sect1 id="mcopidl">
<title
>&mcopidl;</title>

<para
>&mcopidl; - это компилятор &IDL;-файлов для &MCOP;, (Multimedia Communication Protocol, протокол связи мультимедиа-модулей), использующийся в &arts;. Интерфейсы &arts; описаны в &IDL; (Interface Definition Language, язык определения интерфейса). Модуль &mcopidl; считает файл &IDL; входом и генерирует заголовочный и исходный файлы C++ для создания класса интерфейса. Синтаксис команды: </para>

<!-- LW: FIX THIS -->

<para
>mcopidl [ <replaceable
>параметры</replaceable
> ] <replaceable
>имя файла</replaceable
> </para>

<para
>Допустимые параметры:</para>
<variablelist>
<varlistentry>
<term
><option
>-I</option
> <parameter
>каталог</parameter
></term>
<listitem>
<para
>Поиск в каталоге <parameter
>каталог</parameter
> включаемых файлов (include). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-e</option
> <parameter
>имя</parameter
></term>
<listitem>
<para
>Исключает структуру, интерфейс или перечисляемый тип с именем <parameter
>имя</parameter
> во время генерации кода. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-t</option
></term>
<listitem>
<para
>Создайте также файлы <literal role="extension"
>.mcoptype</literal
>/<literal role="extension"
>.mcopclass</literal
>, содержащие информацию о типах для файла &IDL;. </para>
</listitem>
</varlistentry>
</variablelist>

<para
>Болееподробно &MCOP; и &IDL; рассматриваются в разделе <link linkend="interfaces"
>Интерфейсы и &IDL;</link
>. </para>

</sect1>

</chapter>
