<!-- <?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-modules">
<title
>&arts;-moduler</title>

  <sect1 id="modules-introduction">
<title
>Indledning</title>

<para
>Dette kapitel beskriver alle standardmodulerne i &arts;. En af de mest kraftfulde funktioner i &arts; er at moduler kan sammenkobles til strukturer som implementerer nye funktioner såsom lydeffekter og instrumenter. </para>

<para
>Moduler opdeles i to kategorier. Syntesemoduler bruges til at implementere <quote
>rørlægningen</quote
> som manipulerer multimedie-datastrømme for at lave nye effekter, instrumenter, miksere og programmer. Visuelle moduler tillader dig at oprette en grafisk grænseflade til at styre lydstrukturerne som opbygges med syntesemodulerne. </para>

</sect1>

<sect1 id="synth-modules-reference">
<title
>Reference til syntesemoduler</title>
 

<sect2 id="mcat-synth-arithmetic-mixing">
<title
>Aritmetik + miksning</title>

 

<sect3 id="mref-synth-add-sect">
<title
>Synth&lowbar;ADD</title>
<anchor id="mref-synth-add"/>

<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_ADD.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;ADD</phrase
></textobject>
</mediaobject>

<para
>Denne adderer to signaler. </para>

</sect3>

<sect3 id="mref-synth-mul-sect">
<title
>Synth&lowbar;MUL</title>
<anchor id="mref-synth-mul"/>

<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_MUL.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;MUL</phrase
></textobject>
</mediaobject>

<para
>Denne multiplicerer signalet med en faktor. Du kan bruge dette til at skalere signaler ned (0 &lt; faktor &lt; 1) eller op (faktor &gt; 1) eller invertere signaler (faktor &lt; 0). Bemærk at faktoren kan være et signal og ikke behøver at være konstant (f.eks. envelopper eller rigtige signaler). </para>

</sect3>

<sect3 id="mref-synth-multi-add-sect">
<title
>Synth&lowbar;MULTI&lowbar;ADD</title>
<anchor id="mref-synth-multi-add"/>

<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_MULTI_ADD.png"
  format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;MULTI&lowbar;ADD</phrase
></textobject>
</mediaobject>

<para
>Denne adderer et vilkårligt antal signaler. Hvis du har brug for at opsummere bølgeformer som slaves af fire forskellige oscillatorer, kan du for eksempel tilslutte alle deres udgange til et Synth&lowbar;MULTI&lowbar;ADD-modul. Dette er effektivere end at bruge tre Synth&lowbar;ADD-moduler. </para>

</sect3>

<sect3 id="mref-synth-xfade-sect">
<title
>Synth&lowbar;XFADE</title>
<anchor id="mref-synth-xfade"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_XFADE.png" format="PNG"/>
</imageobject>
<textobject
><phrase
>Synth&lowbar;XFADE</phrase
></textobject>
</mediaobject>

<para
>Denne overtoner to signaler. Hvis procentindgangen er -1, høres kun signalet til venstre, hvis den er 1, høres kun det til højre. Hvis den er 0, høres begge signalerne med samme lydstyrke. </para>

<para
>Denne gør at du kan sørge for at signalerne bliver indenfor et veldefineret område. Hvis du har to signaler som er mellem -1 og 1 inden overtoningen, forbliver de i samme område bagefter. </para>
</sect3>

<sect3 id="mref-synth-autopanner-sect">
<title
>Synth&lowbar;AUTOPANNER</title>
<anchor id="mref-synth-autopanner"/>

<para
>Det modsatte af overtoning. Denne tager et monosignal og deler det op til et stereosignal. Den bruges til automatisk at panorere inddata-signalet mellem venstre og højre udgang. Dette gør miksningen mere levende. En standardanvendelse kunne være en guitar- eller sololyd. </para>

<para
>Forbind en <acronym
>LFO</acronym
>, for eksempel en sinus eller savtakbølge til inlfo, og vælg en frekvens mellem 0,1 og 5 Hz for at få en traditionel effekt eller endnu mere for specialeffekter (<acronym
>FX</acronym
>). </para>

</sect3>

</sect2>

<sect2 id="mcat-synth-busses">
<title
>Busser</title>

 

<sect3 id="mref-synth-bus-uplink-sect">
<title
>Synth&lowbar;BUS&lowbar;UPLINK</title>
<anchor id="mref-synth-bus-uplink"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_BUS_UPLINK.png"
               format="PNG"/>
</imageobject>
<textobject
><phrase
>Synth&lowbar;BUS&lowbar;UPLINK</phrase
></textobject>
</mediaobject>

<para
>Et oplink til en bus. Angiv signaler til venstre og højre, og navnet på bussen som data skal sendes til på <quote
>bus</quote
>-porten. Det kombinerede signal fra alle oplink med dette navn havner på hvert nedlink på denne <quote
>bus</quote
>. </para>
</sect3>

<sect3 id="mref-synth-bus-downlink-sect">
<title
>Synth&lowbar;BUS&lowbar;DOWNLINK</title>
<anchor id="mref-synth-bus-downlink"/>

