Strudelify

I Call Your Name

The Beatles

KeyE majorTempo132 bpm
0:00/0:00
// I Call Your Name — The Beatles
// 132 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 8 "Gtr" electric guitar jazz (copy of ch 3 "Gtr" guitar harmonics); ch 7 "Guitar2" acoustic guitar steel (copy of ch 4 "Nylon Gtr  2 Bank 32" electric guitar jazz)
// note: Full arrangement: all 83 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(132/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 · electric bass pick · "Bass"
const bass = note(`<
  ~ A B C D E F G H I J K L F@2 M N O P Q R S@2 T@2 U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN S@2 T@2 U V W
  X Y Z AA AB AC AD AO@2 AP@22
>`.pickRestart({
  A: "f#2@3 ~ f#2@2 f#2@2 f#2@2 f#2@2 f#2@2 f#2@2, e2 ~@15",
  B: "[g2,g#2,a2] b2@3 b2@2 b2@2 b2@2 ~@2 b2@2 b2@2, ~ a#2 ~@14", C: "e2@3 ~ e2@2 e2@2 e2@4 e2@2 e2@2, d#2 ~@15",
  D: "b2@2 b2@2 b2 b2@2 b2", E: "e2@3 ~ e2@4 e2@4 e2@2 ~@2, d#2 ~@15", F: "e2@2 e2@2 e2@2 e2 b2",
  G: "c#3@3 ~ c#3@4 c#3@4 c#3@2 b2@2, c3 ~@15", H: "c#3@2 c#3@2 c#3@2 c#3 f2", I: "f#2@2 f#2@2 f#2@2 f#2 f2",
  J: "f#2@2 f#2@2 f#2@2 f#2 a#2", K: "b2@2 b2@2 b2@2 b2 a#2", L: "b2@2 b2@2 b2!3 d#2",
  M: "c#3@4 c#3@4 c#3@2 [d#2,e2,f#2] g#2@3 g#2@2, ~@11 g2 ~@4", // D#m
  N: "c#2@4 c#2@4 c#2@2 [d#2,e2,f#2] g#2@3 g#2@2, ~@11 g2 ~@4", O: "f#2@4 f#2@4 f#2@3 ~ f#2@2 f#2@2, ~@8 e2 ~@7",
  P: "a1 a2!2 b2", Q: "[e1,e2]@2 e3@2 e3!2 b2 d3", R: "e3@4 e3@4 e3@2 e3@2 e3 d3 d3@2", S: "a2!2 c3 c#3 a2!2 c3 c#3",
  T: "c#3 ~ c#3 g#2 c#3!3 g#2", U: "f#2 ~ f#2 ~ f#2 ~ f#2 e2", V: "f#2 ~ f#2 ~ f#2 ~ f#2 ~", W: "c3!4",
  X: "b2@3 b2 b2@3 g#2", Y: "e2@2 e2@2 b2!2 b2@2", Z: "e2@2 e2@2 b2!2 e2 b2", AA: "c#3@2 c#3@2 c#3@2 g#2 b2",
  AB: "c#3!4", AC: "f#2@2 f#2@2 f#2@2 f#2 c#2", AD: "a2@2 a2@2 a2@2 a2 b2", AE: "e2!2 b2!2", AF: "e2 b2!7",
  AG: "e3@2 ~ e3 e3@2 ~ e3 e3@2 ~ e3 e3@2 ~ e3",
  AH: "[c3,c#3,d3] e3@3 [c3,c#3,d3] e3@3 [c3,c#3,d3] e3@3 e3 d3 ~ b2, ~ d#3 ~@3 d#3 ~@3 d#3 ~@6",
  AI: "c#3 ~ c#3 ~ g#2 ~ g#2 ~", AJ: "c#3 b2 g#2 e2", AK: "f#2@2 ~@2 f#2@2 ~@2 c#3@4 c#3@2 ~ f#2",
  AL: "a2@2 a2@2 a2@2 a2!2", AM: "e3@4 c#3@4 b2@4 g#2@3 ~, ~@12 g2 ~@3", AN: "e2!2 g#2!2 b2!2 e3!2",
  AO: "[[c3,c#3] [d3,d#3,e3] ~@2 e3@2 ~@2 e3@2 a2@2 g#2@2 a2@6 a2@2 ~@2 a2@2 ~@2 a2@2 b2@2]/2", // C#maj7
  AP: "[e3@2 e3 ~ e3 a2 g#2 a2@3 a2 ~ a2!3 b2]/2",
})).s("gm_electric_bass_pick").gain(0.36)

