Strudelify

Small Town Bringdown

The Tragically Hip

KeyD majorTempo132 bpm
0:00/0:00
// Small Town Bringdown — The Tragically Hip
// 132 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 95 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// chords · distortion guitar · "Guitar 1"
const distortion_guitar = note(`<
  A B A C A B A C D@2 E@2 D@2 F@2 G@2 H@2 G@2 I J A B A K D@2 L@2 D@2 M@2 G@2 H@2 G@2 I J N@2 O@2 P@2 Q R A B A C A B A
  C D@2 L@2 D@2 M@2 G@2 H@2 G@2 I J A S A T A U A V A W A X A Y A Z AA@2 ~
>`.pickRestart({
  A: "d4 e4!2 d4 e4!2 d4 e4", B: "e4@2 d4@2 e4@2 e4@2 [e4,g4]@2 [e4,g4]@2 [e4,f#4]@3 ~", C: "e4 d4 e4!2 b3@3 ~",
  D: "[e3,g3,e4]!2 ~@2 [e3,g3,e4]!2 ~@2", E: "[[c3,e3] [d4,g4]@4 ~@2 [d4,f#4]@23 ~@2, ~ g3 ~@4 [d3,a3]@23 ~@3]/2",
  F: "[e3 [d4,g4]@4 ~@19 f#4@2 d4@2 a3@2 g3@2, ~ g3 ~@4 [d3,a3]@20 ~@6, ~@7 d4@19 ~@6]/2", // G5 D5
  G: "[[c3,e3] [d4,g4]@4 ~@2 [d4,f#4]@3 [d3,a3,d4,f#4]@2 ~@3 [g3,d4,g4]@3 [c3,e3,g3,d4,g4]@2 [c3,e3,g3,d4,g4]@2 [c3,e3,g3,d4,g4]@2 [d3,a3,d4,f#4]@5 ~ [g2,d3,g3,d4]@2, ~ g3 ~@4 [d3,a3]@4 ~@4 [c3,e3]@4 ~@14]/2", // C G5 D G5 C D G5 D5 …
  H: "~ [g3,d4]@5 [a2,e3,a3,c#4]@4 [a2,e3,a3,c#4]@4 [a2,e3,a3,c#4]@2, [g2,d3]@5 ~@11", // G5 A G5
  I: "~ [g3,d4]@6 ~ [g2,d3,g3,d4]@2 [g2,d3,g3,d4]@2 [g2,d3,g3,d4]@2 [g2,d3,g3,d4]@2, [g2,d3]@7 ~@9", J: "[a2,e3,a3]!8",
  K: "e4@3 b3@2 b3@3 b3@3 a3@2 g3@3", L: "[e3 [d4,g4]@4 ~@2 [d4,f#4]@23 ~@2, ~ g3 ~@4 [d3,a3]@23 ~@3]/2",
  M: "[[c3,e3] [d4,g4]@4 ~@19 f#4@2 d4@2 a3@2 g3@2, ~ g3 ~@4 [d3,a3]@20 ~@6, ~@7 d4@19 ~@6]/2", // C G5 D5
  N: "[~ [g3,c4]@27 [e3,g3,c4,g4]@2 [e3,g3,c4,g4]@2, [c3,e3]@27 ~@5]/2", // C5 C
  O: "[~@2 g4@20 [g3,b3,g4]@3 ~ [g3,b3,g4]@2 [d3,g3,b3,g4]@2 b3@2, [g2,b2]@11 ~@5, ~ [d3,g3,d4]@21 ~@10]/2", // G G5
  P: "[~ c4@30 ~, [e3,a3]@15 ~]/2", // A5
  Q: "[c3,e3,g3,c4,e4]@3 ~ [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2 [c3,e3,g3,c4,e4]@2", // C
  R: "[d3,a3,d4,f#4]!8", S: "[e4,a4]@2 g4@2 e4@2 g4 a4@6 ~ e4@2", T: "[e4,g5]@2 ~ e5@2 d5@2 ~ e5@2 ~ b4@2 [e4,d5]@2 ~",
  U: "[e4,d5] e5!2 d5 e5!2 d5 [e4,e5]", V: "e4@3 ~ e4@2 e4@2 e4@2 e4@2 e4@2 e4@2",
  W: "[e4,e5] d5 e5 d5 e5@2 e5@2 d5@2 b4 d5 e5@2 [e4,d5]@2", X: "[e4,e5]@2 e5@2 g5 e5 d5!2 e5@2 d5@3 ~ e4@2",
  Y: "[e4,e5] d5 b4 g4 e4@2 d4@2 e4@2 g4 b4 d5@2 [e4,e5]@2", Z: "d5@2 d5@6 d5@2 d5@3 ~@3", AA: "[[e4,b4]@29 ~@3]/2",
})).s("gm_distortion_guitar").gain(0.5).pan(0.6)

