<!-- 
<?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;-værktøjer</title>

<para
>Et antal værktøjer levereres sammen med &arts; til at kontrollere og indrette dens opførsel. Du skal kende en smule til de fleste af disse værktøjer for at kunne bruge &arts; på en effektiv måde. Dette afsnit beskriver hvert af værktøjerne og deres kommandoflag. </para>

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

<para
>Når man kør &arts; under &kde;, sørger &kcontrolcenter; for en gruppe af indstillinger i kategorien <guilabel
>Lyd</guilabel
>. Visse af disse bruges af &arts;. Man kan også tilknytte lyd til forskellige vinduehåndterings- og &kde;-begivenheder med dialogen <menuchoice
><guilabel
>Lyd</guilabel
><guilabel
>Systembekendtgørelser</guilabel
></menuchoice
>. Se håndbogen for &kcontrol; for mere information om hvordan dialogens indstillinger bruges. </para>

</sect1>

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

<para
>Adgangen til lydkort kontrolleres af &artsd;, lydserveren for &arts;-dæmonen. Dette tillader at flere programmer samtidigt sender forespørgsler til serveren, hvor de kan blandes og afspilles. Uden en central lydserver ville et enkelt program som bruger en lydenhed forhindre andre programmer i at bruge det. </para>

<para
>For at bruge  &arts; skal der være en og kun en kopi af &artsd; som kører. Den startes typisk når &kde; startes hvis dette er aktiveret i &kcontrol;'s <guilabel
>Lydserver</guilabel
>-modul. </para>

<para
>Programmet accepterer følgende flag:</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
>lydmetode</replaceable
></option
> <option
>-r <replaceable
>samplingrate</replaceable
></option
> <option
>-b <replaceable
>bit</replaceable
></option
> <option
>-d</option
> <option
>-D <replaceable
>enhedsnavn</replaceable
></option
> <option
>-F <replaceable
>fragmenter</replaceable
></option
> <option
>-S <replaceable
>størrelse</replaceable
></option
> <option
>-s <replaceable
>sekunder</replaceable
></option
> <option
>-m <replaceable
>programnavn</replaceable
></option
> </group
> <group choice="opt"
> <option
>-h</option
> <option
>-A</option
> <option
>-v</option
> <option
>-l <replaceable
>niveau</replaceable
></option
> </group
> </cmdsynopsis>

