Files
strudel/repl/src/prebake.mjs
T
2022-07-10 20:59:07 +02:00

194 lines
4.8 KiB
JavaScript

import { Pattern, silence, toMidi } from '@strudel.cycles/core';
import { samples } from '@strudel.cycles/webaudio';
export function prebake() {
samples(
{
piano: {
A0: 'A0v8.mp3',
C1: 'C1v8.mp3',
Ds1: 'Ds1v8.mp3',
Fs1: 'Fs1v8.mp3',
A1: 'A1v8.mp3',
C2: 'C2v8.mp3',
Ds2: 'Ds2v8.mp3',
Fs2: 'Fs2v8.mp3',
A2: 'A2v8.mp3',
C3: 'C3v8.mp3',
Ds3: 'Ds3v8.mp3',
Fs3: 'Fs3v8.mp3',
A3: 'A3v8.mp3',
C4: 'C4v8.mp3',
Ds4: 'Ds4v8.mp3',
Fs4: 'Fs4v8.mp3',
A4: 'A4v8.mp3',
C5: 'C5v8.mp3',
Ds4: 'Ds4v8.mp3',
Fs5: 'Fs5v8.mp3',
A5: 'A5v8.mp3',
C6: 'C6v8.mp3',
Ds6: 'Ds6v8.mp3',
Fs6: 'Fs6v8.mp3',
A6: 'A6v8.mp3',
C7: 'C7v8.mp3',
Ds7: 'Ds7v8.mp3',
Fs7: 'Fs7v8.mp3',
A7: 'A7v8.mp3',
C8: 'C8v8.mp3',
},
},
// https://archive.org/details/SalamanderGrandPianoV3
// License: CC-by http://creativecommons.org/licenses/by/3.0/ Author: Alexander Holm
'./samples/piano/',
);
}
samples({
jazzbass: {
_base: './samples/jazzbass/moog_',
c1: 'c2.mp3',
e1: 'e2.mp3',
a1: 'a2.mp3',
c2: 'c3.mp3',
e2: 'e3.mp3',
a2: 'a3.mp3',
c3: 'c4.mp3',
},
stage73: {
_base: './samples/stage73/',
c2: ['quiet/c2.mp3', 'loud/c2.mp3'],
e2: ['quiet/e2.mp3', 'loud/e2.mp3'],
a2: ['quiet/a2.mp3', 'loud/a2.mp3'],
c3: ['quiet/c3.mp3', 'loud/c3.mp3'],
e3: ['quiet/e3.mp3', 'loud/e3.mp3'],
a3: ['quiet/a3.mp3', 'loud/a3.mp3'],
c4: ['quiet/c4.mp3', 'loud/c4.mp3'],
e4: ['quiet/e4.mp3', 'loud/e4.mp3'],
a4: ['quiet/a4.mp3', 'loud/a4.mp3'],
c5: ['quiet/c5.mp3', 'loud/c5.mp3'],
e5: ['quiet/e5.mp3', 'loud/e5.mp3'],
a5: ['quiet/a5.mp3', 'loud/a5.mp3'],
c6: ['quiet/c6.mp3', 'loud/c6.mp3'],
},
flute: {
_base: './samples/flute/',
g2: 'g2.mp3',
c3: 'c3.mp3',
f3: 'f3.mp3',
c4: 'c4.mp3',
f4: 'f4.mp3',
c5: 'c5.mp3',
},
});
console.log('bake...');
samples(
{
bd: 'bd.mp3',
sd: ['sd.mp3', 'sd2.mp3'],
hh: ['hh.mp3'],
snap: ['snap.mp3'],
oh: ['oh.mp3'],
},
'./samples/president/president_',
);
const times = (length, func) => Array.from({ length }, (_, i) => func(i));
samples({ earth: times((i) => `Earth Kit (${i + 1}).wav`) }, './samples/EMU World/Earth Kit/');
samples({ bottle: times((i) => `Bottle (${i + 1}).wav`) }, './samples/EMU World/Bottle/');
samples({ shekere: times(32, (i) => `Shekere (${i + 1}).wav`) }, './samples/EMU World/Shekere/');
samples({ block: times(5, (i) => `Block (${i + 1}).wav`) }, './samples/EMU World/Block/');
samples(
{
'Brazilian Kit': [
'BK Agogo 2.wav',
'BK Agogo 3.wav',
'BK Agogo.wav',
'BK Bass Drum.wav',
'BK Bass Tom.wav',
'BK Block 2.wav',
'BK Block 3.wav',
'BK Block.wav',
'BK ClapTamb 2.wav',
'BK ClapTamb.wav',
'BK Conga 2.wav',
'BK Conga.wav',
'BK Cowbell 2.wav',
'BK Cowbell 3.wav',
'BK Cowbell.wav',
'BK CrashTamb.wav',
'BK Cup 2.wav',
'BK Cup.wav',
'BK Cymb 2.wav',
'BK Cymb 3.wav',
'BK Cymbal.wav',
'BK High Tom 2.wav',
'BK High Tom.wav',
'BK Low Tom 2.wav',
'BK Low Tom.wav',
'BK Mid Tom 2.wav',
'BK Mid Tom.wav',
'BK Mute Cymb.wav',
'BK Rattle.wav',
'BK Ride 2.wav',
'BK Ride.wav',
'BK Rimshot.wav',
'BK Scraper 2.wav',
'BK Scraper.wav',
'BK Shaker 2.wav',
'BK Shaker 3.wav',
'BK Shaker.wav',
'BK Snare.wav',
'BK SnareTamb 2.wav',
'BK SnareTamb.wav',
'BK Triangle 2.wav',
'BK Triangle 3.wav',
'BK Triangle 4.wav',
'BK Triangle 5.wav',
'BK Triangle 6.wav',
'BK Triangle.wav',
'BK Whistle 2.wav',
'BK Whistle 3.wav',
'BK Whistle.wav',
'BK Woop 2.wav',
'BK Woop.wav',
],
},
'./samples/EMU World/Brazilian Kit/',
);
const maxPan = toMidi('C8');
const panwidth = (pan, width) => pan * width + (1 - width) / 2;
Pattern.prototype.panByPitch = function () {
return this.fmap((value) => {
try {
// pan by pitch
const pan = panwidth(Math.min(toMidi(value.note || value.n) / maxPan, 1), 0.5);
return { ...value, pan: (value.pan || 1) * pan };
} catch (e) {
console.log('.panByPitch error', e);
return silence;
}
});
};
Pattern.prototype.piano = function () {
return this.clip(1).s('piano').panByPitch().gain(0.6);
};
Pattern.prototype.rhodes = function () {
return this.clip(1).s('stage73').panByPitch(); //.gain(1.5);
};
Pattern.prototype.jazzbass = function () {
return this.clip(1).s('jazzbass').gain(0.6);
};
Pattern.prototype.flute = function () {
return this.clip(1).s('flute');
};
Pattern.prototype.block = function () {
return this.clip(1).s('block');
};