Strudelify

I Was Made for Dancin'

Leif Garrett

KeyB minorTempo131 bpm
0:00/0:00
// I Was Made for Dancin' — Leif Garrett
// 131 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 11, 3/4 at bar 15, 4/4 at bar 16) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(131/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 · epiano1
const epiano1 = note(`<
  ~ A@3 B@4 C@7 D@7 ~ E@8 F G@3 H@7 I@6 J@8 K L M@3 ~@7 N@6 O@8 P@3 ~ Q@8 R@8 S T U@2 ~@2
>`.pickRestart({
  A: "[~@12 [b4,d5]@15 [a4,c#5] [a4,c#5]@7 [e4,a4] c#5@6 d4 [d4,f#4] [d4,f#4,b4]@4, ~@6 f#5@7 ~ e5@3 ~ [e4,a4]@4 ~@2]/3", // Bm A A5 D Bm A5
  B: "[[b3,f#4,d5]@28 [b4,d5]@15 [a4,c#5] [a4,c#5]@7 [e4,a4] c#5@6 d4 [d4,f#4] [d4,f#4,b4]@4, ~@14 f#5@7 ~ e5@3 ~ [e4,a4]@4 ~@2]/4", // Bm A A5 D Bm A5
  C: "[[b3,d5,f#5]@14 [b3,d4,f#4]@8 [a3,c#4,e4]@3 [g3,b3,d4,e4]@5 [a3,c#4,e4]@3 [b3,d4,f#4]@5 [a3,c#4,e4]@3 [g3,b3,d4]@5 [b3,d4,f#4]@8 [a3,c#4,e4]@2]/7", // Bm A Em7 A Bm A G Bm …
  D: "[~ [g3,b3,d4]@5 [e3,a3,c#4]@3 [f#3,b3,d4]@5 [e3,a3,c#4]@3 [d3,g3]@37 ~@2, ~ e4@8 ~@8 b3@33 ~@6]/7", // G A Bm A G5
  E: "[c7 [g6,a6,b6] [c6,d6,e6,f6] [f5,g5,a5,b5] [a4,c5,e5] ~@9 f#5@3 f#5@3 f#5@4 e5@12 e5@4 f#5@4 [c#5,e5]@4 d5 c#5@3 [d4,f#4,b4]@16 f#5@10 f#5@3 f#5@3 f#5@4 e5@12 e5@4 f#5@4 [c#5,e5]@4 d5 c#5@3 [d4,f#4,b4]@10 [a4,c#5,e5]@2, ~ [b4,d5]@4 [a4,c#5]@4 g4@4 ~@4 [b4,d5]@4 [a4,c#5]@4 g4@4 ~@3, ~@2 f#5@5 ~@11 [a4,c#5]@4 a3@4 ~@24 [a4,c#5]@4 a3@4 ~@6]/8", // G Dm7 G7 Am C#m Bm C#m Bm …
  F: "~ [g4,b4,d5]@2 [g4,b4,d5]!4 [a4,c#5,e5]", // G A
  G: "[~ [g4,b4,d5]@2 [g4,b4,d5]!4 [a4,c#5,e5]@3 [d5,f#5]@14, ~@5 b4@6 ~]/3", // G A D
  H: "[~@2 [b3,d4,f#4]@8 [a3,c#4,e4]@3 [g3,b3,d4,e4]@5 [a3,c#4,e4]@3 [b3,d4,f#4]@5 [a3,c#4,e4]@3 [g3,b3,d4]@5 [b3,d4,f#4]@8 [a3,c#4,e4]@3 [g3,b3,d4]@5 [e3,a3,c#4]@3 [f#3,b3,d4]@3, ~@45 e4@8 ~@3]/7", // Bm A Em7 A Bm A G Bm …
  I: "[~@2 [e3,a3,c#4]@3 [d3,g3]@37 ~@6, ~@5 b3@33 ~@10]/6", // A G5
  J: "[~@8 c7 [g6,a6,b6] [e6,f6] [b5,c6,d6] [f5,g5,a5] ~@9 f#5@3 f#5@3 f#5@4 e5@12 e5@4 f#5@4 [c#5,e5]@4 d5 c#5@3 [d4,f#4,b4]@16 f#5@10 f#5@3 f#5@3 f#5@4 e5@12 e5@4 f#5@4 [c#5,e5]@4 d5 c#5@3 [d4,f#4,b4]@4, ~@3 [b4,d5]@4 [a4,c#5]@4 g4@4 ~@4 [b4,d5]@4 [a4,c#5]@4 g4@4 ~, ~@6 f#5@5 ~@11 [a4,c#5]@4 a3@4 ~@24 [a4,c#5]@4 a3@4 ~@2]/8", // G Fmaj7 Bm F C#m Bm C#m Bm …
  K: "~@3 [a4,c#5,e5]@2 [g4,b4,d5]@2 [g4,b4,d5]", L: "[g4,b4,d5]!3 [a4,c#5,e5]@2 [g4,b4,d5]@2 [g4,b4,d5]",
  M: "[[g4,b4,d5]!3 [a4,c#5,e5]@3 [b4,f#5]@16 ~@2, ~@2 d5@5 ~]/3", // G A B5
  N: "[~@3 [b4,d5,f#5]@4 [a4,c#5,e5]@2 [e4,a4,c#5]@2 [d4,f#4,b4]@8 [b4,d5,f#5]@4 [a4,c#5,e5]]/6", // Bm A Bm A
  O: "[~ [e4,a4,c#5]@2 [d4,b4]@8 [b4,d5,f#5]@4 [a4,c#5,e5]@2 [e4,a4,c#5]@2 [d4,f#4,b4]@8 [b4,d5,f#5]@4 [a4,c#5,e5], ~@6 f#4@17 ~@41]/8", // A G Bm A Bm A
  P: "[~@2 [e4,a4,c#5]@4 [d4,f#4,b4]@13 [b3,e4,g#4]@3 ~@2]/3", // A Bm E
  Q: "[~@8 c7 [g6,a6,b6] [d6,e6,f6] [a5,b5,c6] [e5,f5,g5] ~@9 f#5@3 f#5@3 f#5@4 e5@12 e5@4 f#5@4 [c#5,e5]@4 d5 c#5@3 [d4,f#4,b4]@16 f#5@10 f#5@3 f#5@3 f#5@4 e5@12 e5@4 f#5@4 [c#5,e5]@4 d5 c#5@3 [d4,f#4,b4]@4, ~@3 [b4,d5]@4 [a4,c#5]@4 g4@4 ~@4 [b4,d5]@4 [a4,c#5]@4 g4@4 ~, ~@6 f#5@5 ~@11 [a4,c#5]@4 a3@4 ~@24 [a4,c#5]@4 a3@4 ~@2]/8", // G Dm Am Em C#m Bm C#m Bm …
  R: "[~@6 [a4,c#5,e5]@6 f#5@10 f#5@3 f#5@3 f#5@4 e5@12 e5@4 f#5@4 [c#5,e5]@4 d5 c#5@3 [d4,f#4,b4]@16 f#5@10 f#5@3 f#5@3 f#5@4 e5@12 e5@4 f#5@4 [c#5,e5]@4 d5 c#5@3 [d4,f#4,b4]@4, ~@3 [b4,d5]@4 [a4,c#5]@4 g4@4 ~@4 [b4,d5]@4 [a4,c#5]@4 g4@4 ~, ~@11 [a4,c#5]@2 a3@2 ~@12 [a4,c#5]@2 a3@2 ~]/8", // A C#m Bm C#m Bm A Bm A
  S: "~@3 [a4,c#5,e5]@2 [g4,b4,d5]@2 [b4,d5], ~@14 g4 ~", // A G Bm
  T: "[b4,d5]!3 [a4,c#5,e5]@2 [g4,b4,d5]@2 [b4,d5], ~@4 g4 ~@11", // Bm A G Bm
  U: "[[b4,d5]!3 [a4,c#5,e5]@3 [b4,d5,f#5]@8 ~@2, ~@4 g4 ~@27]/2", // Bm A Bm
})).s("gm_epiano1").gain(0.25)

