Øvelse: SynthDefs
SynthDef-skrivning er måske et lidt tørt, teknisk emne. Men med lidt øvelse er det nøglen til at åbne de mange fantastiske variationsmuligheder, som interfacet mellem SynthDef
og Pbind
lægger op til. Du må i denne øvelse gerne skele til cheat sheet'et om SynthDefs og andre relevante afsnit, men du skal i denne øvelse skrive SynthDef-kildekoden selv. Det får du nemlig mest ud af.
Min første SynthDef
- Skriv en SynthDef, som overholder følgende krav:
- SynthDef'ens navn skal være
\hello
. - Som lydkilde skal SynthDef'en indeholde en oscillator efter eget valg.
- Oscillatorens frekvens kan styres med et SynthDef-argument kaldet
freq
, defaultværdi440
. - Oscillatorens lydstyrke over tid styres af en envelope kaldet
Env.linen
.
- SynthDef'ens navn skal være
- Test, at
freq
-argumentet i din SynthDef fungerer.- Brug en kommando som
Synth(\hello, [\freq, 1000]);
, hvor du ændrer på frekvensen.
- Brug en kommando som
- Justér SynthDef'en, så der kan ændres på lydstyrken.
- Indfør et nyt SynthDef-argument kaldet
amp
med defaultværdi0.1
. - Sørg for, at amplituden for lydsignalet bliver ganget med
amp
, før det sendes ud medOut
.
- Indfør et nyt SynthDef-argument kaldet
- Test din SynthDef med nedenstående Pbind.
Test af SynthDef
Pbind(
\instrument, \hello,
\degree, Pwhite(0, 7),
\octave, Pwhite(3, 6),
\dur, 0.25,
).play;
En SynthDef med firkantede bølgeformer
- Skriv en SynthDef, som overholder følgende krav:
- SynthDef'ens navn skal være
\firkant
. - Lydkilden er en
Pulse
-UGen hvis frekvens kan styres med et SynthDef-argument kaldetfreq
, defaultværdi220
. - Lydstyrken kan styres med et SynthDef-argument kaldet
amp
, defaultværdi0.1
. - Lydstyrken moduleres af en slagtøjsagtig envelope (
Env.perc
), hvor attack og release kan styres med SynthDef-argumenterattack
ogrelease
. - Bredden af firkanten i
Pulse
-oscillatoren (2. argument tilPulse.ar
) kan styres med et SynthDef-argument kaldetwidth
.
- SynthDef'ens navn skal være
- Test din SynthDef med nedenstående Pbind. Den bør give et resultat, der minder om lydeksemplet herunder.
Test af SynthDef
TempoClock.tempo = 130 / 60;
Pbind(
\instrument, \firkant,
\degree, [0, 2, 4, 6],
\scale, Scale.minor,
\octave, 4,
\mtranspose, Pwhite(-2, 2).stutter(Phprand(2, 20).asStream),
\db, Pseries(-25, Pwhite(3, 4).asStream, 4).repeat,
\attack, 0.001,
\release, Pgeom(0.1, 1.03, 100),
\dur, Pwrand([1/8, 1/4, Rest(1/8)], [0.8, 0.15, 0.05], inf) * 4,
\strum, Pexprand(0.0001, 0.01),
\width, Pseries(0.2, 0.005, 100)
).play;
SynthDef med vedvarende envelope
- Justér nedenstående SynthDef, så den anvender en vedvarende envelope i stedet for en selv-afsluttende envelope. OBS: Dette kræver, at du tilføjer et gate-argument til
EnvGen
. - Skriv en
Pmono
-baseret komposition, hvor du varierer\degree
,\lfoFreq
og\lfoDepth
ved hjælp af patterns, fx tilfældighedsgeneratorer. Der findes en kodeblok herunder, som du kan tage udgangspunkt i.
Justér kun på de markerede linjer i kodeblokkene herunder.
SynthDef med glissando
SynthDef(\gliss, {
arg freq = 440, pan = 0, amp = 0.1, out = 0,
lfoFreq = 1, lfoDepth = 0.025;
var env = EnvGen.kr(Env.perc, doneAction: Done.freeSelf);
var sig = Pulse.ar(
freq.lag(0.01) *
LFTri.kr(lfoFreq).bipolar(lfoDepth).midiratio
);
sig = Pan2.ar(sig, pan, amp) * env;
Out.ar(out, sig);
}).add;
Afsæt for komposition med Pmono
ses herunder.