Strudelify
KeyC♯ minorTempo93 bpm
0:00/0:00
// Sie Ist Weg — Die Fantastischen Vier
// 93 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 90 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(93/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@3 A B C D C B C D C B C D C B C D C B C D C E F G F E F G F B C D C B C H ~ B C D C B I E F G F E F G F ~@8 B C D C
  B C D C B C D C J E F G F E F G F E F G F E F ~
>`.pickRestart({
  A: "~@15 g#1@4 ~ b1@4", B: "c#2@4 ~ b1@4 c#2@6 b1@5 c#2@4", C: "f#1@4 ~ g#1@4 a1@6 g#1@4 ~ b1@4",
  D: "c#2@4 ~ b1@4 c#2@6 b1@4 ~ c#2@4", E: "c#2@3 ~@2 b1@2 ~@2 c#2@3 ~@3 b1@4 ~ c#2@4",
  F: "f#1@4 ~ g#1@4 a1@6 g#1@2 ~ g#1@2 b1@4", G: "c#2@3 ~@2 b1@3 ~ c#2@3 ~@3 b1@4 ~ c#2@4", H: "c#2 ~@5",
  I: "f#1@4 ~ g#1@4 a1@6 ~@9", J: "c#2@4 ~ b1@4 c#2@6 ~@9",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note("<A@7 B@8 C@7 ~@2 D@8 ~@4 E@4 F@8 G@8 H@6 ~@4 A@7 I@2 A@7 C@7 ~>".pickRestart({
  A: "[[b3,c#4,e4,g#4]@14 ~ [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@3]/7", // C#m7 G#m7 F#m7 G#m7 C#m7 G#m7 F#m7 G#m7 …
  B: "[~@15 [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@3]/8", // G#m7 C#m7 G#m7 F#m7 G#m7 C#m7 G#m7 F#m7 …
  C: "[~@15 [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@3]/7", // G#m7 C#m7 G#m7 F#m7 G#m7 C#m7 G#m7 F#m7 …
  D: "[[b3,c#4,e4,g#4]@14 ~ [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@3]/8", // C#m7 G#m7 F#m7 G#m7 C#m7 G#m7 F#m7 G#m7 …
  E: "[[b3,c#4,e4,g#4]@14 ~ [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 ~@3]/4", // C#m7 G#m7 F#m7 G#m7 C#m7 G#m7 F#m7 G#m7
  F: "[[b3,c#4,e4,g#4]@14 ~ [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@3]/8", // C#m7 G#m7 F#m7 G#m7 C#m7 G#m7 F#m7 G#m7 …
  G: "[~@15 [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@3]/8", // G#m7 F#m7 G#m7 C#m7 G#m7 F#m7 G#m7 C#m7 …
  H: "[~@15 [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@18 [g#3,b3,d#4,f#4]@6 [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@17 ~ [g#3,b3,d#4,f#4]@5 ~ [f#3,a3,c#4,e4]@17 ~ [g#3,b3,d#4,f#4]@6 [b3,c#4,e4,g#4]@3]/6", // G#m7 F#m7 G#m7 C#m7 G#m7 F#m7 G#m7 C#m7 …
  I: "[~@5 [g#3,b3,d#4,f#4]@2 [b3,c#4,e4,g#4]@6 [g#3,b3,d#4,f#4]@2 ~]/2", // G#m7 C#m7 G#m7
})).s("gm_epiano1").gain(0.29).pan(0.4)

// other · lead 1 square · "SQUAREWAVE"
const lead_1_square = note(`<
  A B@3 ~@20 A C@2 D A C@2 E@4 ~@11 A C@2 D A C@2 F@7 ~@15 A C@2 D A C@2 F@7 ~
>`.pickRestart({
  A: "g#6@12 d#7@4 b6@4 ~ c#7@3", B: "[g#6@23 ~]/3", C: "[g#6@36 d#7@4 b6@4 ~ c#7@3]/2", D: "g#6@7 f#6",
  E: "[g#6@13 ~@3]/4", F: "g#6/7",
})).s("gm_lead_1_square").gain(0.06)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A@3 B ~@2 C A@8 D A@5 E ~@2 A@7 E ~@4 A@3 ~ A@5 ~ A@12 ~@8 A@2 B ~ A@3 E ~ A@7 B ~@7
>`.pickRestart({
  A: "c#3!2 ~@13 c#3 ~@4 c#3 ~@3", B: "c#3!2 ~@13 c#3 ~@8", C: "~@20 c#3 ~@3", D: "c#3 ~@23", E: "c#3!2 ~@22",
})).s("gm_electric_guitar_muted").gain(0.38).pan(0.6)