// bass · electric bass finger
const bass = note(`<
  ~ A B C D E B C D E F G H I J K H L M@3 N O P Q R S T Q R U@5 V W X Y Z AA X AB M@3 AC AD AE AF R AG T AF R AH AI AJ
  AK@3 ~@7 AL AM AN AO@2 AM AN AP AQ B C D E B C D AR AS AE AF R AG T AF R AG AT AF R AG T AF R AH AI AJ AU@4
>`.pickRestart({
  A: "~@4 b2@3 d2 f#2@2 a2@2 b2@3 ~", B: "f#2@3 ~ b2@2 ~ f#2 a2@2 b2@2 b2@3 ~",
  C: "f#2@3 ~ b2@2 ~ f#2 a2@2 b2@2 b1@2 ~@2", D: "b1@6 b2 ~ c#3 ~ d3@3 ~ b1 ~",
  E: "b1@3 b1 b1@2 f#2@2 f#1@2 a1@2 b2@3 ~", F: "f#2@3 ~ b2@3 f#2 a2@2 b2@2 e2@3 ~",
  G: "a2@2 d2@4 g2@2 d3@3 ~ c#3@3 b2", H: "a2@2 d3@4 f#2 ~ d2 ~ f#2@2 a2@3 e2", I: "c#2@2 g2@4 d2@2 g1@3 ~ b1@3 ~",
  J: "f#1@3 ~ b1@3 f#1 a1@2 b1@2 e2@3 ~", K: "a1@2 g1@4 g2@2 d3@3 ~ c#3@3 b2", L: "c#2 g2@2 g1 g2@2 g1@2",
  M: "g2 g1 g2 g1", N: "g2@4 f#2!5 ~ f#2@4 a2@2", O: "e2@4 f#2!5 ~ f#2@4 b1@2",
  P: "d2@2 e2@2 b2@3 d2 f#2@2 a2@2 b2@3 d2", Q: "f#2@2 a2@2 e2@3 a1 c#2@2 d2@2 e2@3 a1",
  R: "c#2@2 d2@2 e2@3 a1 c#2@2 d2@2 e2@3 a1", S: "c#2@2 d2@2 b2@3 d2 f#2@2 a2@2 b2@3 d2",
  T: "f#2@2 a2@2 b2@3 d2 f#2@2 a2@2 b2@3 d2",
  U: "[c#2@2 e2@2 b2@3 d2 f#2@2 a2@2 b2@2 a2@4 g1@4 b1@2 d2@2 b1@2 g1@2 a1@4 g1@4 b1@2 d2@2 b1@2 g1@2 a1@6 b1@23 ~@3 c#2@2]/5",
  V: "e2@2 a2@2 b2@3 ~ f#2@3 ~ b2@3 f#2", W: "a2@2 b2@2 e2@3 ~ a2@2 d2@4 g2@2", X: "d3@3 ~ c#3@3 b2 a2@2 d3@4 f#2 ~",
  Y: "d2 ~ f#2@2 a2@3 e2 c#2@2 g2@4 d2@2", Z: "g1@3 ~ b1@3 ~ f#1@3 ~ b1@3 f#1", AA: "a1@2 b1@2 e2@3 ~ a1@2 g1@4 g2@2",
  AB: "d2 ~ f#2@2 a2@3 e2 c#2@2 g2@4 g1@2", AC: "g2@4 g1@4 g2@4 f#2!4", AD: "f#2 ~ f#2@4 a2@2 e2@4 f#2!4",
  AE: "f#2 ~ f#2@4 b1@2 d2@2 e2@2 b2@3 d2", AF: "f#2@2 a2@2 b2@3 d2 f#2@2 a2@2 e2@3 a1",
  AG: "c#2@2 d2@2 e2@3 a1 c#2@2 d2@2 b2@3 d2", AH: "c#2@2 d2@2 e2@3 a1 c#2@2 e2@2 b2@3 d2",
  AI: "f#2 a2 b2 a2@2 g1@2 b1", AJ: "d2 b1 g1 a1@2 g1@2 b1",
  AK: "[d2@2 b1@2 g1@2 a1@6 b1@16 d3 b2 g2 d2@2 g2 d2 b1 a2 e2 c#2 a1 e2 c#2 a1 b1@2 ~@3]/3", AL: "~@8 a1@4 b2!2 ~@2",
  AM: "~@2 b2!2 ~@4 a2 b2@3 a2!2 ~@2", AN: "~@2 a2!2 ~@4 a2 b2@3 b1@2 ~@2", AO: "[b1@12 d2@8 a1@8 b2!2 ~@2]/2",
  AP: "b1@10 d3@3 ~ b1 ~", AQ: "b1@3 b1!2 ~ a1@2 e1@2 a1@2 b2@3 ~", AR: "b1@3 b1 b1@2 e2@6 f#2!4",
  AS: "f#2 ~ f#2@2 ~@8 f#2!4", AT: "f#2@2 a2@2 b2@2 a1@6 b2@3 d2", AU: "[d2 b1 g1 a1@3 b1@19 ~@7]/4",
})).s("gm_electric_bass_finger").gain(0.4)

