Strudelify

you never can tell

Chuck Berry

KeyF majorTempo164 bpm
0:00/0:00
// you never can tell — Chuck Berry
// 164 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5978241; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 155 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(164/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.

// other · clarinet · "Bb Clarinet"
const clarinet = note(`<
  ~@5 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A C D E@2 F D G@2 H D G@2 H D I@2 ~@19 J K ~@2 L M ~@2 L M
  ~@2 N O ~@2 J K ~@2 L M ~@2 L M ~@2 N P D E@2 F D G@2 H D G@2 H D I@2 H D E@2 F D G@2 H D G@2 H D I@2 ~@3 A B ~@2 A B
  ~@2 A B ~@2 A B ~@2 A B ~@2 N Q
>`.pickRestart({
  A: "~@2 bb4!4 ~@2", B: "bb4 ~@2 bb4 ~@4", C: "bb4 ~@2 bb4 ~ g4 ab4 a4", D: "bb4 g4 ~ ab4 ~ f4 ~ g4",
  E: "[~ eb4 ~ g4 ~ c4 ~ eb4@5 ~@4]/2", F: "~@5 g4 ab4 a4", G: "[~ eb4 ~ g4 ~ gb4 ~ f4@5 ~@4]/2", H: "~@5 f4 ab4 a4",
  I: "[~ d4 ~ g4 ~ f4 ~ eb4@5 ~@4]/2", J: "~@2 eb5 ~ gb5 ~ g5 ~ a5@2 bb5 ~ eb6@2 db6 ~",
  K: "a5@2 bb5 ~ gb5@2 g5 ~ eb5@4 ~@4", L: "~@2 bb4 ~ db5 ~ d5 ~ e5@2 f5 ~ bb5@2 ab5 ~",
  M: "e5@2 f5 ~ db5@2 d5 ~ bb4@4 ~@4", N: "~@2 bb4 ~ d5 ~ eb5 ~ gb5@2 g5 ~ eb5@2 c5 ~", O: "bb4 ~ c5@4 bb4@4 ~@6",
  P: "bb4 ~ c5@4 bb4@4 f4@2 ab4@2 a4@2", Q: "bb4@2 ~@5 bb5@2 ~@7",
})).s("gm_clarinet").gain(0.4).pan(0.2)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@5 A B ~@2 C D ~@2 C D ~@2 A B ~@2 A B ~@2 C D ~@2 C D ~@2 A E F G@2 H F I@2 J K I@2 J K L@2 ~@19 M N ~@2 O P ~@2 O P
  ~@2 Q R ~@2 M N ~@2 O P ~@2 O P ~@2 Q S F G@2 H F I@2 J K I@2 J K L@2 J F G@2 H F I@2 J K I@2 J K L@2 ~@3 A B ~@2 C D
  ~@2 C D ~@2 A B ~@2 A B ~@2 Q T
