Strudelify

o little town of bethlehem

Brooks Garth

KeyB majorTempo72 bpm
0:00/0:00
// o little town of bethlehem — Garth Brooks
// 72 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5874713; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(72/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z J AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AC AP AQ AR AS AT
>`.pickRestart({
  A: "~@3 f#4", B: "[d4,f#4] a3 [d4,f#4] a3 [g#3,d4,f4]@2 [a3,d4,f#4] f#4, [d1,d2]@15 ~",
  C: "a4@2 g4@2 b3 g3 b3 e4, [g1,g2,b3,d4] [e1,e2]", D: "[f#3,a3,d4] f#3 d4 a3 [g3,c#4,e4] a3 c#4 a3, [a1,a2]@15 ~",
  E: "[a3,d4,f#4]@2 a3@2 e4 [e4,f#4] d4@2 a3@4 d4@2 f#4@2, [d1,d2]@15 ~", // D Esus2 D
  F: "[d3,a3,d4,f#4]@2 [c3,a3,e4,f#4]@2 d#4 f#4 b3 [d#4,a4], ~ [b1,b2], ~@4 b4@3 ~", // D F#m7b5 D#dim B
  G: "a4 g4 f#4 e4, [e1,e2,e4,b4] [g1,g2,b3,d4]", H: "[f#3,d4] a3 [f#3,c#4] d4 [g3,c#4,f#4] a3 c#4 [g3,e4], [a1,a2]!2",
  I: "[f#3,d4]@2 a3@2 [a3,d4,g4]@2 [g3,e4]@2 [a3,e4] f#4 a3@2 d4@2 f#4@2, [d1,d2]@15 ~", // D Dsus4 C A5 D
  J: "[a3,d4,f#4] a3 [d4,f#4] a3 [e1,e2,b3,d4,g4]@2 [f1,f2,g#3,b3,d4]@2, [d1,d2] ~", // D Em7 Fdim D
  K: "[f#3,a#3,c#4]@2 a#3@2 c#4@2 f#4@2 ~ [c#4,f#4]@3 [a#3,c#4]@2 c#4@2, [f#1,f#2]@15 ~, ~@2 [f#3,a#3] ~", // F# F#5 A#m F#
  L: "[f#3,b3] [f#3,c#4] [f#3,b3,d4] [g1,g2,g3,b3,e4], [b1,b2]@11 ~@5", // B5 F#5 Bm Em B
  M: "[b3,c#4,f#4] f#3 b3 f#4 [a#3,c#4]@3 f#4, [f#1,f#2]@15 ~", // Bsus2 A#m F#
  N: "[a3,d4,f#4] a3 [d4,f#4] a3 [c#4,f4]@2 c4 f#4, [d1,d2]@15 ~", // D C# D
  O: "[b3,d4,a4] [b3,d4,g4] [e1,e2,g3,b3] [g#1,g#2,d4,f4,b4], [g1,g2] ~", // Bm7 G Em G#dim G
  P: "[a3,d4,f#4,a4] ~ d4!2 [g3,c#4,f#4] g3 a3 e4, a2 [a1,a2], ~ a3@3 ~@4", // D F# A
  Q: "[f#3,d4] a3 [f#3,d4] a3 [b3,d4,e4] a3 ~ [a1,a2], [d1,d2]@3 [f#3,d4]", // D E7 A D
  R: "[f#3,d4] a3 [f#3,d4] a3 [b3,d4,e4] a3 [a1,d4,f#4]@2, [d1,d2]@11 ~@5", // D E7 D
  S: "[d4,f#4] a3 [d4,f#4] a3 [c#4,f4]@2 [a3,c4,f#4]@2, [d1,d2]!2", // D C# F#dim D
  T: "[b3,d4,a4]@2 [b3,d4,g4]@2 b3 g3 b3 e4, [g1,g2] [e1,e2]", // Bm7 G E
  U: "[f#3,a3,d4] f#3 d4 a3 [g3,c#4,e4] a3 [c#4,e4] a3, a1!2", // D C#dim C#m
  V: "[a3,d4,f#4] d4 a4 f#4!2 d4 e4 [b3,f#4], [d1,d2]@2 [f#1,f#2]!2", // D B5 D F#
  W: "[d2,d3,a3,d4,f#4]@2 [c2,c3,a3,e4,f#4]@2 [d#4,f#4,b4]@2 [d#4,f#4,a4] a4, ~ [b1,b2]", // D F#m7b5 B D#dim B
  X: "[b3,d4,a4]@2 ~ [f#1,f#2] [g3,b3]@2 d4 b4, [e1,e2]@3 ~ [g1,g2]@4, ~ [b3,d4,g4] ~@2", // Bm7 F# G E G
  Y: "[d4,f#4,a4] f#3 a3 d4 [g3,c#4,f#4] g3 a3 e4, a1!2", // D F#
  Z: "[g3,b3,d4] b3 [b3,d4,g4] a3 [a3,d4,f#4] a3 d4 f#4, [d1,d2]!2", // G D
  AA: "[f#3,a#3,c#4] c#4 f#4 g#4 [c#4,f#4,a#4]@2 f#4 c#4, [f#1,f#2]!2", // F#
  AB: "[f#3,b3] [f#3,c#4] [g3,b3,d4] [g3,b3,e4], [b1,b2] [g1,g2]", // B5 F#5 G Em B G
  AC: "[b3,c#4,f#4] f#3 c#4 f#4 [a#3,c#4]@2 e4 f#4, [c#1,c#2] [f#1,f#2]", // Bsus2 A#m C# F#
  AD: "[a3,d4,f#4] a3 [d4,f#4] a3 [c#4,f4]@2 c4 f#4, [d1,d2]!2", // D C# D
  AE: "[b3,d4,a4]@2 [b3,d4,g4]@2 [g3,b3]@2 d4 b4, [g1,g2] [e1,e2]", // Bm7 G E
  AF: "[d4,f#4,a4] a3 d4!2 [g3,c#4,f#4] g3 a3 e4, a1!2", AG: "[f#3,d4] a3 d4 a3 f#4 a3 d4 f#4, [d1,d2]@2 a2 a1",
  AH: "[d4,f#4] a3 [d4,f#4] a3 [c#4,f4]@2 [a3,c4,f#4]@2, d2!2", AI: "[b3,d4,a4]@2 [b3,d4,g4]@2 b3 g3 b3 e4, g2 e2",
  AJ: "[f#3,a3,d4]@2 a3@2 d4@2 c#4 d4 [g3,c#4,e4]@2 a3@2 c#4@2 a3@2, a1!2", // D C#dim
  AK: "[f#3,a3,d4]@2 f#3@2 a3@2 c#4 d4 [g3,c#4,f#4]@2 a3@2 [c#4,e4]@4, a1!2", // D F# C#m
  AL: "[g3,a3,d4] b3 [b3,g4] d4 [a3,d4,f#4] a3 d4 f#4, d2@2 d2 a1", // Gsus2 Em D
  AM: "[a3,d4,f#4] a3 [d4,f#4] a3 [e1,e2,g3,b3,e4]@2 [f1,f2,g#3,b3,d4]@2, [d1,d2]!2 ~@2", // D Em Fdim D
  AN: "~ c#4 a3@2 c#4@2 f#4@2 [a3,c#4]@4 c#4@2 f#3@2, [f#1,f#2]!2, [f#3,a3] ~@7", // A F# F#m
  AO: "[f#3,b3] [e3,a3,c#4] [f#3,d4,f#4] [g3,b3,e4], [b1,b2] [g1,g2]", // B5 A D Em B G
  AP: "[a3,d4,f#4] a3 d4 f#4 [c#4,f4]@2 [a3,c4,f#4]@2, [d1,d2]!2", // D C# F#dim D
  AQ: "[d4,a4] ~ g4@2 [g3,b3]@3 b4, [g1,g2] [e1,e2], ~ b3@3 ~@4", AR: "[d4,f#4,a4] a3 d4@2 [g3,c#4,f#4] g3@2 e4, a1!2",
  AS: "[b3,d4,g4] b3 d4 g4 [b3,d4,g4] b3 [g3,b3,e4]@2, [d1,d2]@15 ~", AT: "[d2,a2,d3,a3,d4,f#4]@15 ~",
})).s("gm_piano").gain(0.3)

stack(piano)

More by Brooks Garth