// other · string ensemble 2
const string_ensemble_2 = note("<~@2 A B C@2 D B C@2 ~@13 E@8 ~@17 F@8 G ~@13 H I@11 J ~@3 F@8 K@8 G ~@5>".pickRestart({
  A: "f#4 a4 b4 c#5 d5 c#5 d5@7 ~ e5 c#5", B: "a4@2 c#5 a4 e4@2 a4 e4 a3 b3 c#4 a3 b3@2 ~@2",
  C: "f#5 ~ f#5 ~ f#5 ~ f#5 ~", D: "f#4 a4 b4 c#5 d5 c#5 d5@8 e5 c#5",
  E: "[~@2 [b4,d5,f#5]@8 a4@8 g4@8 [f#4,d5,f#5]@8 [b4,d5,f#5]@8 a4@8 g4@8 [f#4,d5,f#5]@5 [a4,c#5,e5], ~@5 [c#5,e5]@8 ~@8 [c#5,e5]@8 ~@3]/8", // Bm D Bm D A C#m
  F: "[~@3 [b4,d5,f#5]@4 a4@4 g4@4 [f#4,d5,f#5]@4 [b4,d5,f#5]@4 a4@4 g4@4 [f#4,d5,f#5], ~@7 [c#5,e5]@8 ~@8 [c#5,e5]@8 ~]/8", // Bm D Bm D C#m
  G: "~@3 [a4,c#5,e5]@2 ~@3", H: "~@6 d5 c#5 d5 c#5 b4@4 d5 c#5", I: "d5 c#5 b4@4 d5 c#5 d5 c#5 b4@4 d5 c#5",
  J: "d5 c#5 b4@4 d5 c#5 d5 ~@7",
  K: "[~@3 [a4,c#5,e5]@3 [b4,d5,f#5]@8 a4@8 g4@8 [f#4,d5,f#5]@8 [b4,d5,f#5]@8 a4@8 g4@8 [f#4,d5,f#5]@2, ~@7 [c#5,e5]@8 ~@8 [c#5,e5]@8 ~]/8", // A Bm D Bm D C#m
})).s("gm_string_ensemble_2").gain(0.2).pan(0.6)