// chords · electric guitar muted · "Guitar 2"
const electric_guitar_muted = note(`<
  A B C D A E F G C H I J F@2 K L M@2 N O P Q R S C T F U V H W X V F W X Y Z AA AB AC AD AE AF AG@2 AH AI AJ AK AL AM F
  AN A D V T H G V@2 AO X C@2 AP J AQ Z O AR AS AT AU AV A AW F B H AX F E H AN F AY H AZ F U V BA BB
>`.pickRestart({
  A: "~@2 [e3,b3] ~@5 e3@2 b3@2 ~@2 b3 ~, e2@5 ~ e2@10, ~@4 e4@3 ~, ~@3 e3", // E5
  B: "[c3,c4] ~@3 g3@2 [g3,c4]@2 ~@2 [d3,a3,d4]@2 ~@2 [d3,a3,d4]@2, g3 c3@3 ~@4", // C C5 D5
  C: "~@2 [e3,b3] ~@3 e2@2 ~@2 e2@2 ~@2 b3 ~, ~@2 [e3,b3] e3", D: "~ [c3,g3,c4] ~ [c3,g3,c4] ~ [d3,a3,d4] ~ [d3,a3,d4]",
  E: "[c3,g3] ~ [c3,g3] ~@2 [d3,a3,d4] ~ [d3,a3,d4]", F: "~@2 [e3,b3] ~@3 e2@2 [e3,b3]@6 ~@2",
  G: "[c3,g3]@3 c2 [d3,a3]@3 d2", H: "~@2 [e3,b3]@2 ~@4 [e3,b3]@7 ~, ~@6 e2@9 ~",
  I: "[c3,g3] ~ [c3,g3] [d3,a3]@2 ~ [d3,a3] ~", J: "[d3,a3]@10 d2@2 d3@2 a3 ~",
  K: "[c3,d4] ~@3 g3 ~ a3@4 ~@2 a3@2 [a3,d4]@2, g3@2 c3@4 d3@3 ~ d3@6, ~@6 d4 ~@9", // Csus2 D5
  L: "~@2 [d3,a3]@2 ~@4 [d3,a3]@7 ~, ~@6 d2@9 ~", // D5
  M: "[[c3,g3,d4]@3 [d3,a3,d4]@4 [c3,g3,d4]@4 c2 [d3,a3,c#4,d4] d2 [d3,a3,d4] ~]/2", // Csus2 D5 Csus2 Dmaj7 D5
  N: "[g2,d3,g3] ~ g2@2 [d3,g3] ~ [a2,e3,a3]@8 ~@2", // G5 A5
  O: "[g2,d3,g3] ~ g2@2 [d3,g3] ~ [a2,e3,a3]@4 ~@2 [a2,e3,a3]@2 ~@2, ~@3 g#3 ~@4", // G5 A5
  P: "d4 g3 c3 ~ g3 ~ [d3,a3]@4 d2@2 [d3,a3,d4]@2 d4@2, ~@3 d4@2 ~ c#4@2 ~@8, ~@6 d4 ~@9", // D5
  Q: "~ g3 c3 ~ g3 c3 d4 g3 [d3,a3,d4] ~ d2@2 [d3,a3,d4]@2 [d3,a3,d4] ~, ~@3 d4@2 ~@11", // D5
  R: "~@2 [d3,g3] ~@3 g2@2 [d3,g3]@2 g2 ~@3 [g2,d3,g3] ~", S: "b2 ~ e3@4 a2@3 ~ a2 ~ a2@2 [e3,a3]@2, a2 ~@3",
  T: "[c3,g3] ~ [c3,g3] ~ [d3,a3]@3 d2", U: "[c3,g3]@3 c2 [d3,a3] ~ [d3,a3] ~", V: "[e3,b3]@10 e2@2 e3@2 b3 ~",
  W: "~ [c3,g3,d4] ~@3 [d3,a3,d4] ~ [d3,a3,d4]", // Csus2 D5
  X: "~@2 [d3,a3] ~@5 d3@2 a3@2 ~@2 a3 ~, d2@5 ~ d2@10, ~@4 d4@3 ~, ~@3 d3", // D5
  Y: "d4 g3 c3 ~ g3 ~ [d3,a3]@4 d2@2 [d3,a3,d4]@2 [c3,g3,d4]@2, ~@3 d4@2 ~ c#4@2 ~@8, ~@6 d4 ~@9", // D5 Csus2
  Z: "~@2 c2@2 [c3,g3,d4]@2 [c3,g3,d4] ~ d4 a3 d3 ~ a3 d3 d4 a3, ~@11 d4@2 ~@3", // Csus2
  AA: "[g2,d3,g3] ~ g2@2 [d3,g3] ~ [a2,e3,a3]@3 ~ a2@2 [e3,a3]@2 [a2,e3,a3] ~", // G5 A5
  AB: "g3 d3 g2 ~ d3 ~ [a2,e3,a3]@8 ~@2, ~@3 g3@2 ~@11", AC: "[c3,g3,d4]@6 d4@3 a3 d3 ~ a3 ~ d4 ~, ~@11 d4@2 ~@3",
  AD: "~ g3 c3 ~ g3 c3 d4 g3 [d3,a3,d4]@6 d2@2, ~@3 d4@2 ~@11", // D5
  AE: "~@2 [d3,g3] ~ [g2,d3,g3]@2 g2 ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~", // G5
  AF: "~@2 [e3,a3] ~@3 a2@2 [e3,a3]@2 a2 ~@3 [a2,e3,a3] ~", AG: "~@2 [c3,g3]@2 ~@4 [c3,g3]@7 ~, ~@6 c2@9 ~",
  AH: "~@2 [g2,d3] ~@3 g2@2 d3@6 ~@2", AI: "~@2 [g2,d3] ~@3 g2@2 ~@2 g2 ~ g2 ~ d3 ~, ~@2 d3 ~",
  AJ: "~@2 e3 ~@5 e3@7 ~, ~@6 a2@9 ~", AK: "[a2,e3]@11 ~ a2 ~ e3 ~",
  AL: "~@2 [c3,g3] ~@3 c2@2 ~@2 c2@2 ~@2 g3 ~, ~@2 [c3,g3] c3", AM: "~@2 [d3,a3] ~@3 d2@2 [d3,a3]@6 ~@2",
  AN: "[c3,g3]@3 c2 ~ [d3,a3,d4] ~ [d3,a3,d4]", AO: "[c3,g3]@3 [d3,a3]@2 ~ [d3,a3] ~",
  AP: "[c3,g3]@2 ~@2 [c3,g3]@2 [d3,d4]@3 ~@3 a3@2 [a3,d4]@2, ~@3 a3@2 d3@3", // C5 D D5
  AQ: "[c3,g3,d4] ~ c2@2 [c3,g3,d4] ~ [d3,a3,d4]@4 d2@2 [d3,a3,d4]@2 [c3,g3,d4]@2, ~@3 c#4 ~@4", // Csus2 D5 Csus2
  AR: "[g2,d3,f#3,g3] ~ [g2,d3,g3] [a2,e3,a3]@4 ~", AS: "[c3,g3,d4] ~ c2@2 [c3,g3,d4] ~ [d3,a3,d4]@8 d4@2",
  AT: "~ g3 c3 ~ g3 c3 d4 g3 [d3,a3,c#4,d4]@2 d2@2 [d3,a3,d4]@2 ~@2, ~@3 d4@2 ~@11", // Dmaj7 D5
  AU: "~@2 g3 ~ d3@2 ~@2 g3 ~ g2 g3 ~ g2 g3 d3, g2@9 d3@2 ~ d3@2 ~@2",
  AV: "~@2 [e3,a3] ~ [a2,e3,a3]@2 a2 ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~ [a2,e3,a3] ~", // A5
  AW: "[c3,g3] ~ [c3,g3] ~ [d3,a3] ~ [d3,a3] ~", AX: "[c3,c4] ~@3 g3 ~ [d3,d4]@3 ~@3 a3@2 [a3,d4]@2, g3 c3@2 a3@2 d3@3",
  AY: "[c3,c4] ~@3 g3@2 [g3,c4]@2 [d3,a3]@2 ~@2 [d3,a3]@2 ~@2, g3 c3@3 ~@4", // C C5 D5
  AZ: "[c3,c4] ~@3 g3 ~ [d3,a3]@8 d2@2, g3 c3@2 ~@5", BA: "[e3,b3,e4]@15 ~", BB: "[e3,b3,e4] ~@15",
})).s("gm_electric_guitar_muted").gain(0.32)

