First mockup of audio looper (==)

I am trying to add an audio looper to play breakbeats. It works .. meh for now but I'm sure that it'll slowly get better!
This commit is contained in:
2024-05-02 23:28:00 +02:00
parent 775e7efed7
commit b497ca13dc
5 changed files with 175 additions and 27 deletions

View File

@ -40,34 +40,59 @@
/* Syntax for sending MIDI messages */
>> {
arg pattern;
var quant = this.getQuantFromPattern(pattern);
var fade = this.getFadeFromPattern(pattern);
pattern = EventShortener.findShortcuts(pattern);
pattern = pattern ++ [type: 'midi'];
this[0] = Pbind(*pattern);
this.quant = 4; this.fadeTime = 0.01;
this.quant = quant;
this.fadeTime = fade;
this.play;
^this
}
/* Player-like syntax sugar */
/* Player syntax sugar */
=> {
arg pattern;
var quant = this.getQuantFromPattern(pattern);
var fade = this.getFadeFromPattern(pattern);
pattern = EventShortener.findShortcuts(pattern);
pattern = pattern ++ [\type, \buboEvent];
this[0] = Pbind(*pattern);
this.quant = 4; this.fadeTime = 0.01;
this.quant = quant;
this.fadeTime = fade;
this.play;
^this
}
/* FIX: Completely broken. What is the event type
* BuboEvent should fall back to after tweaking
* the pattern to my liking?
*/
/* Audio Looper (sample playback) */
== {
arg pattern;
var quant = this.getQuantFromPattern(pattern);
var fade = this.getFadeFromPattern(pattern);
pattern = EventShortener.findShortcuts(pattern);
pattern = pattern ++ [\type, \buboLoopEvent];
pattern = pattern ++ [\legato, 1];
pattern = pattern ++ [
\time, Pkey(\dur) / Pfunc { currentEnvironment.clock.tempo }
];
this[0] = Pbind(*pattern);
this.quant = quant;
this.fadeTime = fade;
this.play;
^this
}
/* FIX: Rewrite this part, slightly broken */
-> {
arg pattern;
var quant = this.getQuantFromPattern(pattern);
var fade = this.getFadeFromPattern(pattern);
pattern = EventShortener.findShortcuts(pattern);
// pattern = pattern ++ [\type, \buboMonoEvent];
this[0] = Pmono(*pattern);
this.quant = 4;
this.fadeTime = 0.01;
this.quant = quant;
this.fadeTime = fade;
this.play;
}
f {
@ -96,4 +121,24 @@
^this
}
getQuantFromPattern {
arg pattern; var quant;
var quantIndex = pattern.indexOf('quant');
if (quantIndex.notNil) {
^pattern[quantIndex + 1]
} {
^0
}
}
getFadeFromPattern {
arg pattern; var fade;
var fadeIndex = pattern.indexOf('fade');
if (fadeIndex.notNil) {
^pattern[fadeIndex + 1]
} {
^0.01
}
}
}