// chords · guitar harmonics · "Gtr"
const guitar_harmonics = note(`<
  A@2 B C D E@2 F@2 G H I J K@2 L@2 ~ M@2 N@2 O P Q R@2 S T U@2 V W X Y ~ Z AA@2 AB AC AD@3 AE O@2 P Q R@2 S T U@2 V W X
  Y AF@2 AG@22
>`.pickRestart({
  A: "[~@4 d#4 e4 ~ f#4@9, ~ b3@2 ~@5]/2", B: "~@5 e4 ~ b3, ~ g4@3 g4@3 ~, ~@3 e4@2 ~ d4@2",
  C: "e4@4 e4@4 e4 ~ b3@2 a3@2 b3@2, ~@9 d4@7", D: "d#4",
  E: "[~@8 d4@3 ~@3 e3@4 ~@8 b3@2 ~@4, e3@11 ~@7 e3@10 ~@4, ~ e4 ~@3 e4 d4 ~, ~@6 b3@5 ~@11 b3@4 ~@6]/2",
  F: "[c#4 ~@2 d#4 f#4 g#4 ~ c#4@2 ~@2 d#4 f#4 g#4 ~@2, ~ c#4@5 ~@3 c#4@5 ~@2, ~@2 g#4@3 ~@5 g#4@3 ~@3]/2",
  G: "f#4 ~ a#4 ~@2 a#4 ~ f#4, ~ f#4@3 f#4@2 ~@2, ~@3 a#4@2 ~@3",
  H: "f#4@2 ~@2 a#4@3 ~@3 a#4@2 ~@4, ~@2 f#4@5 ~ f#4@4 ~@4", I: "b3 ~@3 e4 f#4 ~@2, ~ b3@2 c#4@3 ~@2, ~ g#4 ~@2",
  J: "b3!2 ~ b3 ~@2 e4 ~, ~@5 b3@2 ~",
  K: "[e4@2 ~@2 d4 e4 ~ e3@2 ~@3 d4 e4 ~@2, ~ e4 ~@3 e4 ~@2, ~@3 b3@2 ~@4 e3@5 ~@2, ~@11 b3@2 ~@3]/2",
  L: "[c#4 ~@2 d#4 f#4 g#4 ~@5 d#4 f#4 g#4 ~@2, ~ c#4@2 ~@4 c#4@4 ~@5, ~ g#4 ~@3 g#4 ~@2]/2",
  M: "[~@7 e4@3 e4@2 d4 e4@3]/2", N: "[~@7 a3@2 ~ c4 ~ e4 ~ c4 c#4, ~@9 a3@3 ~@4, ~@11 c#4@2 e4@3]/2",
  O: "a3 ~ c4 ~ e4 ~ c4 c#4, ~ a3@3 ~@4, ~@3 c#4@2 e4@3", P: "c#4 ~ d#4 ~ g#4 ~ d#4 e4, ~ c#4@3 ~ g#4@3, ~@3 e4@3 ~@2",
  Q: "c#4 ~ d#4 ~@2 e4 d#4 e4, ~ c#4@3 g#4@4, ~@3 e4@2 ~@3", R: "f#3 ~ g#3 ~ c#4 ~ g#3 a3, ~ f#3@3 ~@4, ~@3 a3@2 c#4@3",
  S: "c4 ~ d#4 ~ g4 ~ d#4 e4, ~ c4@3 ~ g4@3, ~@3 e4@3 ~@2",
  T: "b3 ~@3 f#4 ~ d#4 e4, ~ b3@2 b3@3 ~@2, ~@2 d4@2 ~ f#4@2 ~",
  U: "[e3@3 ~ e4@3 ~ d4@2 e4@2 ~@2 e3@4 ~@6 d4@2 e4@2 ~@4, ~@9 e3@3 ~@4, ~@5 e4 ~@2, ~@11 b3@3 ~@2]/2",
  V: "c#4 ~@3 f#4 g#4 ~ c#4, ~ c#4@3 ~@4, ~ g#4 ~@2, ~@3 d#4@3 ~@2",
  W: "c#4 ~@3 f#4 g#4 ~@2, ~ c#4@3 ~@4, ~ g#4 ~@2, ~@3 d#4@3 ~@2",
  X: "f#4 ~@3 a4 a#4 ~@2, ~ f#4@2 f#4@3 ~@2, ~ a#4 ~@2", Y: "a3 ~@4 a3 ~@2, ~ a3@4 ~@3, ~ a4 c4 ~, ~@3 e4@3 ~@2",
  Z: "~@4 g4@2 a4@2 b4@4 a4 ~ e4 ~, ~ e4@6 ~, ~@8 a4 ~@4 g4@2 ~",
  AA: "[~@8 g#4@3 a4 ~@2 b4@5 ~ b4@4 b4 a4 ~@2 e4@3 e4, g#4@8 ~@6 a4 ~@12 g4@5, ~ e4@3 ~@4]/2",
  AB: "f4@3 ~ g#4@3 ~ f4@3 g#4 ~@2 d#4@2, ~@8 e4 ~@7", AC: "f4@3 g#4 f4 d#4 ~ c#4 d#4 f4 ~ g#4 ~@4, e4 ~@15",
  AD: "[~@8 [c4,c#4] b3@2 ~ f#3@3 ~@5 [c4,c#4] b3@3 ~@16 a#3 a3 ~ g3@4 d#3, ~@2 e4@6 ~@3 a3@5 ~@8 a3@8 ~@4 b3@8 ~@4, ~@4 f#4@8 ~@3 f#4@13 ~@2 e4@10 ~@8]/3", // C#maj7
  AE: "e3 ~@7", AF: "[e3@3 ~ e4@3 ~ e4 ~@3 d4@8 ~@12, ~@9 d4@3 ~@20, ~@5 b3@3 ~@8]/2",
  AG: "[e3@3 ~ e4@3 ~ e4 ~ b3@2 a3@2 a3@18, ~@9 d4@4 ~@19]/2",
})).s("gm_guitar_harmonics").gain(0.36)

