Strudelify

Quinta stagione

Pooh

KeyA minorTempo62 bpm
0:00/0:00
// Quinta stagione — Pooh
// 62 bpm, 12/8, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (12/8 at bar 1, 4/4 at bar 23, 6/8 at bar 32) are rendered on a constant 12/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 44 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(62/6)

// 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 · piano
const piano = note("<A@4 B C D@8 E F G H I J K L@6 M@5 N@3 O P Q R S T U@2 ~>".pickRestart({
  A: "[~@25 e5@14 ~ [e5,a5] d5 c5 ~@11 a3@3 ~@5 a3@3 ~@6 g#4@3 f#4@3 e3@3 ~@5 e3@3 b3@3 ~@6 b3@3 ~@5 b3@3 [d4,f4]@3 c3@3 g3@3 ~@5 g3@3 e4 ~ d4, ~@43 a4@27 ~@7 g#4@17 d5@14 ~@3 f4@14 ~@3]/4", // A5 Dm
  B: "e4@11 [g3,g4]@3 a4@3 a#4@15", C: "~@2 a3 b3 c#4 ~ d4 e4 f4 g4@5 ~ [g3,a#4]@3 a#4@14, ~@7 g3@3 ~@22",
  D: "[a4 g4 ~ a4@10 ~ a4@3 b4@3 c5@15 ~ d4 ~ e4 f#4 g4 ~ a4 b4 ~@3 a3@3 d5@2 ~ d3@3 g3@3 ~@2 d3@3 ~@3 b4 a4 b4@8 ~ [d3,d5]@2 [g3,g5]@3 f5@2 ~ f5@14 e5 ~ d5 ~@3 g3@3 ~@3 f4@3 f5@4 e5 e5@13 ~ d5 c#5 ~ d5@8 e4@3 [e3,e5]@2 d5@2 ~ d5@14 c5 ~ b4 c5@8 [c3,b4]@3 a4@5 e4 e4@17 d#4@8 a4@3 f#4@3 d#4@2 d4@15 e3@3 a2@3 ~@11 a3@3 [f3,f4], ~@20 d3@3 ~@21 c5@5 ~@4 c5@13 ~@37 e5@8 ~@9 b2@3 ~@30 c3@3 ~@31 b2@3 ~@30 g#2@3 ~@15 c#4@17 ~]/8", // D G E Cmaj7 F
  E: "[f3,f4] [g3,g4]@2 ~@7 [f2,f3]@5 [f3,f4] ~ [f3,f4] [g3,g4]@2 ~@6 [f2,f3]@5 ~, ~@4 [a3,a4]@10 ~@7 [a3,a4]@10 ~", // F G F G F A
  F: "[f3,f4]!2 [g3,g4]@2 ~ [a3,a4]@2 ~ [f3,e4,f4] [f3,f4] ~ [g3,g4] ~ [a3,a4]@2 ~ [a3,a4]!2 ~ [b3,b4] ~ [a2,a3,c#4,c#5]@10 ~", // F G A Fmaj7 F G A B …
  G: "[a3,a4]!2 ~ [b3,b4]@2 [c#4,c#5]@9 ~@2 [a3,a4]!2 ~ [b3,b4] ~ [a2,a3]@2 ~ [a3,a4]!2 ~ [b3,b4] ~ [a2,a3]@2 ~, ~@5 [a2,a3]@5 ~@11 [c#4,c#5] ~@7 [c#4,c#5] ~@2", // A B C# A B A B A …
  H: "[d4,d5]!2 ~ [e4,e5] ~ [d3,d4]@10 ~ [d4,d5]!2 ~ [e4,e5] ~ [d3,d4,f#4,f#5]@9 ~@2, ~@5 [f#4,f#5]@8 ~@19", // D E D E D F#
  I: "[d4,d5]!2 ~ e5@2 [d3,d4]@2 ~ [d4,d5]!2 [e4,e5] ~@2 [d3,d4]@2 [f4,f5] ~ [f4,f5] [g4,g5] ~@2 [f3,f4,a4,a5]@10 [f4,f5], ~@3 e4 ~ [f#4,f#5] ~@7 [f#4,f#5] ~@18", // D E D F G F F#
  J: "~ [f4,f5] [g4,g5] ~@2 [f3,f4,a4,a5]@9 ~ [f4,f5]!2 ~ [g4,g5] ~ [f3,f4]@2 ~ [f4,f5]!2 [g4,g5] ~@2 [f3,f4]@2 ~ [a4,a5], ~@20 [a4,a5] ~@7 [a4,a5] ~@3", // F G F G F G F A
  K: "[a4,a5] [b4,b5] ~@2 [a2,a3,c#5,c#6]@8 ~@2 [a4,a5]!2 ~ [b4,b5] ~ [a2,a3,c#5,c#6]@8 ~@3 [a4,a5]!2", // A B A B A
  L: "[[b4,b5] ~@2 [a2,a3]@2 [a4,a5] ~ [a4,a5] [b4,b5] ~ [a2,a3,c#5,c#6]@2 ~ [c2,c3,c5,c6]!2 ~ [d2,d3]@2 [e2,e3,e5,g#5,b5,e6]@11 ~ [a3,c4,e4]@5 [a3,c4,e4]@5 ~ [a3,c4,e4]@5 [a3,c4,e4]@5 ~ [f#3,a3,d#4]@5 [f#3,a3,d#4]@5 [f#3,a3,d#4]@5 ~ [f#3,a3,d#4]@5 [b3,e4,g#4]@5 [b3,e4,g#4]@4 ~@2 e4 d4 b3@2 d4 [b3,e4,g#4]@5 [g3,c4,f4]@5 ~ [g3,c4,f4]@4 ~ [g3,e4] ~ c4 ~ c4 ~ e4 c4 g3 c4 ~ [a#3,c#4,e4]@5 [a#3,c#4,e4]@5 [a3,c#4,e4]@5 ~ [a3,c#4,e4]@5 [a3,c4,f4]@5 [a3,c4,f4]@4 ~@2 [f4,a4]@2 c4 ~ [c4,f4] [c4,f4,a4]@2 ~ [c4,f4]@2 [d4,f#4,a4]@5 ~ [d4,f#4,a4]@5 [d4,f#4,a4]@5 ~ [d4,f#4,a4]@5 [d4,g4,c5]@5 [d4,g4,c5]@5 ~ [d4,g4,b4], ~@3 [c#5,c#6] ~@12 [d5,d6] ~@67 g#4@4 ~ d4 ~@18 g3@2 ~@38 c4 ~@43]/6", // B A B A C D E Am …
  M: "[~ g4 ~ d4 [b3,f4]@5 ~ [g3,c4,f4]@5 [g3,c4,f4]@4 ~ [e4,g4,c5]@2 ~ [e4,g4,c5]@2 ~ [e4,g4,c5]@2 [e4,g4,c5]@3 [e4,g#4,b4]@5 [e4,g#4,b4]@5 ~ [e4,g#4,b4]@2 [e4,g#4,b4]@2 ~ [e4,g#4,b4]@2 ~ [g#3,b3,e4]@2 [f4,a4,d5]@5 ~ [f4,a4,d5]@5 [f4,a4,c5]@5 ~ [f4,a4,c5]@5 [f#3,b3,e4]@5 [f#3,b3,e4]@4 ~@2 [f#3,b3,d#4]@5 [f#3,b3,d#4]@4 ~ [g#3,b3,d4]@5 ~ [g#3,b3,d4]@5 [e3,a3,c#4]@5 [e3,a3,c#4]@5 ~ [f3,f4]!2 ~ [g3,g4]@2 [a3,a4]@10 ~ [f3,f4] ~ [f3,f4] [g3,g4]@2 ~ [a3,a4]@9 ~ [f3,f4] ~ [f3,f4] [g3,g4]@2 ~ [a3,a4]@2 [f3,e4,f4] ~ [f3,f4]]/5", // Bdim Csus4 C E Dm F Esus2 B …
  N: "[[g3,g4] ~@2 [a3,a4]@2 [a3,a4]!2 ~ [b3,b4] ~ [c#4,c#5]@9 ~@2 [a3,a4]!2 ~ [b3,b4]@2 [c#4,c#5]@9 ~@2 [a3,a4]!2 ~ [b3,b4] ~ [c#4,c#5] ~@2 [a3,a4]!2 ~ [b3,b4] ~ [c#4,c#5] ~@2 [d4,d5]!2 [e4,e5] ~@2 [f#4,f#5]@8 ~@2 [d4,d5] ~ [d4,d5] [e4,e5] ~@2 [f#4,f#5]@8 ~@2 [d4,d5]!2 ~ e5@2 [f#4,f#5] ~@2 [d4,d5]!2 [e4,e5] ~, ~@87 e4 ~@8]/3", // G A B C# A B C# A …
  O: "~ [f#4,f#5] ~ [f4,f5] ~ [f4,f5] [g4,g5] ~@2 [a4,a5]@9 ~ [f4,f5]!2 [g4,g5] ~@2 [a4,a5]@8", // F# F G A F G A
  P: "~@2 [f4,f5]!2 ~ [g4,g5] ~ [a4,a5] ~@2 [f4,f5]!2 [g4,g5] ~@2 [a4,a5] ~ [a4,a5] ~ [a4,a5] [b4,b5] ~@2 [c#5,c#6]@8 ~", // F G A F G A B C#
  Q: "~ [a4,a5]!2 [b4,b5] ~@2 [c#5,c#6]@8 ~@2 [a4,a5] ~ [a4,a5] [b4,b5] ~@2 [c#5,c#6] ~ [a4,a5]!2 ~ [b4,b5] ~ [c#5,c#6]@2 ~", // A B C# A B C# A B …
  R: "[d5,f#5,a5,d6]!2 [e5,e6] ~@2 [f#5,a5,d6,f#6]@10 [d5,f#5,a5,d6]!2 ~ [e5,e6] ~ [f#5,a5,d6,f#6]@10 [d5,f#5,a5,d6] ~", // D E D E D
  S: "[d5,f#5,a5,d6] [e5,e6] ~ [f#5,a5,d6,f#6]@2 ~ [d5,f#5,a5,d6]!2 [e5,e6] ~@2 [f#5,a5,d6,f#6]@2 ~ [f5,a5,c6,f6]!2 [g5,g6] ~@2 [a5,c6,f6,a6]@10 [f5,a5,c6,f6]!2 [g5,g6]", // D E D E D F G F …
  T: "~@2 [a5,c6,f6,a6]@10 [f5,a5,c6,f6]!2 ~ [g5,g6] ~ [a5,c6,f6,a6]@2 ~ [f5,a5,c6,f6]!2 [g5,g6] ~@2 [a5,c6,f6,a6]@2 [a5,c#6,e6,a6] ~ [a5,c#6,e6,a6] [b5,b6] ~", // F G F G F A B
  U: "[[c#6,e6,a6,c#7]@10 ~ [a5,c#6,e6,a6]!2 [b5,b6] ~@2 [c#6,e6,a6,c#7]@10 [a5,c#6,e6,a6]!2 ~ [b5,b6] ~ [c#6,e6,a6,c#7]@2 ~ [a5,c#6,e6,a6]!2 [b5,b6] ~@2 [c#6,e6,a6,c#7]@2 [f5,a5,c6,f6] ~ [f5,a5,c6,f6] [g5,g6] ~ [a5,c#6,e6,a6] ~@17]/2", // A B A B A B A F …
})).s("gm_piano").gain(0.36).pan(0.3)