>`.pickRestart({
  A: "~@2 eb4!4 ~@2", B: "eb4 ~@2 eb4 ~@4", C: "~@2 d4!4 ~@2", D: "d4 ~@2 d4 ~@4", E: "eb4 ~@2 eb4 ~ bb4 c5 d5",
  F: "eb5 c5 ~ d5 ~ bb4 ~ c5", G: "[~ g4 ~ bb4 ~ eb4 ~ g4@5 ~@4]/2", H: "~@5 bb4 c5 d5",
  I: "[~ g4 ~ bb4 ~ a4 ~ ab4@5 ~@4]/2", J: "~@5 bb4 c5 db5", K: "d5 bb4 ~ c5 ~ ab4 ~ bb4",
  L: "[~ f4 ~ ab4 ~ g4 ~ g4@5 ~@4]/2", M: "~@2 eb4 ~ gb4 ~ g4 ~ a4@2 bb4 ~ eb5@2 db5 ~",
  N: "a4@2 bb4 ~ gb4@2 g4 ~ eb4@4 ~@4", O: "~@2 bb3 ~ db4 ~ d4 ~ e4@2 f4 ~ bb4@2 ab4 ~",
  P: "e4@2 f4 ~ db4@2 d4 ~ bb3@4 ~@4", Q: "~@2 bb3 ~ d4 ~ eb4 ~ gb4@2 g4 ~ eb4@2 c4 ~", R: "bb3 ~ c4@4 bb3@4 ~@6",
  S: "bb3 ~ c4@4 bb3@4 bb4@2 c5@2 db5@2", T: "eb4@2 ~@5 eb5@2 ~@7",
})).s("gm_alto_sax").gain(0.3).pan(0.6)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  ~@5 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A B ~@2 A C D E@2 F D E@2 G H I@2 G H J@2 ~@19 K L ~@2 K L ~@2 K L
  ~@2 K L ~@2 K L ~@2 K L ~@2 K L ~@2 K M D E@2 F D E@2 G H I@2 G H J@2 G D E@2 F D E@2 G H I@2 G H J@2 ~@3 A B ~@2 A B
  ~@2 A B ~@2 A B ~@2 A B ~@2 K N
>`.pickRestart({
  A: "~@2 bb3!4 ~@2", B: "bb3 ~@2 bb3 ~@4", C: "bb3 ~@2 bb3 ~ bb3 a3 ab3", D: "g3 eb3 ~ f3 ~ d3 ~ eb3",
  E: "[~ bb2 ~ eb3 ~ g2 ~ bb2@5 ~@4]/2", F: "~@5 bb3 a3 ab3", G: "~@5 bb3!2 a3", H: "ab3 f3 ~ g3 ~ eb3 ~ f3",
  I: "[~ d3 ~ f3 ~ f3 ~ d3@5 ~@4]/2", J: "[~ d3 ~ f3 ~ f3 ~ eb3@5 ~@4]/2", K: "~@2 bb3 ~@3 bb3 ~ bb3@2 bb3 ~@5",
  L: "bb3 ~@5 bb3@2 ~@8", M: "bb3 ~@5 bb3@2 ~@2 bb3@2 bb3@2 a3@2", N: "bb3@2 ~@5 bb3@2 ~@7",
})).s("gm_baritone_sax").gain(0.42).pan(0.8)

