setcpm(90/4)
samples({
bd: 'bd/BT0AADA.wav',
hh: 'hh27/000_hh27closedhh.wav',
sd: ['sd/rytm-01-classic.wav', 'sd/rytm-00-hard.wav'],
}, 'https://raw.githubusercontent.com/tidalcycles/Dirt-Samples/master/');
// INTRO: zurückhaltend
const intro = stack(
s("bd ~ ~ ~ bd ~ ~ ~").gain(1),
s("~ ~ ~ ~ sd:0 ~ ~ ~").gain(0.9),
s("hh*8").gain(0.55),
note("a2 ~ ~ ~ a2 ~ ~ ~")
.sound("sawtooth").lpf(800).gain(0.65)
);
// PART 1: Grundbeat
const part1 = stack(
s("bd ~ bd ~ bd ~ bd ~").gain(1),
s("~ sd:0 ~ sd:1 ~ sd:0 ~ sd:1").gain(0.9),
s("hh*8").gain(0.55),
note("a2 a2 a2 a2 c3 c3 e3 e3 g2 g2 g2 g2 e2 e2 g2 g2")
.sound("sawtooth").lpf(800).gain(0.65)
);
// BRIDGE: etwas mehr Spannung
const bridge = stack(
// Bassdrum
s("bd ~ bd ~ bd ~ bd bd").gain(1),
// Snare: normaler Beat, dann kurzes Fill
s("~ sd:0 ~ sd:1 ~ sd:0 sd:1 sd:0")
.gain(0.95),
// schneller Roll
// s("~ sd:0 ~ sd:1 sd:0*4").gain(0.95),
// Hi-Hat
s("hh*8").gain(0.6),
// Bass: baut Spannung auf
note("f2 f2 f2 f2 g2 g2 g2 g2")
.sound("sawtooth")
.lpf(1000)
.gain(0.7)
)
// PART 2: kräftigerer Abschnitt
const part2 = stack(
s("bd*4").gain(1),
s("~ sd:0 ~ sd:1 ~ sd:0 ~ sd:1").gain(1),
s("hh*16").gain(0.55),
note("a2 a2 a2 a2 c3 c3 e3 e3 g2 g2 g2 g2 e2 e2 g2 g2")
.sound("sawtooth").lpf(1200).gain(0.75)
);
// OUTRO: wieder ausdünnen
const outro = stack(
s("bd ~ ~ ~ bd ~ ~ ~").gain(1),
s("~ ~ ~ ~ sd:0 ~ ~ ~").gain(0.9),
s("hh*4").gain(0.5),
note("a2 ~ c3 ~ a2 ~ ~ ~")
.sound("sawtooth").lpf(800).gain(0.65)
);
// SONG-ABLAUF
arrange(
[2, intro],
[4, part1],
[2, bridge],
[4, part1],
[2, bridge],
[4, part2],
[2, bridge],
[2, outro]
)
Arpegiator Test
note("a2 c3 e3 c3")
.sound("sawtooth") // square | sine | triangle | sawtooth
.decay(0.2) // Wie schnell fällt der Pegel nach dem Anschlag auf das Sustain-Niveau?
.sustain(0.2) // Auf welchem Pegel bleibt der Klang, solange die Note gehalten wird? 0 - 1
.gain(.5) // Lautstärkefaktor .1 bis .65
.fast(3) // Geschwindigkeit
.lpf(500) // Low-Pass Filter, also Tiefpassfilter 200-500 (dumpf) 800-1500 (warm) 2000–4000 (bissig)