Merge pull request #1321 from daslyfe/jade/slit
feat: Create scrub function for scrubbing an audio file
This commit is contained in:
commit
90506f9e61
2 changed files with 75 additions and 0 deletions
|
|
@ -1780,3 +1780,32 @@ export const as = register('as', (mapping, pat) => {
|
||||||
return v;
|
return v;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows you to scrub an audio file like a tape loop by passing values that represents the position in the audio file
|
||||||
|
* in the optional array syntax ex: "0.5:2", the second value controls the speed of playback
|
||||||
|
* @name scrub
|
||||||
|
* @memberof Pattern
|
||||||
|
* @returns Pattern
|
||||||
|
* @example
|
||||||
|
* samples('github:switchangel/pad')
|
||||||
|
* s("swpad:0").scrub("{0.1!2 .25@3 0.7!2 <0.8:1.5>}%8")
|
||||||
|
* @example
|
||||||
|
* samples('github:yaxu/clean-breaks/main');
|
||||||
|
* s("amen/4").fit().scrub("{0@3 0@2 4@3}%8".div(16))
|
||||||
|
*/
|
||||||
|
|
||||||
|
export const scrub = register(
|
||||||
|
'scrub',
|
||||||
|
(beginPat, pat) => {
|
||||||
|
return beginPat.outerBind((v) => {
|
||||||
|
if (!Array.isArray(v)) {
|
||||||
|
v = [v];
|
||||||
|
}
|
||||||
|
const [beginVal, speedMultiplier = 1] = v;
|
||||||
|
|
||||||
|
return pat.begin(beginVal).mul(speed(speedMultiplier)).clip(1);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
|
||||||
|
|
@ -7871,6 +7871,52 @@ but parts might be played more than once, or not at all, per cycle." example ind
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`runs examples > example "scrub" example index 0 1`] = `
|
||||||
|
[
|
||||||
|
"[ 0/1 → 1/8 | s:swpad n:0 begin:0.1 speed:1 clip:1 ]",
|
||||||
|
"[ 1/8 → 1/4 | s:swpad n:0 begin:0.1 speed:1 clip:1 ]",
|
||||||
|
"[ 1/4 → 5/8 | s:swpad n:0 begin:0.25 speed:1 clip:1 ]",
|
||||||
|
"[ 5/8 → 3/4 | s:swpad n:0 begin:0.7 speed:1 clip:1 ]",
|
||||||
|
"[ 3/4 → 7/8 | s:swpad n:0 begin:0.7 speed:1 clip:1 ]",
|
||||||
|
"[ 7/8 → 1/1 | s:swpad n:0 begin:0.8 speed:1.5 clip:1 ]",
|
||||||
|
"[ 1/1 → 9/8 | s:swpad n:0 begin:0.1 speed:1 clip:1 ]",
|
||||||
|
"[ 9/8 → 5/4 | s:swpad n:0 begin:0.1 speed:1 clip:1 ]",
|
||||||
|
"[ 5/4 → 13/8 | s:swpad n:0 begin:0.25 speed:1 clip:1 ]",
|
||||||
|
"[ 13/8 → 7/4 | s:swpad n:0 begin:0.7 speed:1 clip:1 ]",
|
||||||
|
"[ 7/4 → 15/8 | s:swpad n:0 begin:0.7 speed:1 clip:1 ]",
|
||||||
|
"[ 15/8 → 2/1 | s:swpad n:0 begin:0.8 speed:1.5 clip:1 ]",
|
||||||
|
"[ 2/1 → 17/8 | s:swpad n:0 begin:0.1 speed:1 clip:1 ]",
|
||||||
|
"[ 17/8 → 9/4 | s:swpad n:0 begin:0.1 speed:1 clip:1 ]",
|
||||||
|
"[ 9/4 → 21/8 | s:swpad n:0 begin:0.25 speed:1 clip:1 ]",
|
||||||
|
"[ 21/8 → 11/4 | s:swpad n:0 begin:0.7 speed:1 clip:1 ]",
|
||||||
|
"[ 11/4 → 23/8 | s:swpad n:0 begin:0.7 speed:1 clip:1 ]",
|
||||||
|
"[ 23/8 → 3/1 | s:swpad n:0 begin:0.8 speed:1.5 clip:1 ]",
|
||||||
|
"[ 3/1 → 25/8 | s:swpad n:0 begin:0.1 speed:1 clip:1 ]",
|
||||||
|
"[ 25/8 → 13/4 | s:swpad n:0 begin:0.1 speed:1 clip:1 ]",
|
||||||
|
"[ 13/4 → 29/8 | s:swpad n:0 begin:0.25 speed:1 clip:1 ]",
|
||||||
|
"[ 29/8 → 15/4 | s:swpad n:0 begin:0.7 speed:1 clip:1 ]",
|
||||||
|
"[ 15/4 → 31/8 | s:swpad n:0 begin:0.7 speed:1 clip:1 ]",
|
||||||
|
"[ 31/8 → 4/1 | s:swpad n:0 begin:0.8 speed:1.5 clip:1 ]",
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`runs examples > example "scrub" example index 1 1`] = `
|
||||||
|
[
|
||||||
|
"[ 0/1 → 3/8 | s:amen speed:0.25 unit:c begin:0 clip:1 ]",
|
||||||
|
"[ 3/8 → 5/8 | s:amen speed:0.25 unit:c begin:0 clip:1 ]",
|
||||||
|
"[ 5/8 → 1/1 | s:amen speed:0.25 unit:c begin:0.25 clip:1 ]",
|
||||||
|
"[ 1/1 → 11/8 | s:amen speed:0.25 unit:c begin:0 clip:1 ]",
|
||||||
|
"[ 11/8 → 13/8 | s:amen speed:0.25 unit:c begin:0 clip:1 ]",
|
||||||
|
"[ 13/8 → 2/1 | s:amen speed:0.25 unit:c begin:0.25 clip:1 ]",
|
||||||
|
"[ 2/1 → 19/8 | s:amen speed:0.25 unit:c begin:0 clip:1 ]",
|
||||||
|
"[ 19/8 → 21/8 | s:amen speed:0.25 unit:c begin:0 clip:1 ]",
|
||||||
|
"[ 21/8 → 3/1 | s:amen speed:0.25 unit:c begin:0.25 clip:1 ]",
|
||||||
|
"[ 3/1 → 27/8 | s:amen speed:0.25 unit:c begin:0 clip:1 ]",
|
||||||
|
"[ 27/8 → 29/8 | s:amen speed:0.25 unit:c begin:0 clip:1 ]",
|
||||||
|
"[ 29/8 → 4/1 | s:amen speed:0.25 unit:c begin:0.25 clip:1 ]",
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`runs examples > example "segment" example index 0 1`] = `
|
exports[`runs examples > example "segment" example index 0 1`] = `
|
||||||
[
|
[
|
||||||
"[ 0/1 → 1/24 | note:40 ]",
|
"[ 0/1 → 1/24 | note:40 ]",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue