Gå til indholdet

Ø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

  1. Fremstil den samme sinustone i begge lydkanaler ved hjælp af duplikering.
Monofoni i to kanaler
{
    var sig = SinOsc.ar * 0.1;
    sig    ;
}.play;

Stereofoni

Løs følgende opgaver ved hjælp af pan-argumentet til Pan2.ar:

  1. Fremstil en sinustone i venstre side af stereofeltet.
  2. Fremstil en sinustone i højre side af stereofeltet.
  3. Fremstil en sinustone midt i stereofeltet.
  4. Fremstil en sinustone, der ved hjælp af modulation bevæger sig mellem højre og venstre side af stereofeltet.
Stereofoni med Pan2
{
    var sig = SinOsc.ar * 0.1;
    Pan2.ar(sig,    );
}.play;

Klangdannelse med additive elementer

  1. 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:
    1. Klangen skal ud over grundtonen (freq) indeholde mindst tre forskellige overtoner (dvs. med et harmonisk forhold til freq).
    2. Klangen skal derudover indeholde mindst to forskellige partialtoner (dvs. med et inharmonisk forhold til freq).
    3. Hver tone har en unik amplitude, eventuelt genereret tilfældigt.
    4. Kanalerne med de forskellige toner skal summeres før linje 10 herunder (som starter med env = EnvGen...).
  2. 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.

  1. Tilføj et element af filtreret støj med egen amplitude-envelope, helt i begyndelsen af anslaget.
  2. Tilføj en sub-oktav, dvs. en tone, som klinger en oktav under freq.
  3. 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.

  1. Hvordan udnytter nedenstående kildekode multichannel expansion? Kig efter .dup-method'en og gennemgå, hvordan de forskellige UGens i signalkæden ekspanderer.
  2. 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;