Strudelify

Elenore

Turtles

KeyG majorTempo122 bpm
0:00/0:00
// Elenore — Turtles
// 122 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 76 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/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.

// other · piccolo · "Staff"
const piccolo = note("<~@2 A@7 ~ B@7 ~ C@7 ~ D@7 ~ A@7 ~ E@7 ~ C@7 ~ D@7 ~ F@8 G@2>".pickRestart({
  A: "[~@16 e5@4 f#5@4 e5@4 g5@8 g5@8 f#5@8 e5@19 ~@9 a5@4 b5@4 a5@4 c6@8 c6@8 b5@8 a5@19 ~@9 b5@4 c6@4 b5@4 f#6@8 d#6@11 ~ b5@4 a5@4 f#5@4 g5@8 b5@18 ~@10]/7",
  B: "[~@16 e5@4 f#5@4 e5@4 g5@8 g5@8 f#5@8 e5@19 ~@9 a5@4 b5@4 a5@4 c6@8 c6@8 b5@8 a5@19 ~@9 b5@4 c6@4 b5@4 f#6@8 d#6@11 ~ b5@4 a5@4 f#5@4 g5@8 e5@18 ~@10]/7",
  C: "[e6@14 ~@2 f#6@4 g#6@8 f#6@8 e6@8 f#6@8 g#6@8 d#6@11 ~@9 e6@4 f#6@8 e6@8 d#6@8 e6@8 f#6@8 c#6@11 ~@9 d#6@4 e6@8 d#6@8 c#6@8 b5@8 g#5@8 a5@8 b5@18 ~@10]/7",
  D: "[f#6@14 ~@2 g#6@4 a6@8 g#6@8 f#6@8 g#6@8 a6@8 e6@11 ~@9 f#6@4 g#6@8 f#6@8 e6@8 f#6@8 g#6@8 d#6@11 ~@9 e6@4 f#6@8 e6@8 d#6@8 c#6@8 b5@8 c#6@8 b5@18 ~@10]/7",
  E: "[~@16 e5@4 f#5@4 e5@4 g5@8 g5@8 f#5@8 e5@19 ~@9 a5@4 b5@4 a5@4 c6@8 c6@8 b5@8 a5@19 ~@9 b5@4 c6@4 b5@4 f#6@8 d#6@11 ~ b5@2 a5@2 f#5@8 g5@8 e5@18 ~@10]/7",
  F: "[e6@7 ~ f#6@2 g#6@4 f#6@4 e6@4 f#6@4 g#6@4 d#6@9 ~@3 d#6@2 f#6@2 d#7@13 ~@5]/4", G: "[b6 f#6 g#6@25 ~@5]/2",
})).s("gm_piccolo").gain(0.37)