<mediaobject>
<imageobject>
<imagedata fileref="images/Synth_BUS_DOWNLINK.png"
  format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;BUS&lowbar;DOWNLINK</phrase
></textobject>
</mediaobject>

<para
>Henter (summen af) alle data som sendes på en vis bus (med navnet du angiver på <quote
>bus</quote
>-porten). </para>
</sect3>

</sect2>

<!-- TODO AFTER KDE2.1: move freeverb into delays, and rename category to
     Delays &amp; reverbs -->

<sect2 id="mcat-synth-delays">
<title
>Forsinkelser</title>

 

<sect3 id="mref-synth-delay-sect">
<title
>Synth&lowbar;DELAY</title>
<anchor id="mref-synth-delay"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_DELAY.png"
               format="PNG"/></imageobject
></mediaobject>

<para
>Denne forsinker inddata-signalet en vis tid. Tidsangivelsen skal være mellem 0 og maxdelay for en forsinkelse mellem 0 og maxdelay sekunder. </para>

<para
>Denne slags forsinkelse <emphasis
>kan ikke bruges</emphasis
> i tilbagemeldingsstrukturer. Dette skyldes at det er en varierbar forsinkelse. Det går an at ændre længden mens den kører, og endog sætte den til nul. Men eftersom de egne uddata behøves for at beregne næste sampling i en tilbagemeldingsstruktur, kan en forsinkelse med en værdi som kan gå ned til nul under syntese føre til en låsningssituation. </para>

<para
>Brug CDELAY'er i sådanne situationer, eller kombinér en kort konstant forsinkelse (på 0,001 sekunder) med en variabel forsinkelse. </para>

<para
>Man kan også kombinere en CDELAY og en DELAY for at opnå en forsinkelse med variabel længde i en tilbagekobling. Sørg blot for at du har med en CDELAY at gøre. </para>

</sect3>

<sect3 id="mref-synth-cdelay-sect">
<title
>Synth&lowbar;CDELAY</title>
<anchor id="mref-synth-cdelay"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_CDELAY.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;CDELAY</phrase
></textobject>
</mediaobject>

<para
>Denne forlænger inddatasignalet en vis tid. Tidsangivelsen skal være større end 0 for en forsinkelse af på sekunder eller mere. Forsinkelsen er konstant under beregningen, hvilket betyder at den ikke kan ændres. </para>

<para
>Dette sparer beregningstid eftersom ingen interpolation gøres, og er nyttigt til rekursive strukturer. Se beskrivelsen ovenfor (Synth&lowbar;DELAY). </para>

</sect3>

</sect2>

<sect2 id="mcat-synth-envelopes">
<title
>Enveloper</title>

 

<sect3 id="mref-synth-envelope-adsr-sect">
<title
>Synth&lowbar;ENVELOPE&lowbar;ADSR</title>
<anchor id="mref-synth-envelope-adsr"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_ENVELOPE_ADSR.png"
               format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;ENVELOPE&lowbar;ADSR</phrase
></textobject>
</mediaobject>

<para
>Dette er en klassisk <acronym
>ADSR</acronym
>-envelop, som betyder at du angiver: </para>

<variablelist>
<varlistentry>
<term
>active</term>
<listitem>
<para
>Hvis brugeren holder tasten nede lige nu. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>invalue</term>
<listitem>
<para
>Inddatasignalet. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>attack</term>
<listitem>
<para
>Tiden som skal gå fra brugerens tryk på tasten og til signalet når sin maksimale amplitude (i sekunder). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>decay</term>
<listitem>
<para
>Tiden som skal gå fra signalet har nået sin maksimale amplitude til signalet går tilbage til et konstant niveau (i sekunder). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>sustain</term>
<listitem>
<para
>Det konstante niveau som holdes for signalet bagefter, til brugeren slipper tasten. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>release</term>
<listitem>
<para
>Tiden som skal gå fra brugeren har sluppet tasten til signalet går ned til nul (i sekunder). </para>
</listitem>
</varlistentry>
</variablelist>

<para
>Du får det behandlede signal som uddata-værdi. Når <acronym
>ASDR</acronym
>-envelopen er klar, sætter den done til 1. Du kan bruge dette til at sørge for uddata <quote
>done</quote
> for et instrument (som gør at instrumentstrukturen fjernes fra &MIDI;-relæobjektet når lyden er hørt op). </para>

</sect3>

<sect3 id="mref-synth-pscale-sect">
<title
>Synth&lowbar;PSCALE</title>
<anchor id="mref-synth-pscale"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_PSCALE.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;PSCALE</phrase
></textobject>
</mediaobject>

<para
>Modulet Synth&lowbar;PSCALE vil skalere lydstrømmen som sendes gennem den fra lydstyrke 0 (tavs) til 1 (oprindelig lydstyrke) tilbage til 0 (tavs), ifølge positionen (hent positionen fra en Synth&lowbar;SEQUENCE). Positionen hvor toppen skal være kan angives som pos. </para>

