mirror of
https://codeberg.org/uzu/strudel
synced 2026-07-25 15:06:05 -04:00
190 lines
4.0 KiB
JavaScript
190 lines
4.0 KiB
JavaScript
import { Pattern, 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_',
|
|
c2: 'c2.mp3',
|
|
e2: 'e2.mp3',
|
|
a2: 'a2.mp3',
|
|
c3: 'c3.mp3',
|
|
e3: 'e3.mp3',
|
|
a3: 'a3.mp3',
|
|
c4: '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 maxPan = toMidi('C8');
|
|
const panwidth = (pan, width) => pan * width + (1 - width) / 2;
|
|
|
|
Pattern.prototype.panByPitch = function () {
|
|
return this.fmap((value) => {
|
|
// pan by pitch
|
|
const pan = panwidth(Math.min(toMidi(value.note || value.n) / maxPan, 1), 0.5);
|
|
return { ...value, pan: (value.pan || 1) * pan };
|
|
});
|
|
};
|
|
|
|
Pattern.prototype.piano = function () {
|
|
return this.clip(1).s('piano').panByPitch();
|
|
};
|
|
|
|
Pattern.prototype.rhodes = function () {
|
|
return this.clip(1).s('stage73').panByPitch().gain(1.5);
|
|
};
|
|
|
|
Pattern.prototype.jazzbass = function () {
|
|
return this.clip(1).s('jazzbass');
|
|
};
|
|
|
|
/*
|
|
stack(
|
|
s("<bd [bd ~ bd]> ~, ~, hh*6")
|
|
.speed(.8)
|
|
//.cutoff(2000)
|
|
.slow(2)
|
|
//.cutoff(perlin.range(500,4000))
|
|
.sometimes(x=>x.echo("2", 1/6+0.05, .8))
|
|
,
|
|
note(
|
|
"C^7 <Dm7 [F^7 [Fm7 Db^7]]>"
|
|
//.euclidLegato(6,12)
|
|
.voicings()
|
|
)
|
|
.rhodes()
|
|
//.s('sawtooth')
|
|
.slow(8).gain(2)
|
|
.cutoff(2000)
|
|
,
|
|
note(
|
|
"[c2 <e2 g1>](5,12)".slow(4)
|
|
.transpose(12)
|
|
//.superimpose(add("<12 24>,0.05"))
|
|
)
|
|
.s("jazzbass").clip(1).gain(1)
|
|
//.cutoff(sine.range(300,500).slow(4))
|
|
//.resonance(10)
|
|
,
|
|
note(
|
|
"0 2 4 0".iter(4).add("<0>")
|
|
//.off(1/12, add("7"))
|
|
.off(1/6, add("14"))
|
|
.degradeBy(.2)
|
|
.scale('C5 major')
|
|
.legato(4)
|
|
.slow(2)
|
|
.echo(2, 1/6, .5)
|
|
)
|
|
.piano()
|
|
//.s('sawtooth')
|
|
//.cutoff(1000)
|
|
//.resonance(25)
|
|
.gain(.5)
|
|
)
|
|
//.hcutoff(1000)
|
|
//.resonance(20)
|
|
.reset("<x@3>")
|
|
|
|
.out()
|
|
|
|
|
|
*/
|
|
|
|
/*
|
|
note("[c2(3,8) [<eb2 g1> bb1]]")
|
|
.s('sawtooth')
|
|
.gain(.5)
|
|
.cutoff(sine.range(200,1200).slow(4))
|
|
.slow(2)
|
|
.stack(
|
|
note("Cm7@3 <Dm7 B7>".voicings().slow(4)).rhodes(),
|
|
note("0 2 4 <9 8>".iter(4).scale('C5 minor'))
|
|
.degradeBy(.5).echo(4, 1/8, .8)
|
|
.legato(.05)
|
|
.rhodes()
|
|
.jux(rev),
|
|
)
|
|
.stack(s("bd,~ sd,hh*4").cutoff(2000))
|
|
.reset("<x@3 x(3,8)>")
|
|
.out()
|
|
.logValues()
|
|
*/
|