fixing some of the current issues with pat
This commit is contained in:
@ -14,6 +14,17 @@ Bank : Singleton {
|
||||
})
|
||||
}
|
||||
|
||||
*contains {
|
||||
arg sample;
|
||||
var folderNames = PathName(Bank.root).entries.collect({
|
||||
arg item;
|
||||
if (item.folderName == sample) {
|
||||
^true
|
||||
}
|
||||
});
|
||||
^false;
|
||||
}
|
||||
|
||||
*new {
|
||||
|path, channels|
|
||||
^super.new(path, channels);
|
||||
|
||||
@ -95,6 +95,10 @@ Boot {
|
||||
|
||||
Event.addEventType(\buboLoopEvent, {
|
||||
arg server;
|
||||
[~sp, ~nb].postln;
|
||||
~sp = BuboUtils.cleanSampleName(~sp);
|
||||
~nb = BuboUtils.cleanSampleIndex(~nb);
|
||||
[~sp, ~nb].postln;
|
||||
if (~sp.notNil && ~nb.notNil, {
|
||||
~sp = ~sp ?? 'default';
|
||||
~nb = ~nb ?? 0;
|
||||
@ -111,18 +115,21 @@ Boot {
|
||||
|
||||
Event.addEventType(\buboEvent, {
|
||||
arg server;
|
||||
~sp = BuboUtils.cleanSampleName(~sp);
|
||||
~nb = BuboUtils.cleanSampleIndex(~nb);
|
||||
if (~sp.notNil && ~nb.notNil, {
|
||||
~sp = ~sp ?? 'default';
|
||||
~nb = ~nb ?? 0;
|
||||
~buf = Bank(~sp)[~nb % Bank(~sp).paths.size];
|
||||
if (Bank(~sp).metadata[~nb % Bank(~sp).size][\numChannels] == 1) {
|
||||
~instrument = \player;
|
||||
} {
|
||||
~instrument = \splayer;
|
||||
};
|
||||
if (~sp != "", {
|
||||
~buf = Bank(~sp)[~nb % Bank(~sp).paths.size];
|
||||
if (Bank(~sp).metadata[~nb % Bank(~sp).size][\numChannels] == 1) {
|
||||
~instrument = \player;
|
||||
} {
|
||||
~instrument = \splayer;
|
||||
};
|
||||
})
|
||||
});
|
||||
~type = \note;
|
||||
currentEnvironment.play;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -12,6 +12,20 @@ BuboUtils {
|
||||
)
|
||||
}
|
||||
|
||||
*cleanSampleName {
|
||||
arg str;
|
||||
if (str == nil, { ^nil });
|
||||
^str.asList.collect({
|
||||
|char|
|
||||
if (char.isAlpha, char, "")
|
||||
}).join
|
||||
}
|
||||
|
||||
*cleanSampleIndex {
|
||||
arg number;
|
||||
if (number.isKindOf(Number), { ^number }, { ^0 });
|
||||
}
|
||||
|
||||
*banner {
|
||||
var banner = "┳┓ ┓ ┳┓ ┓ ┳┓\n"
|
||||
"┣┫┓┏┣┓┏┓┣┫┓┏┣┓┏┓ ┣┫┏┓┏┓╋\n"
|
||||
@ -39,4 +53,3 @@ BuboUtils {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -19,7 +19,7 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
||||
trigger: 1, startPos:startPos,
|
||||
loop:\loop.kr(0), doneAction: 2);
|
||||
sig = sig * \amp.kr(-6).dbamp;
|
||||
sig = Pan2.ar(sig * env, \pan.kr(0));
|
||||
sig = Pan2.ar(sig * env, \pan.kr(0.0));
|
||||
OffsetOut.ar(out, sig)
|
||||
}).add;
|
||||
d.player = z;
|
||||
@ -47,7 +47,7 @@ d.list = { arg obj; obj.keys.do({arg i; i.postln}); };
|
||||
trigger: 1, startPos:startPos,
|
||||
loop:\loop.kr(0), doneAction: 2);
|
||||
sig = sig * \amp.kr(-6).dbamp;
|
||||
sig = Pan2.ar(sig * env, \pan.kr(0));
|
||||
sig = Pan2.ar(sig * env, \pan.kr(0.0));
|
||||
OffsetOut.ar(out, sig)
|
||||
}).add;
|
||||
d.splayer = z;
|
||||
|
||||
@ -54,9 +54,9 @@ EventShortener {
|
||||
if (type !== 'midi', {
|
||||
if (pattern.includes('i') || pattern.includes('instrument') == false, {
|
||||
new_pattern = new_pattern ++ [
|
||||
sp: Pfunc { |e| e.str ? "kick" },
|
||||
nb: Pfunc { |e| e.num ? 0 },
|
||||
instrument: Pfunc { |e| e.str.isNil && e.num.isNil ? "default" },
|
||||
sp: Pfunc { |e| e.str ? 'default' },
|
||||
nb: Pfunc(\num),
|
||||
instrument: 'default',
|
||||
fast: 1,
|
||||
];
|
||||
});
|
||||
|
||||
@ -6,16 +6,16 @@
|
||||
// BUG: Evalue moi
|
||||
m = MIDIOut.newByName("MIDI", "Bus 1");
|
||||
|
||||
// NOTE: Pattern rythmique de base
|
||||
(
|
||||
~test => [ sp: "kick", nb: 0];
|
||||
~test => [ sp: "kick", nb: 0 ];
|
||||
~test.play;
|
||||
)
|
||||
|
||||
// NOTE: Pattern avec Pmini
|
||||
~test.source.patternpairs
|
||||
|
||||
(
|
||||
~test => [ pat: "kick:4 snare:3" ];
|
||||
~test.play;
|
||||
~fun => [ pat: "kick:4 snare:3" ];
|
||||
~fun.play;
|
||||
)
|
||||
|
||||
// NOTE: Pattern sans numéro maintenant !
|
||||
@ -40,8 +40,6 @@ Sweep.help
|
||||
sound
|
||||
});
|
||||
~rhythm.play;
|
||||
)
|
||||
|
||||
~basse => [
|
||||
pat: "0(5,8)/2",
|
||||
i: "kraut",
|
||||
@ -156,15 +154,32 @@ m = MIDIOut.newByName("MIDI", "Bus 1");
|
||||
|
||||
|
||||
(
|
||||
~ground => [pat: "[kick:2(5,16)/16, fgood:11/2]", release: 4, quant: 4];
|
||||
~ground => [
|
||||
pat: "[kick:2(5,16)/16, cgood:11/2 lgood:13]*2",
|
||||
release: [4, 2, 1].pseq(inf),
|
||||
quant: 4,
|
||||
// test: Pfunc { |e| e.postln; },
|
||||
// finish: { currentEnvironment.keysValuesDo {
|
||||
// |key, val|
|
||||
// "%: %".format(key, val).postln}
|
||||
// },
|
||||
];
|
||||
~ground.play;
|
||||
)
|
||||
|
||||
(
|
||||
~snare => [pat: "[~ snare]/16", release: 4, quant: 4];
|
||||
~snare.fx1(0.7, {arg in; MiVerb.ar(in, time: 0.7)});
|
||||
~snare.play;
|
||||
)
|
||||
|
||||
(
|
||||
~hat => [pat: "[sound:2|hat:5] hat:2 hat:3!2", release: 1/32,
|
||||
amp: [0.0,-12.0].pwhite(inf), quant: 4
|
||||
];
|
||||
~hat.play;
|
||||
~snare.play;
|
||||
~ground.play;
|
||||
)
|
||||
|
||||
~vorb => [
|
||||
instrument: 'kraut',
|
||||
octave: 4,
|
||||
@ -190,3 +205,35 @@ m = MIDIOut.newByName("MIDI", "Bus 1");
|
||||
});
|
||||
~apply.play;
|
||||
)
|
||||
|
||||
|
||||
Bank("default")[0].play
|
||||
|
||||
// NOTE: absolute crash (attention !)
|
||||
(
|
||||
~other => [
|
||||
sp: "synthi", nb: 2,
|
||||
release: 1/4, rate: 0.75,
|
||||
pan: [0.0, 1.0].pwhite,
|
||||
];
|
||||
~other.mold(2);
|
||||
~other.play;
|
||||
)
|
||||
|
||||
// Faire le point sur la situation : qu'est-ce qui marche et ne marche pas ?
|
||||
|
||||
|
||||
// NOTE: Pattern le plus basique
|
||||
~a => [sp: "kick", nb: 4];
|
||||
~a.play;
|
||||
~a.clear;
|
||||
|
||||
// NOTE: Pattern avec Pmini
|
||||
~a => [pat: "[kick hat snare hat]/2"];
|
||||
~a.play;
|
||||
~a.clear;
|
||||
|
||||
// NOTE: pattern de base, sample mal formée
|
||||
// WARNING: le crash se produit ici !
|
||||
~a => [sp: "kick:2", nb: 4];
|
||||
~a.play;
|
||||
|
||||
Reference in New Issue
Block a user