Strudelify

Rock & Roll Music

Chuck Berry

KeyA majorTempo120 bpm
0:00/0:00
// Rock & Roll Music — Chuck Berry
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level. 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.

// chords · electric guitar clean · "Electric Guitar"
const electric_guitar_clean = note(`<
  ~ A@4 B@2 A@2 C@2 D A E F ~@2 G@2 H@2 ~@2 A@4 B@2 A@2 C@2 D A E F ~@2 G@2 H@2 ~@2 A@4 B@2 A@2 C@2 D A E F ~@2 G@2 H@2
  ~@2 A@4 B@2 A@2 C@2 D A E F ~@2 G@2 H@2 ~@2 A@4 B@2 A@2 C@2 D A E I
>`.pickRestart({
  A: "[a3,e4]!2 [a3,f#4] [a3,e4]!3 [a3,f#4] [a3,e4]", B: "[d4,a4]!2 [d4,b4] [d4,a4]!3 [d4,b4] [d4,a4]",
  C: "[e3,b3]!2 [e3,c#4] [e3,b3]!3 [e3,c#4] [e3,b3]", D: "[e3,b3]!7 [a3,e4]", E: "[e3,b3]!7 [a3,c#4]", F: "[a3,e4] ~@7",
  G: "a3@3 c#4@2 c#4 e4@2", H: "d4@3 f#4@2 f#4 a4@2", I: "~@2 [a3,e4]!2 a3@2 ~@2",
})).s("gm_electric_guitar_clean").gain(0.64)

// chords · piano · "Piano - Bass"
const piano = note(`<
  ~ A@4 B@2 A C D@2 E@2 F@2 G@2 H@2 I@2 J K A@4 B@2 A C D@2 E@2 F@2 G@2 H@2 I@2 J K A@4 B@2 A C D@2 E@2 F@2 G@2 H@2 I@2
  J K A@4 B@2 A C D@2 E@2 F@2 G@2 H@2 I@2 J K A L M N O P Q R S T U@2 V W
>`.pickRestart({
  A: "a1!2 c#2!2 e2!2 f#2 e2", B: "d2!2 f#2!2 a2!2 f#2 a2", C: "a1!2 c#2!2 e2!2 c#2 e2", D: "e2!2 g#2!2 b2!2 g#2 b2",
  E: "[[e2,e5,g#5]!2 e2!4 [e2,b4,d5] [a1,a4,c#5]@2 a1 a1@2 a1!4, ~ [d5,f#5] [c#5,e5] ~@5]/2", // E E7 A D C#m
  F: "[[e2,e5,g#5]!2 e2!2 [e2,c#5,e5]!2 [e2,b4,d5] a1 a1@2 ~@6, ~@2 [d5,f#5]@2 ~@3 [a4,c#5]@3 ~@6]/2", // E C#m E7 D A
  G: "e2@2 e2 g#2@2 g#2 b2@2", H: "a1@2 a1 c#2@2 c#2 e2@2", I: "d2@2 d2 f#2@2 f#2 a2@2", J: "e2@2 e2 g#2@2 g#2 b2 e2",
  K: "e2 ~@3", L: "a1 [a1,a4,c#5,e5] [c#2,a4,c#5,e5]!2 [e2,a4,c#5,e5]!2 [f#2,a4,c#5,e5] [e2,a4,c#5,e5]",
  M: "[a1,a4,c#5,e5]!2 [c#2,a4,c#5,e5]!2 [e2,a4,c#5,e5]!2 [f#2,a4,c#5,e5] [e2,a4,c#5,e5]", // A F#m7 A
  N: "[a1,a4,c#5,e5]@2 [a1,a4,c#5,e5]@2 [c#2,a4,c#5,e5]@2 [c#2,a4,c#5,e5]@2 [e2,a4,c#5,e5]@2 [e2,a4,c#5,e5]@2 [a4,e5] [b4,f#5] ~ [c#5,g#5], ~@6 f#2 e2", // A A5 B5 C#5
  O: "[d5,f#5,a5]!2 ~ [d5,f#5,a5]!3 ~ [d5,f#5,a5]!3 ~ [d5,f#5,a5]!3 ~ [d5,f#5,a5], d2!2 f#2!2 a2!2 f#2 a2", // D
  P: "[d5,f#5,a5]!2 ~ [d5,f#5,a5]!3 ~ [d5,f#5,a5]!3 ~ [d5,f#5,a5] [d5,a5] [c#5,g#5] ~ [b4,f#5], d2!2 f#2!2 a2!2 f#2 a2", // D D5 C#5 B5
  Q: "[a4,c#5,e5]!2 ~ [a4,c#5,e5]!3 ~ [a4,c#5,e5]!3 ~ [a4,c#5,e5]!3 ~ [a4,c#5,e5], a1!2 c#2!2 e2!2 f#2 e2", // A
  R: "[a4,c#5,e5]!2 ~ [a4,c#5,e5]!3 ~ [a4,c#5,e5]!3 ~ [a4,c#5,e5]!3 ~ [a4,c#5,e5], a1!2 c#2!2 e2!2 c#2 e2", // A
  S: "[e4,g#4,b4]!2 ~ [e4,g#4,b4]!3 ~ [e4,g#4,b4]!3 ~ [e4,g#4,b4]!3 ~ [e4,g#4,b4], e2!2 g#2!2 b2!2 g#2 b2", // E
  T: "[d4,f#4,a4]!2 ~ [d4,f#4,a4]!3 ~ [d4,f#4,a4] a5 [g5,g#5] [f5,f#5] [d#5,e5] [c#5,d5] [b4,c5] [a4,a#4] [g4,g#4], e2!2 g#2!2 b2!2 g#2 b2", // D G#maj7 F#maj7 Emaj7 Dmaj7 Cmaj7 A#maj7 G#maj7
  U: "[[e2,e5,g#5]!2 e2!4 [e2,b4,d5] [a1,a4,c#5]@2 a1 a1@2 a1!4, f#4 ~@3 [d5,f#5]@4 [c#5,e5]@4 ~@20]/2", // E E7 A D C#m
  V: "[e2,e5,g#5]!2 e2!2 [e2,c#5,e5]!2 [e2,b4,d5] [a1,a4,c#5], ~ [d5,f#5] ~@2", // E C#m E7 A D
  W: "~@2 [a1,c#4,e4,a4]!2 [a1,c#4,e4,a4]@2 ~@2", // A
})).s("gm_piano").gain(0.64)