// chords · piano · soft notes
const piano_soft = note("<A@2 B C D@2 E@2 F@2 G@2 H@2 ~@9 I ~@20>".pickRestart({
  A: "[~@8 a3@3 c4@3 e4@3 a3@2 c4@3 e4@3 a3@3 c4@3 e4@3 a3@3 c4@3 e4@3 f#3@2 a3@3 d#4@3 f#3@3 ~@3 d#4@2 f#3@3 ~@2, ~@8 a4@17 ~@39]/2",
  B: "~ d#4@3 f#3@3 a3@3 d#4@3 ~@3 b3@2 d4@3 ~@6 d4@3 e3@2", C: "~@3 d4@3 e3@3 ~@12 c4@2 c3@3 ~@3 c4@3",
  D: "[c3@3 g3@3 c4@2 c3@3 ~@3 c4@3 c#3@2 e3@3 g3@3 c#3@3 e3@3 g3@3 c#3@2 e3@3 ~@2 c#3@3 e3@3 ~@3 c3@3 f3@2 a3@3 c3@3 f3@3]/2",
  E: "[a3@3 c3@2 f3@3 a3@3 c3@3 f3@3 a3@3 ~@2 f#3@3 a3@3 d3@3 f#3@3 a3@2 f#3@3 a3@3 c4@2 f#3@3 ~@3 c4@3 ~@5 b3@3 ~@3]/2",
  F: "[g3@3 b3@2 d3@3 g3@3 b3@3 ~@5 b3@3 c3@3 g3@3 c4@3 c3@3 g3@2 c4@3 c3@3 ~@3 c4@3 c3@3 g3@2 c4@3 ~@3 e3@3 g#3@2]/2",
  G: "[b2@3 e3@3 g#3@3 b2@2 e3@3 g#3@3 b2@3 ~@2 g#3@3 ~@3 f3@3 a3@3 c3@2 f3@3 a3@3 c3@3 f3@3 a3@3 ~@2 f3@3 a3@3 ~@3 f#3@2]/2",
  H: "[a3@3 b2@3 f#3@3 a3@3 b2@2 f#3@3 a3@3 b2@3 f#3@3 a3@3 ~@2 b2@3 e3@3 g#2@3 b2@3 ~@5 e3@3 a3@3 a2@3 e3@3 ~@4]/2",
  I: "~@13 d4@2 ~",
})).s("gm_piano").gain(0.22).pan(0.3)

