Strudelify

Turn My Head

Live

KeyC majorTempo90 bpm
0:00/0:00
// Turn My Head — Live
// 90 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · electric guitar clean
const electric_guitar_clean = note(`<
  A B C D E F C G H B I J K L M N O B P Q ~@9 H B I J K L M N O B P Q ~@43
>`.pickRestart({
  A: "c4 e4 c5 c4 e4 e5 c5 g4", B: "g3@2 b3@2 c5@2 b4@2 c5@2 g5@2 e5@3 ~", C: "e3@2 b3@2 e4@2 e5@4 b4@3 ~ g4@2",
  D: "f3@3 ~ f4@2 f5@4 c5@3 ~ g4@2", E: "c4@2 e4@2 c5@2 c4@2 c5 d5 e5@2 d5@2 c5@2",
  F: "[g3,b3]@2 d4@2 c5@2 b4@2 c5@2 g5@2 e5@3 ~", G: "f3@2 c4@2 f4@2 f5@4 c5@3 ~ g4@2", H: "c4@2 e4@2 c5@2 g4@7 ~ d4@2",
  I: "e3 b3 e5 b4 b3@3 ~", J: "[f3,c4,f4]@5 ~ f5@4 c5@3 ~ g4@2", K: "c4 e4 c5 g4 c4 e4 e5 c5",
  L: "[g3,b3,d4]@5 ~ b4@2 c5@2 g5@2 e5@3 ~", M: "e3@2 e4@2 e5@2 b4@4 b3@2 g4@3 ~",
  N: "[f3,c4]@3 ~ f4@2 f5@4 c5@3 ~ g4@2", O: "c4@2 e4@2 c5@2 g4@2 c4@2 e4@2 g4@3 ~", P: "e3 e4 e5 b4 b3@3 ~",
  Q: "[f3,c4,f4,a4,c5,f5]@5 ~@3", // F
})).s("gm_electric_guitar_clean").gain(0.13)

// chords · electric guitar clean
const electric_guitar_clean_2 = note("<~@8 A B C D A B C D A B C E ~@9 A B C D A B C D A B C E ~@43>".pickRestart({
  A: "[c4,e4,g4]@13 ~@3", B: "[g3,b3,e4]@13 ~@3", C: "[e3,b3,b4]@13 ~@3", D: "[c4,f4,c5]@13 ~@3",
  E: "[f3,c4,f4,a4,c5,f5]@5 ~@3", // F
})).s("gm_electric_guitar_clean").gain(0.1)