<para
>Eksempel: sæt top til 0,1 betyder at efter at 10 &percnt; af tonen er afspillet, har lydstyrken nået sin maksimale værdi, og begynder derefter at aftage. </para>
</sect3>

</sect2>

<sect2 id="mcat-synth-effects">
<title
>Effekter</title>

<sect3 id="mref-synth-freeverb-sect">
<title
>Synth&lowbar;FREEVERB</title>
<anchor id="mref-synth-freeverb"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_FREEVERB.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;FREEVERB</phrase
></textobject>
</mediaobject>

<para
>Dette er en efterklangseffekt. I den nuværende implementering er det tænkt at sende en stereosignal gennem modulet, og det vil så -tilføje- efterklangseffekten til signalet. </para>

<note>
<para
>Dette betyder at den også kan bruges inde i en StereoEffectStack. </para>
</note>

<para
>Inddata-signalet skal forbindes til (inleft, inright), og uddata-signalet bliver (outleft, outright). </para>

<para
>Parametrene som du kan indstille er: </para>

<variablelist>
<varlistentry>
<term
>roomsize</term>
<listitem>
<para
>Størrelsen af rummet som efterklangseffekten simulerer (område: 0 .. 1, hvor 1 er det største mulige rum). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>damp</term>
<listitem>
<para
>Dette angiver et filter som gør at det simulerede rum absorberer høje frekvenser (område 0 .. 1, hvor 1 betyder absorbere høje frekvenser i stor udstrækning). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>wet</term>
<listitem>
<para
>Størrelsen af efterklangsignalet (dvs. den del af signalet som skal ændres af filtret, og forårsage en <quote
>vådt</quote
> lyd, dvs. en <quote
>efterklangslyd</quote
>). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>dry</term>
<listitem>
<para
>Størrelsen af rent signal som sendes gennem, som forårsager et ekko (eller kombineret forsinkelse) i stedet for en efterklangseffekt (område: 0 .. 1). </para>
<!-- TODO: do some measurements to show that this documentation -is- correct,
I am not sure if it is echo, or really pure (non-delayed), or multiple delay
or whatever -->
</listitem>
</varlistentry>

<varlistentry>
<term
>width</term>
<listitem>
<para
>Størrelsen af udvidet stereoeffekt som efterklangsalgoritmen tilføjer til efterklangseffekten, for at gøre efterklangslyden bredere i stereolydbilledet (område 0 .. 1). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>mode</term>
<listitem>
<para
>[HUSK: Jeg tror at hvis mode er 1, beholder efterklangen det nuværende lydbillede for lyden, mens 0 er normal behandling] </para>
</listitem>
</varlistentry>
</variablelist>

</sect3>

<sect3 id="mref-synth-tremolo-sect">
<title
>Synth&lowbar;TREMOLO</title>
<anchor id="mref-synth-tremolo"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_TREMOLO.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;TREMOLO</phrase
></textobject>
</mediaobject>

<para
>Tremolomodulet modulerer amplituden ifølge en <acronym
>LFO</acronym
>-bølgeform. Traditionelt bruger man en sinusbølge, men hvorfor begrænse sig? Hvad man får er en meget intensiv effekt som skærer gennem de fleste arrangementer på grund af sit store dynamiske omfang. Tremoloeffekten er stadigvæk en favoriteffekt bland guitarister, selvom den ikke er så populær som i tresserne. </para>

