Strudelify

Marmor, Stein und Eisen bricht

Drafi Deutscher

KeyE majorTempo120 bpm
0:00/0:00
// Marmor, Stein und Eisen bricht — Drafi Deutscher
// 120 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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 · piano · "MUTED GTR"
const bass = note("<c#-1 ~@63>").s("gm_piano").gain(0.05)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@2 A@4 B A@3 B A C D E F C D E A@4 B A@3 B A G D E H@2 D E A I@3 J I@3 J I K L M K@2 L M N K L M N K L M O P ~
>`.pickRestart({
  A: "[e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~", // E5
  B: "[b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~", // B5
  C: "[e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2]@2", // E5 C#m E5 C#m E5
  D: "[a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,f#3] ~ [a2,e3] ~", // A5 D A5 D A5
  E: "[b2,f#3] ~ [b2,f#3] ~ [b2,g#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,f#3] ~ [b2,g#3] ~ [b2,f#3] ~", // B5 E B5 E B5
  F: "[e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,f2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~", // E5 C#m E E5 C#m E5
  G: "[e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,c#3]@2 [e2,b2]@2", // E5 C#m E5 C#m E5
  H: "[e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~ [e2,b2] ~ [e2,b2] ~ [e2,c#3] ~ [e2,b2] ~", // E5 C#m E5 C#m E5
  I: "[f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~", // F5
  J: "[c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~", // C5
  K: "[f2,c3] ~ [f2,c3] ~ [f2,d3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,d3] ~ [f2,c3] ~", // F5 Dm F5 Dm F5
  L: "[a#2,f3] ~ [a#2,f3] ~ [a#2,g3] ~ [a#2,f3] ~ [a#2,f3] ~ [a#2,f3] ~ [a#2,g3] ~ [a#2,f3] ~", // A#5 D# A#5 D# A#5
  M: "[c3,g3] ~ [c3,g3] ~ [c3,a3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,a3] ~ [c3,g3] ~", // C5 F C5 F C5
  N: "[f2,c3] ~ [f2,c3] ~ [f2,d3] ~ [f2,c3] ~ [f2,c3] ~ [f2,c3] ~ [f2,d3]@2 [f2,c3] ~", // F5 Dm F5 Dm F5
  O: "[f2,c3] ~ [f2,c3] ~ [f2,d3] ~ [f2,c3] ~ [a#2,f3] ~ [a#2,f3] ~ [a#2,g3] ~ [a#2,f3,g3] ~", // F5 Dm F5 A#5 D# Gm7
  P: "[f2,c3] ~ [f2,c3] ~ [e2,b2] ~ c3@10", // F5 E5
})).s("gm_electric_guitar_muted").gain(0.28)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@11 A B C D E F C D G ~@8 H I C D J K C D L ~@8 M N O P Q R S P R@2 O T U V W P X Y@2
>`.pickRestart({
  A: "~@8 [a4,b4,c5] [e4,f4,g4,a4] [b3,c4,d4,g4] [e3,f3,g3,a3] [b2,c3,d3,g3] [g2,a2,d3] [d2,e2,f2,g2,a2] [b1,c2,d2,e2]", // Am Fmaj7 G Fmaj7 G Gsus2 Dm Cmaj7
  B: "[f1,g1,a1,e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~", // Em E5
  C: "[e3,a3,c#4,e4] ~ [e3,a3,c#4,e4] ~ [e3,a3,c#4,e4] ~ [e3,a3,c#4,e4] ~ [e3,a3,c#4,e4] ~ [e3,a3,c#4,e4] ~ [e3,a3,c#4,e4] ~ [e3,a3,c#4,e4] ~", // A
  D: "[f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~", // B
  E: "[e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,a#3] ~ [e3,b3,e4] ~ [e3,a#3] ~ [e3,b3,e4] ~, ~@4 e4 ~ e4 ~", // E5 Edim E5 Edim E5
  F: "[e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~", // E5
  G: "[g#3,b3,e4]@5 ~@3", // E
  H: "~@8 [b4,c5] [e4,f4,g4,a4] [a3,b3,c4,d4,g4] [f3,g3,a3] [b2,c3,d3,e3,g3] [g2,a2] [d2,e2,f2,g2,a2] [a1,b1,c2,d2,e2]", // Cmaj7 Fmaj7 G F Cmaj7 Gsus2 Dm Am
  I: "[g1,e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,a#3,c#4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~, ~@4 e4 ~@3", // Em E5 A#dim E5
  J: "[e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,a#3] ~ [e3,b3,e4] ~ [e3,b3,e4] ~, ~@5 e4 ~@2", // E5 Edim E5
  K: "[e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,e4] ~ [e3,b3,c#4,e4] ~ [e3,b3,e4] ~", // E5 C#m7 E5
  L: "[e3,b3,e4]@9 ~@7", // E5
  M: "~@8 c5 [g4,a4,b4] [d4,e4,f4,g4,a4] [a3,b3,c4,e4] [d3,e3,f3,g3,a3] [a2,b2,c3] [e2,f2,g2] [c2,d2]", // G Dm Am Dm Am Em Csus2
  N: "[b1,f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,b3,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~", // F F5 Fdim F5
  O: "[f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~", // A#
  P: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C
  Q: "[f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,b3] ~ [f3,c4,f4] ~ [f3,c4,f4] ~, ~@5 f4 ~@2", // F5 Fdim F5
  R: "[f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~", // F5
  S: "[f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,g3,a#3,d4,f4] b3 [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~", // A# Gm7 A#
  T: "[g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [a3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~ [g3,c4,e4] ~", // C Am C
  U: "[f3,c4,f4] ~ [f3,c4,f4] ~ [f3,d4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,d4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~", // F5 Dm F5 Dm7 F5
  V: "f3 ~ c4 f3 [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~, f4@3 ~@13, ~ d4@2 ~@13", // F5
  W: "[f3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [g3,a#3,d4,f4] ~ [f3,a#3,d4,f4] ~ [f3,a#3,f4] ~ [f3,a#3,f4] ~ [f3,a#3,f4] ~ [f3,a#3,f4] ~", // A# Gm7 A# A#5
  X: "[a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [g#3,a#3,d4,f4] ~ [g#3,a#3,d4,f4] ~ [g#3,a#3,d4,f4] e4 [g#3,a#3,d4,f4] ~", // F A#7
  Y: "[[a3,c4,f4] ~ [a3,c4,f4] ~ [g#3,b3,e4] ~ [a3,c4,f4]@13 ~@13]/2", // F E F
})).s("gm_piano").gain(0.3)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@2 A@8 B C@3 D@4 E F@8 B G H@2 I@2 J@2 K L M ~@2 N O@3 N P@3 Q@4 R@2 S@2 T@4 U@2 V ~
>`.pickRestart({
  A: "[[g#3,e4]@64 [f#3,d#4]@15 ~ [g#3,e4]@48, b3]/8", B: "[f#3,d#4]",
  C: "[~@16 b4@15 ~ c#5@16, e4@37 ~@11, g#3@10 ~@6 a4@7 ~, ~ e5@2]/3",
  D: "[[f#4,d#5]@15 ~ g#4@22 ~@10 [a4,c#5]@16, b4@23 ~@9, ~ e5@3, ~@19 e4@8 ~@5]/4", E: "[b4,d#5], f#4@7 ~",
  F: "[[g#4,e5]@4 [g#3,e4]@59 ~ [f#3,d#4]@15 ~ [g#3,e4]@47 ~, ~ b3@31]/8", G: "g#3, e4@7 ~",
  H: "[b4@7 ~ [a4,c#5]@8, [e4,e5]]/2", I: "[[f#4,d#5]@16 [g#4,e5]@15 ~, b4@31 ~]/2", J: "[[e4,b4] [a4,c#5], e5]/2",
  K: "[f#4,b4,d#5]", L: "[g#3,b3]@15 ~, e4@3 ~", M: "[a3,c4,f4] ~@15", N: "[g3,e4]", O: "[a3,f4]/3",
  P: "[a3@8 c5@7 ~ [a#4,d5]@8, f4@47 ~, ~ f5@2]/3", // A#
  Q: "[[g4,e5]@16 a4@31 ~ [f4,a#4,d5]@16, c5@47 ~@17, ~@16 f5@47 ~]/4", R: "[[g4,e5]@16 [f4,a4,f5]@15 ~, c5@31 ~]/2",
  S: "[~@2 a4@5 ~ [a#4,d5]@8, [f4,f5], c5@7 ~@9]/2", // A# F
  T: "[[g4,e5]@8 ~@5 d5@3 c5@7 ~ [a#4,d5]@8, c5@13 ~@19, ~@16 [f4,f5]@47 ~, ~@8 a4@15 ~@9]/4", // C A# F
  U: "[[g4,e5]@16 a4@7 ~ [g#4,a#4,d5]@8, c5@23 ~@9, ~ f5, ~@8 f4@5 ~@3]/2", // C A#7
  V: "[a4,c5,f5]@3 ~ [g#4,b4] ~ [a4,c5,f5]@10, ~@2 e5 ~@5", // F G#m F
})).s("gm_string_ensemble_1").gain(0.22)

// bass · electric bass finger · "ACOU BASS"
const bass_2 = note(`<
  ~@11 A B C D E@2 C D F@2 ~@7 A E G H I E C D F@2 ~@7 J K L M N K L O P Q R S T Q R S U V ~
