# aRts-byggare

## Översikt

Först av allt, när du försöker köra aRts-byggaren, ska du också köra ljudservern (&artsd;). Oftast, om du använder &kde; 2.1, ska detta redan vara fallet. Om inte, så kan du ställa in automatisk start av ljudservern i inställningscentralen, med Ljud Ljudserver.

När du kör &arts;, körs alltid små moduler. aRts-byggaren är ett verktyg för att skapa nya strukturer av små ihopkopplade moduler. Du klickar helt enkelt i rutnätet för att lägga till en modul. För att göra detta, välj dem från menyn Moduler, och klicka någonstans på den gröngrå ytan.

Moduler har ofta portar (där ljudsignaler vanligtvis leds in eller ut). För att koppla ihop två portar, klicka på den första, som gör att den blir orange, och klicka sedan på den andra. Du kan bara förbinda en inport (på översidan av en modul) med en utport (på undersidan av en modul). Om du vill ange ett konstant värde för en port (eller koppla ifrån den), gör det genom att dubbelklicka på porten.

## Handledning

### Steg 1

Starta aRts-byggaren.

Du behöver en Synth_AMAN_PLAY-modul för att höra utdata som du skapar. Så skapa en Synth_AMAN_PLAY-modul genom att välja Moduler Syntes Ljud-IO Synth_AMAN_PLAY och klicka på den tomma modulytan. Placera den nedanför den femte raden ungefär, eftersom vi kommer att lägga till en del grejor ovanför.

Modulen kommer att ha en parameter `title` (porten längst till vänster), och `autoRestoreID` (intill porten längst till vänster) för att den ska kunna hittas. För att fylla i de här, dubbelklicka på portarna, välj konstant värde och skriv `handledning` i textrutan. Klicka OK för att verkställa.

Välj Arkiv Kör struktur . Du hör absolut ingenting. Uppspelningsmodulen behöver också någon indata... ;) Om du har lyssnat på tystnaden ett tag, klicka Avsluta och gå till steg 2.

### Steg 2

Skapa en Synth_WAVE_SIN-modul (från Moduler Syntes Vågformer) och placera den ovanför Synth_AMAN_PLAY-modulen (lämna en rads mellanrum mellan dem).

Som du ser, så producerar den någon utdata, men kräver pos som indata. Låt oss först ansluta utporten till högtalarna. Klicka på porten out på Synth_WAVE_SIN och sedan på porten left på Synth_AMAN_PLAY. Voila, du har kopplat ihop två moduler.

Oscillatorer i &arts; kräver inte en frekvens som indata, utan istället en position i vågformen. Positionen ska vara mellan 0 och 1, som i ett standardobjekt Synth_WAVE_SIN översätts till området 0 .. 2*Pi. För att skapa oscillerande värden från en frekvens, används en Synth_FREQUENCY modul.

Skapa en Synth_FREQUENCY-modul (från Moduler Syntes Oscillation & modulation) och anslut dess pos utgång till pos ingången på Synth_WAVE_SIN. Sätt frekvensporten för frekvensgeneratorn till det konstanta värdet 440.

Välj Arkiv Kör struktur . Du kommer att höra en sinusvåg på 440 Hz i en av dina högtalare. Om du har lyssnat på den ett tag, klicka Avsluta och gå till steg 3.

### Steg 3

OK, det vore trevligare om du kunde höra sinusvågen i båda högtalarna. Anslut den högra porten på Synth_PLAY till utgången från Synth_WAVE_SIN också.

Skapa ett Synth_SEQUENCE-objekt (från Moduler Syntes Midi & sekvensiering). Det ska placeras överst på skärmen. Om du behöver mer utrymme kan du flytta de andra modulerna genom att markera dem (för att markera flera moduler håll nere skifttangenten), och dra omkring dem.

Anslut nu frekvensutgången på Synth_SEQUENCE till frekvensingången på Synth_FREQUENCY-modulen. Ange sedan sekvensens hastighet som konstant värde 0.13 (hastigheten är porten längs till vänster).

Gå nu till porten längs till höger (seq) på Synth_SEQUENCE och skriv in `A-3;C-4;E-4;C-4;` som konstant värde. Det här anger en sekvens. Mer om detta i modulreferensen.

Synth_SEQUENCE behöver verkligen en sekvens och hastigheten. Utan dessa kanske du får minnesdumpar.

Välj Arkiv Kör struktur . Du kommer att höra en trevlig sekvens spelas upp. Om du har njutit av känslan, klicka Avsluta och gå till steg 4.

### Steg 4

Skapa en Synth_PSCALE-modul (från Moduler Syntes Envelopper ). Koppla bort utgången från sinusvågen genom att dubbelklicka på den och välja inte ansluten. Anslut

1. Utgången SIN till ingången på PSCALE