// chords · distortion guitar
const distortion_guitar = note("<~@53 A B C D E F E G@2 H I J K L M N I J K L M N I J K L O P Q R S>".pickRestart({
  A: "~@14 [f3,c4,f4] [f3,c4,f4,a4]", B: "[f3,c4,f4,a4]@10 ~@2 [f3,c4,f4,a4]!2 [e3,b3,e4,g4]!2", C: "[e3,b3]@13 ~@3",
  D: "[f3,c4]@10 ~@2 [f3,c4]@3 ~", E: "[e3,b3]@7 [e3,b3]", F: "[f3,c4]@5 ~ [f3,c4] e3",
  G: "[[f3,c4]@10 ~@2 [f3,c4]@2 g3@7 ~ [g3,d4]@2 [g3,d4]@2 [g3,d4]@2 [g3,d4]@2 [g3,d4]@2]/2", // F5 G5
  H: "[g3,d4]@3 ~ [g3,d4]@3 ~ [g3,d4]@2 [g3,d4]@5 ~", // G5
  I: "[c4,e4,g4]@2 ~ [c4,e4,g4]@2 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 ~ [c4,e4,g4]@4 ~", // C
  J: "[c4,e4,g4]@2 ~ [c4,e4,g4]@3 [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]!2", // C
  K: "[c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@2 [c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@2", // F
  L: "[c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@3 [c4,a4,c5]@2 [c4,a4,c5]!5", // F
  M: "[g3,b3,e4]@5 ~ [d4,g4,d5,g5]@5 ~ [b3,e4,g4]@2 [c4,f4,a4]!2", // Em G5 Em F
  N: "[f3,c4,f4,a4,c5,f5]@5 ~ [f3,c4,f4,a4,c5,f5]@8 ~@2", O: "[g3,d4]@5 ~ [g3,d4]@7 ~ [g3,d4]!2",
  P: "[g3,d4]@5 ~ [g3,d4]@8 ~@2", Q: "[f3,c4,f4,a4,c5,f5]@13 ~@3", R: "[f4,c5,f5,g#5,c6]@13 ~@3",
  S: "[c4,e4,g4,c5]@13 ~@3", // C
})).s("gm_distortion_guitar").gain(0.05)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@19 A B C D E F G H I J ~@11 K B C D E F G H C D E F G L ~@30>".pickRestart({
  A: "~@14 [f4,g#4,c5,f5] [f3,c4,f4,g#4,c5,f5]", B: "[f3,c4,f4,g#4,c5,f5]@13 ~@3",
  C: "[c4,e4,g4]@2 ~ [c4,e4,g4]@2 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 ~ [c4,e4,g4]@4 ~", // C
  D: "[c4,e4,g4]@2 ~ [c4,e4,g4]@3 [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]!2", // C
  E: "[c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@2 [c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@2", // F
  F: "[c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@3 [c4,a4,c5]@2 [c4,a4,c5]!5", // F
  G: "[g3,b3,e4]@5 ~ [d4,g4,d5,g5]@5 ~ [b3,e4,g4]@2 [c4,f4,a4]!2", // Em G5 Em F
  H: "[f3,c4,f4,a4,c5,f5]@5 ~ [f3,c4,f4,a4,c5,f5]@8 ~@2", I: "[c4,e4,g4,c5]@6 ~@2 [d5,e5]@2 [c5,d5]@3 ~ b4@2",
  J: "c5@13 ~@3", K: "~@14 [f3,c4,f4,g#4,c5,f5]!2", L: "[f3,c4,f4,a4]@5 ~ [f3,c4,f4,a4]@7 ~ a4 ~",
})).s("gm_distortion_guitar").gain(0.03)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~@19 A B ~@3 C D E F ~@12 A B ~@3 C D G ~@3 C D G H I J K L K M N O ~@21
>`.pickRestart({
  A: "~@14 [f3,c4,f4,g#4,c5,f5] [g#4,c5,f5]", B: "[f3,c4,f4,g#4,c5,f5]@10 ~@2 [e4,g4]@2 [g4,c5]!2",
  C: "[a3,e4,a4,c5,e5,a5]@13 ~@3", D: "g4 d5 g5 b5@2 g5 d5 g4", E: "f4@2 c5@2 f5@2 a5@4 f5@3 ~ d4@2",
  F: "[c4,e4,g4,c5]@13 ~@3", G: "f4@2 c5@2 f5@2 a5@4 f5@3 ~@3",
  H: "[f3,c4,f4,a4]@10 ~@2 [f3,c4,f4,a4]!2 [e3,b3,e4,g4]!2", I: "[e3,b3]@13 ~@3",
  J: "[f3,c4]@10 ~@2 [f3,c4]@2 [e3,b3,e4,g4]!2", K: "[e3,b3,e4,g4]@13 ~@3", L: "[f3,c4]@14 [e3,b3,e4,g4]!2",
  M: "[f3,c4]@13 ~@3", N: "~@4 [g3,d4]!4", O: "[g3,d4]@2 [g3,d4]!2 [g3,d4]@2 [g3,d4] [g3,d4]@3 [g3,d4]@2 [g3,d4]!3 ~",
})).s("gm_distortion_guitar").gain(0.03)

// chords · distortion guitar · soft notes
const distortion_guitar_soft_2 = note("<~@62 A B C D E F G ~@3 H I J ~@3 H K L M N O>".pickRestart({
  A: "~@15 [g3,d4]", B: "[c4,e4,g4]@2 ~ [c4,e4,g4]@2 [c4,e4,g4] [c4,e4,g4]@2 [c4,e4,g4]@2 ~ [c4,e4,g4]@4 ~",
  C: "[c4,e4,g4]@2 ~ [c4,e4,g4]@3 [c4,e4,g4]@2 [c4,e4,g4]@3 ~ [c4,e4,g4]@2 [c4,e4,g4]!2", // C
  D: "[c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@2 [c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@2", // F
  E: "[c4,a4,c5]@2 ~ [c4,a4,c5]@3 [c4,a4,c5]@3 [c4,a4,c5]@2 [c4,a4,c5]!5", // F
  F: "[g3,b3,e4]@5 ~ [d4,g4,d5,g5]@5 ~ [b3,e4,g4]@2 [c4,f4,a4]!2", // Em G5 Em F
  G: "[f3,c4,f4,a4,c5,f5]@5 ~ [f3,c4,f4,a4,c5,f5]@8 ~@2", H: "[a3,e4,a4,c5,e5,a5]@13 ~@3", I: "g4 d5 g5 b5@2 g5 d5 g4",
  J: "f4@2 c5@2 f5@2 a5@4 f5@3 ~@3", K: "g4@2 d5@2 g5@2 b5@4 g5@3 ~ d5@2", L: "g4@2 d5@2 g5@2 b5@4 g5@3 ~ g4@2",
  M: "f4 c5 f5 a5@2 f5 [c5,f5] ~", N: "[f4,c5,f5,g#5,c6]@13 ~@3", O: "[c4,e4,g4,c5]@13 ~@3",
})).s("gm_distortion_guitar").gain(0.01)

// chords · distortion guitar
const distortion_guitar_3 = note(`<
  ~@19 A B ~ C D ~@16 A B ~ C D ~@4 C D ~@2 E F G H I J I K@2 ~ L M N O P Q R C D ~@4 C D ~@6