// other · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@68 A B C ~@11 D B C ~@23>".pickRestart({
  A: "~@14 d5 c#5", B: "d5 c#5 b4@4 d5 c#5 d5 c#5 b4@4 d5 c#5", C: "d5 c#5 b4@4 ~@10", D: "~@9 c#5 b4@4 d5 c#5",
})).s("gm_string_ensemble_2").gain(0.1).pan(0.6)

// chords · trombone
const trombone = note(`<
  ~@4 A B ~@2 A C ~@8 D E F@2 G H I ~ J H I ~ K@4 ~@10 L@3 M N O P Q R O P Q S ~@11 T@4 U@4 V@3 W@4 X@2 Y N O P Q R O P
  Q Z O P Q R O P Q AA AB AC ~@3
>`.pickRestart({
  A: "b4@6 [b3,b4] ~ [c#4,c#5] ~ [d4,d5]@3 ~ [d4,d5] ~", B: "[c#4,c#5]@3 ~ [a3,a4] ~ [f#3,f#4]@3 ~ [b3,b4]@3 ~@3",
  C: "[c#4,c#5]@3 ~ [d4,d5] ~ [c#4,c#5]@3 ~ [b3,b4]@3 ~@3", D: "~@6 [c#5,f#5] [d5,g5]", E: "~ [d5,g5]@5 d5 ~",
  F: "[~@2 d5@8 d5@2 [c#5,f#5]@2 [d5,g5]@6 [c#5,f#5]!4 [c#5,f#5]@2 [c#5,f#5]@2 ~@2 a4@2]/2", // F#5 G5 F#5
  G: "e4@4 [c#5,f#5]!4 [c#5,f#5]@2 [c#5,f#5]@2 ~@4", H: "~@4 f#5@2 ~@2 f#5@3 [a4,e5] [b4,f#5]@2 ~@2",
  I: "~@10 [b4,f#5]!2 [b4,f#5]@2 ~@2", J: "~@4 [f#4,b4]@2 ~@2 [f#4,b4]@3 [e4,a4] [f#4,b4]@2 ~@2",
  K: "[~@4 [f#4,b4]@2 ~@2 [f#4,b4]@3 [e4,a4] [f#4,b4]@2 [e4,a4]@4 g4@3 ~ g4 ~ g4 ~ g4 ~ g4 ~ a4@4 g4@3 ~ g4 ~ g4 ~ g4 ~ g4 ~ a4@5 ~ b4@2 ~@10]/4", // B5 A5 B5 A5
  L: "[~@4 [c#5,f#5]@2 [d5,g5]@2 ~@2 [d5,g5]@10 d5@2 ~@4 d5@8 d5@2 [c#5,f#5]@2 [d5,g5]@6 [c#5,f#5]!4]/3", // F#5 G5 F#5 G5 F#5
  M: "[c#5,f#5]@2 [c#5,f#5]@2 ~@2 a4@2 e4@4 [c#5,f#5]!4", N: "[c#5,f#5]!2 ~@4 f#5 ~",
  O: "f#5@3 [a4,e5] [b4,f#5]@2 ~@10", P: "~@2 [b4,f#5]!2 [b4,f#5]@2 ~@10", Q: "~@6 [f#4,b4] ~",
  R: "[f#4,b4]@3 [e4,a4] [f#4,b4]@2 ~@6 f#5@2 ~@2", S: "[f#4,b4]@3 [e4,a4] [f#4,b4]@2 [e4,a4]@4 ~@6",
  T: "[~@12 f#4@16 e4@8 c#4@8 ~@10 b4 ~ c#5 ~ d5@2 b3@2 d5 ~, ~@11 b3@4 ~]/4",
  U: "[[b3,c#5]@3 ~ b3@2 f#4@2 b3@2 b4@2 f#4@16 e4@8 c#4@8 ~@10 b4 ~ c#5 ~ d5@2 b3@2 d5 ~, ~@4 a4 ~@39 b3@16 ~@4]/4", // Bsus2
  V: "[[b3,c#5]@3 ~ b3@2 c#5@2 b3@2 b4@2 f#4@16 e4@8 c#4@8 b3@2 ~@2, ~@4 d5 ~@43]/3", // Bsus2
  W: "[~@6 b4 ~ c#5 ~ d5@3 ~ d5 ~ c#5@3 ~ a4 ~ f#4@3 ~ b4@2 f#4@16 e4@8 c#4@8 b3@2 ~@2, b3@7 ~@9]/4",
  X: "[~@6 b4 ~ c#5 ~ d5@3 ~ d5 ~ c#5@2 b4 ~ d5 ~ e5@6 [c#5,f#5]!4, b3@7 ~]/2", // F#5
  Y: "[c#5,f#5]@2 [c#5,f#5]@2 ~@8 [c#5,f#5]!4", Z: "[f#4,b4]@3 [e4,a4] [f#4,b4]@2 [a4,e5]@6 f#5@2 ~@2",
  AA: "[f#4,b4]@3 [e4,a4] [f#4,b4]@2 [e4,a4]@4 g4@4 g4 ~", AB: "g4 ~@3 g4 ~ a4@4 g4@4 g4 ~", AC: "g4 ~@3 g4 ~ a4@6 ~@4",
})).s("gm_trombone").gain(0.28)