// chords · piano · "Staff-3"
const piano = note(`<
  A@4 B@2 C@2 A D A@2 B@2 C@2 A E F@2 G@2 H F I@2 J@2 K@2 I@2 F L A@2 B@2 C@2 A D A@2 B@2 C@2 A M F@2 G@2 H F I@2 J@2
  K@2 I@2 F N F@2 I@2 F@2 I@2 ~@2
>`.pickRestart({
  A: "[b4,e5]@7 ~ [b4,e5]@7 ~ [b4,e5]@7 ~ [b4,e5]@7 ~", B: "[a4,e5]@7 ~ [a4,e5]@7 ~ [a4,e5]@7 ~ [a4,e5]@7 ~",
  C: "[b4,f#5]@7 ~ [b4,f#5]@7 ~ [b4,f#5]@7 ~ [b4,f#5]@7 ~", D: "~@4 [g4,c5,e5]@11 ~@5 [a4,b4,f#5]@11 ~",
  E: "[e4,g4,c5]@7 ~ [e4,g4,c5]@7 ~ [f#4,a4,b4]@7 ~ [f#4,a4,b4]@7 ~", // C B7
  F: "[e5,g#5,b5]@3 [e5,g#5,b5]@3 [e5,g#5,b5]@2 [e5,g#5,b5]@3 [e5,g#5,b5]@3 [e5,g#5,b5]@2 [e5,g#5,b5]@3 [e5,g#5,b5]@3 [e5,g#5,b5]@2 [e5,g#5,b5]@3 [e5,g#5,b5]@3 [e5,g#5,b5]@2", // E
  G: "[d#5,g#5,c6]@3 [d#5,g#5,c6]@3 [d#5,g#5,c6]@2 [d#5,g#5,c6]@3 [d#5,g#5,c6]@3 [d#5,g#5,c6]@2 [d#5,g#5,c6]@3 [d#5,g#5,c6]@3 [d#5,g#5,c6]@2 [d#5,g#5,c6]@3 [d#5,g#5,c6]@3 [d#5,g#5,c6]@2", // G#
  H: "[e5,a5,c#6]@3 [e5,a5,c#6]@3 [e5,a5,c#6]@2 [e5,a5,c#6]@3 [e5,a5,c#6]@3 [e5,a5,c#6]@2 [e5,a5,c#6]@3 [e5,a5,c#6]@3 [e5,a5,c#6]@2 [e5,a5,c#6]@3 [e5,a5,c#6]@3 [e5,a5,c#6]@2", // A
  I: "[d#5,f#5,b5]@3 [d#5,f#5,b5]@3 [d#5,f#5,b5]@2 [d#5,f#5,b5]@3 [d#5,f#5,b5]@3 [d#5,f#5,b5]@2 [d#5,f#5,b5]@3 [d#5,f#5,b5]@3 [d#5,f#5,b5]@2 [d#5,f#5,b5]@3 [d#5,f#5,b5]@3 [d#5,f#5,b5]@2", // B
  J: "[d5,f#5,b5]@3 [d5,f#5,b5]@3 [d5,f#5,b5]@2 [d5,f#5,b5]@3 [d5,f#5,b5]@3 [d5,f#5,b5]@2 [d5,f#5,b5]@3 [d5,f#5,b5]@3 [d5,f#5,b5]@2 [d5,f#5,b5]@3 [d5,f#5,b5]@3 [d5,f#5,b5]@2", // Bm
  K: "[c#5,f#5,a5]@3 [c#5,f#5,a5]@3 [c#5,f#5,a5]@2 [c#5,f#5,a5]@3 [c#5,f#5,a5]@3 [c#5,f#5,a5]@2 [c#5,f#5,a5]@3 [c#5,f#5,a5]@3 [c#5,f#5,a5]@2 [c#5,f#5,a5]@3 [c#5,f#5,a5]@3 [c#5,f#5,a5]@2", // F#m
  L: "[g4,c5,e5]@6 [g4,c5,e5]@8 [f#4,a4,b4]@8 [f#4,a4,b4]@9 ~", // C B7
  M: "[g4,c5,e5]@7 ~ [g4,c5,e5]@7 ~ [f#4,a4,b4]@7 ~ [f#4,a4,b4]@7 ~", // C B7
  N: "[e5,g5,b5]@3 [e5,g5,b5]@3 [e5,g5,b5]@2 [e5,g5,b5]@3 [e5,g5,b5]@3 [e5,g5,b5]@2 [d#5,f#5,b5]@3 [d#5,f#5,b5]@3 [d#5,f#5,b5]@2 [d#5,f#5,b5]@3 [d#5,f#5,b5]@3 [d#5,f#5,b5]@2", // Em B
})).s("gm_piano").gain(0.17)