// other · electric guitar muted · "MUTED GTR" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@3 A B@2 C ~@8 D ~@5 E ~@9 E ~@7 B ~@18 B@4 ~@6 A B ~@3 E F ~@7 A B@6 ~
>`.pickRestart({
  A: "~@20 c#3 ~@3", B: "c#3!2 ~@13 c#3 ~@4 c#3 ~@3", C: "c#3!2 ~@13 c#3 ~@8", D: "~ c#3 ~@13 c#3 ~@4 c#3 ~@3",
  E: "~@15 c#3 ~@4 c#3 ~@3", F: "c#3!2 ~@22",
})).s("gm_electric_guitar_muted").gain(0.19).pan(0.6)

// other · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note(`<
  ~@24 A B A B A B A B ~@14 A B A B A B A B A B A B ~@17 A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "g#4 ~@2 g#4 ~@2 g#4 ~@2 d#5 ~@2 d#5 ~@2 d#5 ~ b4 d#5 ~ b4 [g#4,d#5] ~ b4", B: "g#4 ~@2 g#4 ~@20",
})).s("gm_lead_8_bass_lead").gain(0.29)

// other · synth bass 1 · "SYN BASS 1" · soft notes
const synth_bass_1_soft = note(`<
  ~@24 A B A B A B A B ~@14 A B A B A B A B A B A B ~@17 A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@9 g#4 ~@14", B: "~@2 b4 ~@3 g#4 ~@17",
})).s("gm_lead_8_bass_lead").gain(0.14)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  A ~ A ~@5 A ~ A ~@5 A ~ A ~ A ~@3 A ~ A ~ A ~ A ~@5 A ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~@3 A ~ A ~@2 A ~ A
  ~ A ~ A ~@8
>`.pickRestart({
  A: "c#3",
})).s("gm_synth_brass_1").gain(0.11).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@4 A@3 ~ A@31 ~ A@14 ~@4 A@16 ~ A@14 ~>".pickRestart({
  A: "x ~@4 x ~@6 x ~@2 x ~@8",
})).gain(0.68)

// drums · snare
const snare = s("sd").struct("<~@4 A@3 ~ A@31 ~ A@14 ~@4 A@16 ~ A@7 B A@6 ~>".pickRestart({
  A: "~ x ~ x", B: "~@6 x ~@4 x ~@2 x ~@3 x ~@2 x ~ x",
})).gain(0.54)

// drums · clap
const clap = s("cp").struct("<A@13 ~@3 A@5 ~@3 A@7 ~@5 A ~@3 A@5 ~ A@12 ~@8 A B ~@2 A@3 ~@2 A@7 ~@8>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B@2 C D B@3 C B@3 C B@3 C B@7 C B@3 C B@3 C B@2 C E B@3 C B C B@3 C B@3 F E ~@2 A B@3 C B@3 C B@3 C B@3 C E B@3
  C B@3 C B@3 C B@2 ~
>`.pickRestart({
  A: "~@5 x ~@2", B: "x!8", C: "x!7 ~", D: "x ~@3 x!2 ~@2", E: "x", F: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@3 A ~@2 B A ~@3 B ~@3 B ~@3 B ~@7 B ~@3 B ~@3 B ~@2 B ~@4 B ~ B ~@3 B ~@3 B ~@3 A ~@3 B ~@3 B ~@3 B ~@3 B ~@4 B ~@3
  B ~@3 B ~@3
>`.pickRestart({
  A: "~@3 x", B: "~@7 x",
})).gain(0.34)

// drums · crash
const crash = s("cr").struct("<~@24 A ~@15 A ~@5 A ~@28 A ~@7 A ~@6>".pickRestart({
  A: "x",
})).gain(0.41)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<A@2 B ~ A@35 ~ A@34 ~ A@14 ~>".pickRestart({
  A: "x!8", B: "x!5 ~@3",
})).gain(1.38)

// drums · shaker
const shaker = s("sh").struct("<A@2 B ~ A@3 ~ A@31 ~ A@14 ~@4 A@16 ~ A@14 ~>".pickRestart({
  A: "x!4", B: "x!3 ~",
})).gain(0.41)

stack(
  bass, epiano1, lead_1_square, electric_guitar_muted, electric_guitar_muted_2, synth_bass_1, synth_bass_1_soft,
  synth_brass_1, kick, snare, clap, hihat, open_hat, crash, cabasa, shaker
)