# &arts-builder;

## Oversigt

Først af alt, når du forsøger at køre &arts-builder;, skal du også køre lydserveren (&artsd;). Sædvanligvis, hvis du bruger &kde; 2.1, vil dette allerede være tilfældet. Hvis ikke, så kan du indstille automatisk start af lydserveren i &kcontrol;, med Lyd Lydserver.

Når du kører &arts;, kører den altid små moduler. &arts-builder; er et værktøj til at oprette nye strukturer af små sammenkoblede moduler. Du klikker helt enkelt indeni gitteret for at tilføje et modul. For at gøre dette, vælges de fra menuen Moduler, og der klikkes et sted i den grøngrå plan.

Moduler har ofte porte (hvor lydsignaler almindeligtvis ledes ind eller ud). For at koble to porte sammen, klikkes på den første, som gør at den bliver orange, og derefter klikkes på den anden. Du kan kun forbinde en ind-port (på oversiden af et modul) med en ud-port (på undersiden af et modul). Hvis du vil angive en konstant værdi for en port (eller afbryde forbindelsen til den), gøres det ved at dobbeltklikke på porten.

## Gennemgang

### Trin 1

Start &arts-builder;.

Du behøver et Synth_AMAN_PLAY-modul for at høre uddata som du laver. Så opret et Synth_AMAN_PLAY-modul ved at vælge Moduler Syntese Lyd-IO Synth_AMAN_PLAY og klikke på den tomme modulplads. Placér den cirka nedenfor den femte linje, eftersom vi vil tilføje en del ting ovenfor.

Modulet vil have en parameter `title` (porten længst til venstre), og `autoRestoreID` (ved siden af porten længst til venstre) for at den skal kunne findes. For at udfylde disse her, dobbeltklikkes på portene, der vælges en konstant værdi og skrives `gennemgang` i redigeringsfeltet. Klik på O.k. for at anvende.

Vælg Fil Kør struktur . Du hører absolut ingenting. Afspilningsmodulet har også brug for noget inddata... ;) Hvis du har lyttet til tavsheden et stykke tyd, klik så på Afslut og gå til trin 2.

### Trin 2

Opret en Synth_WAVE_SIN-modul (fra Moduler Syntese Bølgeformer) og placér den over Synth_AMAN_PLAY-modulet (lad en linjes mellemrum være mellem dem).

Som du ser, så producerer den noget uddata, men kræver pos som inddata. Lad os først sende uddata til højtalerne. Klik på porten out på Synth_WAVE_SIN og derefter på porten left på Synth_AMAN_PLAY. Voila, du har sammenkoblet to moduler.

Oscillatorer i &arts; kræver ikke en frekvens som inddata, men i stedet en position på bølgeform. Positionen skal være mellem 0 og 1, som i et standardobjekt Synth_WAVE_SIN oversættes til området 0 .. 2*Pi. For at oprette oscillerende værdier fra en frekvens, bruges et Synth_FREQUENCY modul.

Opret en Synth_FREQUENCY-modul (fra Moduler Syntese Oscillation & modulation) og forbind dets pos udgang til pos indgangen på Synth_WAVE_SIN. Sæt frekvensporten for frekvensgeneratoren til den konstante værdi 440.

Vælg Fil Kør struktur . Du vil høre en sinusbølge på 440 Hz i en af dine højtalere. Hvis du har lyttet til den et stykke tid, så klik på O.k. og gå til trin 3.

### Trin 3

O.k., det ville være bedre hvis du kunne høre sinusbølgen i begge højtalerne. Forbind også den højre port på Synth_PLAY til udgangen fra Synth_WAVE_SIN.

Opret et Synth_SEQUENCE-objekt (fra Moduler Syntese Midi & sekvensering). Det skal placeres øverst på skærmen. Hvis du behøver mere plads kan du flytte de andre moduler ved at markere dem (for at markere flere moduler holdes shift-tasten nede), og trække dem rundt.