// bass · fretless bass
const bass = note("<~@13 A B C D E F G H I@4 J@4 K@2 L M N@2 O P Q R S T U@3>".pickRestart({
  A: "~@31 f2", B: "f2 f2@2 ~ f2@11 f2 ~ f2 f2@2 ~ f2@11",
  C: "f2!2 f2@2 ~ f2@2 ~ f2!2 ~ f2@2 f2@2 ~ a2!2 ~ e2 ~ a1@2 ~ a2!2 ~ a2@2 a2@3",
  D: "a2!2 ~ e2@2 a1@3 a2!2 ~ a2@2 a2@3 a2!2 ~ e2@2 a1@2 ~ a2!2 ~ a2@2 a2@3",
  E: "d2!2 ~ d2@2 d2@2 ~ d2!2 ~ d3@2 a2@2 ~ d2!2 ~ d2 ~ d2@2 ~ d3 d2 ~ d2@2 d2@2 ~",
  F: "d2!2 ~ d2 ~ d2@2 ~ d2!3 ~@2 d2 ~ f2 ~ f2 c2 ~@2 f2@2 f2 ~ f2 c2@3 f1@2 f2",
  G: "~ f2 f2@2 ~ f2@2 c3 ~ f2 f2@2 f2@2 ~ f2!2 ~ f2@2 f2@2 ~ f2!2 f2@2 ~ f2@2 ~ a2",
  H: "a2 e2@2 ~ a1@2 a2 ~ a2 a2@2 a2@3 a2!2 ~ e2@2 a1@2 ~ a2!2 a2@2 ~ a2@2 ~ a2!2",
  I: "[e2@2 ~ a1@2 a2 ~ a2 a2@2 a2@2 ~ c2!2 ~ d2 ~ e2@10 ~@2 a2@10 ~ a2@2 a2@5 ~ f#2 ~@2 f#2@8 ~ f#2 c#3@5 ~ a2@2 f#2@2 ~ e2@5 b2@3 e2@3 e3@5 e2@2 ~ b1@2 c2@9 ~ c2 c2@2 ~ c2@3 g2@2 c2@2 ~ c#2@9 c#2 a2@2]/4",
  J: "[~ c#2@2 ~ a1@2 c#2@3 f2@5 c3@3 ~ c3 ~ f3@2 f3@2 ~ f3@2 ~ c3@2 f#2@5 ~ d2@3 f#2@2 a2@5 ~ d3@2 a2@3 g2@5 g2@2 ~ g2@2 ~ g2@2 g2@2 ~ g2@2 ~ g2@2 ~ c3@8 g2@2 c2@5 ~ g2 c2 ~@3 e2@5 b2@3 e2@3 e3@2 e3@3 e3 b2 ~ e2@2 f2@5 ~ c3@3 f2@2 g3]/4",
  K: "[~ f3 c3@2 ~ f2 c3 f2@2 ~ b2@9 f#2 ~ b2@2 b2@3 ~ b2 ~ b2@2 g#2@6 e2 ~ g#2@2 ~ a2@2 ~ a2!2 a2@2 ~ a2@2 ~ f2!2 ~ f2 ~ f2@2 ~ f2!2 ~]/2",
  L: "f2@2 ~ f2@2 f2 ~ f2!2 ~@2 f2@2 f2 ~ f2 f2@2 ~ f2@2 f2 ~ f2 f2@2 ~ f2@2 f2 ~ f2",
  M: "f2@2 ~ f2@2 a2!2 ~ e2@2 a1@2 ~ a2!2 ~ a2@2 a2@3 a2!2 ~ e2@2 a1@3 a2!2 ~",
  N: "[a2@2 a2@3 a2!2 ~ e2@2 a1@2 ~ a1!2 ~ a1@2 a1@2 ~ d2!2 a2 ~@2 d2@2 ~ d2!2 d2@2 ~ d2@2 d2 ~ d2 a2 ~@2 d2@2 d2!2 ~ d2@2 d2@2 ~ d2!2 ~ a2 ~ d3@2 ~ a2!2 d2@2]/2",
  O: "~ d3@2 f2 ~ f2!2 ~@2 f2@2 c3!2 ~ f2@2 f2@2 ~ f2!3 ~@2 f2@2 c3 ~ c3 f2@2 ~",
  P: "f2@2 f2!2 ~ f2@2 f2@2 ~ f2!2 f2@2 ~ f2@2 a2 ~ a2 e2@2 ~ a1@2 a2!2 ~ a2@2 e2@2",
  Q: "~ a2!2 a2@2 ~ a2@2 ~ e2 a2 a2@2 ~ a2@2 a2 ~ a2 e2@2 ~ a1@2 a2!2 ~ a2@2 a2@2 ~",
  R: "d2!2 d3@2 ~ d2@2 d3 ~ d2 d2@2 d3@2 ~ d2!2 ~ a2@2 d2@2 ~ a2 d3 d3@2 ~ d3@2 d2 ~",
  S: "d2 d2@2 d2@2 ~ d2!2 d2@2 ~ d2@2 ~ f2!2 c2 ~@2 f2@2 f2!2 ~ f2@2 f2@2 ~ f2!2 c2",
  T: "~@2 f2@2 f2 ~ f2 f2@2 ~ f2@2 f2!2 ~ c2@2 f2@2 ~ f2!3 ~@2 f2@2 a2 ~ a2 e2@2",
  U: "[a1@2 ~ a2@2 a2@2 ~ a2@3 a2!2 e2@2 ~ a1@2 a2 ~ a2 e2@2 a1@3 a2!2 ~ a2@2 a2@2 ~ a2!3 ~@2 a2@2 f2 ~ f2!2 ~ a2 ~@2 a1@37 ~@10]/3",
})).s("gm_fretless_bass").gain(0.35)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@13 A@2 B C D E@4 ~@8 F@7 G H@5 ~>".pickRestart({
  A: "[~@31 [a2,c3,f3]@33]/2", B: "[a2,c3,f3] [c#3,e3,a3]", C: "[c#3,e3,a3]", D: "[d3,f#3,a3]",
  E: "[[d3,f#3,a3]@15 [c3,f3,a3]@16 [c3,f3,a3]@31 ~ [e3,a3,c#4]@31 [e3,a3,c#4]@15 [c3,e3,g3]!2 ~ [c3,e3,g3]@2 [e3,g#3,b3,e4]@11 ~@3]/4", // D F A C E
  F: "[~@21 [a2,c3,f3]@16 [a2,c3,f3]@16 [a2,c3,f3]@16 [c#3,e3,a3]@16 [c#3,e3,a3]@16 [c#3,e3,a3]@16 [d3,f#3,a3]@15 [d3,f#3,a3]@15 ~ [d3,f#3,a3]@15 [c3,f3,a3]@15 ~ [c3,f3,a3]@15 [c3,f3,a3]@15 [e3,a3,c#4]@15]/7", // F A D F A
  G: "~ [e3,a3,c#4]@15 [e3,a3,c#4]@15 ~", // A
  H: "[[f#3,a3,d4]@15 [f#3,a3,d4]@15 [f#3,a3,d4]@15 ~ [f3,a3,c4]@15 [f3,a3,c4]@15 [f3,a3,c4]@15 [a3,c#4,e4]@15 ~ [a3,c#4,e4]@15 [a3,c#4,e4]@15 [f3,a3,c4,f4] ~ [f3,a3,c4,f4] [f3,a3,c4,f4]@2 [a3,c#4,e4,a4] ~@17]/5", // D F A F A
})).s("gm_string_ensemble_2").gain(0.12)

