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.

96 lines
1.8 KiB
Plaintext

MIDIClient.init;
MIDIIn.connectAll;
MIDIdef.noteOn(\noteOnTest, {"key down".postln});
// Print MIDI debug info
(
MIDIdef.noteOn(\noteOnTest, {
arg nn, chan, src;
[nn, chan, src].postln;
});
MIDIdef.cc(\ccTest, {
arg val, num, chan, src;
["CC:", num, "Value:", val, "Channel:", chan, "Source:", src].postln;
});
)
// Load samples
(
~sampleDir = PathName("/home/lcoogan/snd/live/2025-04-26.Basic_City_Brewery/trax/01-borrowed flesh/seq/808/").fullPath;
~samples = Dictionary.newFrom(
(
42: "ch.wav", 46: "oh.wav", 49: "cy.wav",
56: "cb.wav", 39: "cp.wav", 37: "rs.wav",
50: "ht.wav", 47: "mt.wav", 43: "lt.wav",
38: "sd.wav", 36: "bd.wav", 70: "ma.wav",
75: "cl.wav", 62: "hc.wav", 63: "mc.wav",
64: "lc.wav"
).collect { |file, key|
key -> Buffer.read(s, ~sampleDir +/+ file)
}
);
)
// Testing ~samples
(
// For some reason, nn and vel are swapped on the tr-08 MIDIIn
// if vel isn't in the enclosure, then nn doesn't work
// still figuring out how to do polyphony
// set it to if == 9 when everything else is working
MIDIdef.noteOn(\noteOnTest, {|vel, nn|
[nn].postln;
Synth(\sampleTrigger, [\buf, ~samples[nn]]);
});
)
(
// Define the Synth for sample triggering (if not defined already)
SynthDef(\sampleTrigger, { |buf|
var sound;
sound = PlayBuf.ar(1, buf, doneAction: 2); // doneAction: 2 will free the synth when it's done
Out.ar(0, sound); // Send to audio output
}).add;
)
// Manually trigger a sample for note number 42
(
var noteNumber = 39; // The MIDI note number to play
if (~samples.includesKey(noteNumber), {
("Triggering sample for note: " + noteNumber).postln;
Synth(\sampleTrigger, [\buf, ~samples[noteNumber]]);
}, {
("No sample found for note: " + noteNumber).postln;
});
)
MIDIFunc.trace;