Strudelify

Song for My Children

Michael Walthius

KeyF majorTempo86 bpm
0:00/0:00
// Song for My Children — Michael Walthius
// 86 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 11 "Guitar (Rt)" acoustic guitar nylon (copy of ch 9 "Guitar (Lt)" acoustic guitar nylon)
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(86/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.

// bass · acoustic bass · "Wood Bass"
const bass = note(`<
  ~@12 A B A C D E F G F H F I ~@12 A B A C D E F G F H F I ~@12 J B A K D E F G F H F I ~@20 D E F G F H F I D E F G F
  H F I D E F G F H F I D E F G F H F I
>`.pickRestart({
  A: "bb1@7 ~ a1@7 ~", B: "g1@7 ~ a1@7 ~", C: "g1@7 ~ c2@7 ~", D: "f2@2 ~ f2@2 f2 ~ f2 d2!3 ~ d2@2 ~@2",
  E: "bb1@4 c2@3 ~ f2@7 ~", F: "f2@2 ~ f2@2 f2@2 f2 d2!3 ~ d2@2 ~@2", G: "bb1@8 c2@7 ~", H: "bb1@3 ~ c2@3 ~ f2@6 ~@2",
  I: "bb1@7 ~ c2@8", J: "bb1@8 a1@7 ~", K: "g1@7 ~ c2@8",
})).s("gm_acoustic_bass").gain(0.25)

// other · synth strings 2 · "SynString 2"
const synth_strings_2 = note("<~@12 A B C D ~@20 A B E D ~@8 F G H I J K L M J K L M ~@29 N O ~@33>".pickRestart({
  A: "bb3 c4", B: "d4 e4", C: "f4 g4", D: "a4 c5", E: "f4@8 g4@7 ~", F: "f4@4 e4@3 ~ d4@8",
  G: "~@4 g4@2 f4@2 e4@4 c4 d4 e4 ~", H: "[f4,a4]@4 [e4,g4]@4 [d4,f4]@7 ~", I: "~@4 [g4,bb4]@3 ~ [e4,c5]@7 ~",
  J: "f3@15 ~", K: "d3@15 ~", L: "bb2@15 ~", M: "e3@4 d3@4 c3@7 ~", N: "~@2 g5 f5 e5@3 ~", O: "~@4 g5@3 ~ f5@8",
})).s("gm_synth_strings_2").gain(0.2)

// other · synth strings 2 · "SynString 2" · soft notes
const synth_strings_2_soft = note("<~@88 [f5 e5 d5@2] ~ [a5@3 ~@13] [~@4 g5@3 ~ c6@7 ~] ~@32>")
  .s("gm_synth_strings_2").gain(0.1)

// chords · pad new age · "New Age Pad"
const pad_new_age = note(`<
  ~@12 A@2 B C D ~ E ~ F ~ G ~@13 H@2 I@2 J ~ K ~ F ~ G ~@17 D ~ K ~ F ~ G ~@21 J ~ K ~ F ~ G ~ J ~ K ~ F ~ G ~ D ~ K ~
  F ~ E ~ D ~ E ~ F ~ G ~
>`.pickRestart({
  A: "[d5@3 e5@2 ~ f5@2 e5@3 ~ c5@6 ~@2 d5 e5 f5@2 e5@6 ~@2]/2", B: "bb4@2 ~ c5@2 ~ d5 ~ c5@3 ~ a4@4",
  C: "~@4 bb4 c5 d5@2 c3 g3 c4 e4 g4 c5 g4 ~, ~@8 e5@7 ~",
  D: "[f5,f6] ~ f4 d6@2 f5 f4 f5 [f5,f6]!2 [f4,f5,d6] c6 [f5,f6]@2 ~@2, ~@3 f5 ~ c6@2 ~@9", // F Dm F
  E: "[f5,f6]@2 f4 d6@2 f5 f4 f5 [f5,f6]!2 [f4,d6] c6 [f5,f6] ~@3, ~@3 f5 ~ c6@2 ~@3 f5@2 ~@4", // F Dm F
  F: "[f5,f6]@2 f4 d6@2 f5 f4 f5 [f5,f6]!2 [f4,d6] c6 [f5,f6]@2 ~@2, ~@3 f5 ~ c6@2 ~@3 f5@2 ~@4", // F Dm F
  G: "[f5,f6]@2 f4 d6@2 f5 f4 f5 [f5,f6]!2 [f4,d6] c6 f6@2 ~@2, ~@3 f5 ~ c6@2 ~@3 f5@2 f5 ~@3", // F Dm
  H: "[d5@2 ~ e5@3 f5 ~ e5@3 ~ c5@6 ~@2 d5 e5 f5@2 e5@6 ~@2]/2",
  I: "[bb4@2 ~ c5@2 ~ d5@2 c5@4 a4@7 ~ bb4 c5 d5 ~ c3 g3 c4 e4 g4 c5 g4 ~, ~@12 e5@3 ~]/2",
  J: "[f5,f6] ~ f4 d6@2 [f5,c6] f4 f5 [f5,f6]!2 [f4,f5,d6] c6 [f5,f6]@2 ~@2, ~@3 f5 ~@12", // F F5 F Dm F
  K: "[f5,f6]@2 f4 d6@2 f5 f4 f5 [f5,f6]!2 [f4,d6] c6 f5@2 ~@2, ~@3 f5 ~ c6@2 ~@3 f5@2 f6 ~@3", // F Dm
})).s("gm_pad_new_age").gain(0.2).pan(0.7)

// chords · acoustic guitar nylon · "Guitar (Lt)"
const acoustic_guitar_nylon = note(`<
  A@3 B@8 C D@2 E@2 F G H I J K L M N@8 O@4 P@4 Q K R@3 S@2 T U V W@2 X Y Z AA AB@2 AC AD AE@3 AF AG K AH@3 S@2 T AI@3
  AJ@3 AK@2 AI@3 AJ@3 AL@2 U V W@2 AG K AH@3 S@2 AM AN K R@3 S@2 T AG K AO@3 S@2 T AG K AP@3 S@2 T
>`.pickRestart({
  A: "[~@47 c4, f2@11 c4@2 d4@4 c3 f3 g3 a3 c4 f3 g3 d4 c4 f3 a3@2 c4@5 f3 c4 d4 f4 f3 c4 g4@2 f3 f4@2 d4 f3@2, ~ c3@13 f3 c4 f2@14 f3@2 f2@16, ~@2 f3@2 d4@6 f3 f4@20 g3@17, ~@3 c4@2 f4 f3 c4 g4@24 ~ c3@15]/3",
  B: "[~@127 g3, f2@13 c4@6 g3@2 c4 f3 g3@2 c4 f3 a3@2 c4@6 g3@2 c4 f3 g3@2 c4 f3 a3@2 c4@6 g3@2 c4 d3 g3@2 c4 d3 a3@2 c4@6 g3@2 c4 d3 g3@2 c4 d3 a3 d3 c4@6 g3@2 c4 f3 g3@2 c4 f3 a3@2 c4@6 g3@2 c4 f3 g3@4 a3@2 c4@6 g3@2 c4 d3 g3@2 c4 d3 a3@2 c4 d3@2, ~ c3@13 f3@2 f2@14 f3@2 ~ c3@13 f3@2 ~ a2@13 d3@2 ~ a2@13 d3@2 ~ c3@13 f3@2 ~ c3@8 c4 f3@4 c3@2 ~ a2@15, ~@2 f3@2 a3@4 d4@7 g3@3 f3@2 a3@4 d4@7 g3@3 f3@2 a3@4 d4@7 g3@3 d3@2 a3@4 d4@7 g3@3 d3@2 a3@4 d4@7 g3@3 f3@2 a3@4 d4@7 g3@3 f3@2 a3@4 d4@7 g3@3 d3@2 a3@4 d4@8, ~@3 g3@2 c4 f3 g3@2 c4 f3 a3@5 ~ c3@15 f2@16 d2@16 d2@16 f2@16 f2@16 d2@16]/8",
  C: "~@15 g3, d2@13 c4 d3@2, ~ a2@15, ~ d3 a3@2 d4@4, ~@3 g3@2 c4 d3 g3@2 c4 d3 a3@5",
  D: "[~@7 a3 ~@15 a3 ~@2 a3 ~@3 e3 a3, bb2@5 f4@3 ~@2 a3@4 e3@2 g2@5 f4 g3@2 ~ e3@5 ~@2, ~@3 a3@3 bb2@2 [a2,e4]@7 a3@3 g3 a3 bb3@4 ~@3 a3@4 ~, ~@4 bb3@4 ~ c4@4 c4@11 ~@5 c4@3, ~@11 d4@5 ~ d3@7 [a2,e4]@8]/2", // A5
  E: "[~@7 a3 ~@6 a3 ~@8 a3 ~@6 c3 c4, bb2@8 [a2,e4]@7 a3@3 g3@3 f4 d3@2 ~ g2@4 d4@2 ~, ~ f3@4 f4@3 ~@2 a3@3 c4@11 c4@3 g3@4 ~, ~@2 bb3@2 bb3@4 ~ c4@2 d4@5 ~ d3@2 a3 bb3@4 ~@2 c3@2 c4@3 ~, ~@3 a3@3 f3@2 ~ e3@7 g2@8 [c2,e4]@7 ~]/2", // A5 C
  F: "~@3 c4@2 ~@2 c4 [c4,f4,a4] ~ [c4,e4,g4] ~@4 c4, f2@6 f3@2 ~ a2@7, [c4,f4,a4]@2 f3@3 [c4,f4,a4]@3 ~@3 d3@3 d3@2, ~ c3@7 d2@8, ~@3 [e4,g4]@5 ~@4 [c4,f4,a4]@4", // F C F Em F
  G: "~@3 c4 ~@2 c4 ~@8 c4, [bb2,c4]@4 [c3,f4]@3 c4@3 f3 a3 c4 d4 f3@2, ~ [f3,d4]@3 ~ [g3,e4]@3 f2@8, ~@2 [bb3,f4]@2 ~@3 f4@9, ~@9 c3@7", // Bbsus2 F5 Dm C Bb5
  H: "~@3 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~@4 c4, f2@3 c3 d2@4, [f4,a4]@3 [e4,g4]@5 ~@4 [c4,f4,a4]@4, c4@2 f3@6 ~ a2@7, ~ c3@4 [c4,f4,a4]@3 ~@3 d3@3 d3@2", // F C F Em F
  I: "~@6 bb3 ~@8 c4, bb2@5 g4@5 c4 d4 c4 d4@3, c4@2 bb3@2 f4@3 e4@4 [e4,g4]@3 e4@2, ~ [f3,d4]@6 ~ c3@8, ~@2 f4 c4@4 ~@2 g3@6 ~", // Em Dm
  J: "~@3 c4@2 ~@3 [f4,a4] ~ [c4,e4,g4] ~@4 c4, f2@3 c3 d2@4, [f4,a4]@3 [e4,g4]@4 c4@2 ~@2 d3@3 d3@2, c4@2 f3@6 ~ a2@7, ~ c3@4 [c4,f4,a4]@3 ~@4 [c4,f4,a4]@4", // F C F Em F
  K: "~@3 c4 ~@2 c4 ~@8 c4, [bb2,c4]@4 [c3,f4]@3 ~ f2@4 c4 d4 f3@2, ~ [f3,d4]@3 ~ [g3,e4]@2 c4@3 f3 a3@5, ~@2 [bb3,f4]@2 ~@3 f4@9, ~@9 c3@7", // Bbsus2 F5 Dm C Bb5
  L: "~@3 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~ [c4,f4,a4]@2 ~ [c4,f4], f2@3 c3 d2@4, [f4,a4]@3 [e4,g4]@5 ~@8, c4@2 f3@6 ~ a2@7, ~ c3@4 [c4,f4,a4]@3 ~@3 d3@3 d3@2", // F C F F5 F Em F
  M: "~@7 c4 ~@3 d4!2 ~ e4@2, bb2@5 f4@3 e4@3 e4@2 d4@3, ~ f3@7 c3@8, ~ bb3 d4@2 ~ c4 c4@2, ~@3 c4@3 bb3@2 ~ g3@7",
  N: "[~@127 g3, f2@13 a3@4 c3@13 f3 g3 f2@13 a3@5 f3@2 a3@4 d4@5 c4@6 g3@2 c4 f3 g3@2 c4 f3 a3@2 c4@6 g3@2 c4 f3 g3@2 c4 f3 a3@2 c4@6 g3@2 c4 d3 g3@2 c4 d3 a3@2 c4@6 g3@2 c4 d3 g3@2 c4 d3 a3@2 c4 d3@2, ~ c3@13 f3 g3 f2@10 f3 a3@6 c3@9 f3@4 c3@2 f2@14 c3@2 f2@14 f3@2 ~ c3@13 f3@2 ~ a2@13 d3@2 ~ a2@15, ~@2 f3@2 a3@4 d4@13 c4 f3 g3@2 c4@9 f3 g3 a3@4 d4@7 g3@2 c3@8 c4 f3@5 g3@3 f3@2 a3@4 d4@7 g3@3 f3@2 a3@4 d4@7 g3@3 d3@2 a3@4 d4@7 g3@3 d3@2 a3@4 d4@8, ~@3 g3@2 c4 f3 g3@3 f3 c4@7 f3 g3 a3@4 d4@13 c4 f3 g3@4 c4@8 g3@2 c4 f3 g3@4 a3@5 ~ c3@15 f2@16 d2@16 d2@16]/8",
  O: "[~@63 g3, f2@13 c4@5 f3 g3 a3@4 d4@5 c4@6 g3@2 c4 d3 g3@2 c4 d3 a3@6 a2@12 c4 d3@2, ~ c3@13 f3 g3 f2@11 a3@3 f2@2 d2@13 c4@5 d3 g3 a3@4 d4@8, ~@2 f3@2 a3@4 d4@13 c4 f3 g3@5 c3@3 g3@3 d3@2 a3@4 d4@13 c4 d3 g3@2 c4 d3 a3@5, ~@3 g3@2 c4 f3 g3@2 c4 f3 a3@6 c3@8 c4 f3@6 ~ a2@13 d3 g3 d2@16]/4",
  P: "[~@7 a3 ~@7 a3 ~@7 a3 ~@6 a2 a3 ~@7 a3 ~@6 a2 a3 ~@3 bb3@2 ~ g2 a3 ~@2 g3 g3@2 ~ c3 c4, bb2@5 f4@3 e4@8 ~@3 bb3@5 ~@2 a3@5 ~ bb2@5 f4@3 ~@3 d4@4 ~@6 f4@3 e4@5 [g3,e4]@2 ~, ~@2 a3@4 bb2@2 a2@5 c4@11 ~ c4@2 d4@5 ~@2 a3@4 bb2@2 [a2,e4]@7 ~ g2@5 ~@3 c2@7 ~, ~@3 bb3@5 ~ c4@2 d4@5 ~@2 a3@4 g2@2 a2@5 c4@11 ~ c4@4 c4@5 ~@7 c4@6 ~, ~@10 a3@4 a2@2 g2@5 f4@3 e4@8 ~@3 bb3@5 ~@2 a3@5 ~@3 a3@3 ~@6 d4@4 ~]/4", // C A5
  Q: "~@3 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~@4 f4, f2@6 f3@2 ~ a2@7, [f4,a4]@3 [e4,g4]@5 ~@4 [c4,f4,a4]@4, c4@2 f3@3 [c4,f4,a4]@2 ~@4 d3@3 d3@2, ~ c3@6 ~ d2@8", // F C F Em F
  R: "[~@3 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~ [c4,f4,a4]@2 d3 ~@8 c4 ~@3 d4!2 ~@6 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~@4 f4, f2@6 c3@2 d2@7 ~@4 c4@2 f4 f3@2 ~ g3@5 e4@2 [f4,a4]@3 [e4,g4]@3 c3@2 ~ a2@7, [f4,a4]@3 [e4,g4]@5 ~@7 [c4,f4]@2 ~ bb3@6 ~@2 c4@2 c4@3 c4@3 f3@6 ~@3 d3@3 d3@2, c4@2 f3@6 ~ a2@7 bb2@8 c3@7 ~ f2@8 d2@8, ~ c3@4 [c4,f4,a4]@3 ~@3 d3@3 ~@3 f3@3 d4@4 e4@3 e4@2 d4@3 ~ c3@4 [c4,f4,a4]@3 ~@4 [c4,f4,a4]@4]/3", // F C F C F Em F Em …
  S: "[~@3 c4 ~@2 c4 ~@12 c4@2 ~@2 c4 [c4,f4,a4] ~ [c4,e4,g4] ~@4 f4, [bb2,c4]@4 [c3,f4]@3 ~ f2@4 c4 d4 f3@2 ~ c3@4 [c4,f4,a4] c3@2 ~ a2@7, ~ [f3,d4]@3 ~ [g3,e4]@2 c4@3 f3 a3@4 c4@3 f3@6 ~@3 d3@3 d3@2, ~@2 [bb3,f4]@2 ~@3 f4@9 [f4,a4]@3 [e4,g4]@5 ~@4 [c4,f4,a4]@4, ~@9 c3@7 f2@8 d2@8]/2", // F C Bbsus2 F5 F Dm C Bb5 …
  T: "~@6 bb3 ~@4 d4!2 ~@2 c4, bb2@5 g4@5 c4@2 c4@2 [g3,e4]@2, c4@2 bb3@2 f4@3 e4@4 [e4,g4]@4 ~, ~ [f3,d4]@6 ~ c3@7 ~, ~@2 f4 c4@4 ~@2 g3@4 d4@2 ~", // C Em Dm
  U: "~@15 c4, d3@5 f4 g3@2 ~ f3@3 d4@2 f3@2, f4@3 e4@4 d4@4 c4@2 f4@3, ~ a3@7 ~@2 bb3@6, ~ d4 c3@2 bb2@4",
  V: "~@15 d4, [g2,g4]@3 d3 [c2,e4]@4, ~ d3@3 bb3@3 g3@4 g3@5, ~@2 g3@3 f4@3 ~@4 c4@4, ~@3 a3@5 ~@2 c3@3 d4 c3@2", // G C
  W: "[~@6 c4 ~@7 f3 ~@8 g3 ~@6 e4@2, d3@4 c3 [g3,f4]@2 ~ bb2@7 ~ g2@5 f4 d3@2 c2@5 d4@3, f4@3 e4@4 ~@3 bb3@5 ~@2 d3@2 a3@5 [g3,c4]@3 g3@5, ~ a3@6 ~@2 f3@4 d4@2 ~@3 g3@2 bb3@4 ~@2 c3@6, ~@2 d4@5 d4@4 [c4,d4] c4@3 c4@9 e4@4 c4@4]/2", // G7 C5 Csus2
  X: "~@11 g4 ~@3 f4, [f3,a4]@7 f4 a4 c4@4 c5 c4@2, ~ c4@4 c5@7 [f4,g4]@4, ~ f4!2 c4 f3@4, ~@3 g4@7 f4 a4@5", // F Fsus2
  Y: "~@7 f4 ~@3 g4 ~@3 f4, [d3,a4]@6 a3@2 d3@5 c5 a3@2, ~ a3@4 c5@3 ~@2 d4@6, ~@2 d4@2 d4@4 ~ a3@3 [f4,g4]@4, ~@3 g4@5 a4@3 a4@5", // D5 Fsus2
  Z: "~@7 f4 ~@3 g4 f4 ~@2 f4, [bb2,a4]@6 bb3@2 ~ f3@5 bb3@2, ~ f3@7 bb2@8, ~@2 bb3@2 bb3 c5@3 ~@2 bb3@2 g4@4, ~@3 g4@5 a4@3 a4@2 [f4,c5]@3", // Bbmaj7 F5
  AA: "~@7 d4 ~@3 d4!2 ~@2 c4, [e3,e4]@3 d4 d3 [d4,c5] f3@2 [c3,c5]@6 e4@2, ~ [g3,g4]@7 ~ g3@7, ~@2 c4@6 ~@2 c4 e4 c4 d4@3, ~@2 c5 f4@5 e4@3 g4@5", // E D7 C G
  AB: "[~@15 f4 ~@7 [a3,f4] ~@3 g4 ~@3 f4, [f3,a4]@7 f4 a4 c4@4 c5@7 d4 c5@3 ~@2 d4@2 [f4,g4] c5 d4@2, ~ c4@4 c5@7 f4@2 c4@2 ~ a3@5 d4@2 ~ a3@7, ~ f4!2 c4 f3@4 [d3,a4]@4 d3@4, ~@3 g4@7 f4 [g4,a4]@5 ~@2 d4 g4@5 a4@3 a4@5]/2", // Dm F Fsus2 D5 Gsus2
  AC: "~@7 f4 ~@7 f4, [bb2,a4]@6 bb3@2 ~ f3@4 c5@3, ~ f3@7 bb2@8, ~@2 bb3@2 bb3 c5@3 ~@2 bb3@2 f4@2 bb3@2, ~@3 g4@5 a4@3 [g4,a4]@5", // Bbmaj7 Gsus2
  AD: "~@7 d4 ~@7 c4, [e3,e4]@3 d4 d3 [d4,c5] f3@2 [c3,c5]@6 e4@2, ~ [g3,g4]@7 ~ g3@7, ~@2 c4@6 ~@2 c4 [d4,e4] c4 d4@3, ~@2 c5 f4@5 e4@3 g4@5", // E D7 C G Dsus2
  AE: "[c4 ~@29 a3 ~@8 f3 ~@7 c4, bb2@7 c4@6 d4@5 g3@2 d4@2 g3@2 a4@2 a4@3 f4@6 c4@2 f4@2 c4@6 d4 a3@2, ~@2 bb3@3 f4@3 ~@2 a3 f4@8 c4@2 f4@2 c4@3 c4 g4@2 c4@2 c4@3 bb3@2 d4@4 ~@2 a3 f4@5, ~@3 c4@3 bb3@2 [a2,g4]@6 a3@2 g2@8 a2@7 ~ bb2@8 [a2,g4]@8, ~@4 d4@4 ~ f3@6 c4@2 d3@7 ~ f3@6 ~@2 f3@5 bb3@2 ~ f3@7]/3", // A7
  AF: "~@7 c4 ~@3 d4!2 ~ e4@2, g2 c3, ~ d3@4 f4@2 ~ e4@3 e4@2 d4@3, ~@2 g3@2 d4@2 g3@2 ~ g3@7, ~@3 c4@4 ~@3 c4@2 c4@4",
  AG: "~@3 c4@2 ~@3 [f4,a4] ~ [c4,e4,g4] ~@4 f4, f2@6 f3@2 ~ a2@7, f4@3 [e4,g4]@5 ~@4 [c4,f4,a4]@4, ~ c3@6 ~ d2@8, ~@2 f3@3 [c4,f4,a4]@2 c4@2 ~@2 d3@3 d3@2", // F C Em F
  AH: "[~@3 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~ [c4,f4,a4]@2 ~@9 c4 ~@3 d4!2 ~@6 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~@4 f4, f2@6 c3@2 d2@7 ~@4 c4@2 f4 f3@2 ~ g3@5 e4@2 [f4,a4]@3 [e4,g4]@3 c3@2 ~ a2@7, [f4,a4]@3 [e4,g4]@5 ~@7 [c4,f4]@2 ~ bb3@6 ~@2 c4@2 c4@3 c4@3 f3@6 ~@3 d3@3 d3@2, c4@2 f3@6 ~ a2@7 bb2@8 c3@7 ~ f2@8 d2@8, ~ c3@4 [c4,f4,a4]@3 ~@3 d3@3 d3@2 ~ f3@3 d4@4 e4@3 e4@2 d4@3 ~ c3@4 [c4,f4,a4]@3 ~@4 [c4,f4,a4]@4]/3", // F C F C F Em F Em …
  AI: "[f5 ~@7 g4 ~@13 f4 g4 ~@10 [f4,c5] g4 ~@11 g4, c4@6 a3 [f4,c5]@3 f4@2 c4@8 g4 [bb3,f5]@2 ~ c4@7 f4 [g4,f5] [bb3,d5]@2 ~ c4@5 g4 a3 [f4,f5] g4 bb3 f4@2, ~ d5@8 ~@2 f5@4 bb3@2 g4 [a3,c5]@5 ~@2 f4 g4 a5@8 a5@13, ~ f4 g4 [bb3,a5]@6 [bb3,d5]@5 [g4,d5]@2 f5@3 [f4,a5]@4 ~@2 c6@10 ~@2 f5@2 bb3 f4 d5@7, ~@2 c5@2 f4 [g4,f5]@4 ~@2 g4@2 f4@2 c5 f4 d5@6 c5@4 bb3 f4 g4 a3@5 ~@2 f4 g4 c5@9]/3", // F5 Bb5 G7 Bb F Am Bbmaj7 Bb …
  AJ: "[~@8 g4 ~@11 g4 ~@13 [f4,c5] ~@12 g4, c4@6 a3 c5@6 f4 g4 bb3 f4 [g4,d5] [a3,c5] a5@14 [bb3,d5]@2 ~ c4@5 g4 a3 [f4,a5] g4 bb3 f4@2, f5@2 g4 [bb3,a5]@4 f4@2 bb3@2 g4 c4@7 f4@2 [bb3,f5]@4 [f4,d5] g4 [bb3,f5]@3 d5 [f4,c5] [g4,f5]@3 a5@4 bb3 f4 c6@7, ~ d5@8 c6@12 ~@2 c5@5 f4 g4 a3@5 ~@2 f5@11, ~ f4 c5@2 f4 [g4,f5]@4 ~ f4 a5@5 f5@5 ~ f4 g4 c4@11 g4@2 f4 g4 c5@9]/3", // F5 G5 Am Bb F Bbmaj7 Bb5 Dm …
  AK: "[~@18 [a3,c5] ~@11 a3 f4, c4@7 f4 g4 [bb3,d5] f4 f5@2 f4 [g4,d5] [bb3,c5]@2 [g4,d5]@2 ~ g4@2 f4 c5@9, f5@2 g4 a5@16 a5@4 g4 c4 f4 g4 [bb3,a5] f4 g4@2 ~, ~ d5@3 f4 f5@2 c5@4 g4 c4@7 ~@2 f5@10 ~, ~ f4 c5 bb3@2 g4 a3@10 [f4,f5]@3 f4@2 bb3@4 c6@6 ~]/2", // Am Bb G5 Bbsus2 G5 Bbmaj7 F
  AL: "[~@18 [a3,c5] ~@11 a3 ~, c4@7 f4 g4 [bb3,d5] f4 f5@2 f4 [g4,d5] [bb3,c5]@2 [g4,d5]@2 ~ g4@2 f4 c5@9, f5@2 g4 a5@16 a5@4 g4 c4 f4 g4 [bb3,a5] f4 g4@2 ~, ~ d5@3 f4 f5@2 c5@4 g4 c4@7 ~@2 f5@10 ~, ~ f4 c5 bb3@2 g4 a3@10 [f4,f5]@3 f4@2 bb3@4 c6@6 ~]/2", // Am Bb G5 Bbsus2 G5 Bbmaj7 F
  AM: "~@6 bb3 ~@4 d4!2 ~ [g3,e4] c4, bb2@5 g4@5 c4@2 c4@3 ~, c4@2 bb3@2 f4@3 e4@4 [e4,g4]@4 ~, ~ [f3,d4]@6 ~ c3@7 ~, ~@2 f4 c4@4 ~@2 g3@4 d4@2 ~", // C Em Dm
  AN: "~@3 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~@4 f4, f2@6 f3@2 ~ a2@7, f4@3 [e4,g4]@5 ~@4 [c4,f4,a4]@4, ~ c3@6 ~ d2@8, ~@2 f3@3 [c4,f4,a4]@2 ~@4 d3@3 d3@2", // F C Em F
  AO: "[~@3 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~ [c4,f4,a4]@2 d3 ~@8 c4 ~@3 d4!2 ~@6 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~@4 f4, f2@8 d2@7 ~@4 c4@2 f4 f3@2 ~ g3@5 e4@2 [f4,a4]@3 [e4,g4]@3 c3@2 ~ a2@7, [f4,a4]@3 [e4,g4]@5 ~@7 [c4,f4]@2 ~ bb3@6 ~@2 c4@2 c4@3 c4@3 f3@6 ~@3 d3@3 d3@2, c4@2 f3@6 ~@3 d3@3 ~@3 f3@3 d4@4 e4@3 e4@2 d4@3 ~ c3@4 [c4,f4,a4]@3 ~@4 [c4,f4,a4]@4, ~ c3@4 [c4,f4,a4] c3@2 ~ a2@7 bb2@8 c3@7 ~ f2@8 d2@8]/3", // F C F C F Em F Em …
  AP: "[~@3 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~ [c4,f4,a4]@2 ~@9 c4 ~@3 d4!2 ~@6 c4@2 ~@2 c4 [f4,a4] ~ [c4,e4,g4] ~@4 f4, f2@8 d2@7 ~@4 c4@2 f4 f3@2 ~ g3@5 e4@2 [f4,a4]@3 [e4,g4]@3 c3@2 ~ a2@7, [f4,a4]@3 [e4,g4]@5 ~@7 [c4,f4]@2 ~ bb3@6 ~@2 c4@2 c4@3 c4@3 f3@6 ~@3 d3@3 d3@2, c4@2 f3@6 ~@3 d3@3 d3@2 ~ f3@3 d4@4 e4@3 e4@2 d4@3 ~ c3@4 [c4,f4,a4]@3 ~@4 [c4,f4,a4]@4, ~ c3@4 [c4,f4,a4] c3@2 ~ a2@7 bb2@8 c3@7 ~ f2@8 d2@8]/3", // F C F C F Em F Em …
})).s("gm_acoustic_guitar_nylon").gain(0.22).pan(0.3)

// other · accordion
const accordion = note("<~@52 A B A C D E F G H I J K ~@60>".pickRestart({
  A: "~@4 g4 [ab4,a4] c5 a4 d5@3 ~ c5@3 ~", B: "~@4 [ab4,a4] g4 f4 d4 c4 d4 f4 d4 f4@2 c4 ~",
  C: "~@12 [g4,e5] [g4,d5] [g4,c5]@2", D: "~@4 g4 [ab4,a4] c5 a4 d5@4 c5@3 ~",
  E: "~@4 [ab4,a4] g4 f4 d4 c4 d4 f4 d4 f4@2 ~@2", F: "~@4 g4 [ab4,a4] c5 a4 d5@3 ~ c5@2 ~@2",
  G: "~@2 [g4,e5] [g4,d5] [g4,c5]@3 ~", H: "~@3 c4 d4 f4@3 g4@2 ~ f4@4 ~",
  I: "~@3 c4 d4 f4@2 [c4,d4] [f4,a4] ~ a4 g4@2 f4@3", J: "~@3 c4 d4 f4@2 [c4,d4] g4@3 f4@3 ~@2, ~@8 f4 ~@7",
  K: "~@3 c4 d4 f4@2 ~ e4@3 d4 [c4,d4,e4] d4 e4 ~", // C
})).s("gm_accordion").gain(0.2)

// chords · pad choir · "Choir Pad"
const pad_choir = note("<~@4 A@2 B@2 A@2 C@2 ~@16 A@2 B@2 A@2 D@2 ~@52 E F G H ~@32>".pickRestart({
  A: "[~@7 a4, f4, ~@3 g4]/2", B: "[d4@6 c4 d4]/2", C: "[d4@3 ~]/2", D: "[d4@29 ~@3]/2", E: "f4@4 e4@3 ~ d4@8",
  F: "~@4 g4@2 f4@2 e4@4 c4 d4 e4 ~", G: "[f4,a4]@4 [e4,g4]@4 [d4,f4]@7 ~", H: "~@4 [g4,bb4]@3 ~ [e4,c5]@7 ~",
})).s("gm_pad_choir").gain(0.2)

// bass · fretless bass
const bass_2 = note("<~@80 A B C D E F G H I J K L ~@32>".pickRestart({
  A: "f1@14 c2 d2", B: "f2@10 a2 bb2 c3!2 bb2 c3", C: "f2@3 c3@3 f3@8 g3 a3", D: "g3 f3 c4@8 bb3 a3 c4 bb3 a3 g3",
  E: "f3 g3 f3 e3 d3@2 e3 d3 c3 bb2 c3 d3 c3 bb2 a2 g2", F: "f2@8 ~@2 d2!2 c2@2 d2@2",
  G: "f1@6 c2 d2 f2!2 d2 ~ g2 ~ f2@2", H: "~@2 a2 bb2 c3!2 d3 ~ f3 ~ f3 d3 g3 ~ f3@2", I: "d2@4 c2@3 ~ bb1@8",
  J: "g1@7 ~ c2@7 ~", K: "d2@4 c2@3 ~ bb1@7 ~", L: "g1@7 ~ c2@8",
})).s("gm_fretless_bass").gain(0.26)

// chords · rock organ
const rock_organ = note("<~@100 A B C D E F G H I J K L M N O P Q R S T U V W X>".pickRestart({
  A: "[c6,f6]@6 [db6,d6] c6 [c6,f6]@2 [db6,d6] c6 [c6,f6]@2 ~@2, ~@8 gb6 ~@7", // F5 Dmaj7 F5 Dmaj7 F5
  B: "~@4 [ab6,a6,bb6] ~ g6 f6 [db6,d6,f6] ~ [c6,f6] ~ ab5 a5 ~ c6, ~@6 d6 ~", // Db F5
  C: "~@2 [c6,f6] ~ [f5,d6] c6 f5 [f5,ab5,c6] [f5,a5] d5 ~ f5!2 ~ c5 ~", // F5 Dm Fm F
  D: "~@4 c5 [db5,d5] f5 g5 [ab5,a5] c6!2 d6 e6@2 d6 c6", // Dmaj7 Amaj7
  E: "~@2 [f6,ab6,a6,b6,c7] ~ [f6,c7] ~ [f6,c7] ~ [f6,ab6,c7] a6 [f6,c7] ~ [f6,c7] ~@3", // F F5 Fm F5
  F: "~@2 [db6,d6] ~ [c6,f6] g6 c6 f6 [c6,f6] [c6,db6,d6,e6,f6] c6 ab5 a5 ~ c6 ~", // Dmaj7 F5
  G: "~@2 [c6,f6] d6 ~ f6 d6 f5 [c6,f6]!2 d6 f5 [c6,f6]@2 ~@2", // F5
  H: "~@3 c6 [db6,d6] f6 c6 f6 ~@3 [d6,e6] [c6,d6] d6 e6 c6", // Dmaj7 Dsus2 Csus2
  I: "~@4 [f6,ab6,b6,c7] a6 [f6,c7] ~@5 [c6,db6,d6,f6] ~ c6 ~", // Fm F5 Dbmaj7
  J: "~@2 [ab5,d6] a5 f5 c6 ab5 f5 [ab5,a5] f5 ~ c5 f5@2 d5 ~", // Abdim Amaj7
  K: "~@2 [f5,ab5,a5,b5,c6,d6,e6] ~ c6@2 a5 ~@3 [c6,f6]@2 d6@2 c6 ~, ~@4 f5 ~@7 a5 ~@3", // Fmaj7 F5
  L: "~@2 c6@2 [db6,d6] c6 [c6,f6] ~ [c6,e6]@3 [d6,e6] c6 d6 e6 c6", // Dmaj7 F5 C Dsus2
  M: "~@4 [ab6,a6,c7] ~ [f6,c7] ~@5 [f6,ab6,a6,b6] ~ [f6,c7] ~, ~@6 c7 ~", // Ab F5 Fdim F5
  N: "~@2 [db6,d6] ~ [c6,f6]@2 [db6,d6,f6] c6 ab5 a5 c6 f5 [db5,d5,f5] ~ f5 c5, ~ g6 ~@6", // Dmaj7 F5 Db
  O: "~@2 [c5,f5] d5 ~ f5 d5 f4 [c5,f5]!2 d5 f4 [c5,f5] ~@3", // F5
  P: "~@2 [ab5,a5] ~ c6 d6 ~ c6 g5 [ab5,a5] c6!2 [db6,d6] f6 g6 [c6,f6]", // Amaj7 Dmaj7 F5
  Q: "[c6,a6]@6 g6 f6 [c6,a6]@3 [c6,g6]@3 f6@2, ~@14 c6 ~", // F C5
  R: "~@4 [f6,ab6,a6,c7] ~ [f6,c7] ~ [f6,c7] ~@3 [ab6,a6] ~ f6 ~", // F F5 Amaj7
  S: "~@2 [db6,d6,f6,g6] ~ [c6,f6] ~@3 [c6,db6,d6] ~ c6 ~ [ab5,a5] ~ f5 ~", // G7 F5 Amaj7
  T: "~@4 c5 [db5,d5] c5 f5 e5@3 d5 [c5,e5] d5 e5 f5", // Dmaj7 C
  U: "ab5 a5 c6!2 [c6,db6] d6 f6!2 [f6,ab6,c7] a6 c7@2 [ab6,a6,c7] ~ f6 ~, ~@10 f6 ~@5", // Dbmaj7 Fm Ab
  V: "~@2 [g6,ab6,a6,bb6] g6 ~ db6 ~ c6 ab5 ~ c6 ~ d6@2 c6 ~",
  W: "~@2 [ab5,a5,b5,c6] ~ [f5,c6] ~ [ab5,a5] c6!2 [db6,d6] c6 f6 g6@2 [c6,f6] ~, ~ d6 ~@6", // F5 Amaj7 Dmaj7 F5
  X: "~@4 [db6,d6,e6,f6] c6 f6 ~ e6@6 ~@2",
})).s("gm_rock_organ").gain(0.06)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@101 A B ~@2 C D E ~ F ~ G ~ H I J ~@3 K ~ L ~ M>".pickRestart({
  A: "~@14 f5 ~", B: "f5 ~@9 c5 ~@5", C: "~@3 c6 ~@9 f5 ~ f5", D: "~@4 f5 ~@11", E: "~@8 e6@3 ~@5, ~@8 c6 ~@7",
  F: "~@10 d5 ~@5", G: "~@12 d6 ~@3", H: "~@13 c5 ~@2", I: "~@4 f4 ~@11", J: "~@3 f5 ~@2 f5 ~@9", K: "~@12 d5 ~@3",
  L: "~@4 f6 ~ d6 ~@2 a5 ~ f5 ~@4", M: "~@4 g5@3 ~",
})).s("gm_rock_organ").gain(0.04)

