Here's the code in the bela ide for the server:
/*******************
Hello Bela! Taking OSC via pythonosc
*/
s = Server.default;
// Set up options for the Bela
s.options.numAnalogInChannels = 2;
s.options.numAnalogOutChannels = 2;
s.options.numDigitalChannels = 0;
s.options.maxLogins = 4;
s.options.blockSize = 16;
s.options.numInputBusChannels = 2;
s.options.numOutputBusChannels = 2;
s.waitForBoot {
// // Your code goes here.
// b = Buffer.read(s, Platform.resourceDir +/+ "sounds/a11wlk01.wav");
// {
// BufRd.ar(1, b, SinOsc.ar(0.08) * BufFrames.ir(b))
// }.play;
SynthDef("hihat", {arg out = 0, amp = 0.5, att = 0.01, rel = 0.2, ffreq = 6000, pan = 0;
var snd = WhiteNoise.ar(amp);
var env = Env.perc(att, rel).kr(doneAction: 2);
snd = HPF.ar(snd * env, ffreq);
Out.ar(out, Pan2.ar(snd, pan));
}).add;
SynthDef("snare", {arg out = 0, amp = 0.1, sinfreq = 180, att = 0.01, rel = 0.2, ffreq = 2000, pan = 0;
var snd1 = WhiteNoise.ar(amp);
var snd2 = SinOsc.ar(sinfreq,0,amp);
var env = EnvGen.kr(Env.perc(att, rel), doneAction: 2);
var sum = HPF.ar(snd1 * env, ffreq)+(snd2*env);
Out.ar(out, Pan2.ar(sum, pan));
}).add;
SynthDef("kick", {arg out = 0, amp = 0.3, sinfreq = 60, glissf = 0.9, att = 0.01, rel = 0.45, pan = 0;
var gliss = XLine.kr(sinfreq, sinfreq*glissf, rel);
var snd = SinOsc.ar(gliss);
var env = EnvGen.kr(Env.perc(att, rel), doneAction: 2);
snd = snd * env * amp;
Out.ar(out, Pan2.ar(snd, pan));
}).add;
// Cowbell
SynthDef("cowbell", {
| out=0, amp=0.3, gate=1, fund_freq=540, pan=0.0 |
var sig, env;
sig = Pulse.ar( fund_freq * [ 1, 1.5085 ], [ 0.565, 0.445 ], [ 0.4, 0.6 ] ).distort;
env = EnvGen.ar(
Env(
[ 0, 0.05, 1, 0.1, 0 ], [ 0.003, 0.002, 0.05, 0.5 ], [2, -4, -4, -4]
),
gate: gate,
timeScale: [ 1.0, 1.5 ],
doneAction: 2
);
sig = Mix( sig * env );
sig = BPF.ar( sig, fund_freq * 2, 1.808 );
Out.ar( out, Pan2.ar( sig, pan, amp ) );
}).add;
// Patterns
d = (
Ppar([
Pbind(
\instrument, "hihat",
\dur, Pseq([Rest(1/4), 1/4], inf),
\ffreq, 9000,
\rel, 0.1,
\amp, 0.2
),
Pbind(
\instrument, "kick",
\dur, 1/2,
\amp, 0.9,
\rel, 0.12,
\glissf, 0.99
),
Pbind(
\instrument, "snare",
\dur, Pseq([Rest(1/2), 1/2], inf),
\amp, 0.25,
\rel, 0.1
),
Pbind(
\instrument, "cowbell",
\dur, Pseq([Rest(1/4), 1/2], inf),
\ffreq, 9000,
\rel, 0.1,
\amp, 0.2
)
]);
// OSC definitions for triggers from Python
// Expected: Filter incoming messages for musical events from python gesture recognition flags
OSCdef.new(
\bang,
{
arg msg, time, addr, port;
msg.postln;
msg[1].postln;
if(msg[1] == 'drums', {
d.play;
})
// if(msg[1] == 'cowbell', {
// ~cowbell.play;
// })
// if(msg[1] == 'bass', {
// ~bass.play;
// })
},
'/bang'
)
);
};
The only line that seems fishy to me in the console is this:
ERROR: Class extension for nonexistent class 'Document'
Thanks for your help, still new to Bela and trying to get ramped up. 🙏