<para
>[HUSK: for øjeblikket implementeres dette som invalue + abs(inlfo) - måske ville det være bedre at implementere det som invalue * (1+inlfo*depth), hvor depth ville være en parameter mellem 0 .. 1 - dette afgøres efter &kde;2.1. Hvis du har en kommentar, så skriv til &arts;' e-postliste ;). ] </para>

</sect3>
<sect3 id="mref-synth-fx-cflanger-sect">
<title
>Synth&lowbar;FX&lowbar;CFLANGER</title>
<anchor id="mref-synth-fx-cflanger"/>

<mediaobject
><imageobject
><imagedata
fileref="images/Synth_FX_CFLANGER.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;FX&lowbar;CFLANGER</phrase
></textobject>
</mediaobject>

<para
>En flanger er en tidsvariabel forsinkelseseffekt. For at gøre udvikling af komplekse flangereffekter enklere, leveres dette modul som indeholder kernen af en enkanals flangerenhed. </para>

<para
>Den har følgende porte:</para>

<variablelist>
<varlistentry>
<term
>invalue</term>
<listitem>
<para
>Signalet som du vil behandle. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>lfo</term>
<listitem>
<para
>Helst en sinusbølge som modulerer forsinkelsestiden inde i flangeren (-1 .. 1). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>mintime</term>
<listitem>
<para
>Den minimale værdi for tiden inde i flangeren i millisekunder. Foreslåede værdier: forsøg med noget i retning af 1 ms. Brug helst værdier &lt; 1000 ms. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>maxtime</term>
<listitem>
<para
>Den maksimale værdi for tiden inde i flangeren i millisekunder. Foreslåede værdier: forsøg med noget i retning af 5 ms. Brug helst værdier &lt; 1000 ms. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>outvalue</term>
<listitem>
<para
>Uddatasignalet. Det er vigtigt at du blander dette med originalsignalet (uden flanger) for at få den ønskede effekt. </para>
</listitem>
</varlistentry>
</variablelist>

<tip>
<para
>Du kan bruge dette som en basis for koreffekter. </para>
</tip>

</sect3>

</sect2>

<sect2 id="mcat-synth-filters">
<title
>Filtre</title>

<sect3 id="mref-synth-pitch-shift-sect">
<title
>Synth&lowbar;PITCH&lowbar;SHIFT</title>
<anchor id="mref-synth-pitch-shift"/>

<mediaobject
><imageobject
><imagedata
fileref="images/Synth_PITCH_SHIFT.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;PITCH&lowbar;SHIFT</phrase
></textobject>
</mediaobject>

<para
>Denne tonehøjdeforandrende effekt ændrer frekvensen på inddatasignalet uden at påvirke hastigheden. En anvendelse af dette er for eksempel at ændre tonehøjden på din stemme mens du indspiller (og afspiller) den i realtid. </para>

<para
>Parameteren <emphasis
>speed</emphasis
> er den relative hastighed som signalet afspilles med. Så med en hastighed på to bliver lyden dobbelt så høj (dvs. en inddatafrekvens på 440 Hz giver en uddatafrekvens på 880 Hz). </para>

<para
>Parameteren <emphasis
>frequency</emphasis
> bruges internt til at ændre mellem forskellige korn i signalet. Den er indstillelig, og afhængig af valget kommer tonehøjdens ændring til at lyde mere eller mindre realistisk i dit brugstilfælde. En god værdi at begynde med er noget i stil med 5 eller 10. </para>

</sect3>

<sect3 id="mref-synth-shelve-cutoff-sect">
<title
>Synth&lowbar;SHELVE&lowbar;CUTOFF</title>
<anchor id="mref-synth-shelve-cutoff"/>

<mediaobject
><imageobject
><imagedata
fileref="images/Synth_SHELVE_CUTOFF.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;SHELVE&lowbar;CUTOFF</phrase
></textobject>
</mediaobject>

<para
>Filtrerer alle frekvenser væk over afskæringsfrekvensen. </para>

</sect3>

<sect3 id="mref-synth-brickwall-limiter-sect">
<title
>Synth&lowbar;BRICKWALL&lowbar;LIMITER</title>
<anchor id="mref-synth-brickwall-limiter"/>

<mediaobject
><imageobject
><imagedata
fileref="images/Synth_BRICKWALL_LIMITER.png"
                            format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;BRICKWALL&lowbar;LIMITER</phrase
></textobject>
</mediaobject>

<para
>Dette modul klipper et signal så det passer i området [-1;1]. Det gør ingenting for at begrænse den forvridning som opstår når et stærk signal klippes af. Man kan bruge dette som en lydeffekt (for eksempel til at oprette en noget afklippet sinusbølge). Det er dog oftest en god idé at lade signalet gå gennem et lowpass-filter bagefter hvis du gør dette, for at gøre lyden mindre skærende. </para>
</sect3>

<sect3 id="mref-synth-std-equalizer-sect">
<title
>Synth&lowbar;STD&lowbar;EQUALIZER</title>
<anchor id="mref-synth-std-equalizer"/>

<mediaobject
><imageobject
><imagedata
fileref="images/Synth_STD_EQUALIZER.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;STD&lowbar;EQUALIZER</phrase
></textobject>
</mediaobject>

<para
>Dette er en god byggeblok for en parametriserbar tonekontrol. Dens parametre er: </para>

<variablelist>
<varlistentry>
<term
>Indværdi, udværdi</term>
<listitem>
<para
>Signalet som filtreres af tonekontrollen. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>low</term>
<listitem>
<para
>Hvordan lave frekvenser skal ændres. Værdien angives i dB, mens 0 betyder at lave frekvenser ikke skal ændres, ville -6 betyde at de dæmpes med 6 dB, og +6 betyder at de øges med 6 dB. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>mid</term>
<listitem>
<para
>Hvordan middelfrekvenser skal ændres af tonekontrollen i dB (se low). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>high</term>
<listitem>
<para
>Hvordan høje frekvenser skal ændres af tonekontrollen i dB (se low). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>frekvens</term>
<listitem>
<para
>Dette er midtfrekvensen for tonekontrollen i Hz, midtfrekvensen befinder sig omkring dette spektrum, med de lave og høje frekvenser nedenfor og ovenfor. Bemærk at frekvensen ikke kan være højere end en halvdel af samplingsfrekvensen, oftest er den 22050 Hz, og ikke lavere end 1 Hz. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
>q</term>
<listitem>
<para
>Dette påvirker hvor bredt midterspektret er. Det skal være et positivt tal &gt; 0. En værdi på et er rimelig, højere værdier af q betyder et smallere spektrum af midterfrekvenser. Lavere værdier end et betyder et bredere spektrum. </para>
</listitem>
</varlistentry>
</variablelist>

</sect3>

<sect3 id="mref-synth-rc-sect">
<title
>Synth&lowbar;RC</title>
<anchor id="mref-synth-rc"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_RC.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;RC</phrase
></textobject>
</mediaobject>

<para
>Et dæmpet resonansfilter som filtrerer alle frekvenser omkring en højeste værdi. Der er ingen nyttig måde at angive en midterfrekvens (som ikke skal klippes ), eftersom inddata er to underlige konstanter f og b. Koden er meget gammel, fra synthesizerns tidligste dage, og vil formodentlig blive skiftet ud mod et nyt filter som har en frekvens og en resonansværdi som parametre. </para>

<para
>Forsøg med noget som ligner b=5, f=5 or b=10, f=10 or b=15, f=15 i alle tilfælde. </para>

</sect3>

<sect3 id="mref-synth-moog-vcf-sect">
<title
>Synth&lowbar;MOOG&lowbar;VCF</title>
<anchor id="mref-synth-moog-vcf"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_MOOG_VCF.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;MOOG&lowbar;VCF</phrase
></textobject>
</mediaobject>

<para
>Filtrerer alle frekvenser væk over afskæringsfrekvensen (det er et 24 dB firepols filter, som filtrerer 24 dB pr oktav over afskæringsfrekvensen), men sørger for en yderligere parameter til at indstille filtrets resonans, hvor 0 betyder ingen resonans og 4 betyder selvsving. </para>

</sect3>

</sect2>

<sect2 id="mcat-synth-midi-sequencing">
<title
>Midi + sekvensering</title>

 

<sect3 id="mref-synth-midi-test-sect">
<title
>Synth&lowbar;MIDI&lowbar;TEST</title>
<anchor id="mref-synth-midi-test"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_MIDI_TEST.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;MIDI&lowbar;TEST</phrase
></textobject>
</mediaobject>

<para
>Dette modul indlæser en instrumentstruktur fra en fil, og registrerer sig som en midi-udgang med &arts; &MIDI;-håndtering. Toner som sendes til denne udgang gør at instrumentstemmer laves. </para>

<note>
<para
>Du kan indstille noget sådant her på en behageligere måde i &artscontrol; i stedet for manuelt i &arts-builder;. </para>
</note>

</sect3>

<sect3 id="mref-synth-sequence-sect">
<title
>Synth&lowbar;SEQUENCE</title>
<anchor id="mref-synth-sequence"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_SEQUENCE.png"
format="PNG"/></imageobject
></mediaobject>

<para
>Afspiller en sekvens af toner om og om igen. Tonerne angives i spornotation, og adskilles af semikolon. Et eksempel er <literal
>A-3;C-4;E-4;C-4;</literal
>. Hastigheden angives som sekunder pr tone, så hvis du vil angive 120 slag pr minut, angiver du formodentlig 0,5 sekunder/tone, idet 60 sekunder/0,5 sekunder pr tone = 120 slag pr minut. </para>

<para
>Du kan give hver tone en længde i forhold til hastigheden ved at bruge et kolon efter tonen fulgt af længden. <literal
>A-3:2;C-4:0.5;D-4:0.5;E-4;</literal
> viser dette. Som du kan se, tenderer midi-tonesætningsprogrammer til at tilbyde større bekvemmelighed ;) </para>