Forbind nu frekvensudgangen på Synth_SEQUENCE til frekvensindgangen på Synth_FREQUENCY-modulet. Angiv derefter sekvensens hastighed som konstant værdi 0.13 (hastigheden er porten længst til venstre).

Gå nu til porten længst til højre (seq) på Synth_SEQUENCE og skriv `A-3;C-4;E-4;C-4;` som konstant værdi. Dette angiver en sekvens. Mere om dette i modulreferencen.

Synth_SEQUENCE behøver virkelig en sekvens og hastigheden. Uden disse får du måske hukommelsesdump.

Vælg Fil Kør struktur . Du vil høre en behagelig sekvens spille. Når du har nydt følelsen, så klik på O.k. og gå til trin 4.

### Trin 4

Opret et Synth_PSCALE-modul (fra Moduler Syntese Envelopper ). Afbryd forbindelsen fra udgangen for sinusbølgen ved at dobbeltklikke på den og vælg ikke forbundet. Forbind

1. Udgangen SIN til indgangen på PSCALE

2. PSCALE udgangen til AMAN_PLAY i venstre side

3. PSCALE udgangen til AMAN_PLAY i højre side

4. SEQUENCE pos til PSCALE pos

Til slut, sættes PSCALE top til en værdi, for eksempel 0.1.

Hvordan virker dette nu: Synth_SEQUENCE giver yderligere information om positionen for tonen den spiller lige nu, hvor 0 betyder netop påbegyndt og 1 betyder afsluttet. Modulet Synth_PSCALE skalerer lydstrømmen som sendes gennem den fra lydstyrke 0 (tavs) til 1 (oprindelig lydstyrke) tilbage til 0 (tavs) ifølge positionen. Positionen hvor toppen skal ske kan angives som top. 0.1 betyder at efter 10 % af tonen er spillet har lydstyrken nået sin maksimale værdi, og begynder derefter at aftage.

Vælg Fil Kør struktur . Du vil høre en behagelig sekvens spille. Når du har nydt følelsen, klik på O.k. og gå til trin 5.

### Trin 5: Begynder at sende data rundt ;)

Start endnu en &arts-builder;.

Placér en Synth_AMAN_PLAY i den, og indstil den til et rimeligt navn. Placér en Synth_BUS_DOWNLINK i den og:

1. Sæt Synth_BUS_DOWNLINK bus til lyd (det er kun et navn, kald den Peter hvis du har lyst)

2. Forbind Synth_BUS_DOWNLINK left (venstre) til Synth_AMAN_PLAY left.

3. Forbind Synth_BUS_DOWNLINK right (højre) til Synth_AMAN_PLAY right.

Begynd at køre strukturen. Som ventet hører du ingenting, ... ikke endnu.

Gå tilbage til strukturen med Synth_WAVE_SIN tingene og udbyt Synth_AMAN_PLAY-modulet mod en Synth_BUS_UPLINK, og indstil navnet til lyd (eller Peter hvis du vil). At fjerne moduler gøres ved at markere dem og vælge Redigér slet fra menuen (eller trykke på tasten Del).

Vælg Fil Kør struktur . Du vil høre sekvensen med skalerede toner, transporteret over bussen.

Hvis du vil finde ud af hvorfor noget sådant her kan være nyttigt, så klik på O.k. (i &arts-builder; som kører Synth_SEQUENCE tingene, du kan lade den anden fortsætte med at køre) og gå til trin 6.

### Trin 6: Send data for avancerede brugere

Vælg Fil Omdøb struktur fra menuen i den aRts-bygger som indeholder Synth_SEQUENCE tingene, og kald den gennemgang. Tryk på O.k..

Vælg Fil Gem .

Start yderligere en &arts-builder; og vælg Fil Åbn , og indlæs gennemgangen igen.

Nu kan du vælge Fil Kør struktur i begge &arts-builder;'er som har strukturen. Nu hører du det samme to gange. Afhængig af hvornår du starter dem kommer det til at lyde mere eller mindre godt.

