&arts;-moduler
Indledning
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.
Moduler opdeles i to kategorier. Syntesemoduler bruges til at implementere rørlægningen
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.
Reference til syntesemoduler
Aritmetik + miksning
Synth_ADD
Synth_ADD
Denne adderer to signaler.
Synth_MUL
Synth_MUL
Denne multiplicerer signalet med en faktor. Du kan bruge dette til at skalere signaler ned (0 < faktor < 1) eller op (faktor > 1) eller invertere signaler (faktor < 0). Bemærk at faktoren kan være et signal og ikke behøver at være konstant (f.eks. envelopper eller rigtige signaler).
Synth_DIV
Synth_DIV
Dette dividerer et signal med en faktor. Du kan bruge dette til at dividere et signal med et andet. Eller sætte indværdi11 til 1 så du derved får den reciprokke værdi af indværdi2 som udværdi. Pas på med at indværdi2 aldrig nærmer sig 0 ellers vil du få problemer med divisioner med nul.
Synth_MULTI_ADD
Synth_MULTI_ADD
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_MULTI_ADD-modul. Dette er effektivere end at bruge tre Synth_ADD-moduler.
Synth_XFADE
Synth_XFADE
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.
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.
Synth_AUTOPANNER
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.
Forbind en LFO, 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 (FX).
Busser
Synth_BUS_UPLINK
Synth_BUS_UPLINK
Et oplink til en bus. Angiv signaler til venstre og højre, og navnet på bussen som data skal sendes til på bus
-porten. Det kombinerede signal fra alle oplink med dette navn havner på hvert nedlink på denne bus
.
Synth_BUS_DOWNLINK
Synth_BUS_DOWNLINK
Henter (summen af) alle data som sendes på en vis bus (med navnet du angiver på bus
-porten).
Forsinkelser
Synth_DELAY
Denne forsinker inddata-signalet en vis tid. Tidsangivelsen skal være mellem 0 og maxdelay for en forsinkelse mellem 0 og maxdelay sekunder.
Denne slags forsinkelse kan ikke bruges 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.
Brug CDELAY'er i sådanne situationer, eller kombinér en kort konstant forsinkelse (på 0,001 sekunder) med en variabel forsinkelse.
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.
Synth_CDELAY
Synth_CDELAY
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.
Dette sparer beregningstid eftersom ingen interpolation gøres, og er nyttigt til rekursive strukturer. Se beskrivelsen ovenfor (Synth_DELAY).
Enveloper
Synth_ENVELOPE_ADSR
Synth_ENVELOPE_ADSR
Dette er en klassisk ADSR-envelop, som betyder at du angiver:
active
Hvis brugeren holder tasten nede lige nu.
invalue
Inddatasignalet.
attack
Tiden som skal gå fra brugerens tryk på tasten og til signalet når sin maksimale amplitude (i sekunder).
decay
Tiden som skal gå fra signalet har nået sin maksimale amplitude til signalet går tilbage til et konstant niveau (i sekunder).
sustain
Det konstante niveau som holdes for signalet bagefter, til brugeren slipper tasten.
release
Tiden som skal gå fra brugeren har sluppet tasten til signalet går ned til nul (i sekunder).
Du får det behandlede signal som uddata-værdi. Når ASDR-envelopen er klar, sætter den done til 1. Du kan bruge dette til at sørge for uddata done
for et instrument (som gør at instrumentstrukturen fjernes fra &MIDI;-relæobjektet når lyden er hørt op).
Synth_PSCALE
Synth_PSCALE
Modulet Synth_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_SEQUENCE). Positionen hvor toppen skal være kan angives som pos.
Eksempel: sæt top til 0,1 betyder at efter at 10 % af tonen er afspillet, har lydstyrken nået sin maksimale værdi, og begynder derefter at aftage.
Effekter
Synth_FREEVERB
Synth_FREEVERB
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.
Dette betyder at den også kan bruges inde i en StereoEffectStack.
Inddata-signalet skal forbindes til (inleft, inright), og uddata-signalet bliver (outleft, outright).
Parametrene som du kan indstille er:
roomsize
Størrelsen af rummet som efterklangseffekten simulerer (område: 0 .. 1, hvor 1 er det største mulige rum).
damp
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).
wet
Størrelsen af efterklangsignalet (dvs. den del af signalet som skal ændres af filtret, og forårsage en vådt
lyd, dvs. en efterklangslyd
).
dry
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).
width
Størrelsen af udvidet stereoeffekt som efterklangsalgoritmen tilføjer til efterklangseffekten, for at gøre efterklangslyden bredere i stereolydbilledet (område 0 .. 1).
mode
[HUSK: Jeg tror at hvis mode er 1, beholder efterklangen det nuværende lydbillede for lyden, mens 0 er normal behandling]
Synth_TREMOLO
Synth_TREMOLO
Tremolomodulet modulerer amplituden ifølge en LFO-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.
[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-mail-liste ;). ]
Synth_FX_CFLANGER
Synth_FX_CFLANGER
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.
Den har følgende porte:
invalue
Signalet som du vil behandle.
lfo
Helst en sinusbølge som modulerer forsinkelsestiden inde i flangeren (-1 .. 1).
mintime
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 < 1000 ms.
maxtime
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 < 1000 ms.
outvalue
Uddatasignalet. Det er vigtigt at du blander dette med originalsignalet (uden flanger) for at få den ønskede effekt.
Du kan bruge dette som en basis for koreffekter.
Filtre
Synth_PITCH_SHIFT
Synth_PITCH_SHIFT
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.
Parameteren speed 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).
Parameteren frequency 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.
Synth_SHELVE_CUTOFF
Synth_SHELVE_CUTOFF
Filtrerer alle frekvenser væk over afskæringsfrekvensen.
Synth_BRICKWALL_LIMITER
Synth_BRICKWALL_LIMITER
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.
Synth_STD_EQUALIZER
Synth_STD_EQUALIZER
Dette er en god byggeblok for en parametriserbar tonekontrol. Dens parametre er:
Indværdi, udværdi
Signalet som filtreres af tonekontrollen.
low
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.
mid
Hvordan middelfrekvenser skal ændres af tonekontrollen i dB (se low).
high
Hvordan høje frekvenser skal ændres af tonekontrollen i dB (se low).
frekvens
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.
q
Dette påvirker hvor bredt midterspektret er. Det skal være et positivt tal > 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.
Synth_RC
Synth_RC
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.
Forsøg med noget som ligner b=5, f=5 or b=10, f=10 or b=15, f=15 i alle tilfælde.
Synth_MOOG_VCF
Synth_MOOG_VCF
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.
Midi + sekvensering
Synth_MIDI_TEST
Synth_MIDI_TEST
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.
Du kan indstille noget sådant her på en behageligere måde i &artscontrol; i stedet for manuelt i &arts-builder;.
Synth_SEQUENCE
Afspiller en sekvens af toner om og om igen. Tonerne angives i spornotation, og adskilles af semikolon. Et eksempel er A-3;C-4;E-4;C-4;. 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.
Du kan give hver tone en længde i forhold til hastigheden ved at bruge et kolon efter tonen fulgt af længden. A-3:2;C-4:0.5;D-4:0.5;E-4; viser dette. Som du kan se, tenderer midi-tonesætningsprogrammer til at tilbyde større bekvemmelighed ;)
Synth_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_PSCALE (se nedenfor).
Synth_SEQUENCE_FREQ
Dette modul virker præcis som Synth_SEQUENCE, med den eneste forskel at du ikke indskriver nodenavne men frekvenser.
Samplinger
Synth_PLAY_WAV
Synth_PLAY_WAV
Dette afspiller en wav-fil. Den er kun tilstede hvis du har libaudiofile på computeren. Bølgeformsfilen afspilles så snart modulet laves.
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.
Lyd-I/O
Synth_PLAY
Synth_PLAY
Normalt behøver man ikke dette modul, hvis man ikke skriver selvstændige programmer. Inde i &artsd;, er der allerede et Synth_PLAY modul, og at oprette et til virker ikke.
Modulet Synth_PLAY giver lydsignalet som uddata til lydkortet. Venstre og højre kanal skal indeholde normaliseret inddata for kanalerne. Hvis inddata ikke er mellem -1 og 1, får man klipning.
Som allerede nævnt, må der kun være et Synth_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_AMAN_PLAY for at få noget som ligner uddata inde i &artsd;.
Bemærk at Synth_PLAY også kontrollerer tiden for hele strukturen. Dette betyder: ingen Synth_PLAY = ingen kilde for tid = ingen lyd. Så der behøves (nøjagtigt) et Synth_PLAY objekt.
Synth_RECORD
Synth_RECORD
Normalt behøver man ikke dette modul, hvis man ikke skriver selvstændige programmer. Inde i artsd, er der normalt allerede et Synth_RECORD modul, og at oprette et til virker ikke.
Modulet Synth_RECORD indspiller et signal fra lydkortet. Venstre og højre kanal indeholder inddata for kanalerne (mellem -1 og 1).
Som allerede nævnt, må der kun findes et Synth_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_AMAN_RECORD for at få noget som ligner en indgang inde i artsd. For at dette skal virke skal &artsd; køre med full dupleks aktiveret.
Synth_AMAN_PLAY
Synth_AMAN_PLAY
Modulet Synth_AMAN_PLAY giver lydsignalet som uddata. Det er godt (men ikke nødvendigt) at uddata er et normaliserer signal (mellem -1 og 1).
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 title. 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 autoRestoreID.
Synth_AMAN_RECORD
Synth_AMAN_RECORD
Modulet Synth_AMAN_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).
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 title. 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 autoRestoreID.
Synth_CAPTURE
Synth_CAPTURE
Modulet Synth_CAPTURE skriver et lydsignal til en bølgeformsfil på harddisken. Filen hedder altid /tmp/mcop-brugernavn/capture.wav
Tester
Synth_NIL
Synth_NIL
Dette gør ingenting. Det er meget nyttigt i testsituationer.
Synth_DEBUG
Synth_DEBUG
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.
Synth_MIDI_DEBUG
Synth_MIDI_DEBUG
Man kan bruge dette til at fejlsøge hvordan &MIDI;-begivenheder virkelig kommer ind i &arts;.
Når en MIDI_DEBUG kører, udskriver &artsserver; linjer såsom:
201 100753.837585 on 0 42 127
202 101323.128355 off 0 42
Den første linje fortæller at 100753 ms (dvs. 100 sekunder) efter MIDI_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].
Synth_DATA
Synth_DATA
Dette laver et signal med en konstant værdi.
Oscillation & Modulation
Synth_FREQUENCY
Synth_FREQUENCY
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_WAVE_SIN oversættes til området 0 .. 2*Pi. For at oprette oscillerende værdier fra en frekvens, bruges et Synth_FREQUENCY modul.
Synth_FM_SOURCE
Synth_FM_SOURCE
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_FM_SOURCE (man skal sende det til en oscillator eftersom det kun virker som Synth_FREQUENCY) og et andet signal for at få et godt resultat.
Virker godt sammen med Synth_WAVE_SIN oscillatorer.
Bølgeformer
Synth_WAVE_SIN
Synth_WAVE_SIN
Sinusoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_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.
Synth_WAVE_TRI
Synth_WAVE_TRI
Triangelbølgeoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_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 skal være i området 0 .. 1 for at udsignalet kan give et godt resultat.
Synth_NOISE
Synth_NOISE
Støjgenerator. Denne laver et tilfældigt signal mellem -1 og 1.
Synth_WAVE_SQUARE
Synth_WAVE_SQUARE
Firkantbølgeoscillator. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_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 skal være i området 0 .. 1 for at udsignalet kan give et godt resultat.
Synth_WAVE_SOFTSAW
Synth_WAVE_SOFTSAW
Blød savtandsbølge, som ligner Synth_WAVE_TRI oscillatoren i udseende. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_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 skal være i området 0 .. 1 for at udsignalet kan give et godt resultat.
Synth_WAVE_PULSE
Synth_WAVE_PULSE
Pulsoscillator. Dette modul ligner den rektangulære oscillator (Synth_WAVE_RECT), men det sørger for et indstilleligt op/ned-forhold, ved parameteren dutycycle. Angiv et pos signal fra Synth_FREQUENCY eller Synth_FM_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 skal være i området 0 .. 1 for at udsignalet kan give et godt resultat.
Diverse
Synth_COMPRESSOR
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.
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.
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.
Reference til visuelle moduler
HUSK når visuelle moduler er "færdige".