<para
>Synth&lowbar;SEQUENCE giver yderligere information om positionen for tonen som afspilles lige nu, hvor 0 betyder lige påbegyndt og 1 betyder afsluttet. Denne information kan man bruge med Synth&lowbar;PSCALE (se nedenfor). </para>
</sect3>

<sect3 id="mref-synth-sequence-freq-sect">
<title
>Synth&lowbar;SEQUENCE&lowbar;FREQ</title>
<anchor id="mref-synth-sequence-freq"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_SEQUENCE_FREQ.png"
format="PNG"/></imageobject
></mediaobject>

<para
>Dette modul virker præcis som Synth&lowbar;SEQUENCE, med den eneste forskel at du ikke indskriver nodenavne men frekvenser. </para>

</sect3>

</sect2>

<sect2 id="mcat-synth-samples">
<title
>Samplinger</title>

<sect3 id="mref-synth-play-wav-sect">
<title
>Synth&lowbar;PLAY&lowbar;WAV</title>
<anchor id="mref-synth-play-wav"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_PLAY_WAV.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;PLAY&lowbar;WAV</phrase
></textobject>
</mediaobject>

<para
>Dette afspiller en <literal role="extension"
>wav</literal
>-fil. Den er kun tilstede hvis du har libaudiofile på computeren. Bølgeformsfilen afspilles så snart modulet laves. </para>

<para
>Den stopper så snart den er klar, og done sættes til 1. Hastighedsparameteren kan bruges til at afspille filen hurtigere eller langsommere, hvor 1.0 er den normale (indspillede) hastighed. </para>
<!-- TODO: KDE2.2: check that this really works together in instruments with
the done parameter things ;) -->
</sect3>

</sect2>

<sect2 id="mcat-synth-soundio">
<title
>Lyd-I/O</title>