// chords · vibraphone · "Vibes"
const vibraphone = note(`<
  ~@4 A B C D C E C F ~@16 G B C D C E C F ~@12 H I J I ~@12 K L M N O P Q R ~@8 S T U V W X Y Z H I J I ~@32
>`.pickRestart({
  A: "[f4,f5]@2 ~ [f4,d5] ~@2 f4@2 ~@8, ~@6 c5 ~@9", B: "[f4,a4] ~ [f4,c5] [f4,d5] ~ d5 c5 ~@9, ~@5 f4@2 ~@9",
  C: "[f4,f5] ~@2 [f4,d5] ~@2 [f4,c5] ~@9", // F Dm F5
  D: "[f4,a4] ~ c5 d5 ~ d5 c5 ~ [f4,d5] ~ [f4,c5] ~ [f4,a4] ~ [f4,c5] ~, ~@2 f4@2 ~ f4@2 ~@9", // F Dm F5 F F5
  E: "[f4,a4] ~ c5 d5 ~ d5 c5 ~@9, ~@2 f4@2 ~ f4@2 ~@9", // F
  F: "[f4,a4] ~ [f4,c5] [f4,d5] ~ d5 c5 ~ [f4,d5] d5 c5 ~ [f4,a4] ~ [f4,c5] ~, ~@5 f4@2 ~@2 f4@2 ~@5", // F F5 Dm F F5
  G: "[f4,f5]@2 ~ [f4,d5] ~@2 [f4,c5] ~@9", H: "f5@3 ~ e5@3 ~ d5@8", I: "~@4 g5 ~ f5 ~ e5@3 ~ c5 d5 e5 ~",
  J: "f5@3 ~ e5@3 ~ d5@6 ~@2", K: "f5 c6 ~ f5 c6@2 f5 c6 ~ c6 f5!2 d6 ~ c6@2", L: "~@4 [a5,f6] [g5,e6] ~ [a5,f6]@5 ~@4",
  M: "f5 c6@2 f5 c6@2 f5 c6 ~ c6 f5!2 d6 ~ c6@2", N: "~@4 [g5,bb5] ~ [f5,a5] ~ [e5,g5]@6 ~@2",
  O: "f5 c6@2 f5 c6@2 f5 c6@2 c6 f5!2 d6 ~ c6@2", P: "~@4 [a5,f6] [g5,e6] ~ [a5,f6]@6 ~@3",
  Q: "f5 c6@2 f5 c6@2 f5 c6 ~ c6 f5!2 d6@2 c6@2", R: "~@4 [g5,bb5] ~ a5@2 [e5,g5]@7 ~, ~@6 f5 ~@9",
  S: "f5 c6 ~ f5 c6 ~ f5 c6 ~ c6 f5!2 d6 ~ c6@2", T: "~@3 f5 [c6,d6,f6] ~ e6 f6 ~@8",
  U: "f5 c6@2 f5 c6@2 f5 c6 ~ c6 f5!2 d6 ~ c6 ~", V: "~@2 bb5 a5 g5 a5 g5 f5 g5 f5 e5 f5 e5 d5 c5 ~",
  W: "f5 c6@2 f5 c6 ~ f5 c6 ~ c6 f5!2 d6 ~ c6@2", X: "~@3 [f5,c6] [d6,f6] ~ e6 f6 ~@8",
  Y: "f5 c6 ~ f5 c6@2 f5 c6 ~ c6 f5!2 d6 ~ c6 ~", Z: "~@2 bb5 a5 g5 a5 g5 f5 e5 f5 e5 d5 c5@2 f5 ~",
})).s("gm_vibraphone").gain(0.2).pan(0.8)

// drums · kick
const kick = s("bd").struct(`<
  A@12 ~@4 B C B D B D B D ~@16 B C B D B D B D ~@12 B E C E B C B D B D B D ~@4 B C B C B C@7 ~@4 B C B D B D B D B C B
  D B D B D B C B D B D B D B C B D B D B D
>`.pickRestart({
  A: "x", B: "x ~@3 x!2 ~@2", C: "x ~@3 x!2 ~ x", D: "x!2", E: "x ~@7 x ~ x!2 ~@2 x ~",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct("<~@60 [~@4 x ~@2 x ~@4 x ~@3]!4 ~@60>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct("<A@10 B A@5 ~@20 A@4 ~@40 C D C@3 D C E F@36>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "x ~ x ~@3 x ~ x!2 ~ x ~@2 x ~", D: "x ~ x ~@3 x ~ x!2 ~ x!2 ~@3",
  E: "x ~ x ~@3 x ~ x!2 ~@2 x ~@3", F: "~ x ~ x ~ x ~ x",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@65 A ~ A ~ A ~ A ~@52>".pickRestart({
  A: "~@3 x",
})).gain(0.2)

// … 90 more lines

More by Michael Walthius