>`.pickRestart({
  A: "~@14 [f3,c4,f4,g#4,c5,f5] [g#4,c5,f5]", B: "[f3,c4,f4,g#4,c5,f5]@5 ~@3",
  C: "~@8 [c4,g4,c5,e5]@3 ~ [b3,e4,g4,b4,e5]@3 ~", D: "[a3,e4,a4,c5]@13 ~@3", E: "~@14 [f3,c4,f4,a4]!2",
  F: "[f3,c4,f4,a4]@5 ~@3", G: "[e3,b3]@13 ~@3", H: "[f3,c4]@10 ~@2 [f3,c4]@3 ~", I: "[e3,b3]@7 [e3,b3]",
  J: "[f3,c4]@5 ~ [f3,c4] e3", K: "[[f3,c4]@10 ~@2 [f3,c4]@2 g3@15 ~@3]/2",
  L: "[a5,c6]@2 ~ [g5,c6]@3 [g5,c6]@2 [g5,a5,c6]@2 ~ [g5,c6]@3 [g5,c6] a5", // Am C5 Am7 C5
  M: "[g5,c6]@5 ~ e5 f5 [e5,g5,c6]@2 e5 f5 [e5,g5,c6]@2 e5@2", N: "e5@6 ~@2 d#5@2 ~ e5@3 d5@2",
  O: "g5@6 ~@2 g5!2 ~ c6@2 g5@2 ~", P: "d6@2 ~ c6@3 g5@2 [g5,a5]@2 ~ [g5,c6]@3 e5@2",
  Q: "[f5,a5]@2 ~ [f5,a5]@3 e5@2 f5@2 ~ g5@3 e5@2", R: "c5@13 ~@3",
})).s("gm_distortion_guitar").gain(0.4)

// bass · electric bass finger
const bass = note(`<
  ~@4 A B C D A B C D A B C D A B C E F G H I J K L A ~ A B C D A B C D A B C M F G H I J K L N H O P K Q R S T S U S V
  W X G H I J K L G H I J K L G H I Y Z K Q AA A