// chords · synth strings 1
const synth_strings_1 = note("<~ A@6 B@3 ~@66 C@8 ~@24>".pickRestart({
  A: "[~@3 [b3,d4,f#4]@4 [a3,c#4,e4]@2 [e3,a3,c#4]@2 [f#3,b3]@8 [b3,d4,f#4]@4 [a3,c#4,e4], ~@22 d3@5 ~@21]/6", // Bm A B5 Bm A
  B: "[~ [e3,a3,c#4]@2 [f#3,b3]@8 ~, ~@6 d3@5 ~@13]/3", C: "[~@6 b3@8 a3@4 e3@4 d3@5 ~@5]/4",
})).s("gm_synth_strings_1").gain(0.2)

// other · melodic tom
const melodic_tom = note(`<
  ~ A B@2 ~@2 C@2 ~ D ~@22 E ~ F G ~@22 H ~@9 I ~@15 J ~ K ~@7 L@3 ~ M@3 ~@3 H ~@3
>`.pickRestart({
  A: "~@4 a#1 ~@3", B: "[~@7 d#2 d#1@24]/2", C: "[~@7 d#2 d#1@20 ~@4]/2", D: "~@3 b3 ~@2 b2@2 ~ d3 g2@2 ~@4",
  E: "~@10 a#1 d#1 ~@4", F: "~@11 b3 ~@2 b2@2", G: "~ d3 g2@2 ~@12", H: "~@2 a#1 d#1 ~@12", I: "~@2 d#1 ~",
  J: "~@2 a3 d3 g2@2 c2@6 ~@4", K: "~@3 d#3 a3@5 g2 a#1@2 ~@4", L: "[~@3 a3 c3@2 c3@38 ~@4]/3",
  M: "[~@6 a3 ~@4 a#1 ~@36, ~@7 a#2@37 ~@4]/3",
})).s("gm_melodic_tom").gain(0.42)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@13 A@5 B@4 C D@3 E@4 F@2 ~@7 G@8 H@4 I@4 J@2 ~@27 K@5 I@4 L@4 I@4 J@2 ~@5
>`.pickRestart({
  A: "[~@6 [b4,d5,f#5]@8 [a4,c#5,e5]@3 [g4,b4,d5]@5 [e4,a4,c#5]@3 [d4,f#4,b4]@5 [e4,a4,c#5]@3 [g4,b4,d5]@5 [g4,b4]@2]/5", // Bm A G A Bm A G
  B: "[~ b4@13 ~@12 c#5@4 ~@2, ~ g4@29 ~@2]/4", C: "~@2 c#5@3 ~@3", D: "[~ f#6@4 e6@5 f#6 e6]/3",
  E: "[d6 c#6@3 b5@16 f#6@16 e6@20 f#6@4 e6@4]/4", F: "[d6 c#6@3 b5@10 c#6@4 ~@14]/2",
  G: "[~@2 [b4,d5,f#5]@8 [a4,c#5,e5]@3 [g4,b4,d5]@5 [e4,a4,c#5]@3 [d4,f#4,b4]@5 [e4,a4,c#5]@3 [g4,b4,d5]@5 [g4,b4]@3 b4@13 ~@12 c#5@2, ~@37 g4@27]/8", // Bm A G A Bm A G
  H: "[~@6 c#5@3 ~@5 f#6@8 e6@10]/4", I: "[f#6@4 e6@4 d6 c#6@3 b5@16 f#6@16 e6@20]/4",
  J: "[f#6@4 e6@4 d6 c#6@3 b5@10 c#6@4 ~@6]/2", K: "[~@6 c#5@4 ~@4 c#5@3 ~@5 f#6@8 e6@10]/5",
  L: "[f#6@4 e6@4 d6 c#6@3 b5@10 a5@6 f#6@16 e6@20]/4",
})).s("gm_string_ensemble_1").gain(0.25)

// other · orchestra hit
const orchestra_hit = note("<~@21 A B@2 ~@22 C D E ~@35 C F G ~@21>".pickRestart({
  A: "~@4 f#5!4 f#5@2 f#5@2 ~@4", B: "[~@4 f#5!4 f#5@2 f#5@10 ~@12]/2", C: "~@12 f#5!4", D: "f#5 ~ f#5@10 f#5!4",
  E: "f#5 f#5@5 ~@2", F: "f#5 ~ f#5@2 ~@8 f#5!4", G: "f#5 ~ f#5@10 ~@4",
})).s("gm_orchestra_hit").gain(0.35)

// other · music box
const music_box = note("<~@33 A@2 B ~@22 C@3 ~@47>".pickRestart({
  A: "[~@4 f#6 d6 b5 f#5@2 b5 f#5 d5 e6 c#6 a5 e5@2 a5 e5 c#5 d6 b5 g5 d5@2 g5 d5 b4 a5 e5 c#5 a4]/2",
  B: "e5 c#5 a4 e4 b4 ~@11",
  C: "[~@12 f#6 d6 b5 f#5@2 b5 f#5 d5 e6 c#6 a5 e5@2 a5 e5 c#5 d6 b5 g5 d5@2 g5 d5 b4 a5 e5 c#5 a4 e5 c#5 a4 b4!2 ~@3]/3",
})).s("gm_music_box").gain(0.24).pan(0.6)

// other · taiko drum
const taiko_drum = note("<~@60 A B C B C B C B C B C B C B C B D B C B C B C B E ~@23>".pickRestart({
  A: "~@7 f#7", B: "f#7@2 b6@2 f#7 f#7@2 f#7@7 f#7@2", C: "f#7@2 b6@2 f#7 f#7@2 f#7@3 b6@4 f#7@2",
  D: "f#7@2 b6@2 f#7 f#7@2 f#7@3 b6@2 ~@2 f#7@2", E: "f#7@2 b6@2 f#7!2 ~@10",
})).s("gm_taiko_drum").gain(0.2)

// other · celesta
const celesta = note(`<
  ~ A@3 B@6 ~@13 C D@2 E@2 D@2 F@2 ~@16 G@2 H I@3 H J@2 ~@11 K@2 L@8 M@4 N@3 ~ G@2 H I@3 H I@3 H I@3 H J@2 ~ O P@3