2. PSCALE utgången till AMAN_PLAY på vänster sida

3. PSCALE utgången till AMAN_PLAY på höger sida

4. SEQUENCE pos till PSCALE pos

Till slut, sätt PSCALE top till något värde, till exempel 0.1.

Hur fungerar detta nu: Synth_SEQUENCE ger ytterligare information om positionen för tonen den spelar just nu, där 0 betyder precis påbörjad och 1 betyder avslutad. Modulen Synth_PSCALE skalar ljudflödet som skickas genom den från volymen 0 (tyst) till 1 (ursprunglig ljudstyrka) tillbaka till 0 (tyst) enligt positionen. Positionen där toppen ska ske kan anges som top. 0.1 betyder att efter 10 % av tonen har spelats har volymen nått sitt maximala värde, och börjar sedan avta.

Välj Arkiv Kör struktur . Du kommer att höra en trevlig sekvens spelas upp. Om du har njutit av känslan, klicka Avsluta och gå till steg 5.

### Steg 5: Börja skicka omkring data ;)

Starta en aRts-byggare till.

Placera en Synth_AMAN_PLAY i den, och ställ in den till ett vettigt namn. Placera en Synth_BUS_DOWNLINK i den och:

1. Sätt Synth_BUS_DOWNLINK bus till ljud (det är bara ett namn, kalla den Fred om du vill)

2. Anslut Synth_BUS_DOWNLINK left (vänster) till Synth_AMAN_PLAY left.

3. Anslut Synth_BUS_DOWNLINK right (höger) till Synth_AMAN_PLAY right.

Börja köra strukturen. Som väntat hör du ingenting, ... inte än.

Gå tillbaka till strukturen med Synth_WAVE_SIN grejorna och byt ut Synth_AMAN_PLAY-modulen mot en Synth_BUS_UPLINK, och ställ in namnet till ljud (eller Fred om du vill). Att ta bort moduler görs genom att markera dem och välja Redigera Ta bort från menyn (eller trycka på tangenten Del).

Välj Arkiv Kör struktur . Du kommer att höra sekvensen med skalade toner, transporterad över bussen.

Om du vill ta reda på varför något sådant här kan vara användbart, klicka Avsluta (i aRts-byggaren som kör Synth_SEQUENCE grejorna, du kan låta den andra fortsätta köra) och gå till steg 6.

### Steg 6: Skicka data för avancerade användare

Välj Arkiv Byt namn på struktur från menyn i den aRts-byggare som innehåller Synth_SEQUENCE grejorna, och kalla den handledning. Tryck OK.

Välj Arkiv Spara som .

Starta ytterligare en aRts-byggare och välj Arkiv Öppna , och ladda handledningen igen.

Nu kan du välja Arkiv Kör struktur i båda aRts-byggarna som har strukturen. Nu hör du samma sak två gånger. Beroende på när du startar dem kommer det att låta mer eller mindre bra.

En annan sak som kan vara bra att göra vid det här tillfället är att starta &noatun;, och spela en `mp3`-fil. Starta sedan &artscontrol;. Gå till Visa Visa ljudhanterare. Vad du ser är &noatun; och din struktur handledning spela upp någonting. Det trevliga som du kan göra är: dubbelklicka på &noatun;. Du får nu en lista på tillgängliga bussar. Och ser du? Du kan låta &noatun; skicka sin utmatning via ljudbussen till uppspelningsstrukturen som din handledning tillhandahåller.

### Steg 7: Midisyntes

Till slut, nu ska du kunna göra om din sinusvåg till ett riktigt instrument. Det här är bara meningsfullt om du har något lämpligt som kan skicka &MIDI;-händelser till &arts;. Här beskriver jag hur du kan använda ett externt keyboard, men en sequencer, som &brahms;, som känner till midibussen fungerar också.

Först av allt, rensa på ditt skrivbord till du bara har en aRts-byggare med sinusvågstrukturen igång (men låt den inte köra). Gå därefter tre gånger till Portar Skapa IN-ljudsignal, och tre gånger till Portar Skapa UT-ljudsignal. Placera portarna någonstans.

Gå till Portar Ändra positioner/namn och döp portarna till frequency, velocity, pressed, left, right, done.

Till sist kan du ta bort modulen Synth_SEQUENCE, och istället ansluta inporten frequency för strukturen till frekvensporten på Synth_FREQUENCY. Hmm. Men vad ska man göra med pos?

Den här är inte tillgänglig, eftersom det inte finns någon algoritm i värden som kan förutse när användaren ska släppa tangenten han just tryckte ner på sitt midi-keyboard. Vi har istället parametern pressed, som bara anger om användaren fortfarande håller nere tangenten. (pressed = 1: tangenten fortfarande nertryckt, pressed = 0: tangenten släppt)

