Øvelse: Multikanalslyd og additiv syntese
I denne øvelse arbejdes der med multikanalslyd og additiv syntese. Det er i denne øvelse en fordel at visualisere serverens lydlige output.
Monofoni i to kanaler
- Fremstil den samme sinustone i begge lydkanaler ved hjælp af duplikering.
Stereofoni
Løs følgende opgaver ved hjælp af pan
-argumentet til Pan2.ar
:
- Fremstil en sinustone i venstre side af stereofeltet.
- Fremstil en sinustone i højre side af stereofeltet.
- Fremstil en sinustone midt i stereofeltet.
- Fremstil en sinustone, der ved hjælp af modulation bevæger sig mellem højre og venstre side af stereofeltet.
Klangdannelse med additive elementer
- Fremstil i nedenstående SynthDef en kompleks klang ved hjælp af additiv syntese med sinustoner (eksempler herpå kan findes i afsnittet om additiv syntese). Klangen skal overholde følgende krav:
- Klangen skal ud over grundtonen (
freq
) indeholde mindst tre forskellige overtoner (dvs. med et harmonisk forhold tilfreq
). - Klangen skal derudover indeholde mindst to forskellige partialtoner (dvs. med et inharmonisk forhold til
freq
). - Hver tone har en unik amplitude, eventuelt genereret tilfældigt.
- Kanalerne med de forskellige toner skal summeres før linje 10 herunder (som starter med
env = EnvGen...
).
- Klangen skal ud over grundtonen (
- Test din SynthDef med nedenstående Pbind.
Additiv syntese
SynthDef(\additivo, {
arg freq = 440, pan = 0, amp = 0.1,
attack = 0.01, release = 1, gate = 1;
var env, sig;
// udfyld herunder
sig =
// udfyld ikke herunder
env = EnvGen.kr(Env.asr(attack, 1, release), gate, doneAction: 2);
sig = Pan2.ar(sig * env, pan, amp);
Out.ar(0, sig);
}).add;
SynthDef'en kan testes med nedenstående enkle komposition.
Komposition til additiv SynthDef
TempoClock.tempo = 125/60;
Pbind(
\instrument, \additivo,
\degree, Pshuf([0, 1, 3, 4], 4).repeat(4),
\mtranspose, Pbrown(-2, 2, 1).stutter(16),
\dur, Pseq([1/4, 1/8, 1/16, 1/16], inf) * 4,
\attack, Pexprand(0.001, 0.02),
\release, Pexprand(0.5, 1.5),
\legato, Pgauss(1, 0.2),
).play;
Bonusudfordring
Arbejd videre med SynthDef'en fra forrige opgave.
- Tilføj et element af filtreret støj med egen amplitude-envelope, helt i begyndelsen af anslaget.
- Tilføj en sub-oktav, dvs. en tone, som klinger en oktav under freq.
- Gør mængden (lydstyrke) af anslagsstøj og sub-oktav justerbar ved at tilføje argumenter og varier disse ved at tilføje patterns og nøgler til Pbind-kompositionen.
Duplikering af kaotiske UGens kan føre til unikke resultater - men hvordan?
Dette er en analytisk opgave, men du er som altid velkommen til at eksperimentere videre med kildekoden.
- Hvordan udnytter nedenstående kildekode multichannel expansion? Kig efter
.dup
-method'en og gennemgå, hvordan de forskellige UGens i signalkæden ekspanderer. - Hvilke envelopes anvendes her, og hvordan skaleres deres output?
Duplikering af kaotiske UGens
~numVoices = 5;
{
var trigger = Dust.kr(XLine.kr(0.2, 100, 15, doneAction: 2).dup(~numVoices));
var env = Env.perc(releaseTime: 2.5).kr(gate: trigger + Impulse.kr(0));
var freq = TExpRand.kr(220.dup(~numVoices), 880, trigger);
freq = freq * env.range(24, 0).midiratio;
Splay.ar(Pulse.ar(freq.lag(0.01)) * env);
}.play;