<sect3 id="mref-synth-play-sect">
<title
>Synth&lowbar;PLAY</title>
<anchor id="mref-synth-play"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_PLAY.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;PLAY</phrase
></textobject>
</mediaobject>

<important>
<para
>Normalt behøver man ikke dette modul, hvis man ikke skriver selvstændige programmer. Inde i &artsd;, er der allerede et Synth&lowbar;PLAY modul, og at oprette et til virker ikke. </para>
</important>

<para
>Modulet Synth&lowbar;PLAY giver lydsignalet som uddata til lydkortet. Venstre og højre kanal skal indeholde <emphasis
>normaliseret</emphasis
> inddata for kanalerne. Hvis inddata ikke er mellem -1 og 1, får man klipning. </para>

<para
>Som allerede nævnt, må der kun være et Synth&lowbar;PLAY modul, eftersom det har direkte adgang til lydkortet. Brug busser til at blande mere end en lydstrøm sammen inden afspilning. Brug modulet Synth&lowbar;AMAN&lowbar;PLAY for at få noget som ligner uddata inde i &artsd;. </para>

<para
>Bemærk at Synth&lowbar;PLAY også kontrollerer tiden for hele strukturen. Dette betyder: ingen Synth&lowbar;PLAY = ingen kilde for tid = ingen lyd. Så der behøves (nøjagtigt) et Synth&lowbar;PLAY objekt. </para>

</sect3>

<sect3 id="mref-synth-record-sect">
<title
>Synth&lowbar;RECORD</title>
<anchor id="mref-synth-record"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_RECORD.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;RECORD</phrase
></textobject>
</mediaobject>

<important>
<para
>Normalt behøver man ikke dette modul, hvis man ikke skriver selvstændige programmer. Inde i artsd, er der normalt allerede et Synth&lowbar;RECORD modul, og at oprette et til virker ikke. </para>
</important>

<para
>Modulet Synth&lowbar;RECORD indspiller et signal fra lydkortet. Venstre og højre kanal indeholder inddata for kanalerne (mellem -1 og 1). </para>

<para
>Som allerede nævnt, må der kun findes et Synth&lowbar;RECORD modul, eftersom det har direkte adgang til lydkortet. Brug busser for at bruge den indspillede lydstrøm på mere end et sted. Brug modulet Synth&lowbar;AMAN&lowbar;RECORD for at få noget som ligner en indgang inde i artsd. For at dette skal virke skal &artsd; køre <emphasis
>med full dupleks aktiveret</emphasis
>. </para>
</sect3>

<sect3 id="mref-synth-aman-play-sect">
<title
>Synth&lowbar;AMAN&lowbar;PLAY</title>
<anchor id="mref-synth-aman-play"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_AMAN_PLAY.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;AMAN&lowbar;PLAY</phrase
></textobject>
</mediaobject>

<para
>Modulet Synth&lowbar;AMAN&lowbar;PLAY giver lydsignalet som uddata. Det er godt (men ikke nødvendigt) at uddata er et normaliserer signal (mellem -1 og 1). </para>

<para
>Dette modul bruger lydhåndteringen til at angive hvor signalet bliver spillet. Lydhåndteringen kan styres gennem &artscontrol;. For at gøre det mere intuitivt at bruge, er det godt at navngive signalet som afspilles. Det kan opnås ved at angive <emphasis
>title</emphasis
>. En anden funktion i lydhåndteringen er at kunne huske hvor et signal sidst blev afspillet. For at kunne gøre dette skal den kunne skelne mellem signaler. Derfor skal man også angive en entydig værdi for <emphasis
>autoRestoreID</emphasis
>. </para>
</sect3>

<sect3 id="mref-synth-aman-record-sect">
<title
>Synth&lowbar;AMAN&lowbar;RECORD</title>
<anchor id="mref-synth-aman-record"/>

<mediaobject
><imageobject
><imagedata
fileref="images/Synth_AMAN_RECORD.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;AMAN&lowbar;RECORD</phrase
></textobject>
</mediaobject>

<para
>Modulet Synth&lowbar;AMAN&lowbar;RECORD optager et lydsignal fra en ekstern kilde (dvs. linje ind/mikrofon) inde i &artsd;. Uddata vil være et normaliseret signal (mellem -1 og 1). </para>

<para
>Dette modul bruger lydhåndteringen til at angive hvor signalet afspilles. Lydhåndteringen kan styres med artscontrol. For at gøre det mere intuitivt at bruge, er det godt at navngive signalet som afspilles. Det kan opnås ved at angive <emphasis
>title</emphasis
>. En anden funktion i lydhåndtereringen er at kunne huske hvor et signal afspilledes sidst. For at kunne gøre dette skal den kunne skelne mellem signaler. Derfor skal man også angive en entydig værdi for <emphasis
>autoRestoreID</emphasis
>. </para>
</sect3>

<sect3 id="mref-synth-capture-sect">
<title
>Synth&lowbar;CAPTURE</title>
<anchor id="mref-synth-capture"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_CAPTURE.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;CAPTURE</phrase
></textobject>
</mediaobject>