// chords · overdriven guitar · "Staff-4"
const overdriven_guitar = note(`<
  ~@9 A ~@8 B@2 C@2 D B E@2 F@2 G@2 E@2 B H ~@7 A ~@7 I B@2 C@2 D B E@2 F@2 G@2 E@2 B ~ B@2 E@2 B@2 E@2 J@2
>`.pickRestart({
  A: "~@4 [e4,g4,c5]@11 ~@5 [f#4,a4,b4]@11 ~", B: "~@8 [e4,g#4,b4]@7 ~@9 [e4,g#4,b4]@7 ~",
  C: "~@8 [d#4,g#4,c5]@7 ~@9 [d#4,g#4,c5]@7 ~", D: "~@8 [e4,a4,c#5]@7 ~@9 [e4,a4,c#5]@7 ~",
  E: "~@8 [d#4,f#4,b4]@7 ~@9 [d#4,f#4,b4]@7 ~", F: "~@8 [d4,f#4,b4]@7 ~@9 [d4,f#4,b4]@7 ~",
  G: "~@8 [c#4,f#4,a4]@7 ~@9 [c#4,f#4,a4]@7 ~", H: "b3@6 c4@8 b3@8 g3@9 ~", I: "b3@7 ~ c4@7 ~ b3@7 ~ g3@7 ~",
  J: "[[b3,e4,g#4]@23 ~@9]/2", // E
})).s("gm_overdriven_guitar").gain(0.42)

// bass · slap bass 2 · "Staff-6"
const bass = note(`<
  A@3 B C D E F B G A B C D E F H I J@2 K@2 L M N O P@4 K@2 J Q A B C D E R B G A B C D E R B I J@2 K@2 L M N O P@4 K@2
  J I J@2 K@2 J@2 K@2 ~@2
>`.pickRestart({
  A: "e2@7 ~@23 b1@2", B: "e2@7 ~@23 e2@2", C: "a2@7 ~@23 e2@2", D: "a2@7 ~@23 f#2@2", E: "b2@7 ~@23 f#2@2",
  F: "b2@7 ~@23 b1@2", G: "e2@2 c3@5 b1 b1@2 b2@5 b1", H: "e2@7 ~@25", I: "b1@7 ~ c2@7 ~ c#2@7 ~ d2@7 ~",
  J: "e2@7 ~ e2@7 ~ e2@7 ~ e2@7 ~", K: "d#2@7 ~ d#2@7 ~ d#2@7 ~ d#2@7 ~", L: "c#2@7 ~ c#2@7 ~ c#2@7 ~ c#2@7 ~",
  M: "g#2@7 ~ f#2@7 ~ e2@7 ~ c#2@7 ~", N: "b1@7 ~ b1@7 ~ b1@7 ~ b1@7 ~",
  O: "[b1,b2]@7 ~ [b1,b2]@7 ~ [b1,b2]@7 ~ [b1,b2]@7 ~", P: "f#2@7 ~ f#2@7 ~ f#2@7 ~ f#2@7 ~",
  Q: "b2@3 c3@4 b2@4 g2@4 b1", R: "b2@7 ~@23 c2@2",
})).s("gm_slap_bass_2").gain(0.51)

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

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

// drums · ride
const ride = s("rd").struct("<~@18 A@7 ~ A@7 ~@17 A@7 ~ A@7 ~ A@8 ~@2>".pickRestart({
  A: "~ x ~ x",
})).gain(0.51)

// drums · rim
const rim = s("rim").struct("<A@9 B A@7 ~@16 B A@7 B A@7 ~@27>".pickRestart({
  A: "~@8 x ~@4 x ~@10 x ~@4 x ~@2", B: "~@15 x",
})).gain(0.51)

// drums · lt
const lt = s("lt").struct(`<
  [x ~@4 x ~@10 x ~@4 x ~@10]!9
  ~
  [x ~@4 x ~@10 x ~@4 x ~@10]!7
  ~@17
  [x ~@4 x ~@10 x ~@4 x ~@10]!7
  ~
  [x ~@4 x ~@10 x ~@4 x ~@10]!7
  ~@27
>`).gain(0.51)

stack(piccolo, piano, overdriven_guitar, bass, kick, snare, ride, rim, lt)

More by Turtles