En anden ting som det kan være godt at gøre på dette tidspunkt er at starte &noatun;, og spille en `mp3`-fil. Start derefter &artscontrol;. Gå til Vis Vis lydhåndtering. Det du ser er &noatun; og din struktur gennemgang afspille noget. Det gode som du kan gøre er: dobbeltklik på &noatun;. Du får nu en liste over tilgængelige busser. Og se? Du kan lade &noatun; sende sin udskrift via lydbussen til afspilningsstrukturen som din gennemgang sørger for.

### Trin 7: Midisyntese

Endelig, nu skal du kunne lave din sinusbølge om til et rigtigt instrument. Dette er kun meningsfuldt hvis du har noget passende som kan sende &MIDI;-begivenheder til &arts;. Her beskriver jeg hvordan du kan bruge et eksternt keyboard, men en sequencer, såsom &brahms;, som kender til midibussen virker også.

Først af alt, så ryd op på din desktop indtil du kun har én &arts-builder; med sinusbølgestrukturen i gang (men lad den ikke køre). Gå derefter tre gange til Porte Opret IN-lydsignal, og tre gange til Porte Opret UT-lydsignal. Placér portene et sted.

Gå til Porte Ændr positioner og navne og døb portene frequency, velocity, pressed, left, right, done.

Endelig kan du slette modulet Synth_SEQUENCE, og i stedet forbinde inddataporten frequency for strukturen til frekvensporten på Synth_FREQUENCY. Hmm. Men hvad skal man gøre med pos?

Denne er ikke tilgængelig, eftersom der ikke er nogen algoritme i værdier som kan forudse hvornår brugeren vil slippe tasten han netop trykkede ned på sit midi-keyboard. Vi har i stedet parameteren pressed, som kun angiver om brugeren stadigvæk holder tasten nede. (pressed = 1: tasten stadigvæk nedtrykt, pressed = 0: tasten sluppet)

Dette betyder også at Synth_PSCALE-objektet skal udskiftes nu. Kobl en Synth_ENVELOPE_ADSR ind i stedet (fra Moduler Syntese Envelopper ). Forbind:

1. Strukturen pressed indgang til ADSR active

2. SIN udgangen til ADSR indgangen

3. ADSR udgangen til den venstre strukturudgang

4. ADSR udgangen til den højre strukturudgang

Sæt parametrene attack til 0.1, decay til 0.2, sustain til 0.7, release til 0.1.

En ting til som vi skal tænke på er at instrumentstrukturen skal på en eller anden måde vide når den har spillet færdig og så kan ryddes væk, eftersom den ellers aldrig ville stoppe også selvom tasten er sluppet. Heldigvis ved ADSR enveloppen når der ikke er mere at høre, eftersom den alligevel skalerer signalet ned til nul på et tidspunkt efter tasten er sluppet.

Dette angives ved at sætte udgangen done til 1. Så forbind denne til strukturens udgang. Strukturen fjernes så snart done bliver 1.

