<!-- 
<?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
>Herramientas &arts;</title>

<para
>Incluídas con &arts; son una serie de utilidades para controlar y configurar su comportamiento. Necesita estar algo familiarizado con muchas de estas herramientas para usar &arts; de forma efectiva. Esta sección describe cada utilidad y sus opciones para las órdenes. </para>

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

<para
>Cuando ejecuta &arts; bajo &kde;, el &kcontrolcenter; provee un grupo de opciones en el panel de control bajo la categoría <guilabel
>Sistema de sonido</guilabel
>. Algunas de estas opciones las usa &arts;. Puede también asociar sonidos con varios eventos del administrador de ventanas y &kde; usando el panel <menuchoice
><guilabel
>Sonidos y multimedia</guilabel
><guilabel
>Notificaciones de sistema</guilabel
> </menuchoice
>. Consulte el manual de &kcontrol; para obtener información sobre el manejo de las opciones del panel. </para>

</sect1>

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

<para
>El acceso a los recursos del hardware de sonido es controlado por &artsd;, el demonio de &arts;. Ésto permite a aplicaciones diferentes enviar solicitudes simultáneas al servidor, donde pueden ser mezcladas y reproducidas. Sin un servidor de sonido centralizado una aplicación usando un dispositivo de sonido podría hacer que otras aplicaciones no lo pudieran usar. </para>

<para
>Para usar &arts; tiene que haber una y solo una copia de &artsd; ejecutándose. Se ejecuta normalmente cuando &kde; se inicia si está activado en el panel de &kcontrol; el <guilabel
>Servidor de sonido</guilabel
> </para>

<para
>El programa acepta los siguientes argumentos:</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
>método de audio </replaceable
></option
> <option
>-r <replaceable
>ratio de muestreo </replaceable
></option
> <option
>-b <replaceable
>bits </replaceable
></option
> <option
>-d </option
> <option
>-D <replaceable
>nombre de dispositivo </replaceable
></option
> <option
>-F <replaceable
>fragmentos </replaceable
></option
> <option
>-S <replaceable
>tamaño </replaceable
></option
> <option
>-s <replaceable
>segundos </replaceable
></option
> <option
>-m <replaceable
>nombre aplicación </replaceable
></option
> </group
> <group choice="opt"
> <option
>-h</option
> <option
>-A</option
> <option
>-v</option
> <option
>-l <replaceable
>nivel </replaceable
></option
> </group
> </cmdsynopsis>