// chords · electric guitar jazz · "Nylon Gtr  2 Bank 32"
const electric_guitar_jazz = note(`<
  A B C D E F@2 G@2 H@2 I J K L M N O P F@2 Q@2 R@2 S@2 T I F@2 G@2 U@2 F@2 V@2 W@2 X Y V Z Q@2 R@2 S@2 T I F@2 G@2 U@2
  AA@2 AB@22
>`.pickRestart({
  A: "~@7 [f2,c3,d#3,a3,d#4,f4]", // F7
  B: "[f#2,c#3,e3,a#3,e4,f#4]@4 [f#2,c#3,e3,a#3,e4,f#4]@3 ~@3 [f#2,c#3,e3,a#3,e4,f#4]@2 ~@2 [f#2,c#3,e3,a#3,e4,f#4]@2", // F#7
  C: "[b2,f#3,a3,d#4,a4,b4]@4 [b2,f#3,a3,d#4,a4,b4]@3 ~@3 [e2,b2,d3,g#3,d4,e4]@2 ~@2 [e2,b2,d3,g#3,d4,e4]@2", // B7 E7
  D: "[e2,b2,d3,g#3,d4,e4]@4 [e2,b2,d3,g#3,d4,e4]@3 ~@3 [b2,d#3,a3,b3,f#4]@2 ~@2 [b2,d#3,a3,b3,f#4]@2", // E7 B7
  E: "[b2,d#3,a3,b3,f#4]@4 [b2,d#3,a3,b3,f#4]@3 ~@3 [b2,d#3,a3,b3,f#4]@6", // B7
  F: "[~@4 [e2,b2,d3,g#3,b3,e4]@3 ~@3 [e2,b2,d3,g#3,b3,e4]@2 ~@2 [e2,b2,d3,g#3,b3,e4]@6 [e2,b2,d3,g#3,b3,e4]@3 ~@3 [e2,b2,d3,g#3,b3,e4]@2 ~@4]/2", // E7
  G: "[~@4 [c#3,f3,b3,c#4]@3 ~@3 [c#3,f3,b3,c#4]@2 ~@2 [c#3,f3,b3,c#4]@6 [c#3,f3,b3,c#4]@3 ~@3 [c#3,f3,b3,c#4]@2 ~@4]/2", // C#7
  H: "[~@4 [f#2,c#3,e3,a#3,e4,f#4]@3 ~@3 [f#2,c#3,e3,a#3,e4,f#4]@2 ~@2 [f#2,c#3,e3,a#3,e4,f#4]@6 [f#2,c#3,e3,a#3,e4,f#4]@3 ~@3 [f#2,c#3,e3,a#3,e4,f#4]@2 ~@4]/2", // F#7
  I: "~@4 [b2,d#3,a3,b3,f#4]@3 ~@3 [b2,d#3,a3,b3,f#4]@2 ~@4", J: "~@4 [b2,d#3,a3,b3,f#4]@3 ~@5 [b2,d#3,a3,b3,f#4]@3 ~",
  K: "~@4 [e2,b2,d3,g#3,b3,e4]@3 ~@3 [e2,b2,d3,g#3,b3,e4]@2 ~@2 [e2,b2,d3,g#3,b3,e4]@2", // E7
  L: "[e2,b2,d3,g#3,b3,e4]@4 [e2,b2,d3,g#3,b3,e4]@3 ~@3 [e2,b2,d3,g#3,b3,e4]@2 ~@4", // E7
  M: "~@4 [c#3,f3,b3,c#4]@3 ~@3 [c#3,f3,b3,c#4]@2 ~@2 [c#3,f3,b3,c#4]@2", // C#7
  N: "[c#3,f3,b3,c#4]@4 [c#3,f3,b3,c#4]@3 ~@3 [c#3,f3,b3,c#4]@2 ~@4", // C#7
  O: "~@4 [f#2,c#3,e3,a#3,e4,f#4]@3 ~@3 [f#2,c#3,e3,a#3,e4,f#4]@2 ~@4", // F#7
  P: "~@4 [a2,e3,a3,c#4,e4]@3 ~@3 [a2,e3,a3,c4,e4]@2 ~@4", // A Am
  Q: "[~@4 [a2,e3,g3,c#4,g4,a4]@3 ~@3 [a2,e3,g3,c#4,g4,a4]@2 ~@2 [a2,e3,g3,c#4,g4,a4]@6 [a2,e3,g3,c#4,g4,a4]@3 ~@3 [a2,e3,g3,c#4,g4,a4]@6]/2", // A7
  R: "[~@4 [c#3,g#3,c#4,e4,g#4]@3 ~@3 [c#3,g#3,c#4,e4,g#4]@2 ~@2 [c#3,g#3,c#4,e4,g#4]@6 [c#3,g#3,c#4,e4,g#4]@3 ~@3 [c#3,g#3,c#4,e4,g#4]@6]/2", // C#m
  S: "[~@4 [f#2,c#3,e3,a#3,e4,f#4]@3 ~@3 [f#2,c#3,e3,a#3,e4,f#4]@2 ~@2 [f#2,c#3,e3,a#3,e4,f#4]@6 [f#2,c#3,e3,a#3,e4,f#4]@3 ~@3 [f#2,c#3,e3,a#3,e4,f#4]@6]/2", // F#7
  T: "~@4 [c3,e3,a#3,c4]@3 ~@3 [c3,e3,a#3,c4]@2 ~@4", // C7
  U: "[~@4 [f#2,c#3,e3,a#3,e4,f#4]@3 ~@3 [f#2,c#3,e3,a#3,e4,f#4]@2 ~@2 [a2,e3,a3,c#4,e4]@6 [a2,e3,a3,c#4,e4]@3 ~@3 [a2,e3,a3,c4,e4]@2 ~@4]/2", // F#7 A Am
  V: "~@3 [e2,b2,d3,g#3,b3,e4] ~@3 [e2,b2,d3,g#3,b3,e4] ~@3 [e2,b2,d3,g#3,b3,e4] ~@3 [e2,b2,d3,g#3,b3,e4]", // E7
  W: "~@3 [c#3,f3,b3,c#4] ~@3 [c#3,f3,b3,c#4] ~@3 [c#3,f3,b3,c#4] ~@3 [c#3,f3,b3,c#4]", // C#7
  X: "~@3 [f#2,c#3,e3,a#3,e4,f#4] ~@3 [f#2,c#3,e3,a#3,e4,f#4] ~@3 [f#2,c#3,e3,a#3,e4,f#4] ~@3 [f#2,c#3,e3,a#3,e4,f#4]", // F#7
  Y: "~@3 [a2,e3,a3,c#4,e4] ~@3 [a2,e3,a3,c#4,e4] ~@3 [a2,e3,a3,c4,e4] ~@3 [a2,e3,a3,c4,e4]", // A Am
  Z: "~@2 [e2,b2,d3,g#3,b3,e4] ~@3 [e2,b2,d3,g#3,b3,e4] ~@3 [e2,b2,d3,g#3,b3,e4] ~@3 [e2,b2,d3,g#3,b3,e4] ~", // E7
  AA: "[~@4 [e2,b2,d3,g#3,b3,e4]@3 ~@3 [e2,b2,d3,g#3,b3,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@6 [a2,e3,a3,c#4,e4]@3 ~@3 [a2,e3,a3,c#4,e4]@2 ~@4]/2", // E7 A
  AB: "[~@4 [e2,b2,d3,g#3,b3,e4]@3 ~@3 [e2,b2,d3,g#3,b3,e4]@2 ~@2 [a2,e3,a3,c#4,e4]@6 [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@3 ~ [a2,e3,a3,c#4,e4]@3 ~]/2", // E7 A
})).s("gm_electric_guitar_jazz").gain(0.3).pan(0)

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

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!12 [~@2 x!2 ~@2 x ~] [~ x ~ x]!17 [~@2 x!2 ~@2 x ~] [~ x ~ x]!51>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B A C A D A@2 E B@2 A B D A@3 B F A@4 B G A@3 B A@5 ~@8 F B A@3 B A H A@6 I F I J I F K H I F K F I F I F L F K
  F I F I F
>`.pickRestart({
  A: "x!8", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~@2 x",
  D: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", E: "x ~ x!3 ~ x ~ x ~ x!3 ~ x ~", F: "~ x!7", G: "x ~ x ~ x ~ x ~ x!3 ~ x ~ x!2",
  H: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x!2", I: "x!7 ~", J: "~@2 x!3 ~ x ~ x ~ x ~ x!3 ~", K: "x ~ x!3 ~ x ~ x ~ x ~ x ~@3",
  L: "~ x!6 ~",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A ~@29 B ~@17 B ~@2 B ~ A ~ A ~ A ~ A ~ A ~ A B A ~ C ~ A ~ A B A ~ C ~
>`.pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~@3 x ~@10 x ~",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@21 x ~@23 x ~@6 x ~@30>").gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@37 [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!7 [x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2] ~@38>")
  .gain(0.35)

stack(bass, guitar_harmonics, electric_guitar_jazz, kick, snare, hihat, open_hat, crash, ride)

More by The Beatles