>`.pickRestart({
  A: "c3@13 ~@3", B: "g2@13 ~@3", C: "e3@13 ~@3", D: "f3@13 ~@3", E: "f3@6 ~@2 a3@3 ~ a3!2 a3@2",
  F: "a3 f3 e3 c3 c3@3 ~", G: "c3@6 ~@2 c3@2 c3@3 ~ c3@2", H: "c3@6 ~@2 c3@3 ~ b2@3 ~", I: "a2@6 ~@2 g2@2 g2@3 ~ a2@2",
  J: "a2@5 ~ g2!2", K: "g2@6 ~@2 g2@2 g2@3 ~ g2@2", L: "f2@6 ~@2 f2@2 f2@3 ~ g2@2", M: "f3@6 ~@2 a3@3 ~ a3!2 ~ a3",
  N: "c3@6 ~@2 b2@2 b2@3 ~ c3@2", O: "a2@6 ~@2 a2@2 a2@3 ~ a2@2", P: "a2@6 ~@2 a2@3 ~ a2@3 ~",
  Q: "f2@6 ~@2 f2@2 f2@3 ~ f2@2", R: "f2@10 ~@2 f2!2 e2!2", S: "e2@13 ~@3", T: "f2@10 ~@2 f2@2 e2!2", U: "f2@14 e2!2",
  V: "f2@13 ~@3", W: "g2@3 ~ g2!4", X: "g2!8", Y: "a2@5 ~ a2!2", Z: "g2@5 ~ g2!2", AA: "f2@6 ~@2 f2@2 f2!2 f2@2 f2!2",
})).s("gm_electric_bass_finger").gain(0.18)

// chords · violin
const violin = note("<~@27 A B C@2 D E F G D H I J D K@2 ~@6 F L M ~@3 N O ~@13 P@2 Q ~@12>".pickRestart({
  A: "[e4,g4,c5]@6 ~@2 [c5,e5]@2 [g4,c5]@3 ~ [g4,b4]@2", B: "~@2 [e4,g4] [c4,e4] [g4,c5] [c5,e5] [e5,g5] [c5,e5]",
  C: "[[e4,g4,c5]@29 ~@3]/2", D: "[e4,g4,b4]@13 ~@3", E: "[c4,f4,c5]@13 ~@3", F: "[c4,e4,g4]@13 ~@3",
  G: "d4@5 ~ b4@2 c5@2 g5@2 e5@3 ~", H: "[d4,f4,a4]@13 ~@3", I: "[e4,g4,c5]@13 ~@3",
  J: "[g3,b3,d4]@5 ~ b4@2 c5@2 g5@2 e5@3 ~", K: "[[d4,f4,a4]@29 ~@3]/2",
  L: "~@8 [c4,g4,c5,e5]@3 ~ [b3,e4,g4,b4,e5]@3 ~", M: "[a3,e4,a4,c5]@13 ~@3", N: "[c4,f4,a4]@10 ~@2 f4@2 f4 g4",
  O: "b3@13 ~@3", P: "[[c4,e4,g4]@22 ~@2 [c4,g4,c5]@3 ~ [b3,e4,b4]@3 ~]/2", Q: "[e4,a4,c5]@13 ~@3",
})).s("gm_violin").gain(0.07)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A@13 B@3 C D@2 A ~ A@13 B@3 C D@2 B A B C D@2 A E@8 B@3 C D@2 B@3 C D@2 B F B C D@3 A@2
>`.pickRestart({
  A: "x", B: "x ~@3 x!2 ~ x", C: "x ~@3 x!2 ~@2", D: "x ~@2 x ~@3 x", E: "~@9 x ~@2 x ~@3", F: "x ~@3 x!4",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  ~@20 A B@4 C@2 ~@14 A B@4 C@2 B D B@2 C@3 E@2 F E@5 B@4 C@2 B@4 C@2 B G B@2 C@3 H ~
>`.pickRestart({
  A: "~@8 x ~@3 x ~ x!2", B: "~@4 x ~@2 x ~@4 x ~@3", C: "~ x", D: "~@4 x ~@2 x!2 ~ x!3 ~ x!2", E: "x",
  F: "x ~@2 x ~@12", G: "~@4 x ~@2 x ~@8", H: "~@4 x ~@3 x ~ x!3 ~ x!2",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@8 A B A@10 C ~@3 D ~@4 A B A@10 C ~@3 D ~@8 E F@8 ~@3 D ~@5 D ~@5 D ~@5
>`.pickRestart({
  A: "~@14 x!2", B: "~@12 x ~ x!2", C: "~@7 x ~@8", D: "~@15 x", E: "~@12 x!3 ~", F: "~@5 x ~ x ~@2 x ~@3 x!2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@25 A B ~ C ~@17 A B ~@4 A B ~@13 A B ~@4 A B ~@4 A B@2 D ~>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x ~@2 x", D: "x!4 ~ x!2 ~",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A B A@10 C ~@3 D ~@4 A B A@10 C ~@3 D ~@5 D ~@2 E F@8 ~@3 D ~@5 D ~@5 D ~@5
>`.pickRestart({
  A: "~@2 x!2", B: "~ x", C: "~@2 x!2 ~ x ~@2", D: "~@7 x", E: "~@10 x!2 ~@4", F: "~@4 x ~ x ~ x ~@4 x ~@2",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@28 [~@4 x!2 ~@2 x ~@7] ~@55>").gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@14 A ~ A ~@3 A ~@14 A ~ A ~@3 A ~ A ~@12 A ~ A ~@3 A ~ A ~@2 B A ~ A ~@3 A
>`.pickRestart({
  A: "x", B: "~@5 x!3",
})).gain(0.48)

// drums · ride
const ride = s("rd").struct(`<
  ~@21 A@2 B A ~@17 A@2 B A ~@2 A@2 C A ~@11 A@2 B A ~@2 A@2 B A ~@2 A D B A ~@5
>`.pickRestart({
  A: "x!8", B: "~@2 x!6", C: "~ x!7", D: "x!5 ~@3",
})).gain(0.48)

stack(
  electric_guitar_clean, electric_guitar_clean_2, distortion_guitar, distortion_guitar_soft, distortion_guitar_2,
  distortion_guitar_soft_2, distortion_guitar_3, bass, violin, kick, snare, low_tom, hihat, mid_tom, open_hat, crash,
  ride
)

More by Live