// chords · electric guitar muted · "Guitar 2" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@2 A ~@2 B C ~ A D E ~ C@2 ~ F ~@6 G H A B C I ~ D ~@3 C ~@8 J K L@2 M N O ~ P Q C ~@4 B D ~@3 I ~ A@2 B ~@8 R ~ E C
  ~ D ~ C B D ~ C I D ~ C I ~@3
>`.pickRestart({
  A: "e2 ~@11 b3 ~@3", B: "~@3 c2 ~@12", C: "~@2 a#3 ~@13", D: "e2@5 ~@11", E: "~@3 c2 ~@7 d2 ~@4", F: "d2@5 ~@11",
  G: "g2@3 ~@9 g2 ~@3", H: "~@7 f3 ~@8", I: "~@11 d2 ~@4", J: "g2@3 ~@13", K: "a2@3 ~@9 a2 ~@3", L: "c2@5 ~@11",
  M: "~@2 c#3 ~@13", N: "g2 ~@11 d3 ~@3", O: "a2 ~@3", P: "c2 ~@11 g3 ~@3", Q: "~@2 g#3 ~@13", R: "a2@3 ~@13",
})).s("gm_electric_guitar_muted").gain(0.16)

// bass · fretless bass · "Bass"
const bass = note(`<
  A B A B A B A B C D E F C D E F G H I J K L M N A B A B C D E F C D E F G H I J K L M N O P Q R S T U V A B A B A B A
  B C D E F C D E F G H I J K L M N A B A B A B A B A B A B A B@2 W X@2 ~
