No more segfaults ?

This commit is contained in:
2024-05-14 16:46:57 +02:00
parent f07e560322
commit afebd967d2
4 changed files with 52 additions and 26 deletions

View File

@ -95,19 +95,17 @@ 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;
~buf = Bank(~sp)[~nb % Bank(~sp).paths.size];
if (Bank(~sp).metadata[~nb % Bank(~sp).size][\numChannels] == 1) {
~instrument = \looperMono;
} {
~instrument = \looperStereo;
};
if (~sp != "", {
~buf = Bank(~sp)[~nb % Bank(~sp).paths.size];
if (Bank(~sp).metadata[~nb % Bank(~sp).size][\numChannels] == 1) {
~instrument = \looperMono;
} {
~instrument = \looperStereo;
};
})
});
~type = \note;
currentEnvironment.play;
@ -115,17 +113,20 @@ Boot {
Event.addEventType(\buboEvent, {
arg server;
~sp = BuboUtils.cleanSampleName(~sp);
~nb = BuboUtils.cleanSampleIndex(~nb);
if (~sp.notNil && ~nb.notNil, {
if (~sp != "", {
~buf = Bank(~sp)[~nb % Bank(~sp).paths.size];
if (Bank(~sp).metadata[~nb % Bank(~sp).size][\numChannels] == 1) {
~instrument = \player;
} {
~instrument = \splayer;
};
})
[~sp, ~nb, ~instrument].postln;
if (BuboUtils.stringIsNumber(~sp), {}, {
~sp = BuboUtils.cleanSampleName(~sp);
~nb = BuboUtils.cleanSampleIndex(~nb);
if (~sp.notNil && ~nb.notNil, {
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;

View File

@ -15,7 +15,7 @@ BuboUtils {
*cleanSampleName {
arg str;
var good_string;
if (str == nil, { ^nil });
if (str == nil, { ^"" });
good_string = str.asList.collect({
|char|
if (char.isAlphaNum, char, "")
@ -23,6 +23,14 @@ BuboUtils {
^good_string
}
*stringIsNumber {
arg string;
if (string == nil, { ^true });
string = string.asList.collect({arg char; char.ascii});
string = (48..57).includesAll(string);
^string
}
*cleanSampleIndex {
arg number;
if (number.isKindOf(Number), { ^number }, { ^0 });

View File

@ -54,9 +54,8 @@ EventShortener {
if (type !== 'midi', {
if (pattern.includes('i') || pattern.includes('instrument') == false, {
new_pattern = new_pattern ++ [
sp: Pfunc { |e| e.str ? 'default' },
nb: Pfunc(\num),
instrument: 'default',
sp: Pfunc { |e| e.str ? "" },
nb: Pfunc { |e| e.num ? 0 },
fast: 1,
];
});

View File

@ -37,7 +37,25 @@ m = MIDIOut.newByName("MIDI", "Bus 1");
~plop.play;
)
Bank.list
// TEST: Cinquième test
(
~testInstrument => [
instrument: 'default',
pat: "0 2 3 4"
];
~testInstrument.play;
)
// TEST: Sixième test
// WARNING: celui-ci crashe !
(
~testInstrument => [
pat: "0 2 3 4"
];
~testInstrument.play;
)
Sweep.help