<para
>Modulet Synth&lowbar;CAPTURE skriver et lydsignal til en bølgeformsfil på harddisken. Filen hedder altid <filename
>/tmp/mcop-<replaceable
>brugernavn</replaceable
>/capture.wav</filename
> </para>
</sect3>

</sect2>

<sect2 id="mcat-synth-tests">
<title
>Tester</title>

<sect3 id="mref-synth-nil-sect">
<title
>Synth&lowbar;NIL</title>
<anchor id="mref-synth-nil"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_NIL.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;NIL</phrase
></textobject>
</mediaobject>

<para
>Dette gør ingenting. Det er meget nyttigt i testsituationer. </para>

</sect3>

<sect3 id="mref-synth-debug-sect">
<title
>Synth&lowbar;DEBUG</title>
<anchor id="mref-synth-debug"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_DEBUG.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;DEBUG</phrase
></textobject>
</mediaobject>

<para
>Man kan bruge dette til fejlsøgning. Det udskriver værdien for signalet ved invalue i regelmæssige intervaller (cirka 1 sekund), sammen med kommentaren som du har angivet. På denne måde kan man finde ud af om visse signaler forbliver indenfor visse områder, eller om de findes i det hele taget. </para>
</sect3>

<sect3 id="mref-synth-midi-debug-sect">
<title
>Synth&lowbar;MIDI&lowbar;DEBUG</title>
<anchor id="mref-synth-midi-debug"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_MIDI_DEBUG.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;MIDI&lowbar;DEBUG</phrase
></textobject>
</mediaobject>

<para
>Man kan bruge dette til at fejlsøge hvordan &MIDI;-begivenheder virkelig kommer ind i &arts;. </para>

<para
>Når en MIDI&lowbar;DEBUG kører, udskriver &artsserver; linjer såsom: </para>

<screen
><computeroutput
>201 100753.837585 on 0 42 127</computeroutput
></screen>

<screen
><computeroutput
>202 101323.128355 off 0 42</computeroutput
></screen>

<para
>Den første linje fortæller at 100753 ms (dvs. 100 sekunder) efter MIDI&lowbar;DEBUG startede, kom en &MIDI;-begivenhed "on" på kanal 0. Denne midi-begivenhed havde hastighed (lydstyrke) 127, den højest mulige. Næste linje viser midi-begivenhed da tasten blev sluppet. [HUSK: dette virker ikke for øjeblikket, få det til at virke, og gør det via &MIDI;-håndteringen]. </para>
</sect3>

<sect3 id="mref-synth-data-sect">
<title
>Synth&lowbar;DATA</title>
<anchor id="mref-synth-data"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_DATA.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;DATA</phrase
></textobject>
</mediaobject>

<para
>Dette laver et signal med en konstant værdi. </para>
<!-- TODO: this doesn't really belong in test, does it? -->
</sect3>
</sect2>

<sect2 id="mcat-synth-osc-mod">
<title
>Oscillation &amp; Modulation</title>

<sect3 id="mref-synth-frequency-sect">
<title
>Synth&lowbar;FREQUENCY</title>
<anchor id="mref-synth-frequency"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_FREQUENCY.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;FREQUENCY</phrase
></textobject>
</mediaobject>

<para
>Oscillatorer i &arts; kræver ikke en frekvens som inddata, men i stedet en position i bølgen. Positionen skal være mellem 0 og 1, som i et standardobjekt Synth&lowbar;WAVE&lowbar;SIN oversættes til området 0 .. 2*Pi. For at oprette oscillerende værdier fra en frekvens, bruges et Synth&lowbar;FREQUENCY modul. </para>
</sect3>

<sect3 id="mref-synth-fm-source-sect">
<title
>Synth&lowbar;FM&lowbar;SOURCE</title>
<anchor id="mref-synth-fm-source"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_FM_SOURCE.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;FM&lowbar;SOURCE</phrase
></textobject>
</mediaobject>

<para
>Dette bruges til frekvensmodulering. Angiv frekvensen med indgangen frequency og put et andet signal til moduleringsindgangen. Indstil derefter modlevel til et eller andet, f.eks. 0,3. Frekvensen moduleres derefter med moduleringen. Prøv det. Virker godt hvis man tilføjer en tilbagekobling, hvilket betyder at man tager en kombination af det forsinkede uddatasignal fra Synth&lowbar;FM&lowbar;SOURCE (man skal sende det til en oscillator eftersom det kun virker som Synth&lowbar;FREQUENCY) og et andet signal for at få et godt resultat. </para>

<para
>Virker godt sammen med Synth&lowbar;WAVE&lowbar;SIN oscillatorer. </para>
</sect3>

</sect2>

<sect2 id="mcat-synth-waveforms">
<title
>Bølgeformer</title>

<sect3 id="mref-synth-wave-sin-sect">
<title
>Synth&lowbar;WAVE&lowbar;SIN</title>
<anchor id="mref-synth-wave-sin"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_WAVE_SIN.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;WAVE&lowbar;SIN</phrase
></textobject>
</mediaobject>

<para
>Sinusoscillator. Angiv et pos signal fra Synth&lowbar;FREQUENCY eller Synth&lowbar;FM&lowbar;SOURCE som indsignal, og få en sinusbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. </para>

