aboutsummaryrefslogtreecommitdiffstats
path: root/classes/ZZZ.sc
diff options
context:
space:
mode:
Diffstat (limited to 'classes/ZZZ.sc')
-rw-r--r--classes/ZZZ.sc62
1 files changed, 40 insertions, 22 deletions
diff --git a/classes/ZZZ.sc b/classes/ZZZ.sc
index 24ba9a0..4d4d506 100644
--- a/classes/ZZZ.sc
+++ b/classes/ZZZ.sc
@@ -20,38 +20,56 @@ ZZZ{
*initClass{
StartUp.add{
SynthDef(\ZZZGate, {|bus = 0, in = 1.0, out = 0|
- Out.ar(
+ OffsetOut.ar(
out,
DC.ar(in: in) * In.kr(bus)
);
}).add;
SynthDef(\ZZZClock, { |out = 0, bus = 0, iphase = 0, width = 0.5, mul = 1.0, add = 0.0|
- Out.ar(out, LFPulse.ar(In.kr(bus), iphase, width, mul, add));
+ OffsetOut.ar(out, LFPulse.ar(In.kr(bus), iphase, width, mul, add));
}).add;
SynthDef(\ZZZClockKorg, { |out = 0, bus = 0, iphase = 0, width = 0.5, mul = 1.0, add = 0.0|
- Out.ar(out, LFPulse.ar(In.kr(bus) * 2, iphase, width, mul, add));
+ OffsetOut.ar(out, LFPulse.ar(In.kr(bus) * 2, iphase, width, mul, add));
}).add;
- // adding SynthDef for constant notes
- SynthDef(\ZZZConstant, { |out = 0, mul= 0.0|
- Out.ar(
+ // TODO: revise mapping of ranges and how to shift reference point
+ // NOTE: https://kentonuk.com/support/midi-to-cv/
+ // NOTE: https://soundprogramming.net/file-formats/midi-note-frequencies/
+ // NOTE: https://web.archive.org/web/20100409063540/http://www.users.globalnet.co.uk/~concuss/mcvbeg.htm
+ SynthDef(\ZZZCV, { |out = 0, freq = 1, gate = 1, attackTime = 0.01, susLevel = 1.0, releaseTime = 0.3, midiAmpVO = 0.0, midiAmpHV = 0.0, freqAmpVO = 0.0, freqAmpHV = 0.0|
+ // midi to V/O (C-1 - G9)
+ var midiVO = LinLin.kr(in: freq, srclo: 0, srchi: 127, dstlo: -0.1, dsthi: 0.96666) * midiAmpVO,
+ // midi to Hz/V (C-1 - C5)
+ midiHV = LinExp.kr(in: freq, srclo: 0, srchi: 72, dstlo: 0.00625, dsthi: 0.8) * midiAmpHV,
+ // frequency to V/O (C-1 - G9)
+ freqVO = LinLin.kr(in: freq, srclo: 8.176, srchi: 12543.850, dstlo: -0.1, dsthi: 0.96666) * freqAmpVO,
+ // frequency to Hz/V (C-1 - C5)
+ freqHV = LinExp.kr(in: freq, srclo: 8.176, srchi: 523.251, dstlo: 0.00625, dsthi: 0.8) * freqAmpHV;
+ OffsetOut.ar(
out,
- Lag.ar(
- LFPulse.ar(
- 500,
- 0,
- 1),
- 0.1,
- mul
- )
+ // TODO: revise envelope to become more flexible
+ DC.ar(in: midiVO + midiHV + freqVO + freqHV) * Linen.kr(gate: gate, attackTime: attackTime, susLevel: susLevel, releaseTime: releaseTime, doneAction: Done.freeSelf)
);
- }).add;
- //adding synth for percussive environments (trigger, gate)
- SynthDef(\ZZZPerc, { |out = 0, freq = 20000, amp = 0.0, attack = 0.001, release = 1, time = 1, curve = -4|
- var signal, envelope;
- envelope = EnvGen.kr(Env.perc(attack, release, amp, curve), doneAction: 2);
- signal = SinOsc.ar(freq, 0, envelope);
- Out.ar(out, signal);
- }).add;
+ }, variants: (
+ freqVO: [\freqAmpVO: 1.0],
+ freqHV: [\freqAmpHV: 1.0],
+ midiVO: [\midiAmpVO: 1.0],
+ midiHV: [\midiAmpHV: 1.0],
+ )).add;
+ SynthDef('ZZZVCO', {|out = 0, freq = 440, iphase = 0.0, width = 0.0, mul = 1.0, add = 0.0, triAmp = 0.0, pulseAmp = 0.0, sawAmp = 0.0, sineAmp = 0.0|
+ var triangle = LFTri.ar(freq: freq, iphase: iphase, mul: mul, add: add) * triAmp,
+ pulse = LFPulse.ar(freq: freq, iphase: iphase, width: width, mul: mul, add: add) * pulseAmp,
+ saw = LFSaw.ar(freq: freq, iphase: iphase, mul: mul, add: add) * sawAmp,
+ sine = SinOsc.ar(freq, 0, 0.5) * sineAmp;
+ OffsetOut.ar(
+ out, triangle + pulse + saw + sine
+ )
+ }, variants: (
+ triangle: [mul: 0.5, add: 0.0, triAmp: 1.0],
+ pulse: [width: 0.5, mul: 1.0, add: -0.5, pulseAmp: 1.0],
+ saw: [mul: 0.5, add: 0.0, sawAmp: 1.0],
+ sine: [mul: 0.5, add: 0.0, sineAmp: 1.0],
+ sawsine: [mul: 0.5, add: 0.0, sineAmp: 0.5, sawAmp: 0.5],
+ )).add;
}
}