>`.pickRestart({
  A: "e2@3 ~ d2@2 e2@2 e2@2 d2@2 e2@2 d2@2", B: "c2@2 b1@2 a1@2 d2@3 ~ d2@2 b1@2 d2@2",
  C: "e2@2 ~ e2 e2@2 d2@2 e2@2 ~ e2 e2@2 d2@2", D: "~ e2!2 d2 e2 e2@3", E: "c2@5 ~ d2@10",
  F: "d2@5 ~ f#2 g2 f#2@2 e2@2 d2@2 d2@2", G: "c2@2 ~ d2@2 d2@2 c2", H: "~ c2!2 d2 d2@3 e1",
  I: "g1@3 ~ e1@2 a1@5 ~ a1@2 e1@2", J: "g1@3 ~ e1@2 a1@5 ~ a1@3 ~", K: "c2@3 ~@3 d2@3 ~ d2@2 ~@2 c2@2",
  L: "~@2 c2@2 c2@2 c2@2 d2@3 ~@3 e1@2", M: "g1@3 ~ g1@3 ~ g1@2 g1@2 g1@2 g1@2", N: "a1!8", O: "c2@5 ~ g2@5 ~ g1@3 ~",
  P: "c2@5 ~ g2@5 ~ c2@3 ~", Q: "g1@5 ~ d2@10", R: "g1@5 ~ g1@5 ~ g#1@3 ~", S: "a1@5 ~ e2@10",
  T: "a1@5 ~ a1@5 ~ b1@3 ~", U: "c2@5 ~ c2@3 ~ c2@2 c2@2 c2@2", V: "d2!8", W: "c2!2 ~@2 d2!2 ~@2", X: "[e1@29 ~@3]/2",
})).s("gm_fretless_bass").gain(0.5)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@15 A ~@11 B ~@15 B ~@15 C ~@7 C ~@7 D ~@15 D ~@3>".pickRestart({
  A: "~@3 x", B: "~@3 x!5", C: "~@4 x ~@4 x ~@2 x ~@3", D: "~@7 x",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@10 A ~@3 A ~ B ~ A@2 B ~@9 A ~@3 A ~ B ~ A@2 B ~@21 A ~@3 A ~ B ~ A@2 B ~@2 C ~@5 A ~ A ~@5 A ~ C ~@3
>`.pickRestart({
  A: "~@3 x ~@4", B: "~@3 x ~@3 x", C: "x!4",
})).gain(0.54)

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 A ~@43 B ~@7 B ~@7 C ~@15 C ~@3>".pickRestart({
  A: "~@3 x ~@4", B: "~@4 x ~@4 x ~@2 x ~@3", C: "~@13 x ~@2",
})).gain(0.54)

// drums · open hat
const open_hat = s("oh").struct(`<
  A@4 B A@2 ~ A@7 ~@9 A@2 B C A@7 ~@8 C A@7 ~ A@7 ~ A@4 B A@2 ~@9 A@6 B ~ A@7 ~ A D ~
>`.pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x!2 ~@2 x ~@3", C: "x", D: "~ x!3",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@15 x ~@79>").gain(0.6)

// drums · crash
const crash = s("cr").struct(`<
  A ~@6 B A ~@7 A ~@7 A ~@2 C A ~@7 A ~@6 C A ~@6 B A ~@7 A ~@7 A ~@7 A ~@6 B A ~@7 A@3
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~ x ~@2",
})).gain(0.6)

// drums · ride
const ride = s("rd").struct("<~@16 A B A C A@3 ~@13 A B A@5 ~@25 A@2 D A@4 ~@20>".pickRestart({
  A: "x!4", B: "x ~@3 x ~@3 x ~ x!3 ~ x!2", C: "x ~ x!3 ~ x ~", D: "x ~@3 x ~@2 x!2 ~@3 x ~@3",
})).gain(0.54)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 A@7 ~@4 A ~@8 A@8 ~@24 A@7 ~@20>".pickRestart({
  A: "x!8",
})).gain(0.42)

stack(
  distortion_guitar, electric_guitar_muted, electric_guitar_muted_2, bass, kick, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash, ride, tambourine
)

More by The Tragically Hip