<variablelist
><varlistentry>
<term
><option
>-r <replaceable
>samplingrate</replaceable
></option
></term>
<listitem>
<para
>Indstil samplingrate som skal bruges.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Vis kommandobrug.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-n</option
></term>
<listitem>
<para
>Aktivér netværkstransparens.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-p <replaceable
>port</replaceable
></option>
</term>
<listitem>
<para
>Sæt <acronym
>TCP</acronym
>-port som skal bruges (forudsætter <option
>-n</option
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-u</option
></term>
<listitem>
<para
>Offentlig, ingen godkendelse (farligt).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-d</option
></term>
<listitem>
<para
>Aktivér fuld duplex.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-D <replaceable
>enhedsnavn</replaceable
></option
></term>
<listitem>
<para
>Angiv lydenhed (almindeligvis <filename
>/dev/dsp</filename
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-F <replaceable
>fragmenter</replaceable
></option
></term>
<listitem>
<para
>Sæt antal fragmenter.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-S <replaceable
>størrelse</replaceable
></option
></term>
<listitem>
<para
>Sæt fragmentstørrelse i byte.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-s <replaceable
>sekunder</replaceable
></option
></term>
<listitem>
<para
>Indstil forsinkelsen før autosuspendér aktiveres i sekunder. Værdien nul lukker af for autosuspendér.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-m <replaceable
>programnavn</replaceable
></option
></term>
<listitem>
<para
>Angiv navnet på et program som bruges til at vise fejl, advarsler og informationsmeddelelser. Hvis du kører KDE kan du bruge værktøjet <application
>artsmessage</application
> til dette.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-N</option
></term>
<listitem>
<para
>Forøg størrelsen af netværksbufferne til en værdi som er passende til at køre med et 10 Mbps lokalt netværk. Dette er det samme som at bruge flaget  -w 5 (se nedenfor). </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-w <replaceable
>n</replaceable
></option
></term>
<listitem>
<para
>Når <application
>artsd</application
> køres via en netværkstilslutning til en anden værtsmaskine vil man ofte bruge en stor buffer for at undgå pauser. aRts foreslår en minimal bufferstørrelse for programmer. Uden denne valgmulighed baserer den standardstørrelsen på fragmentstørrelsen * antal fragmenter. Med dette tilvalg kan man øge størrelsen fra standardstørrelsen med en faktor <replaceable
>n</replaceable
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-l <replaceable
>niveau</replaceable
></option
></term>
<listitem>
<para
>Indstil informationsniveau: 3 (tavs), 2 (advarsler), 1 (info), 0 (fejlsøgning).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-v</option
></term>
<listitem>
<para
>Vis versionsniveau.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>I de fleste tilfælde er det nok kun at køre &artsd;. </para>
</sect1>

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

<para
>For at give gode realtidsegenskaber køres &artsd; oftest som en realtidsproces (på platforme hvor realtidsprioriteter understøttes). Dette kræver <systemitem class="username"
>root</systemitem
>-rettigheder, så for at minimere sikkerhedsproblemerne, kan &artsd; startes med det lille omsluttende program  &artswrapper; som helt enkelt skifter til realtidsprioritet (mens det kører som <systemitem class="username"
>root</systemitem
>) og derefter starter &artsd; som en anden bruger end <systemitem class="username"
>root</systemitem
>. </para>

<para
>Hvis du gør &artswrapper; SUID <systemitem class="username"
>root</systemitem
>, kommer det formodentlig til at forbedre kvaliteten af lydgengivningen ved at reducere huller i musikken. Dog øges også risikoen for at en fejl i koden, eller en ondsindet bruger kan få maskinen til at bryde sammen eller skade den på anden måde. Desuden kan det at prioritere høj lydkvalitet på flerbrugermaskiner forårsage forringet ydelse for brugere som forsøger at bruge maskinen på en <quote
>produktiv</quote
> måde.</para>

</sect1>

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

<para
>Kommandoen &artsshell; er beregnet som et værktøj til at udføre diverse funktioner som hører sammen med lydserveren. Formodentlig vil  værktøjet  blive udvidet med nye kommandoer i fremtiden (se kommentarerne i kildekoden for nogle idéer). </para>

<para
>Kommandoen accepterer følgende format: </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 [flag] <replaceable
>kommando</replaceable
> [<replaceable
>kommandotilvalg</replaceable
>] </para>

<para
>Følgende flag understøttes: </para>

<variablelist>

<varlistentry>
<term
><option
>-q</option
></term>
<listitem>
<para
>Undertryk al udskrift.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Vis kommandobrug.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>Følgende kommandoer understøttes:</para>

<variablelist>

<varlistentry>
<term
><option
>suspend</option
></term>
<listitem>
<para
>Suspendér lydserveren. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>status</option
></term>
<listitem>
<para
>Vis statusinformation for lydserveren.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>terminate</option
></term>
<listitem>
<para
>Afslut lydserveren. Dette kan forvirre og/eller forårsage sammenbrud for programmer som for øjeblikket bruger den. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>autosuspend</option
> <parameter
>sekunder</parameter
></term>
<listitem>
<para
>Indstil forsinkelsen for aktivering af autosuspension til det angivne antal sekunder. Lydserveren vil blive suspenderet hvis den er inaktiv så længe. Værdien nul deaktiverer autosuspension. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>networkbuffers</option
> <parameter
>n</parameter
></term>
<listitem>
<para
>Indstiller størrelsen af netværksbufferne til en faktor <parameter
>n</parameter
> gange standardstørrelsen. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>volume</option
> [<replaceable
>volume</replaceable
>]</term>
<listitem>
<para
>Indstiller lydstyrkeskalering for lydserverens lyduddata. Parameteren <replaceable
>volume</replaceable
> er et decimaltal. Uden parameter vises den nuværende lydstyrke. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect liste</option
></term>
<listitem>
<para
>Vis alle tilgængelige stereoeffektmoduler.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect insert [top|bottom]</option
> <replaceable
>navn</replaceable
></term>
<listitem>
<para
>Indsæt en stereoeffekt i stereoeffekt-stakken. Returnerer en identifikator som senere kan bruges til at fjerne den. Effekten kan installeres længst oppe eller længst nede (normalværdien).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>stereoeffect remove</option
> <replaceable
>id</replaceable
></term>
<listitem>
<para
>Fjerner stereoeffekten med identifikatoren <replaceable
>id</replaceable
> fra effektstakken.</para>
</listitem>
</varlistentry>

</variablelist>

</sect1>

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

<para
>Programmet <application
>artsplay</application
> er et enkelt værktøj til at afspille en lydfil. Det accepterer en enkelt parameter som svarer til navnet på lydfilen som sendes til lydserveren for at spilles. Lydfilen kan være en hvilken som helst almindelig lydfiltype, såsom <literal role="extension"
>wav</literal
> eller <literal role="extension"
>au</literal
>. Dette værktøj er godt til at prøve om lydserveren virker. Ved at køre to kommandoer parallelt eller i hurtig rækkefølge kan man demonstrere hvordan lydserveren blander mere end en lydkilde.</para>

</sect1>

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

<para
>Lydserveren håndterer kun programmer som understøtter &arts;. Mange gamle programmer vil ønske at komme direkte til lydenheden. Kommandoen &artsdsp; sørger for en interimløsning som lader de fleste af disse programmer køre uforandrede. </para>

<para
>Når et program køres med &artsdsp; fanges alle forsøg på at komme til lydenheden <filename class="devicefile"
>/dev/dsp</filename
> og forvandles til kald til &arts; programmeringsgrænseflade. Selv om enhedsemuleringen ikke er perfekt, så virker de fleste programmer på denne måde, omend med en vis forværring i ydelse og latenstid. </para>

<para
>Kommandoen &artsdsp; følger formatet: </para>

<!-- LW: FIX THIS -->
<para
>artsdsp [<replaceable
>flag</replaceable
>] <replaceable
>programargumenter</replaceable
> </para>

<para
>Følgende flag genkendes: </para>

<variablelist>

<varlistentry>
<term
><option
>-h</option
>, <option
>--help</option
></term>
<listitem>
<para
>Vis kortfattet hjælp.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><option
>-n</option
> <option
>--name</option
> = <replaceable
>navn</replaceable
></term>
<listitem>
<para
>Brug <replaceable
>navn</replaceable
> til at identificere en afspiller for <command
>artsd</command
>.</para>

</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-m</option
> <option
>--mmap</option
></term>
<listitem>
<para
>Emulér hukommelsesafbildning (f.eks for <application
>Quake</application
>).</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-v</option
> <option
>--verbose</option
></term>
<listitem>
<para
>Vis parametre.</para>
</listitem>
</varlistentry>

</variablelist>

<para
>Et typisk kald er: </para>

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

<para
>Visse programmer virker bedre med flaget <option
>--mmap</option
>. Lydenhedens funktioner er ikke alle fuldstændigt emulerede, men de fleste programmer skulle virke. Hvis du finder et som ikke gør det, så indsend en detaljeret fejlrapport så udviklerne kan ordne det. Igen, husk at dette er en midlertidig løsning og noget af en grim hurtigløsning. Den bedste løsning er at tilføje indbygget støtte for  &arts; i programmerne. Hvis dit favoritlydprogram ikke har støtte for &arts;, så bed udviklerne om at sørge for det. </para>

</sect1>

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

<para
>Dette er et enkelt værktøj til at sende rå lyddata til lydserveren. Man skal angive dataformatet (samplingsfrekvens, samplingsstørrelse og antal kanaler). Dette er formodentlig ikke et værktøj som man behøver bruge ofte, men det kan være bekvemt for testformål. Kommandosyntaksen er: </para>

<!-- LW: FIX THIS -->
 
<para
>artscat [ <replaceable
>flag</replaceable
> ] [ <replaceable
>filnavn</replaceable
> ] </para>

<para
>Hvis intet filnavn angives læser programmet fra standardinddata. Følgende flag understøttes: </para>

<variablelist>
<varlistentry>
<term
><option
>-r</option
> <parameter
>samplingsfrekvens</parameter
></term>
<listitem>
<para
>Sæt den samplingsfrekvens som bruges. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-b</option
> <parameter
>bit</parameter
></term>
<listitem>
<para
>Sæt samplingsstørrelse som bruges (8 eller 16). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-c</option
> <parameter
>kanaler</parameter
></term>
<listitem>
<para
>Sæt antal kanaler (1 eller 2). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-h</option
></term>
<listitem>
<para
>Vis kommandobrug og afslut. </para>
</listitem>
</varlistentry>

</variablelist>
</sect1>

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

<para
>Dette er et grafisk værktøj til at udføre et antal opgaver som hører sammen med lydserveren. Standardvinduet viser to lydstyrkeindikatorer og en skyder til at indstille den generelle afspilningslydstyrke. Fra menuen <guimenu
>Vis</guimenu
> kan du vælge andre funktioner: </para>

<variablelist>

<varlistentry>
<term
><guimenuitem
>FFT-omfang</guimenuitem
></term>
<listitem>
<para
>Åbner et vindue som viser en skærm med en realtidsspektrumanalysator. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Lydhåndtering</guimenuitem
></term>
<listitem>
<para
>Viser aktive lydkilder og lader dig forbinde dem til alle tilgængelige busser. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>aRts status</guimenuitem
></term>
<listitem>
<para
>Viser om lydserveren kører og om realtidsskemalægning bruges. Angiver når serveren vil autosuspendere og tillader dig at suspendere med det samme. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Midihåndtering</guimenuitem
></term>
<listitem>
<para
>Viser aktive &MIDI; ind- og udgange og tillader dig at lave forbindelser [HUSK: virker dette endnu? Behøver flere detaljer]. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>FreeVerb</guimenuitem
></term>
<listitem>
<para
>Tilslutter en FreeVerb efterklangseffekt til stakken af &arts; udskriftseffekter og lader dig kontrollere lydeffektindstillingerne grafisk. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guimenuitem
>Led-lignende lydstyrkevisning</guimenuitem
></term>
<listitem>
<para
>Ændrer lydstyrkeindikatorerne i hovedvinduet til at bruge et visningsformat med farvede lysdioder i stedet for bjælker. </para>
</listitem>
</varlistentry>

</variablelist>

</sect1>

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

<para
>Dette værktøj er der for at hjælpe udviklere som bruger C-<acronym
>API</acronym
> i  &arts;. Det angiver de rigtige oversætter- og linkflag som behøves når man kompilerer og linker med &arts;. Det er beregnet til at bruges i make-filer for at hjælpe til med flytbarhed. Kommandoen accepterer tre flag: </para>

<variablelist>
<varlistentry>
<term
><option
>--cflags</option
></term>
<listitem>
<para
>Viser oversætterflag som behøves når man kompilerer med  &arts; C-<acronym
>API</acronym
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>--libs</option
></term>
<listitem>
<para
>Viser linkerflag som behøves når man linker med  &arts; C-<acronym
>API</acronym
>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term
><acronym
>---version</acronym
></term>
<listitem>
<para
>Viser versionen af kommandoen <command
>artsc-config</command
>. </para>
</listitem>
</varlistentry>
</variablelist>

<para
>Typisk udskrift fra kommandoen vises nedenfor:</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
>Man skal kunne bruge dette værktøj i en make-fil med en regel såsom: </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
>Kommandoen &mcopidl; er &IDL;-fil oversætteren for &MCOP;, multimedia-kommunikationsprotokollen som bruges af &arts;. Grænseflader i &arts; defineres med &IDL;, et sproguafhængig grænsefladesdefinitionssprog. Værktøjet &mcopidl; accepterer en &IDL;-fil som inddata og laver C++ deklarations- og kildekodefiler for en klasse som implementerer grænsefladen. Kommandoen accepterer følgende syntaks: </para>

<!-- LW: FIX THIS -->

<para
>mcopidl [ <replaceable
>flag</replaceable
> ] <replaceable
>filnavn</replaceable
> </para>

<para
>Gyldige flag er:</para>
<variablelist>
<varlistentry>
<term
><option
>-I</option
> <parameter
>mappe</parameter
></term>
<listitem>
<para
>Søg i <parameter
>mappe</parameter
> efter deklarationsfiler. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-e</option
> <parameter
>navn</parameter
></term>
<listitem>
<para
>Spring over en struct, grænseflade eller nummereringstypen <parameter
>navn</parameter
> ved kodegenerering. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><option
>-t</option
></term>
<listitem>
<para
>Opret også <literal role="extension"
>.mcoptype</literal
>/<literal role="extension"
>.mcopclass</literal
> filer som indeholder typeinformation for &IDL;-filen. </para>
</listitem>
</varlistentry>
</variablelist>

<para
>Mere information om &MCOP; og &IDL; findes i afsnittet <link linkend="interfaces"
>Grænseflader og &IDL;</link
>. </para>

</sect1>

</chapter>