</sect3>

<sect3 id="mref-synth-wave-tri-sect">
<title
>Synth&lowbar;WAVE&lowbar;TRI</title>
<anchor id="mref-synth-wave-tri"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_WAVE_TRI.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;WAVE&lowbar;TRI</phrase
></textobject>
</mediaobject>

<para
>Triangelbølgeoscillator. Angiv et pos signal fra Synth&lowbar;FREQUENCY eller Synth&lowbar;FM&lowbar;SOURCE som indsignal, og få en triangelbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet <emphasis
>skal</emphasis
> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para>
</sect3>

<sect3 id="mref-synth-noise-sect">
<title
>Synth&lowbar;NOISE</title>
<anchor id="mref-synth-noise"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_NOISE.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;NOISE</phrase
></textobject>
</mediaobject>

<para
>Støjgenerator. Denne laver et tilfældigt signal mellem -1 og 1. </para>

</sect3>

<sect3 id="mref-synth-wave-square-sect">
<title
>Synth&lowbar;WAVE&lowbar;SQUARE</title>
<anchor id="mref-synth-wave-square"/>

<mediaobject
><imageobject
><imagedata
fileref="images/Synth_WAVE_SQUARE.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;WAVE&lowbar;SQUARE</phrase
></textobject>
</mediaobject>

<para
>Firkantbølgeoscillator. Angiv et pos signal fra Synth&lowbar;FREQUENCY eller Synth&lowbar;FM&lowbar;SOURCE som indsignal, og få en firkantbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet <emphasis
>skal</emphasis
> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para>
</sect3>

<sect3 id="mref-synth-wave-softsaw-sect">
<title
>Synth&lowbar;WAVE&lowbar;SOFTSAW</title>
<anchor id="mref-synth-wave-softsaw"/>

<mediaobject
><imageobject
><imagedata
fileref="images/Synth_WAVE_SOFTSAW.png" format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;WAVE&lowbar;SOFTSAW</phrase
></textobject>
</mediaobject>

<para
>Blød savtandsbølge, som ligner Synth&lowbar;WAVE&lowbar;TRI oscillatoren i udseende. Angiv et pos signal fra Synth&lowbar;FREQUENCY eller Synth&lowbar;FM&lowbar;SOURCE som indsignal, og få en blød savtandsbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalen <emphasis
>skal</emphasis
> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para>
</sect3>

<sect3 id="mref-synth-wave-pulse-sect">
<title
>Synth&lowbar;WAVE&lowbar;PULSE</title>
<anchor id="mref-synth-wave-pulse"/>

<mediaobject
><imageobject
><imagedata fileref="images/Synth_WAVE_PULSE.png"
format="PNG"/></imageobject>
<textobject
><phrase
>Synth&lowbar;WAVE&lowbar;PULSE</phrase
></textobject>
</mediaobject>

<para
>Pulsoscillator. Dette modul ligner den rektangulære oscillator (Synth_WAVE_RECT), men det sørger for et indstilleligt op/ned-forhold, ved parameteren <emphasis
>dutycycle</emphasis
>. Angiv et pos signal fra Synth&lowbar;FREQUENCY eller Synth&lowbar;FM&lowbar;SOURCE som indsignal, og få en pulsbølge som udsignal. Signalet pos angiver positionen i bølgeformen, området 0 .. 1 afbildes til 0 .. 2*Pi internt. Vær forsigtig. Indsignalet <emphasis
>skal</emphasis
> være i området 0 .. 1 for at udsignalet kan give et godt resultat. </para>
</sect3>
</sect2>
<sect2 id="mcat-synth-misc">
<title
>Diverse</title>

 

<sect3 id="mref-synth-compressor-sect">
<title
>Synth&lowbar;COMPRESSOR</title>
<anchor id="mref-synth-compressor"/>

<mediaobject>
<imageobject
><imagedata fileref="images/Synth_COMPRESSOR.png"
               format="PNG"/></imageobject
></mediaobject>

<para
>Dette modul reducerer det dynamiske omfang af et signal. Reduktion er for eksempel nyttigt for at kompensere for de store variationer i lydstyrke når nogen taler i en mikrofon. </para>

<para
>Så snart inddataniveauet overstiger et vist niveau (tærskelen) så reduceres signalet. Den multiplicerer helt enkelt alt over tærskelen med en ratio, som skal være en værdi mellem 0 og 1. Tilsidst multipliceres hele signalet med uddatafaktoren. </para>

<para
>Argumenterne attack og release forsinker starten og slutningen af reduktionen. Brug dette hvis du for eksempel stadigvæk vil høre den stærke begyndelse af en bastromme. Argumenterne angives i millisekunder, og en attack eller release på 0 ms er mulig, men kan resultere i en let støj. </para>

</sect3>
</sect2>
</sect1>

<sect1 id="visual-modules-reference">
<title
>Reference til visuelle moduler</title>

<para
>HUSK når visuelle moduler er "færdige". </para>
</sect1>

</chapter>