// other · trumpet · "Bb Trumpet"
const trumpet = note(`<
  ~@5 A B ~@2 C D ~@2 C D ~@2 A B ~@2 A B ~@2 C D ~@2 C D ~@2 A E F G@2 H F I@2 J K I@2 J K L@2 ~@19 M N ~@2 O P ~@2 O P
  ~@2 M N ~@2 M N ~@2 O P ~@2 O P ~@2 M Q F G@2 H F I@2 J K I@2 J K L@2 J F G@2 H F I@2 J K I@2 J K L@2 ~@3 A B ~@2 C D
  ~@2 C D ~@2 A B ~@2 A B ~@2 M R
>`.pickRestart({
  A: "~@2 eb5!4 ~@2", B: "eb5 ~@2 eb5 ~@4", C: "~@2 d5!4 ~@2", D: "d5 ~@2 d5 ~@4", E: "eb5 ~@2 eb5 ~ bb4 c5 d5",
  F: "eb5 c5 ~ d5 ~ bb4 ~ c5", G: "[~ g4 ~ bb4 ~ eb4 ~ g4@5 ~@4]/2", H: "~@5 bb4 c5 d5",
  I: "[~ g4 ~ bb4 ~ a4 ~ ab4@5 ~@4]/2", J: "~@5 bb4 c5 db5", K: "d5 bb4 ~ c5 ~ ab4 ~ bb4",
  L: "[~ f4 ~ ab4 ~ g4 ~ g4@5 ~@4]/2", M: "~@2 eb5 ~@3 eb5 ~ eb5@2 eb5 ~@5", N: "eb5 ~@5 eb5@2 ~@8",
  O: "~@2 d5 ~@3 d5 ~ d5@2 d5 ~@5", P: "d5 ~@5 d5@2 ~@8", Q: "eb5 ~@5 eb5@2 ~@2 bb4@2 c5@2 db5@2",
  R: "eb5@2 ~@5 eb5@2 ~@7",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@5 A B ~@2 C D ~@2 C D ~@2 A B ~@2 A B ~@2 C D ~@2 C D ~@2 A E F G@2 H F G@2 H F G@2 H F G@2 ~@19 I J ~@2 K L ~@2 K L
  ~@2 I J ~@2 I J ~@2 K L ~@2 K L ~@2 I M F G@2 H F G@2 H F G@2 H F G@2 H F G@2 H F G@2 H F G@2 H F G@2 ~@3 A B ~@2 C D
  ~@2 C D ~@2 A B ~@2 A B ~@2 I N
>`.pickRestart({
  A: "~@2 g3!4 ~@2", B: "g3 ~@2 g3 ~@4", C: "~@2 f3!4 ~@2", D: "f3 ~@2 f3 ~@4", E: "g3 ~@2 g3 ~ bb3!3",
  F: "bb3!2 ~ bb3 ~ bb3 ~ bb3", G: "[~ bb3 ~ bb3 ~ bb3 ~ bb3@5 ~@4]/2", H: "~@5 bb3!3",
  I: "~@2 g3 ~@3 g3 ~ g3@2 g3 ~@5", J: "g3 ~@5 g3@2 ~@8", K: "~@2 f3 ~@3 f3 ~ f3@2 f3 ~@5", L: "f3 ~@5 f3@2 ~@8",
  M: "g3 ~@5 g3@2 ~@2 bb3@2 bb3@2 bb3@2", N: "g3@2 ~@5 g3@2 ~@7",
})).s("gm_trombone").gain(0.3).pan(0.9)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
  A B C D@6 E@8 D@8 E@8 D@8 E@8 D@8 E@8 D@8 E@8 D@8 E@8 D@8 E@8 D@8 E@8 D@8 E@8 D@2 E@2 D@2 E@2 F G
>`.pickRestart({
  A: "~@15 [gb4,g4]", B: "[ab4,a4,bb4,g5] g5 [bb4,g5] g5 [a4,gb5] gb5 [ab4,f5] f5",
  C: "[g4,bb4,eb5] [g4,eb5] ~ [bb3,d4,f4]@2 [d4,f4] ~ [d4,f4]", // Eb Cm Bb Dm
  D: "[[g3,bb3]@2 [g3,bb3]@2 [g3,c4] ~ g3 ~ [g3,bb3]@2 ~@2 [g3,c4]@2 [g3,bb3]@4 [g3,bb3]@2 [g3,c4] ~ g3 ~ [g3,bb3]@2 ~@2 [g3,c4]@2 [g3,bb3]@2]/2", // Gm C5 Gm C5 Gm C5 Gm C5 …
  E: "[[d3,f3]@2 [d3,f3]@2 [d3,g3] ~ d3 ~ [d3,f3]@2 ~@2 [d3,g3]@2 [d3,f3]@4 [d3,f3]@2 [d3,g3] ~ d3 ~ [d3,f3]@2 ~@2 [d3,g3]@2 [d3,f3]@2]/2", // Dm G5 Dm G5 Dm G5 Dm G5 …
  F: "[g3,bb3]@2 [g3,bb3]@2 [g3,c4] ~ g3 ~ [g3,bb3]@2 ~@2 [g3,c4]@2 [g3,bb3]@2", // Gm C5 Gm C5 Gm
  G: "[g3,bb3,eb4]@2 ~ [g3,bb3,eb4]@2 [g3,c4]@2 [bb3,eb4]@2 ~@7", // Eb C5 Eb5
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.3)

// chords · piano
const piano = note(`<
  ~@3 A B C D@2 E@3 F G@3 H@3 I J B C D@2 E@3 F G@3 H@3 I J B C D@2 K@3 F G@3 H@3 I J B C D@2 L@3 F G@3 H@3 I A B C D@2
  E@3 F G@3 H@3 I J B C D@2 E@3 F G@3 H@3 I J B C D@2 K@3 F G@3 H@3 I J B C D@2 E@3 F G@3 H@3 I A B C D@2 E@3 F G@3 H@3
  M N@3 M N@3 O
>`.pickRestart({
  A: "~@2 g3@2 [bb3,eb5,g5,bb5]@2 c4 bb3, eb3 ~@3, ~ [eb5,g5,bb5]@2 ~@5", // Eb
  B: "[eb3,eb5,g5,c6]@2 [eb5,gb5,b5] [eb5,bb5] bb3@2 c4 bb3, ~ g3 ~@2", // Cm B Eb5
  C: "~ eb6 f6 gb6 [eb6,g6]!12, eb3@2 g3@2 bb3@2 c4 bb3", // Eb
  D: "[[eb6,g6]!8 [eb6,g6]@2 [eb6,g6]@2 [c4,c6,f6]@2 bb3@2 eb3@4 g3@4 ~@2 [eb5,g5,bb5]@2 c4@2 [bb3,eb5,g5,bb5]@2, eb3@2 g3@2 bb3@2 ~ [bb5,eb6]@3 ~@2 bb3@2 ~@2]/2", // Eb F5 Eb Eb5
  E: "[eb3@4 [g3,g5,bb5]@4 [bb3,ab5,c6]@4 [c4,a5,db6]@2 [bb3,bb5]@2 bb5@2 [bb5,d6]!5 ~ f3@4 [g3,a5,db6]@2 f3@2 bb2@4 d3@4 ~@2 [bb4,d5,f5]@2 g3@2 [f3,bb4,d5,f5]@2, ~@14 d6@4 ~@5 [bb5,d6]@5 ~@2 [ab5,c6]@10 ~@8, ~@4 bb2 d3 ~@4 f3 ~]/3", // Gm Fm F Bb A7 Bb Ab
  F: "[bb5,d6]@2 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 d6, bb2@2 d3@2 f3@2 g3 f3", // Bb
  G: "[bb5 d6 bb5 d6 bb5 d6 bb5 ~ [f3,bb5,d6]@4 [g3,a5,db6]@2 f3@2 ~@4 d3@4 [f3,d5,f5,bb5]@4 [g3,d5,f5,bb5]@2 f3@2 bb2@4 [c5,g5]@2 [d5,ab5]@2 ~@2 [bb4,ab5]@2 g3@2 [f3,bb4,ab5]@2, bb2@2 d3@2 ~@3 [ab5,c6]@2 [d5,f5,ab5]@2 ~@4 [d5,ab5]@3 ~@6, ~@4 bb2 ~@4 d3 f3 ~]/3", // Bb A7 Bb Gm7 C5 Ddim Bb7 Ab …
  H: "[[bb5,d6]@2 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 ~ [bb2,bb5]@4 [d3,g5,bb5,d6]@4 [f3,gb5,a5,db6]@4 [g3,f5,ab5,c6]@2 f3@2 eb3@4 g3@4 [f5,c6]@2 [eb5,bb5]@2 [c4,d5,g5]@2 [bb3,c5,f5]@2, bb2@2 d3@2 f3@2 g3 f3 ~@12 bb3@2 ~@2, ~@15 d6@5 ~@10 [eb5,g5,bb5]@10 ~@8]/3", // Bb Gm Gbm Fm F5 Eb5 Csus2 Bbsus2 …
  I: "[bb4,eb5] [bb4,g5] ~ [bb4,g5] ~ [bb4,g5] [c4,a4,gb5] [bb3,ab4,f5], eb3 g3 bb3 ~", // Eb5 Eb Gbdim Bb7
  J: "[g4,eb5] ~ g3@2 [bb3,eb5,g5,bb5]@2 c4 bb3, eb3 ~@3, ~ [eb5,g5,bb5]@2 ~@5", // Cm Eb
  K: "[eb3@4 [g3,g5,bb5]@4 [bb3,ab5,c6]@4 [c4,a5,db6]@2 [bb3,bb5]@2 bb5@2 [bb5,d6]!5 ~ f3@4 [g3,a5,db6]@2 f3@2 bb2@4 [g5,a5]@2 [f5,ab5]@2 ~@2 [bb4,d5,f5]@2 g3@2 [f3,bb4,d5,f5]@2, ~@14 d6@4 ~@5 [bb5,d6]@5 ~@2 [ab5,c6]@6 ~@12, ~@4 bb2 d3 ~@3 d3 f3 ~]/3", // Gm Fm F Bb A7 Gsus2 Fm Bb …
  L: "[eb3@4 [g3,g5,bb5]@4 [bb3,ab5,c6]@4 [c4,a5,db6]@2 [bb3,bb5]@2 bb5@2 [bb5,d6]!5 ~ f3@4 [g3,a5,db6]@2 f3@2 bb2@4 [g5,b5]@2 ~@4 [bb4,d5,f5]@2 g3@2 [f3,bb4,d5,f5]@2, ~@14 d6@4 ~@5 [bb5,d6]@5 ~@2 [ab5,c6]@6 ~@2 [ab5,c6]@4 ~@6, ~@4 bb2 d3 ~@3 d3 f3 ~]/3", // Gm Fm F Bb A7 G Bb Ab
  M: "[bb4,eb5] [bb4,g5] ~ [bb4,g5] ~ [bb4,g5] [c4,c5,ab5] [bb3,db5,a5], eb3 g3 bb3 ~", // Eb5 Eb Fm Bbm
  N: "[[ab5,bb5,d6]@2 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 d6 bb5 ~ [bb2,bb5]@4 [d3,g5,bb5,d6]@4 [f3,gb5,a5,db6]@4 [g3,f5,ab5,c6]@2 f3@2 eb3@4 g3@4 [f5,c6]@2 [eb5,bb5]@2 [c4,d5,g5]@2 [bb3,c5,f5]@2, bb2@2 d3@2 f3@2 g3 f3 ~@12 bb3@2 ~@2, ~@15 d6@5 ~@10 [eb5,g5,bb5]@10 ~@8]/3", // Bb7 Bb Gm Gbm Fm F5 Eb5 Csus2 …
  O: "[bb4,g5]@2 ~ [bb4,g5]@2 [g3,bb4,f5]@2 [bb3,bb4,g5]@2 ~@7, eb3@3 ~@13", // Eb Gm7 Eb
})).s("gm_piano").gain(0.48).pan(0.7)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  ~@3 A B A B A C D E D E D E D F A B A B A B A C D E D E D E D F A B A B A B A C D E D E D E D F A B A B A B A C D E D
  E D E D F A B A B A B A C D E D E D E D F A B A B A B A C D E D E D E D F A B A B A B A C D E D E D E D F A B A B A B
  A C D E D E D E D F A B G@6 H@8 G I H@2 G I H@2 G J
>`.pickRestart({
  A: "eb2 bb1", B: "eb2@4 bb1@3 d2", C: "eb2@2 c2 b1", D: "bb1 f1", E: "bb1@4 f1@3 ab1", F: "bb1 c2 db2 d2",
  G: "eb2@3 g2@2 bb2 c3 bb2", H: "bb1@3 d2@2 f2 g2 f2", I: "eb2@3 g2@2 g2 ab2 a2", J: "eb2@2 ~ eb1@2 c2@2 eb2@2 ~@7",
})).s("gm_electric_bass_pick").gain(0.35)

// drums · kick
const kick = s("bd").struct("<~@3 [x ~@2 x!2 ~@3]!151 [x ~@6 x ~@8]>").gain(0.43)

// drums · rim
const rim = s("rim").struct("<[x!4]!3 [~ x ~ x]!151 [~@5 x ~@10]>").gain(0.43)

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

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@3 [x!8]!151 [x ~@2 x ~ x ~ x ~@8]>").gain(0.43)

// drums · crash
const crash = s("cr").struct("<~@3 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@15 A ~@22 B>".pickRestart({
  A: "x", B: "~@7 x ~@8",
})).gain(0.43)

stack(
  clarinet, alto_sax, baritone_sax, trumpet, trombone, electric_guitar_muted, piano, bass, kick, rim, snare, pedal_hat,
  crash
)

More by Chuck Berry