// other · french horn
const french_horn = note("<~@14 A B C D E ~@11 F@4 G ~@9>".pickRestart({
  A: "~@7 c4@5 d4@5 ~@4 c4@5 d4@2 ~ f4@3", B: "g4@5 a4@10 ~@6 f#4@5 ~ c#4@5", C: "~@4 f#4@11 ~ b3@5 c#4@3 e4@8",
  D: "f#4@5 g4@3 a4@8 f#4@5 g4@3 a4@8", E: "a4@5 b4@3 f#4@8 ~@16",
  F: "[~@29 c4@8 d4@5 ~@3 c4@8 c4@15 ~ e4@5 c#4@5 b4@3 a4@3 ~@8 b4@5 a4@3 ~@27, ~@43 f4@11 ~@74]/4",
  G: "~@2 a4@2 ~ b4@4 ~@3 a4@7 ~@13",
})).s("gm_french_horn").gain(0.25).pan(0.6)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@20 A B@4 C@6 ~@7 D@6>".pickRestart({
  A: "~@4 c#5@10 ~@5 c#5@10 ~@3",
  B: "[~@3 c#5@2 ~@5 c#5@3 ~@5 [e4,b4,e5]@11 ~ [c4,e4,a4]@22 [d#4,f#4,a4]@21 [b3,e4,g#4]@21 [g3,c4,f4]@11 [g3,c4,e4]@10 ~ [a#3,c#4,e4]@10 [a3,c#4,e4]@2]/4", // E5 Am D#dim E Csus4 C A#dim A
  C: "[~@9 [a3,c4,f4]@21 [d4,f#4,a4,c5]@21 ~ [d4,g4,c5]@11 [d4,g4,b4]@11 [g3,c4,f4]@10 [g3,c4,e4]@11 [e4,g#4,b4]@21 [f4,a4,d5]@11 [f4,a4,c5]@11 [f#3,b3,e4]@11 [f#3,a3,b3,d#4]@10 [e3,g#3,b3,d4]@11 [e3,a3,c#4]@11 ~@11]/6", // F D7 Csus2 G Csus4 C E Dm …
  D: "[d5@7 c#5@3 a4@2 f#4@10 ~ d4@2 d5@3 c#5@2 a4@8 d5@2 c#5@3 a4@3 c5@7 f5@3 e5@2 c5@10 f4@3 f5@3 e5@2 c5@3 f5@2 e5@3 c5@2 f5@3 e5@2 c#5@3 a5@5 g#5@2 e5@3 c#5@5 a4@3 a5@2 g#5@3 e5@2 a4@3 a5@3 g#5@2 e5@3 a5@2 g#5@3 e5@2 [f4,f5] ~ [f4,f5] [g4,g5] ~ [a4,a5] ~@2 a3@28 ~@19]/6", // F G A
})).s("gm_string_ensemble_1").gain(0.35)

