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 LjudLjudserver. 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 ArkivKö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 ArkivKö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 SyntesMidi & 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 ArkivKö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 Utgången SIN till ingången på PSCALE PSCALE utgången till AMAN_PLAY på vänster sida PSCALE utgången till AMAN_PLAY på höger sida 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 ArkivKö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: Sätt Synth_BUS_DOWNLINK bus till ljud (det är bara ett namn, kalla den Fred om du vill) Anslut Synth_BUS_DOWNLINK left (vänster) till Synth_AMAN_PLAY left. 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 ArkivKö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 ArkivByt 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 ArkivKö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 VisaVisa 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: Strukturens pressed ingång till ADSR active SIN utgången till ADSR ingången ADSR utgången till den vänstra strukturutgången 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 VisaVisa midihanterare, och välj Lägg tillaRts 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.