Det här betyder också att Synth_PSCALE-objektet måste bytas ut nu. Koppla in en Synth_ENVELOPE_ADSR istället (från Moduler Syntes Envelopper ). Anslut:

1. Strukturens pressed ingång till ADSR active

2. SIN utgången till ADSR ingången

3. ADSR utgången till den vänstra strukturutgången

4. ADSR utgången till den högra strukturutgången

Ställ in parametrarna attack till 0.1, decay till 0.2, sustain till 0.7, release till 0.1.

En sak till som vi måste tänka på är att instrumentstrukturen måste på något sätt veta när den har spelat färdigt och då kunna rensas bort, eftersom den annars aldrig skulle stanna även om tangenten har släppts. Som tur är, vet ADSR enveloppen när det inte finns mer att höra, eftersom den ändå skalar ner signalen till noll vid någon tidpunkt efter tangenten har släppts.

Det här anges genom att sätta utgången done till 1. Så anslut den här till strukturens utgång. Strukturen tas bort så fort done blir 1.

Döp om din struktur till instrument_handledning (från Arkiv Byt namn på struktur. Spara den sedan med Spara som (det förvalda namnet som nu anges ska vara instrument_handledning).

Starta aRts control, och gå till Visa Visa midihanterare, och välj Lägg till aRts synthes midi utmatning. Till sist ska du kunna välja ditt instrument (handledning) här.

Öppna en terminal och skriv ``midisend``. Du kommer att se att `midisend` och instrumentet nu listas i &arts; &MIDI;hanterare. Efter att ha valt båda två och tryckt på Anslut, är vi till sist klara. Ta ditt keyboard och börja spela (det måste förstås vara anslutet till din dator).

### Förslag

Du bör nu kunna arbeta med &arts;. Här är några tips om vad du nu skulle kunna göra för att förbättra dina strukturer:

- Försök att använda något annat än en sinusvåg. Om du kopplar in en triangelvåg, TRI, tycker du troligen inte att ljudet är särskilt trevligt, Men försök att lägga till ett SHELVE_CUTOFF-filter direkt efter triangelvågen för att klippa frekvenserna ovanför en viss frekvens (försök med något i stil med 1000 Hz, eller ännu bättre två gånger indatafrekvensen eller indatafrekvensen + 2000 Hz eller något sådant).

- Försök använda mer än en oscillator. Synth_XFADE kan användas för att övertona (blanda) två signaler, Synth_ADD för att addera dem.

- Försök att sätta frekvenserna för oscillatorerna till något olika värden, det ger trevliga oscillationer.

- Experimentera med mer än ett envelopp.

- Försök syntetisera instrument med olika ljud till vänster och höger.

- Försök efterbehandla signalen när den kommer ut från bussens nerlänk. Du skulle till exempel kunna blanda en fördröjd version av signalen med originalet för att få en ekoeffekt.

- Försök att använda anslagsstyrkan, velocity (det här är styrkan som tangenten har tryckts ner med, man kan också kalla det volymen). Specialeffekter uppstår alltid om det här inte bara ändrar volymen på signalen som skapas, utan också instrumentets ljud (till exempel klippningsfrekvensen).

- ...

Om du har skapat något storartat, fundera gärna på att tillhandahålla det till &arts; webbsida, eller för att ingå i nästa utgåva.

## Exempel

aRts-byggaren levereras med flera exempel, som kan öppnas med Arkiv Öppna Exempel... . Några av dem är i katalogen, medan några (som av någon anledning inte fungerar med den nuvarande utgåvan) har lämnats i todo-katalogen.

Exemplen kan delas in i flera kategorier:

- Självständiga exempel som illustrerar hur var och en av de inbyggda aRts-modulerna används (som heter `example_*.arts`). De här skickar typiskt någon utmatning till ett ljudkort.

- Instrument som byggs från aRts-moduler på lägre nivå (som heter `instrument_*.arts`). De här följer en standardkonvention för in- och utportar så att de kan användas av &MIDI;-hanteraren i &artscontrol;.

- Mallar för att skapa nya moduler (som heter `template_*.arts`).

- Effekter som kan användas som återanvändbara byggblock (som heter `effect_*.arts`) [ alla att göra ]

- Mixerelement som används för att skapa mixrar, inklusive grafiska styrmoduler (som heter `mixer_element_*.arts`). [ alla att göra ]

- Diverse moduler som inte passar in i någon av de ovanstående kategorierna.

## Detaljerad beskrivning av varje modul:

`example_stereo_beep.arts`

- Skapar en 440 Hz sinusvåg i vänster kanal och en 880 Hz sinusvåg i höger kanal, och skickar dem till ljudkortet. Den här hänvisas till i &arts; dokumentation.

`example_sine.arts`

- Skapar en 440 Hz sinusvåg.

`example_pulse.arts`

- Skapar en 440 Hz pulsvåg med 20% aktivitet.

`example_softsaw.arts`

- Skapar en 440 Hz sågtandsvåg.

`example_square.arts`

- Skapar en 440 Hz fyrkantvåg.

`example_tri.arts`

- Skapar en 440 Hz triangelvåg.

`example_noise.arts`

- Skapar vitt brus.

`example_dtmf1.arts`

- Skapar en dubbelton genom att producera sinusvågor med 697 och 1209 Hz, skala dem till 0,5 och addera dem. Det här är DTMF-tonen för siffran "1" på en knapptelefon.

`example_atan_saturate.arts`

- Kör en triangelvåg genom ett atan-mättningsfilter.

`example_autopanner.arts`

- Använder autopanorering för att panorera en 400 Hz sinusvåg mellan vänster och höger högtalare med en hastighet av 2 Hz.

`example_brickwall.arts`

- Skalar en sinusvåg med en faktor 5 och kör den sedan genom en tegelväggsbegränsare.

`example_bus.arts`

- Länkar ner från en buss som heter Bus och länkar upp till bussen out_soundcard med vänster och höger kanal utbytta.

`example_cdelay.arts`

- Länkar ner från en buss som heter Delay och länkar upp höger kanal genom en 0,5 sekunders fördröjning, och vänster kanal oförändrad. Du kan använda &artscontrol; för att ansluta effekten till ljuduppspelning och observera resultatet.

`example_delay.arts`

- Det här är samma sak som `example_cdelay.arts` men använder fördröjningseffekten.

`example_capture_wav.arts`

- Det här använder Synth_CAPTURE_WAV för att spara en 400 Hz sinusvåg som en wav-fil. Kör modulen i några sekunder, och titta sedan på filen som skapats i `/tmp`. Du kan spela upp filen med en mediaspelare som kaiman.

`example_data.arts`

- Det här använder Data-modulen för att skapa en konstant ström av värdet 3 och skickar det till en Debug-modul för att visa det periodiskt. Det innehåller också en Nil-modul, och visar hur den kan användas för att göra ingenting alls.

`example_adsr.arts`

- Visar hur ett enkelt instrumentljud kan skapas med envelopp ADSR-modulen, som triggas repetitivt av en fyrkantvåg.

`example_fm.arts`

- Det här använder FM Source-modulen för att skapa en 440 Hz sinusvåg som frekvensmoduleras med en 5 Hz hastighet.

`example_freeverb.arts`

- Det här förbinder Freeverb-effekten från en bussnerlänk till en bussupplänk. Du kan använda artscontrol för att ansluta effekten till ljuduppspelning och observera resultatet.

`example_flanger.arts`

- Det här implementerar en enkel flänseffekt (det verkar dock inte fungera än).

`example_moog.arts`

- Den här strukturen kombinerar de två kanalerna från en buss till en, skickar den genom ett Moog VCF filer, och skickar det sedan till bussen out_soundcard.

`example_pitch_shift.arts`

- Den här strukturen skickar vänsterkanalens ljuddata genom en tonhöjdsändringseffekt. Justera hastighetsparametern för att variera effekten.

`example_rc.arts`

- Den här strukturen skickar vitt brus genom ett RC-filer och ut till ljudkortet. Genom att titta på FFT mätaren i artscontrol kan du se hur det här skiljer sig från en ofiltrerad brusvågform.

`example_sequence.arts`

- Det här demonstrerar Sequence-modulen genom att spela en sekvens av toner.

`example_shelve_cutoff.arts`

- Den här strukturen skickar vitt brus genom ett hyllklippningsfilter och ut till ljudkortet. Genom att titta på FFT mätaren i artscontrol kan du se hur det här skiljer sig från en ofiltrerad brusvågform.

`example_equalizer.arts`

- Det här demonstrerar modulen Std_Equalizer. Det höjer de låga och höga frekvenserna med 6 dB.

`example_tremolo.arts`

- Det här demonstrerar tremoloeffekten. Det modulerar vänster och höger kanal med ett 10 Hz tremolo.

`example_xfade.arts`

- Det här exemplet blandar 440 och 880 Hz sinusvågor med en övertoning. Justera värdet på övertoningens procentingång från -1 till 1 för att kontrollera blandningen av de två signalerna.

`example_pscale.arts`

- Det här illustrerar Pscale-modulen (jag är inte säker på att det är ett meningsfullt exempel).

`example_play_wav.arts`

- Det här illustrerar modulen Play Wave. Du måste ange hela sökvägen till en `.wav`-fil som filnamnsparameter.

example_multi_add.arts

- Det här visar modulen Multi Add, som accepterar vilket antal ingångar som helst. Det summerar tre Data-moduler som producerar indata 1, 2 och 3, och visar resultatet 6.