// chords · distortion guitar
const distortion_guitar = note("<~@18 A B C D ~@13 E F G H I J K L ~>".pickRestart({
  A: "~@8 f#4@8 f4@6 ~ [f3,a3,c4] ~ [c4,f4,a4] [f3,a3,c4] [c4,f4,a4] ~ [c4,f4,a4]!2 ~", // F
  B: "~@7 [a3,c4,f4] ~ c4 ~ c4 a3 ~ f3 f4!2 ~ g4 ~ a4 ~@2 f4!2 g4 ~@2 a4 ~@2 a4, ~@5 f4 ~@10", // F
  C: "a4 b4 ~@2 [a4,c#5,e5]!2 ~@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2 ~ [a4,c#5,e5] a4!2 ~ b4@2 [a4,c#5,e5] ~ [a4,c#5,e5]@2 [a4,c#5,e5]@2 ~ [a4,c#5,e5]@2 [a4,c#5,e5] ~ a4!2", // A
  D: "b4 ~@2 [a4,c#5] ~ a4 ~ a4 b4 ~ [a4,c#5] ~@21", // A
  E: "~@3 [a3,c4,f4] ~ [a3,c4,f4] [a3,c4,g4] ~@2 [c4,f4,a4] ~ [c4,f4]!2 ~ [a3,c4] [c4,f4] [c4,f4]@2 ~ [a3,c4,f4]!2 [a3,c4,g4] ~@2 [c4,f4,a4] ~ [a3,c4,f4] ~ [a3,c4,f4]@2 [a3,c4,f4] ~", // F Am7 F F5 Am F5 F Am7 …
  F: "[a3,c4,f4]!4 ~ [a3,c4,g4] ~ [c4,f4,a4] ~@2 [a3,c4,f4]!2 [a3,c4,g4] ~@2 [c4,f4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] [c#4,e4,b4] ~@2 [e4,a4,c#5] ~ [c#4,e4,a4]!2 ~@2 [c#4,e4,a4]!3", // F Am7 F Am7 F A C#m7 A
  G: "~ [c#4,e4,a4]!2 [c#4,e4,b4] ~@2 [e4,a4,c#5] ~@2 [c#4,e4,a4]!2 ~@2 [c#4,e4,a4]!2 ~ [c#4,e4,a4] ~ [c#4,e4,a4] [c#4,e4,b4] ~@2 [e4,a4,c#5] ~ [c#4,e4,a4]!2 ~ [c#4,e4,b4] ~ [e4,a4,c#5] ~@2", // A C#m7 A C#m7 A C#m7 A
  H: "[f#4,a4,d5]!2 [f#4,a4,e5] ~@2 [a4,d5,f#5] ~ [d4,f#4,a4] ~ [d4,f#4,a4] ~ [f#4,a4,d5] ~@2 [f#4,a4,d5]!3 ~ [f#4,a4,e5] ~ [a4,d5,f#5] ~@2 [a4,d5,f#5]!2 [f#4,a4,d5]!2 ~ [a4,d5,f#5] ~ [f#4,a4,d5] ~", // D F#m7 D F#m7 D
  I: "[f#4,a4,d5] [f#4,a4,e5] ~ [a4,d5,f#5] ~@2 [f#4,a4,d5]!2 [f#4,a4,e5] ~@2 [a4,d5,f#5] ~@2 [a3,c4,f4]!2 [a3,c4,g4] ~@2 [c4,f4,a4] ~ [c4,f4]!2 ~ [a3,c4] [c4,f4] [c4,f4]@2 ~ [a3,c4,f4]!2 [a3,c4,g4]", // D F#m7 D F#m7 D F Am7 F …
  J: "~@2 [c4,f4,a4] ~ [a3,c4,f4] ~ [a3,c4,f4]@2 [a3,c4,f4] ~ [a3,c4,f4]!4 ~ [a3,c4,g4] ~ [c4,f4,a4] ~@2 [a3,c4,f4]!2 [a3,c4,g4] ~@2 [c4,f4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4] [c#4,e4,b4] ~", // F Am7 F Am7 F A C#m7
  K: "[e4,a4,c#5] ~@2 [c#4,e4,a4]!2 ~@2 [c#4,e4,a4]!3 ~ [c#4,e4,a4]!2 [c#4,e4,b4] ~@2 [e4,a4,c#5] ~ [c#4,e4,a4] ~ [c#4,e4,a4] ~ [c#4,e4,a4]!2 ~@2 [c#4,e4,a4]!2 ~ [c#4,e4,b4] ~ [e4,a4,c#5]", // A C#m7 A C#m7 A
  L: "~@2 [c#4,e4,a4]!2 [c#4,e4,b4] ~@2 [e4,a4,c#5] ~@24", // A C#m7 A
})).s("gm_distortion_guitar").gain(0.19).pan(0.4)