Omdøb din struktur til instrument_gennemgang (fra Fil Omdøb struktur. Gem den derefter med Gem som (det standardnavn som nu angives skal være instrument_gennemgang).

Start artscontrol, og gå til Vis Vis midihåndtering, og vælg Tilføj aRts syntese midi uddata. Tilsidst skal du kunne vælge dit instrument (gennemgang) her.

Åbn en terminal og skriv ``midisend``. Du vil se at `midisend` og instrumentet nu er på listen i &arts; &MIDI;-håndtering. Efter at have valgt begge to og trykket på forbind, er vi til sidst klare. Tag dit keyboard og begynd at spille (det skal naturligvis være forbundet til din maskine).

### Forslag

Du bør nu kunne arbejde med &arts;. Her er nogle vink om hvad du nu vil kunne gøre for at forbedre dine strukturer:

- Forsøg at bruge noget andet end en sinusbølge. Hvis du kobler en trekantbølge ind, TRI, synes du formodentlig ikke at lyden er særligt behagelig, Men forsøg at tilføje et SHELVE_CUTOFF-filter direkte efter trekantbølgen for at klippe frekvenserne ovenfor ved en vis frekvens (forsøg med noget i retning af 1000 Hz, eller endnu bedre to gange inddatafrekvensen eller inddatafrekvensen + 2000 Hz eller noget sådant).

- Forsøg at bruge mere end en oscillator. Synth_XFADE kan bruges til at overtone (blande) to signaler, Synth_ADD til at addere dem.

- Forsøg at sætte frekvenserne for oscillatorerne til nogle forskellige værdier, det giver behagelige oscillationer.

- Eksperimentér med mere end en envelope.

- Forsøg at syntetisere instrumenter med forskellig lyd til venstre og højre.

- Forsøg at efterbehandle signalet når det kommer ud fra bussens nedlink. Du kunne for eksempel blande en forsinket version af signalet med originalen for at få en ekkoeffekt.

- Forsøg at bruge anslagsstyrken, velocity (dette er styrken som tasten er trykket ned med, man kan også kalde det lydstyrken). Specialeffekter opstår altid hvis dette ikke kun ændrer lydstyrken på signalerne som laves, men også instrumentets lyd (for eksempel klipningsfrekvensen).

- ...

Hvis du har lavet noget storartet, så overvej gerne at give det til &arts;' netside, eller til at indgå i næste udgave.

## Eksempel

&arts-builder; levereres med flere eksempler, som kan åbnes med Fil Åbn eksempel... . Nogle af dem er i mappen, mens nogen (som af en eller anden grund ikke virker med den nuværende udgave) er efterladt i todo-mappen.

Eksemplerne kan inddeles i flere kategorier:

- Selvstændige eksempler som illustrerer hvordan hvert af de indbyggede aRts-moduler bruges (som hedder `example_*.arts`). Disse sender typisk noget uddata til et lydkort.

- Instrumenter som bygges fra aRts-moduler på lavere niveau (som hedder `instrument_*.arts`). Disse følger en standardkonvention for ind- og udporte så de kan bruges af &MIDI;-håndteringen i &artscontrol;.

- Skabeloner til at oprette nye moduler (som hedder `template_*.arts`).

- Effekter som kan bruges som genbrugelige byggeblokke (som hedder `effect_*.arts`) [ alle i todo ]

- Mikserelementer som bruges til at oprette miksere, inklusive grafiske styremoduler (som hedder `mixer_element_*.arts`). [ alle i todo ]

- Diverse moduler som ikke passer ind i nogen af de ovenstående kategorier.

## Detaljeret beskrivelse af hvert modul:

`example_stereo_beep.arts`

- Laver en 440 Hz sinusbølge i venstre kanal og en 880 Hz sinusbølge i højre kanal, og sender dem til lydkortet. Denne henvises til i &arts; dokumentation.

`example_sine.arts`

- Laver en 440 Hz sinusbølge.

`example_pulse.arts`

- Laver en 440 Hz pulsbølge med 20% aktivitet.

`example_softsaw.arts`

- Laver en 440 Hz savtandsbølge.

`example_square.arts`

- Laver en 440 Hz firkantbølge.

`example_tri.arts`

- Laver en 440 Hz trekantbølge.

`example_noise.arts`

- Laver hvid støj.

`example_dtmf1.arts`

- Laver en dualtone ved at producere sinusbølger med 697 og 1209 Hz, skalere dem til 0,5 og addere dem. Dette er DTMF-tonen for cifferet "1" på en trykknaptelefon.

`example_atan_saturate.arts`

- Kører en trekantbølge gennem et atan-mætningsfilter.

`example_autopanner.arts`

- Bruger autopanorering til at panorere en 400 Hz sinusbølge mellem venstre og højre højtaler med en hastighed på 2 Hz.

`example_brickwall.arts`

- Skalerer en sinusbølge med en faktor 5 og kører den derefter gennem ved en murstensvægsbegrænser.

`example_bus.arts`

- Linker ned fra en bus som hedder Bus og linker op til bussen out_soundcard med venstre og højre kanal byttet om.

`example_cdelay.arts`

- Linker ned fra en bus som hedder Delay og linker højre kanal op gennem en 0,5 sekunders forsinkelse, og venstre kanal uforandret. Du kan bruge &artscontrol; til at forbinde effekten til lydafspilning og observere resultatet.

`example_delay.arts`

- Dette er det samme som `example_cdelay.arts` men bruger forsinkelseseffekten.

`example_capture_wav.arts`

- Dette bruger Synth_CAPTURE_WAV til at gemme en 400 Hz sinusbølge som en wav-fil. Kør modulet i nogle sekunder, og kig derefter på filen som blev lavet i `/tmp`. Du kan afspille filen med en mediaspiller såsom kaiman.

`example_data.arts`

- Dette bruger Data-modulet til at oprette en konstant strøm af værdien 3 og sender den til et Debug-modul for at vise det periodisk. Det indeholder også et Nil-modul, og viser hvordan den kan bruges til ikke at gøre noget overhovedet.

`example_adsr.arts`

- Viser hvordan en enkelt instrumentlyd kan laves med envelope ADSR-modulet, som udløses repetitivt af en firkantbølge.

`example_fm.arts`

- Dette bruger FM Source-modulet til at lave en 440 Hz sinusbølge som frekvensmoduleres med en 5 Hz hastighed.

`example_freeverb.arts`

- Dette forbinder Freeverb-effekten fra et busnedlink til et busoplink. Du kan bruge artscontrol til at forbinde effekten til lydafspilning og observere resultatet.

`example_flanger.arts`

- Dette implementerer en enkel flangereffekt (det synes dog ikke at virke endnu).

`example_moog.arts`

- Denne struktur kombinerer de to kanaler fra en bus ind i en, sender den gennem et Moog VCF filter, og sender den derefter til bussen out_soundcard.

`example_pitch_shift.arts`

- Denne struktur sender venstrekanalens lyddata gennem en tonehøjdeændringseffekt. Justér hastighedsparameteren for at variere effekten.

`example_rc.arts`

- Denne struktur sender hvid støj gennem et RC-filer og ud til lydkortet. Ved at kigge på FFT måleren i artscontrol kan du se hvordan dette adskiller sig fra en ufiltreret støjbølgeform.

`example_sequence.arts`

- Dette demonstrerer Sequence-modulet ved at spille en sekvens af toner.

`example_shelve_cutoff.arts`

- Denne struktur sender hvid støj gennem et klippefilter og ud til lydkortet. Ved at kigge på FFT måleren i artscontrol kan du se hvordan dette adskiller sig fra en ufiltreret støjbølgeform.

`example_equalizer.arts`

- Dette demonstrerer modulet Std_Equalizer. Det forstærker de lave og høje frekvenser med 6 dB.

`example_tremolo.arts`

- Dette demonstrerer tremoloeffekten. Det modulerer venstre og højre kanal med en 10 Hz tremolo.

`example_xfade.arts`

- Dette eksempel blander 440 og 880 Hz sinusbølger med en overtoning. Justér værdien på overtoningens procentindgang fra -1 til 1 for at kontrollere blandningen af de to signaler.

`example_pscale.arts`

- Dette illustrerer Pscale-modulet (jeg er ikke sikker på at det er et meningsfuldt eksempel).

`example_play_wav.arts`

- Dette illustrerer modulet Play Wave. Du skal angive hele søgestien til en `.wav`-fil som filnavneparameter.

example_multi_add.arts

- Dette viser modulet Multi Add, som accepterer et hvilket som helst antal indgange. Det opsummerer tre Data-moduler som producerer inddata 1, 2 og 3, og viser resultatet 6.