<para>O aRts não é somente uma peça de software, ele também fornece uma variedade de APIs para uma variedade de propósitos. Nesta seção, eu tentarei descrevê-las de uma maneira geral, com uma olhada sumária do que as APIs supostamente fazem, e como elas interagem. </para>
<para>Existe uma importante distinção a fazer: a maioria das APIs são <emphasis>independentes de localização e linguagem</emphasis> porque elas são especificadas como <emphasis>mcopidl</emphasis>. Por isto, você pode basicamente usar os serviços que elas oferecem a partir de qualquer linguagem, implementá-las em qualquer linguagem, e não precisa preocupar-se se está lidando com objetos locais ou remotos. Aqui está uma lista das principais: </para>
<listitem><para>Definições básicas que formam o núcleo da funcionalidade MCOP, como o próprio protocolo, definições de objeto, o negociador, o sistema de fluxo e assim por diante. </para></listitem>
<listitem><para>Ela contém o sistema de fluxo que você usará para conectar-se com fluxos de áudio, a definição do <emphasis>Arts::SynthModule</emphasis> que é a base para qualquer interface que possui fluxos, e finalmente alguns objetos de áudio úteis. </para></listitem>
<listitem><para>Aqui, um objeto que pode tocar uma mídia (<emphasis>Arts::PlayObject</emphasis>) é definido. Tocadores de mídia como o noatun do KDE será capaz de tocar qualquer mídia para a qual um PlayObject pode ser encontrado. Assim faz sentido implementar PlayObjects para vários formatos (como mp3, vídeo mpg, midi, wav, ...) desta base, e muitos já estão prontos. </para></listitem>
<listitem><para>Aqui, uma interface para o amplo sistema do servidor de som artsd é definida. A interface é chamada <emphasis>Arts::SoundServer</emphasis>, e implemente funcionalidades como aceitar fulxos a partir da rede, executar amostras, criar outros objetos personalizados do aRts e assim por diante. A transparência de rede é implícita devido ao uso do MCOP (como para todas as demais interfaces daqui). </para></listitem>
<listitem><para>Este módulo define a funcionalidade básica de gráfico de fluxo, que é, combinando objetos simples para mais complexos, definir um gráfico deles. Isto define a interface básica <emphasis>Arts::StructureDesc</emphasis>, <emphasis>Arts::ModuleDesc</emphasis> e <emphasis>Arts::PortDesc</emphasis> que contém uma descrição de uma estrutura, módulo e porta. Existe também uma maneira de obter "objetos da rede" fora desta conexão e descrições de valores, usando uma fabricação. </para></listitem>
<listitem><para>Este módulo define a funcionalidade midi básica, como objetos que produzem eventos midi, o que é um evento midi, um <emphasis>Arts::MidiManager</emphasis> para conectar os produtores e consumidores de eventos midi, e assim por diante. Como sempre a transparência de rede está implícita. </para></listitem>
<listitem><para>Aqui estão vários filtros adicionais, osciladores, efeitos, retardos e assim por diante, tudo necessário para processamento de sinal útil real, e para construir instrumentos complexos e efeitos além dos blocos de construção básicos. </para></listitem>
<listitem><para>Isto cuida dos objetos visuais. Ele define o tipo básico <emphasis>Arts::Widget</emphasis> a partir do qual todos os módulos GUI derivam. Isto produzirá independência de conjunto de ferramentas de desenvolvimento, e ... edição visual de GUI, e GUIs serializáveis. Além disso, como os elementos GUI possuem atributos normais, seus valores podem ser diretamente conectados a algum módulo de processamento de sinal (isto é, o valor de um índice deslizante para um filtro de corte). Como sempre: transparente à rede. </para></listitem>
<para>Onde possível, o próprio aRts é implementado usando IDL. Por outro lado, existem algumas APIs <emphasis>específicas de linguagem</emphasis>, usando seja C++ plano ou C plano. É normalmente mais adequado usar interfaces IDL quando possível, e outras APIs quando necessário. Aqui está uma lista das APIs específicas de linguagem: </para>
<listitem><para>Estas são APIs convenientes do KDE para os casos mais simples e comuns, onde você somente deseja tocar uma amostra. As APIs estão em C++ plano, otimizadas para o Qt/KDE, e são fáceis de usar e obter. </para></listitem>
<listitem><para>Aqui está toda a magia que o MCOP faz. A biblioteca contém as coisas básicas que você precisa conhecer para escrever um aplicativo MCOP simples, o expedidor, temporizadores, gerenciamento de entrada e saída, além dos mecanismos internos necessários para o protocolo MCOP propriamente dito funcionar. </para></listitem>
<para>A <acronym>API</acronym> C do &arts; foi desenhada para tornar fácil escrever e portar aplicativos em C plano para o servidor de som &arts;. Ela fornece funcionalidade de fluxo (enviando fluxos de amostra para o <application>artsd</application>), tanto em bloco como não-bloco. Para a maioria dos aplicativos você simplesmente removerá as poucas chamadas do sistema que lidam com seu dispositivo de áudio e as substituirá com as chamadas apropriadas ao &arts;.</para>
<para>Eu fiz dois portes como prova do conceito: <application>mpg123</application> e <application>quake</application>. Você pode obter os remendos a partir <ulink url="http://space.twc.de/~stefan/kde/download/artsc-patches.tar.gz">daqui</ulink>. Sinta-se à vontade para enviar seus próprios remendos para o mantenedor do &arts; ou de pacotes de programas multimídia de modo que eles possam integrar o suporte ao &arts; em seu código.</para>
<title>Compilando e Ligando: <application>artsc-config</application></title>
<para>Para compilar e ligar facilmente programas usando a <acronym>API</acronym> C do &arts;, o utilitário <application>artsc-config</application> é fornecido o qual conhece quais bibliotecas você precisar ligar e onde os arquivos de inclusão estão. Ele é chamado usando</para>