You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.1 KiB
Plaintext
115 lines
2.1 KiB
Plaintext
// Granular leftovers from granular_EF-edit.scd
|
|
|
|
|
|
// Transposition. Doesn't sound good, not readily controllable from an artistic perspective.
|
|
|
|
~klezmer = Buffer.readChannel(s, "/home/lcoogan/snd/live/2025-04-26.Basic_City_Brewery/granular/Cantorial/Acheinu_Kol_Beit_Israel.wav", channels:[0]);
|
|
|
|
(
|
|
x = {
|
|
arg amp = 0.1;
|
|
var sig;
|
|
sig = GrainBuf.ar(
|
|
numChannels: 2,
|
|
trigger: Impulse.kr(1),
|
|
dur: 1,
|
|
sndbuf: ~klezmer,
|
|
rate: \trnsp.kr(0).midiratio,
|
|
pos: 0.1,
|
|
interp: 2,
|
|
pan: 0,
|
|
envbufnum: -1,
|
|
maxGrains: 512
|
|
);
|
|
sig = sig;
|
|
}.play;
|
|
)
|
|
|
|
x.set(\trnsp, 20)
|
|
x.free;
|
|
|
|
|
|
|
|
(
|
|
// MIDI
|
|
|
|
MIDIClient.init;
|
|
MIDIIn.connectAll;
|
|
)
|
|
|
|
(
|
|
~notes = Array.newClear(128);
|
|
|
|
|
|
// Handle MIDI note on (when a note is pressed)
|
|
MIDIdef.noteOn(\noteOnTest, {
|
|
arg vel, nn, chan, src;
|
|
// Post the velocity and note for debugging
|
|
// [vel, nn].postln;
|
|
|
|
// Create a Synth for the note with the correct argument names
|
|
~notes[nn] = Synth.new(
|
|
\granular,
|
|
[
|
|
\note, nn, // Use \note, not \freq
|
|
\amp, vel.linexp(1, 127, 0.01, 0.3), // Map velocity to amplitude
|
|
\gate, 1, // Trigger the envelope
|
|
]
|
|
);
|
|
});
|
|
|
|
// Handle MIDI note off (when a note is released)
|
|
MIDIdef.noteOff(\noteOffTest, {
|
|
arg vel, nn;
|
|
// Set gate to 0 to stop the sound
|
|
~notes[nn].set(\gate, 0);
|
|
// Clear the reference to the Synth object for the note
|
|
~notes[nn] = nil;
|
|
});
|
|
)
|
|
|
|
|
|
(
|
|
~granularSynth = Synth(\granular, [
|
|
\note, 60, // C4
|
|
// \dur, 1,
|
|
\pan, 0
|
|
]);
|
|
)
|
|
|
|
|
|
(
|
|
b = Buffer.read(s, "/home/lcoogan/snd/live/2025-04-26.Basic_City_Brewery/granular/Cantorial/Cantor_Samuel_Malavsky_Zechor.wav");
|
|
|
|
(
|
|
SynthDef(\cantorial_tremolo, {
|
|
|out, pan = 0, dur = 0.1, atk=0.3, dec=0.4, sus=0.1, rel=0, amp=1, crf=1200|
|
|
var sig, rate, env, filter;
|
|
|
|
env = EnvGen.ar(
|
|
Env.new(
|
|
[0, 1, 1, 0],
|
|
[atk, dec, sus, rel],
|
|
),
|
|
gate: 1,
|
|
doneAction: 2
|
|
);
|
|
sig = GrainBuf.ar(
|
|
numChannels: 2,
|
|
trigger: Impulse.kr(10),
|
|
dur: dur,
|
|
sndbuf: b,
|
|
rate: 1,
|
|
pos: 0.1,
|
|
interp: 2,
|
|
pan: pan,
|
|
envbufnum: -1,
|
|
maxGrains: 512
|
|
);
|
|
sig = sig * env * amp;
|
|
filter = MoogVCF.ar(sig, crf, 0.3);
|
|
Out.ar(out, filter);
|
|
}).play;
|
|
)
|
|
)
|