// bass · electric bass pick · "Electric Bass"
const bass = note(`<
  ~ A@4 B@2 A C D@2 E@2 F G H@2 I@2 J@2 H K A@4 B@2 A C D@2 E@2 F G H@2 I@2 J@2 H K A@4 B@2 A C D@2 E@2 F G H@2 I@2 J@2
  H K A@4 B@2 A C D@2 E@2 F G H@2 I@2 J@2 H K A@4 B@2 A C D@2 E@2 F L
>`.pickRestart({
  A: "a2!2 c#3!2 e3!2 f#3 e3", B: "d3!2 f#3!2 a3!2 f#3 a3", C: "a2!2 c#3!2 e3!2 c#3 e3", D: "e3!2 g#3!2 b3!2 g#3 b3",
  E: "[e3!7 a2@2 a2 c#3!2 e3!2 c#3 e3]/2", F: "e3!7 a2", G: "a2 ~@3", H: "e3@3 g#3@3 b3@2", I: "a2@3 c#3@3 e3@2",
  J: "d3@3 f#3@3 a3@2", K: "e3 ~@3", L: "~@2 a2!2 a2@2 ~@2",
})).s("gm_electric_bass_pick").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~ A@13 B A@7 B A@13 B A@7 B A@13 B A@7 B A@13 B A@7 B A@13 B>".pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~ A@13 ~ A@7 ~ A@13 ~ A@7 ~ A@13 ~ A@7 ~ A@13 ~ A@7 ~ A@13 B>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!3 ~@3",
})).gain(0.56)

// drums · splash
const splash = s("cr").struct("<~ A@13 B A@7 B A@13 B A@7 B A@13 B A@7 B A@13 B A@7 B A@13 B>".pickRestart({
  A: "x!4", B: "x",
})).gain(0.64)

stack(electric_guitar_clean, piano, bass, kick, snare, splash)

More by Chuck Berry