<variablelist
><varlistentry>
<term
><option
>-r <replaceable
>ratio de muestreo</replaceable
></option
></term>
<listitem>
<para
>Establece el ratio de muestreo a usar.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Muestra la utilización de la orden.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-n</option
></term>
<listitem>
<para
>Habilita la transparencia de red.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-p <replaceable
>puerto</replaceable
></option>
</term>
<listitem>
<para
>Establece el puerto <acronym
>TCP</acronym
> a usar (implica <option
>-n</option
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-u</option
></term>
<listitem>
<para
>Público, sin autentificación (peligroso).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-d</option
></term>
<listitem>
<para
>Habilita operaciones en ambas direcciones (full duplex).</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-D <replaceable
>nombre de dispositivo</replaceable
></option
></term>
<listitem>
<para
>Especifica el dispositivo de audio (normalmente <filename
>/dev/dsp</filename
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-F <replaceable
>fragmentos</replaceable
></option
></term>
<listitem>
<para
>Establece el número de fragmentos.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-S <replaceable
>tamaño</replaceable
></option
></term>
<listitem>
<para
>Establece el tamaño de los fragmentos, en bytes.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-s <replaceable
>segundos</replaceable
></option
></term>
<listitem>
<para
>Establece el tiempo de autosuspensión en segundos. El valor cero desactiva la autosuspensión.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-m <replaceable
>nombre applicación</replaceable
></option
></term>
<listitem>
<para
>Especifica el nombre de la aplicación que se usará para mostrar errores, avisos y mensajes de información. Si está ejecutando KDE puede usar la utilidad <application
>artsmessage</application
> para ésto.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-N</option
></term>
<listitem>
<para
>Incrementa el tamaño de la memoria de intercambio de red a un valor adecuado para ejecutarse sobre una LAN a 10 mbps. Es equivalente a usar la opción -w 5 (ver a continuación). </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-w <replaceable
>n</replaceable
></option
></term>
<listitem>
<para
>Cuando ejecute <application
>artsd</application
> a través de una conexión de red a otro servidor, normalmente querrá utilizar un tamaño de memoria de intercambio más grande para evitar pérdidas. ARts proporciona aplicaciones con un tamaño de memoria de intercambio mínimo sugerido. Sin esta opción, el tamaño predeterminado está basado en el tamaño del fragmento * número de fragmento. Utilizar esta opción puede incrementar el tamaño predeterminado con un factor <replaceable
>n</replaceable
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-l <replaceable
>nivel</replaceable
></option
></term>
<listitem>
<para
>Establece el nivel de información: 3 (silencio), 2 (avisos), 1 (información) ó 0 (depuración).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-v</option
></term>
<listitem>
<para
>Muestra el nivel de la versión.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>En la mayoría de los casos con ejecutar &artsd; será suficiente. </para>
</sect1>

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

<para
>Para proveer una buena respuesta en tiempo real, &artsd; se ejecuta normalmente como un proceso en tiempo real (en plataformas en las que se soportan prioridades en tiempo real). Ésto requiere permisos de <systemitem class="username"
>root</systemitem
>, por lo que para minimizar las implicaciones de seguridad, &artsd; puede iniciarse usando un pequeño programa &artswrapper; el cual simplemente establece prioridad en tiempo real (ejecutándose como <systemitem class="username"
>root</systemitem
>) y después arranca &artsd; como un usuario no <systemitem class="username"
>root</systemitem
>. </para>

<para
>Si hace artswrapper SUID <systemitem class="username"
>root</systemitem
>, probablemente mejorará la calidad de su reproductor de audio reduciendo los saltos en la música. Sin embargo, también incrementará el riesgo de fallos en el código o de que un usuario malicioso pueda colgar o perjudicar su máquina. Además, en las máquinas multiusuario, priorizar el audio de alta calidad puede dar como resultado un menor rendimiento para los usuarios que intentan hacer «productivo» el uso de la máquina.</para>

</sect1>

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

<para
>El orden &artsshell; se ideó como una utilidad para realizar varias funciones relacionadas con el servidor de sonido. Se espera que la utilidad se extienda con nuevas órdenes en el futuro (consulte los comentarios del código fuente para ver algunas ideas). </para>

<para
>La orden tiene el siguiente formato: </para>

<!-- LW: FIX THIS -->

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

<para
>artsshell [opciones] <replaceable
>orden</replaceable
> [<replaceable
>opciones de la orden</replaceable
>] </para>

<para
>Están soportadas las siguientes opciones: </para>

<variablelist>

<varlistentry>
<term
><option
>-q</option
></term>
<listitem>
<para
>Suprime todas las salidas.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Muestra la utilización de la orden.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>Están soportadas las siguientes órdenes:</para>

<variablelist>

<varlistentry>
<term
><option
>suspend</option
></term>
<listitem>
<para
>Suspende el servidor de sonido. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>status</option
></term>
<listitem>
<para
>Muestra información del estado del servidor de sonido.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>terminate</option
></term>
<listitem>
<para
>Finalizar el servidor de sonido. Ésto puede confundir y/o colgar aplicaciones que se estén usando en ese momento. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>autosuspend</option
> <parameter
>segundos</parameter
></term>
<listitem>
<para
>Establece el tiempo de autosuspensión en el número especificado de segundos. El servidor de sonido se suspenderá asimismo si está ocioso durante ese periodo de tiempo. El valor cero desactiva la autosuspensión. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>networkbuffers</option
> <parameter
>n</parameter
></term>
<listitem>
<para
>Establece el tamaño de la memoria de intercambio de red a un factor <parameter
>n</parameter
> veces el tamaño predeterminado. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>volume</option
> [<replaceable
>volumen</replaceable
>]</term>
<listitem>
<para
>Establece el nivel de volumen para la salida de audio del servidor de sonido. El argumento <replaceable
>volumen</replaceable
> es un valor de coma flotante. Si no se añaden argumentos se muestra el volumen actual. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect list</option
></term>
<listitem>
<para
>Lista todos los módulos de efectos estéreo disponibles.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect insert [top|bottom]</option
> <replaceable
>nombre</replaceable
></term>
<listitem>
<para
>Inserta un efecto estéreo en la pila de efectos estéreo. Devuelve un identificador que puede usarse después para borrarlo. Puede instalarse en la parte superior o en la inferior (predeterminado).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect remove</option
> <replaceable
>id</replaceable
></term>
<listitem>
<para
>Quita el efecto estéreo con identificador <replaceable
>id</replaceable
> de la pila de efectos.</para>
</listitem>
</varlistentry>

</variablelist>

</sect1>

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

<para
>La orden <application
>artsplay</application
> es una utilidad para reproducir un archivo de sonido. Acepta un solo argumento correspondiente al nombre del archivo de sonido que será enviado al servidor de sonido para ser reproducido. El archivo de sonido puede ser de alguno de los tipos de archivo de sonido comunes <literal role="extension"
>wav</literal
> o <literal role="extension"
>au</literal
>. Ésta utilidad es buena para comprobar si el servidor de sonido está funcionando. Ejecutando dos órdenes en paralelo o en una rápida sucesión puede demostrar cómo el servidor de sonido combina más de una fuente de sonido.</para>

</sect1>

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

<para
>El servidor de sonido solo soporta aplicaciones que soporten &arts;. Algunas aplicaciones heredadas querrán acceder al dispositivo de sonido directamente. La orden &artsdsp; proporciona una solución provisional que permite a la mayor parte de estas aplicaciones ejecutarse sin cambios. </para>

<para
>Cuando una aplicación se ejecuta bajo &artsdsp; todos los accesos al dispositivo de audio <filename class="devicefile"
>/dev/dsp</filename
> son interceptados y mapeados dentro de las llamadas al <acronym
>API</acronym
> de &arts;. A pesar de que la emulación del dispositivo no es muy buena, muchas aplicaciones funcionan de este modo, aunque con alguna degradación en la ejecución y la latencia. </para>

<para
>La orden &artsdsp; sigue el siguiente formato: </para>

<!-- LW: FIX THIS -->
<para
>artsdsp [<replaceable
>opciones</replaceable
>] <replaceable
>argumentos de la aplicación</replaceable
> </para>

<para
>Se reconocen las siguientes opciones: </para>

<variablelist>

<varlistentry>
<term
><option
>-h</option
>, <option
>--help</option
></term>
<listitem>
<para
>Muestra un mensaje de ayuda.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-n</option
> <option
>--name</option
> = <replaceable
>nombre</replaceable
></term>
<listitem>
<para
>Usa <replaceable
>nombre</replaceable
> para identificar un reproductor en <command
>artsd</command
>.</para>

</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-m</option
> <option
>--mmap</option
></term>
<listitem>
<para
>Emula el mapeo de memoria (&eg; para <application
>Quake</application
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-v</option
> <option
>--verbose</option
></term>
<listitem>
<para
>Muestra los parámetros.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>Una llamada típica es: </para>

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

<para
>Algunas aplicaciones funcionan mejor con la opcion <option
>--mmap</option
>. No todas las características del dispositivo de sonido son totalmente emuladas, pero muchas aplicaciones deberían funcionar. Si encuentra una que no lo hace, envíe un detallado informe del fallo y los desarrolladores intentarán arreglarlo. De nuevo, recuerde que ésta es una solución provisional y algo fea. La mejor solución es añadir soporte nativo para &arts; en las aplicaciones. Si su aplicación favorita de sonido no tiene soporte para &arts; pregunte a sus desarrolladores para proveérselo. </para>

</sect1>

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

<para
>Es una simple utilidad para enviar datos de audio puros al servidor de sonido. Necesita especificar el formato de los datos (ratio de muestreo, tamaño de muestra y número de canales). Probablemente sea una utilidad que no usará a menudo, pero puede ser útil para hacer pruebas. La sintaxis de la orden es: </para>

<!-- LW: FIX THIS -->
 
<para
>artscat [ <replaceable
>opciones</replaceable
> ] [ <replaceable
>nombre de archivo</replaceable
> ] </para>

<para
>Si no se especifica un nombre de archivo, lee la entrada estándar. Están soportadas las siguientes opciones: </para>

<variablelist>
<varlistentry>
<term
><option
>-r</option
> <parameter
>ratio de muestreo</parameter
></term>
<listitem>
<para
>Establece el ratio de muestreo a usar. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-b</option
> <parameter
>bits</parameter
></term>
<listitem>
<para
>Establece el tamaño de muestra a usar (8 o 16). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-c</option
> <parameter
>canales</parameter
></term>
<listitem>
<para
>Establece el número de canales (1 ó 2). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Muestra el uso de la orden y sale. </para>
</listitem>
</varlistentry>

</variablelist>
</sect1>

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

<para
>Ésta es una aplicación gráfica para realizar una serie de tareas relacionadas con el servidor de sonido. La ventana predeterminada muestra dos indicadores de volumen y un deslizador para controlar este volumen. Desde el menú <guimenu
>Ver</guimenu
> puede seleccionar otras funciones: </para>

<variablelist>

<varlistentry>
<term
><guimenuitem
>Campo FFT</guimenuitem
></term>
<listitem>
<para
>Abre una ventana que muestra una pantalla con un analizador de espectro en tiempo real. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Administrador de audio</guimenuitem
></term>
<listitem>
<para
>Muestra las fuentes de sonido activas y le permite conectarlas a alguno de los buses disponibles. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Estado de aRTs</guimenuitem
></term>
<listitem>
<para
>Muestra si el servidor de sonido se está ejecutando y si trabaja en tiempo real. Indica si el servidor será autosuspendido y permite suspenderlo automáticamente. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Administrador midi</guimenuitem
></term>
<listitem>
<para
>Muestra entradas y salidas &MIDI; activas y le permite realizar conexiones [PENDIENTE: ¿No funciona todavía? Necesita más detalles]. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>FreeVerb</guimenuitem
></term>
<listitem>
<para
>Conecta el efecto de reverberación FreeVerb a la pila de efectos de salida de &arts; y le permite controlar los parámetros del efecto gráficamente. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Pantalla de volumen estilo led</guimenuitem
></term>
<listitem>
<para
>Cambia el indicador de volumen de la ventana principal para usar una pantalla con formato de <acronym
>LED</acronym
> en lugar de una barra de progreso. </para>
</listitem>
</varlistentry>

</variablelist>

</sect1>

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

<para
>Ésta es una utilidad para ayudar a los desarrolladores utilizando el <acronym
>API</acronym
> C de &arts;. Da como resultado la salida apropiada para el compilador así como las opciones necesarias cuando se compila y enlaza código con &arts;. Se pretende que sea utilizado sin archivos para ayudar a la portabilidad. La orden acepta tres opciones: </para>

<variablelist>
<varlistentry>
<term
><option
>--cflags</option
></term>
<listitem>
<para
>Muestra los indicadores del compilador cuando se compila con la <acronym
>API</acronym
> C de &arts;. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>--libs</option
></term>
<listitem>
<para
>Muestra los indicadores del enlazador necesarios cuando se enlaza con la <acronym
>API</acronym
> C de &arts;. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><acronym
>--version</acronym
></term>
<listitem>
<para
>Muestra la versión de la orden <command
>artsc-config</command
>. </para>
</listitem>
</varlistentry>
</variablelist>

<para
>La respuesta usual de la orden se muestra a continuación:</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
>Puede usar esta utilidad para crear un archivo utilizando una regla como: </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
>La utilidad &mcopidl; es el compilador de archivos &IDL; para &MCOP;, el Protocolo de Comunicación Multimedia usado por &arts;. Las interfaces en &arts; se definen en &IDL;, un lenguaje independiente, Lenguaje de Definición de Interfaces. La utilidad &mcopidl; acepta un archivo &IDL; como entrada y genera archivos cabecera y fuente en C++ para una clase, implementando la interfaz. La orden utiliza la siguiente sintaxis: </para>

<!-- LW: FIX THIS -->

<para
>mcopidl [ <replaceable
>opciones</replaceable
> ] <replaceable
>nombrearchivo</replaceable
> </para>

<para
>Las opciones válidas son:</para>
<variablelist>
<varlistentry>
<term
><option
>-I</option
> <parameter
>directorio</parameter
></term>
<listitem>
<para
>Busca cabeceras en el <parameter
>directorio</parameter
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-e</option
> <parameter
>nombre</parameter
></term>
<listitem>
<para
>Excluye el nombre de una estructura, interfaz o tipo enum durante la generación del código. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-t</option
></term>
<listitem>
<para
>También crea archivos <literal role="extension"
>.mcoptype</literal
>/<literal role="extension"
>.mcopclass</literal
> con información de tipo para el archivo &IDL;. </para>
</listitem>
</varlistentry>
</variablelist>

<para
>Puede encontrar más información sobre &MCOP; e &IDL; en la sección <link linkend="interfaces"
>Interfaces e &IDL;</link
>. </para>

</sect1>

</chapter>