>`.pickRestart({
  A: "~@6 c#2 b1", B: "e1@3 ~ g#1@4 b1@4 c#2@2 b1@2", C: "a1@2 c#2@2 e2@2 c#2 e2", D: "b1@2 d#2@2 f#2@2 d#2 f#2",
  E: "e1@2 g#1@2 b1@2 g#1 b1", F: "[e1@9 ~@7]/2", G: "a1@4 c#2@4 e2@4 c#2@2 e2 ~", H: "b1@4 d#2@3 ~ f#2@4 d#2@2 f#2@2",
  I: "e1@2 g#1@2 b1@2 c#2 b1", J: "~@6 d2 c2", K: "f1@2 a1@2 c2@2 a1 c2", L: "a#1@2 d2@2 f2@2 d2 f2",
  M: "c2@2 e2@2 g2@2 e2 g2", N: "f1@2 a1@2 c2@2 d2 c2", O: "c2@4 e2@4 g2@4 e2@2 g2 ~",
  P: "f1@2 a1@2 c2@2 a1 c2, e1 ~@15", Q: "f1 a1 c2 d2 f2 d2 c2 a1", R: "a#1 d2 f2 g2 a#2 g2 f2 d2",
  S: "c2 e2 g2 a2 c3 a2 g2 e2", T: "f1 a1 c2 d2 f2 c1 d1 e1", U: "f1@2 a1@2 c2@2 d2@2 ~@2 c2 ~ d2@2 f2@2, ~@2 a#1 ~",
  V: "f1 c1 e1 f1@5",
})).s("gm_electric_bass_finger").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~@12 A@7 B ~@9 A@7 B ~@9 A@8 C@8 D ~>".pickRestart({
  A: "x!2", B: "x", C: "x!4", D: "x ~ x!2 ~@4",
})).gain(0.6)

// drums · snare
const snare = s("sd").struct("<~@11 A B@7 ~@9 A B@7 ~@9 A B@7 C D@3 E D@3 F G ~>".pickRestart({
  A: "~@5 x!3", B: "~ x ~ x", C: "~@4 x ~@5 x!3 ~ x ~", D: "~ x ~ x ~ x ~ x", E: "~@2 x ~@3 x ~@3 x!3 ~ x ~",
  F: "~@2 x ~@2 x!2 ~@3 x ~@3 x ~", G: "~ x ~@6",
})).gain(0.54)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@2 A@9 B ~@7 A@9 B ~@7 A@9 B ~@18>".pickRestart({
  A: "~@2 x!2 ~@2 x ~", B: "~@2 x!2 ~@4",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@2 A@10 B@7 A@10 B@7 C A@9 B@8 ~@10>".pickRestart({
  A: "~ x ~ x", B: "x!8", C: "x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@12 A ~@6 A ~@9 A ~@6 A ~@9 A ~@7 A ~@7 B ~>".pickRestart({
  A: "x", B: "~@3 x ~@4",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct(`<
  ~@54
  [x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~]!4
  [x ~ x ~ x ~ x!3 ~ x ~ x ~ x!2]
  [x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2]
  [x ~ x ~ x ~ x ~ x ~ x!3 ~ x ~]
  [x ~ x!3 ~ x ~ x ~ x!3 ~ x ~]
  [x!4 ~@4]
  ~
>`).gain(0.48)

stack(bass, electric_guitar_muted, piano, string_ensemble_1, bass_2, kick, snare, snare_soft, hihat, crash, ride)

More by Drafi Deutscher