>`.pickRestart({
  A: "[~@3 f#6@4 e6@2 c#6@2 b5]/3",
  B: "[~@6 b5@2 c#6@2 ~@18 f#6@16 e6@8 c#6@8 b5@4 ~@6 b5@2 c#6@2 d6@19 ~@3, ~@5 d6@30 ~@13]/6", C: "~@2 f#6@5 f#6",
  D: "[~ f#6@3 f#6@4 e6@12 e6@4 f#6@4 e6@4]/2", E: "[d6 c#6@3 b5@16 f#6@10 f#6@2]/2", F: "[d6 c#6@3 b5@10 a5@4 ~@14]/2",
  G: "[~@12 f#6@10 f#6@3 f#6@3 f#6@4]/2", H: "e6@3 e6", I: "[f#6@4 e6@4 d6 c#6@3 b5@16 f#6@10 f#6@3 f#6@3 f#6@4]/3",
  J: "[f#6@4 e6@4 d6 c#6@3 b5@10 a5@4 ~@6]/2", K: "[~@6 f#6@3 b5 d6@2 f#6@2 e6@2]/2",
  L: "[f#6@2 c#6@2 a5@2 b5@5 b5 c#6 d6@9 f#6@3 b5 d6@2 f#6@2 e6@2]/4",
  M: "[f#6@2 c#6@2 a5@2 b5@16 f#6@3 b5 d6@2 f#6@2 e6@2]/4", N: "[f#6 c#6 a5 b5@8 ~]/3", O: "~@3 f#6",
  P: "[f#6@4 e6@4 d6 c#6@3 b5@22 ~@14]/3",
})).s("gm_celesta").gain(0.25)

// other · vibraphone
const vibraphone = note("<~@13 A@5 ~@21 B@5 ~@64>".pickRestart({
  A: "[~@6 f#5@8 e5@3 b4@5 c#5@3 d5@5 c#5@3 g4@5 ~@2]/5", B: "[~@2 f#5@8 e5@3 b4@5 c#5@3 d5@5 c#5@3 g4@5 ~@6]/5",
})).s("gm_vibraphone").gain(0.3)

// chords · brass section
const brass_section = note("<~@4 A B ~ C A D ~@7 E F@2 G@2 ~@9 H@3 ~@9 I@4 ~@9 J K L ~@43 M N O ~@3>".pickRestart({
  A: "f#4!4", B: "f#4!3 ~", C: "~@3 f#4", D: "f#4@4 f#4@4 f#4@5 ~@3", E: "~@6 [g4,b4,d5] ~",
  F: "[~ [g4,d5]@5 ~@8 [g4,b4] ~, ~ b4@13 ~@2]/2", G: "[~ b4@9 ~@6, ~ g4@5 ~@10]/2",
  H: "[~@2 g4@3 ~ [g4,d5] ~ [g4,d5] ~ g4 ~ d5@2 [a4,c#5]@4 g4@3 ~ [g4,d5] ~ [g4,d5] ~ g4 ~ d5@2 [a4,e5]@6 [b4,d5,f#5]@3 ~@9, ~@12 g4 ~@15 g4 ~@19]/3", // G5 A G5 A5 Bm
  I: "[~@2 [g4,b4,d5] ~@2 [g4,d5]@5 ~@8 [g4,b4] ~@2 b4@9 ~@2, ~@5 b4@13 ~@3 g4@5 ~@6]/4", J: "~@10 g4@3 ~ [g4,d5] ~",
  K: "[g4,d5] ~ g4 ~ d5@2 [a4,c#5]@4 g4@3 ~ [g4,d5] ~, ~@4 g4 ~@11", // G5 A G5
  L: "[g4,d5] ~ g4 ~ d5@2 [a4,e5]@6 [b4,d5,f#5]@3 ~, ~@4 g4 ~@11", M: "~@6 e5@4 [g4,g5]@4 [g4,d5] ~",
  N: "[g4,d5] ~ g4 ~ d5@2 [a4,c#5]@4 [g4,g5]@4 [g4,d5] ~, ~@4 g4 ~@11", // G5 A G G5
  O: "[g4,d5] ~ g4 ~ d5@2 [a4,e5]@6 [b4,d5,f#5]@2 ~@2, ~@4 g4 ~@11", // G5 A5 Bm
})).s("gm_brass_section").gain(0.3)

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

// drums · snare
const snare = s("sd").struct(`<
  ~ A B@3 C B@3 D B@7 E B@3 F G H B@3 I B@2 J K@2 L M B@7 N B@3 O P Q B@3 R B@3 S T U ~@9 A ~@15 V P W B@3 R B@3 X B@3 Y
  B@3 Z T U ~@3
>`.pickRestart({
  A: "~ x", B: "x!2", C: "x ~@2 x!2 ~@2 x!2 ~@7", D: "x!3 ~", E: "x!2 ~@2 x ~@3", F: "x ~@3 x!5 ~ x ~@5",
  G: "~@4 x!5 ~ x ~@3 x ~", H: "x ~ x!2 ~@4 x ~@7", I: "x ~@2 x ~@4 x ~@7", J: "x ~@3 x ~@2 x", K: "~ x ~@5 x",
  L: "~ x ~@2", M: "~@3 x", N: "x ~@3 x!2 ~@2", O: "x ~@7 x ~@3 x!4", P: "x ~ x ~@9 x!4",
// … 47 more lines