// other · timpani
const timpani = note("<~@21 [~@18 e3!12 ~@2] ~@20 [~@17 e3!15] [e3!9 ~@23]>").s("gm_timpani").gain(0.19).pan(0.7)

// drums · kick
const kick = s("bd").struct("<~@13 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 AA AB AC AD ~>".pickRestart({
  A: "~@31 x", B: "x!2 ~@2 x ~@10 x ~ x!2 ~@2 x ~@10", C: "x!3 ~@2 x ~@2 x!2 ~ x ~ x ~@2 x!2 ~ x ~ x ~@10",
  D: "x!2 ~ x ~ x ~@10 x!2 ~ x ~ x ~@2 x!2 ~ x ~ x ~@2", E: "x!2 ~ x ~ x ~@10 x!2 ~ x ~ x ~@10",
  F: "x!2 ~ x ~ x ~@2 x!3 ~@2 x ~ x ~ x!2 ~@2 x ~@9 x", G: "~ x!2 ~@2 x ~@9 x!2 ~ x ~ x ~@2 x!3 ~@2 x ~@2 x",
  H: "x!2 ~@2 x ~@9 x!2 ~ x ~ x ~@10 x!2", I: "x ~@2 x ~ x ~ x!2 ~ x ~@2 x!2 ~ x ~ x ~@11 x ~",
  J: "~@7 x ~ x ~ x ~ x ~@3 x ~@2 x ~@8 x!2 ~", K: "~ x!2 ~@2 x!2 ~ x!2 ~@8 x ~ x ~ x ~ x ~@3 x ~ x ~",
  L: "~@8 x!2 ~@2 x!2 ~@2 x!3 ~ x ~@8 x!2 ~", M: "~ x!2 ~@3 x ~@2 x ~@8 x ~ x ~ x ~ x ~@3 x ~ x ~",
  N: "~@8 x!2 ~@2 x!2 ~@3 x ~@2 x ~@8 x ~ x", O: "~ x ~ x ~@3 x ~@2 x ~@8 x!2 ~@2 x!2 ~@3 x ~@2 x",
  P: "~@8 x ~ x ~ x ~ x ~ x ~ x!3 ~@9 x!2", Q: "~@2 x!2 ~@3 x ~@2 x ~@8 x ~ x ~ x ~@3 x ~ x!3",
  R: "~@9 x!2 ~@2 x!2 ~@3 x ~@2 x!2 ~ x ~ x ~@5", S: "~@5 x ~ x!2 ~@2 x ~@9 x ~ x!2 ~@2 x ~ x ~ x",
  T: "x ~@2 x ~ x!2 ~ x ~ x ~@10 x!2 ~ x ~ x ~@5", U: "~@5 x!2 ~ x ~ x ~@2 x!2 ~ x ~ x ~@2 x!3 ~@2 x ~@5",
  V: "~@4 x ~ x!2 ~@2 x ~@9 x!2 ~ x ~ x ~@2 x!3 ~", W: "~ x ~ x ~ x!2 ~@2 x ~@9 x!3 ~@2 x ~@7",
  X: "~@2 x!2 ~ x ~ x ~@2 x!3 ~@2 x ~ x ~ x!2 ~@2 x ~@8", Y: "~ x!3 ~@2 x ~@9 x ~ x!2 ~@2 x ~ x!2 ~ x ~ x ~@2",
  Z: "x!3 ~@2 x ~@9 x!2 ~ x ~ x ~@9 x ~", AA: "x!2 ~ x ~@2 x!3 ~@2 x ~@2 x!3 ~@2 x ~@9 x!3",
  AB: "~@2 x ~@9 x!2 ~ x ~ x ~@2 x!3 ~@2 x ~ x ~ x!2 ~", AC: "x ~@10 x!3 ~@2 x ~@9 x!2 ~ x ~ x",
  AD: "~@2 x!3 ~@2 x ~ x ~ x!2 ~ x ~@17",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@14 A B C D B E F G H I J I J K@2 L@2 M N O P Q R S T U V W X ~>".pickRestart({
  A: "~@4 x ~@16 x ~@10", B: "~@5 x ~@7 x ~@7 x ~@10", C: "~@5 x ~@15 x ~@7 x ~@2", D: "~@5 x ~@15 x ~@10",
  E: "~@5 x ~@14 x ~@7 x ~@3", F: "~@4 x ~@14 x ~@12", G: "~@3 x ~@6 x ~@7 x ~@13", H: "~@3 x ~@10 x ~@10 x ~@6",
  I: "~@4 x ~@9 x ~@10 x ~@6", J: "~@4 x ~@10 x ~@9 x ~@6", K: "~@4 x ~@10 x ~@10 x ~@5", L: "~@5 x ~@9 x ~@10 x ~@5",
  M: "~@11 x ~@15 x ~@4", N: "~@3 x ~@6 x ~@15 x ~@5", O: "~@5 x ~@3 x ~@3 x ~@2", P: "~@10 x ~@14 x ~@6",
  Q: "~ x ~@7 x ~@14 x ~@7", R: "~@7 x ~@7 x ~@7 x ~@8", S: "~@6 x ~@15 x ~@6 x ~@2", T: "~@5 x ~@14 x ~@11",
  U: "~@3 x ~@7 x ~@7 x ~@12", V: "~@2 x ~@14 x ~@7 x ~@6", W: "x ~@15 x ~@14 x", X: "~@7 x ~@6 x ~@17",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<~@13 A B C D E F G H I ~ J ~@2 K ~@3 L M N O P Q R S T U V W X ~>".pickRestart({
  A: "~@31 x", B: "x!2 ~@2 x ~@10 x ~ x!2 ~@2 x ~@10", C: "x!3 ~@2 x ~@2 x!2 ~ x ~ x ~@2 x!2 ~ x ~@12",
  D: "x!2 ~ x ~ x ~@10 x!2 ~ x ~ x ~@2 x!2 ~ x ~ x ~@2", E: "x!2 ~ x ~@12 x!2 ~ x ~@12",
  F: "x!2 ~ x ~@4 x!3 ~@4 x ~ x!2 ~@12 x", G: "~ x!2 ~@12 x!2 ~ x ~@4 x!3 ~@5 x", H: "x!2 ~@12 x!2 ~ x ~@12 x!2",
  I: "x ~@4 x ~ x!2 ~@4 x!2 ~ x ~@15", J: "~@2 x!2 ~@12", K: "~@15 x ~ x ~@14", L: "~@15 x ~@2 x ~@2 x!2 ~ x ~ x ~@5",
  M: "~@5 x ~ x!2 ~@2 x ~@9 x ~ x!2 ~@2 x ~ x ~ x", N: "x ~@2 x ~ x!2 ~ x ~@12 x!2 ~ x ~ x ~@5",
  O: "~@5 x!2 ~ x ~ x ~@2 x!2 ~ x ~ x ~@2 x!3 ~@8", P: "~@4 x ~ x!2 ~@12 x!2 ~ x ~@4 x!3 ~",
  Q: "~@3 x ~ x!2 ~@12 x!3 ~@10", R: "~@2 x!2 ~ x ~@4 x!3 ~@4 x ~ x!2 ~@11", S: "~ x!3 ~@12 x ~ x!2 ~@4 x!2 ~ x ~@4",
  T: "x!3 ~@12 x!2 ~ x ~@11 x ~", U: "x!2 ~@4 x!3 ~@5 x!3 ~@12 x!3", V: "~@12 x!2 ~ x ~@4 x!3 ~@4 x ~ x!2 ~",
  W: "~@11 x!3 ~@12 x!2 ~ x ~@2", X: "~@2 x!3 ~@4 x ~ x!2 ~@3 x ~@15",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@23 A ~@2 B ~@3 C ~@11 D ~>".pickRestart({
  A: "~@5 x ~@26", B: "~ x", C: "~@17 x ~@14", D: "~@7 x ~@8",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@15 A ~ B A B C D ~@2 E ~ E F E G ~@2 F H ~ I J K L M N O P ~>".pickRestart({
  A: "~@21 x ~@10", B: "~@5 x ~@26", C: "~@4 x ~@14 x ~@12", D: "~@3 x ~@6 x ~@7 x ~@11 x ~", E: "~@5 x ~@2",
  F: "~@5 x ~@10", G: "~@31 x", H: "~@13 x ~@2", I: "~@9 x ~@14 x ~@7", J: "~@23 x ~@8", K: "~@6 x ~@15 x ~@6 x ~@2",
  L: "~@5 x ~@14 x ~@11", M: "~@3 x ~@7 x ~@7 x ~@12", N: "~@2 x ~@14 x ~@7 x ~@6", O: "x ~@15 x ~@14 x",
  P: "~@7 x ~@24",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@17 A B C D E F G H G I J K L M ~@2 N O P Q R S T U V W ~>".pickRestart({
  A: "x!2 ~ x ~ x ~@10 x!2 ~ x ~ x ~@10", B: "x!2 ~ x ~ x ~@2 x!3 ~@2 x ~ x ~ x!2 ~@2 x ~@9 x",
  C: "~ x!2 ~@2 x ~@9 x!2 ~ x ~ x ~@2 x!3 ~@2 x ~@2 x", D: "x!2 ~@2 x ~@9 x!2 ~ x ~ x ~@10 x!2",
  E: "x ~@2 x ~ x ~ x!2 ~ x ~@2 x!2 ~ x ~ x ~@13", F: "x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  G: "~ x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~",
  H: "~ x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~ x ~@4 x ~@2 x ~@2 x ~ x ~",
  I: "~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@5 x ~ x ~@2 x ~@2 x",
  J: "~ x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x",
  K: "~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@4 x ~@2 x ~@2 x ~ x",
  L: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2", M: "~@2 x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@13",
  N: "~@21 x!3 ~@2 x ~@5", O: "~@4 x ~ x!2 ~@2 x ~@9 x!2 ~ x ~ x ~@2 x!3 ~", P: "~ x ~ x ~ x!2 ~@2 x ~@9 x!3 ~@2 x ~@7",
  Q: "~@2 x!2 ~ x ~ x ~@2 x!3 ~@2 x ~ x ~ x!2 ~@2 x ~@8", R: "~ x!3 ~@2 x ~@9 x ~ x!2 ~@2 x ~ x!2 ~ x ~ x ~@2",
  S: "x!3 ~@12 x!2 ~ x ~@11 x ~", T: "x!2 ~ x ~@2 x!3 ~@2 x ~@2 x!3 ~@12 x!3",
  U: "~@12 x!2 ~ x ~ x ~@2 x!3 ~@2 x ~ x ~ x!2 ~", V: "~@11 x!3 ~@12 x!2 ~ x ~ x", W: "~@2 x!3 ~@2 x ~ x ~ x!2 ~@19",
})).gain(0.3)

stack(
  piano, piano_soft, bass, string_ensemble_2, french_horn, string_ensemble_1, distortion_guitar, timpani, kick, snare,
  hihat, open_hat, crash, ride
)

More by Pooh