Strudelify

Quando una lei va via

Pooh

KeyD majorTempo59 bpm
0:00/0:00
// Quando una lei va via — Pooh
// 59 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 10, 4/4 at bar 11, 5/4 at bar 19, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 49 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(59/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 · piano
const piano = note("<~ A@3 B@6 ~@9 C D E F G H I J@2 ~@8 K L M N ~@9>".pickRestart({
  A: "[~@23 a3@6 a3@6 [f#3,c#4,f#4]@6 a3@3 [a3,c#4,f#4]@3 [a3,c#4,f#4]@3 [a3,c#4,f#4]@3 ~@3 f#3@3 [e3,b3]@6 ~@6 [b3,e4]@3 ~@6 b3@3 ~@6 a3@3 ~@12 a3@3 a3@6 ~@12 a3@6 [f#3,a3,c#4]@6 ~@3 f#3@3 a3, ~@23 [d2,d3,d4,f#4]@12 f#2@24 e2@24 a2@24 d2@24 [f#2,e4,f#4]@13, ~@35 a3@2 ~@7 f#3@9 [a3,c#4,f#4]@6 [d4,e4,g4]@15 ~@18 d4@15 ~@9 d3@6 d3@9 ~@13, ~@65 b3@6 ~@3 [b3,d4,e4,g4]@9 [a3,d4,e4]@9 [a3,e4]@6 [a3,c#4,e4]@9 ~@6 a3@6 [d4,f#4]@12 ~@13, ~@68 e3@9 e3@6 ~@3 e3@9 e3@6 e3@6 [d3,d4,f#4]@12 a3@6 ~@12 [a3,c#4]@7]/3", // F#5 F#m E5 F#m D F#7 F#m Em7 …
  B: "[~@5 f#3@6 [e3,b3]@6 ~@6 [b3,d4]@3 ~@6 b3@3 a3@6 ~@6 a3@6 a3@6 [e3,b3]@6 ~@6 b3@3 ~@6 b3@3 a3@6 ~@15 d4@2 ~ a3@6 a3@3 a3@3 a3@6 ~@3 d4@3 ~@9 d4@3 b3@6 ~@3 d4@3 e3@6 ~@6 b3@3 ~@6 b3@3 ~@18 a3@5 ~@22 f#4@3 [d2,d3,d4]@42 ~@19, ~@2 [a3,c#4,e4,f#4]@9 e2@24 [a2,e4]@12 [a2,c#4,e4]@12 e2@24 [a2,d4]@23 ~ [d2,d3]@24 ~@3 b2@21 b3@2 ~@4 b3@6 ~@3 [b3,d4,e4,g4]@9 a3@6 a3@6 a3@6 ~@6 g3@6 g3@15 a3@45 ~@19, ~@11 [d4,e4,g4]@15 ~@9 d4@24 [d4,e4,g4]@15 ~@9 e4@12 [c#4,e4]@11 ~ [d4,f#4]@12 ~@6 a3@6 b3@6 b3@6 [a1,a2,d4,f#4]@12 ~@9 e3@9 e3@6 ~@3 e3@6 e3@6 e3@8 ~@4 d3@6 a3@9 d3@6 ~@61, ~@17 b3@6 ~@3 [b3,d4,e4,g4]@9 ~@6 a3@6 ~@18 b3@6 ~@3 [b3,d4,e4,g4]@9 ~@6 a3@6 a3@6 a3@5 ~@10 d4@12 ~@3 [d4,f#4]@12 ~@6 b3@6 [d4,e4,g4]@15 ~@9 e4@12 [c#4,e4]@11 ~ d4@12 d3@3 d4@9 f#4@49 ~@12, ~@20 e3@9 e3@15 e3@15 ~@9 e3@9 e3@15 e3@6 e3@8 ~@13 [c#2,c#3,c#4,f#4]@12 b1@24 e2@24 [a2,d4]@23 ~ [g2,b3]@24 ~@61]/6", // E5 Bm E5 D F#m7 A5 A D5 …
  C: "~@4 a3@2 a3@2 [f#3,c#4,f#4]@2 a3 [a3,c#4,f#4]!3 ~ f#3, ~ [d2,d3,d4,f#4] f#2@2, ~@24 a3@2 ~@7 f#3@9 [a3,c#4,f#4]@6", // F#5 F#m D F#m
  D: "[e3,b3]@2 ~@2 [b3,e4] ~@2 b3 ~@2 a3 ~@4 a3, e2 a2, [d4,e4,g4]@5 ~@6 d4@5, ~@2 b3@2 ~ [b3,d4,e4,g4]@3 [a3,d4,e4]@3 [a3,e4]@2 [a3,c#4,e4]@3, ~@3 e3@3 e3@2 ~ e3@3 e3@2 e3@2", // E5 Em7 Asus4 A5 A
  E: "a3@2 ~@4 a3@2 [f#3,a3,c#4]@2 ~@2 a3 ~ f#3@2, d2 f#2, [d3,d4,f#4]@3 d3@2 d3@3 ~@3 f#3@3 ~@2, ~@2 a3@2 [d4,f#4]@4 [e4,f#4]@5 ~@3, ~@4 a3@2 ~@4 [a3,c#4]@3 [a3,c#4,e4,f#4]@3", // F#m D Esus2 A F#m7
  F: "[e3,b3]@2 ~@2 [b3,d4] ~@2 b3 a3@2 ~@2 a3@2 a3@2, e2@2 [a2,e4] [a2,c#4,e4], [d4,e4,g4]@5 ~@3 d4@8, ~@2 b3@2 ~ [b3,d4,e4,g4]@3 ~@2 a3@2 ~@4, ~@3 e3@3 e3@5 e3@5", // E5 Bm A5 A Em7
  G: "[e3,b3]@6 ~@6 b3@3 ~@6 b3@3 a3@6 ~@15 d4@2 ~, e2@24 [a2,d4]@23 ~, [d4,e4,g4]@15 ~@9 e4@12 [c#4,e4]@11 ~, ~@6 b3@6 ~@3 [b3,d4,e4,g4]@9 ~@6 a3@6 a3@6 a3@5 ~, ~@9 e3@9 e3@15 e3@6 e3@8 ~", // E5 D5 Em7 C#m Em7
  H: "a3@2 a3!2 a3@2 ~ d4 ~@3 d4 b3@2 ~ d4, [d2,d3]@4 b3!2 [a1,a2,d4,f#4]@2, [d4,f#4]@3 d4@3 a3@2 [d4,f#4]@4 ~@2 b3@2, ~ [c#2,c#3,c#4,f#4] b1@2, ~@9 b2@7", // D F#5
  I: "e3@6 ~@6 b3@3 ~@6 b3@3 ~@18 a3@5 ~, e2@24 [a2,d4]@23 ~, [d4,e4,g4]@15 ~@9 e4@12 [c#4,e4]@11 ~, b3@2 ~@4 b3@6 ~@3 [b3,d4,e4,g4]@9 a3@6 a3@6 a3@6 ~@6, ~@9 e3@9 e3@6 ~@3 e3@6 e3@6 e3@8 ~", // D5 Em7 C#m Em7
  J: "[~@7 f#4 [d2,d3,d4]@14 ~@10, [g2,b3]@7 a3@15 ~@10, d4@12 d3@3 d4@9 f#4@49 ~@23, g3 g3@3 ~@12, ~ d3@2 a3@3 d3@2 ~@24]/2", // D G
  K: "~@34 [g2,b3,d4,g4] ~@13", // G
  L: "~@16 [g2,g4] ~@2 [f#2,b3,f#4] ~@2 [e2,b3,e4,g4] ~@2 [e2,b3,e4,g4] ~@2 [e2,b3,e4,g4] ~@19", // G B5 Em
  M: "~@10 [g2,b3,d4,g4] ~@2 [g2,b3,d4,g4] ~@26 [f#2,b3,f#4] ~@2 [g2,g4] ~@2 [e2,b3,e4,g4] ~", // G B5 G Em
  N: "~ [e2,b3,e4,g4] ~@2 [e2,b3,e4,g4] ~@2 [e2,b3,e4,g4] ~@8 [e2,b3,e4,g4] ~@2 [e2,b3,e4,g4] ~@2 [e2,b3,e4,g4] ~@2 [e2,b3,e4,g4] ~@22", // Em
})).s("gm_piano").gain(0.35)

// bass · fretless bass
const bass = note(`<
  ~ A@3 B C D@2 E@2 F@5 G H I J K L M N O P Q R@2 S T U V W@5 X Y Z@2 AA AB AC@2 AD AE AF AG
>`.pickRestart({
  A: "[~@23 d2@12 f#2@24 e2@11 ~ b2@3 g2@3 e2@6 a1@7 ~@2 a1@9 a2@6 d2@16 ~@2 d2@5 ~ f#2@13]/3",
  B: "~@5 f#2@6 e2@11 ~ b2@3 g2@3 e2@6 a1@13", C: "~@2 a2@9 e2@16 ~@2 e2@6 a1@13",
  D: "[~@5 a1@3 b1@2 ~ d2@12 c#2@12 b1@12 a1@12 e1@15 e2@9 a1@13]/2", E: "[~@2 a2@9 g2@24 d2@48 ~@13]/2",
  F: "[~@23 g2@12 f#2@12 e2@12 d2@12 a2@12 g2@12 f#2@12 e2@12 b2@12 a2@12 g2@12 f#2@12 e2@12 a1@12 d2@9 f#2@9 e2@9 ~ d2@9 g2@12]/5",
  G: "f#2 e2 d2 a2", H: "g2@4 f#2@4 a#2 f#2 c#2@2 b2@4", I: "a2 g2 f#2 e2", J: "g1 a1@3", K: "~ d2 f#2@2",
  L: "e2@11 ~ b2@3 g2@3 e2@6 a1@7 ~@2 a1@9 a2@6", M: "d2@16 ~@2 d2@5 ~ f#2@16 ~@2 f#2@6",
  N: "e2@11 ~ b2@3 g2@3 e2@6 a1@15 a2@9", O: "e2@16 ~@2 e2@6 a1@16 ~@2 a1@3 b1@2 ~", P: "d2 c#2 b1 a1",
  Q: "e1@5 e2@3 a1@5 a2@3", R: "[g2 d2@2 ~]/2", S: "~ g2 f#2 e2", T: "d2 a2 g2 f#2", U: "e2 b2 a2 g2",
  V: "f#2@2 e2@2 a1@2 d2 f#2",
  W: "[~@3 e2@9 ~ d2@9 g2@12 f#2@12 e2@12 d2@12 a2@12 g2@12 f#2@12 e2@12 b2@12 a2@12 g2@12 f#2@12 e2@12 a1@12 d2@23 ~@13 g2@4 ~@10]/5",
  X: "~@16 f#2@3 g2@2 ~ e2@2 ~ e2 ~@2 e2 ~@19", Y: "~@10 g2 ~@2 g2@2 ~@25 f#2@2 ~ g2 ~@2 e2 ~",
  Z: "[~ e2 ~@2 e2 ~@2 e2@2 ~@7 e2 ~@2 e2 ~@2 e2 ~@2 e2@2 ~@7 f#2@9 e2@9 ~ d2@9 g2@12 f#2@12 e2@10]/2",
  AA: "~ d2@6 a2@6 g2@6 f#2@5", AB: "~ e2@6 b2@6 a2@6 g2@5",
  AC: "[~@2 f#2@12 e2@12 a1@12 ~@12 f#2@8 e2@8 ~ d2@8 g2@12 f#2@9, ~@19 d2@14 ~@15]/2", AD: "~ e2@4 d2@4 a2@4 g2@3",
  AE: "~ f#2@4 e2@4 b2@4 a2@3", AF: "~ g2@4 f#2@4 e2@4 a1@3", AG: "~@3 d2@23 ~@22",
})).s("gm_fretless_bass").gain(0.46)

// chords · flute
const flute = note("<~@8 A@2 ~@16 B@2 ~@21>".pickRestart({
  A: "[~@11 b4@9 c5 c#5@2 d5@49 ~@24]/2", B: "[b4@9 c5 ~@2 d5@49 ~@35, ~@11 c#5@2 ~@83]/2",
})).s("gm_flute").gain(0.29).pan(0.9)

// chords · flute · soft notes
const flute_soft = note("<~@8 A@2 ~@16 B@2 ~@21>".pickRestart({
  A: "[~@11 g4@23 ~ f#4@37 ~@24]/2", B: "[g4@23 ~ f#4@37 ~@35]/2",
})).s("gm_flute").gain(0.17).pan(0.9)

// other · string ensemble 1
const string_ensemble_1 = note("<~ A B C@2 ~@4 D ~@4 E ~@4 F ~ G ~@5 H ~@3 I J ~@3 K L M N@2 ~@3 O ~@4>".pickRestart({
  A: "~@22 d2@12 [f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3] ~", // F#
  B: "~ [f#2,f#3] ~@2 [f#2,f#3]@7 ~@37", C: "[~@22 d2@12 f#2@23 ~@39]/2",
  D: "~@11 g3 ~@2 f#3 ~@2 d3 ~@2 a2 ~@2 d2@18 ~@7", E: "~@8 [f#2,f#4]@9 [e2,e4]@10 [d2,d4]@9 g3@12",
  F: "~@12 d2@12 [f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3]@6", // F#
  G: "~@12 d2@12 f#2@23 ~", H: "g3 ~@2 f#3 ~@2 d3 ~@2 a2 ~@2 d2@18 ~@18", I: "~@7 [f#2,f#4]",
  J: "~@3 [e2,e4]@10 [d2,d4]@10 ~@25", K: "~@11 g3 ~@4", L: "~@5 f#3 g3 e3!3 ~@6", M: "~@3 g3!2 ~@8 f#3 g3 e3",
  N: "[e3@3 e3@3 e3@3 ~@6 e3@3 e3@3 e3@3 e3@3 ~@7 [f#2,f#4]@9 [e2,e4]@10 [d2,d4]@10 ~@33]/2", // F# E D
  O: "~@2 [f#2,f#4]@8 [e2,e4]@9 [d2,d4]@10 ~@19", // F# E D
})).s("gm_string_ensemble_1").gain(0.64).pan(0)

// other · synth strings 1
const synth_strings_1 = note(`<
  ~ A@2 B@2 C D@3 E F@5 G H I J K L K L ~ M N O P Q@2 R S@6 T U V W@2 X Y@2 Z AA AB@2
>`.pickRestart({
  A: "[~@22 [d2,d3]@12 [f#2,f#3]@25 ~@2 [e2,e3]@3 [g2,g3]@3 [b2,b3]@4 ~@2 [g2,g3]@3 [e2,e3]@4 ~@5 e3@3 [a2,a3]@3 c#4@5, ~@85 e2@6 c#3@3 ~@2]/2", // D F# E G B G E A
  B: "[~ [a2,a3]@3 [e2,e3]@5 ~@13 [d2,d3]@12 [f#2,f#3]@25 ~@2 [e2,e3]@3 [g2,g3]@3 [b2,b3]@4 ~@2 [g2,g3]@3 [e2,e3]@4 ~@5 e3@3 [a2,a3]@3 c#4@5, ~@85 e2@6 c#3@3 ~@2]/2", // A E D F# E G B G …
  C: "~ [a2,a3]@3 [e2,e3]@5 ~@39", // A E
  D: "[~@11 [d3,d4]@11 [c#3,c#4]@12 [b2,b3]@12 [a2,a3]@12 ~ e3@23 [a2,a3]@25 [g2,g3]@24 ~@13, ~@29 e2@12 ~@31]/3", // D C# B A G
  E: "~@11 [g3,g4]@3 [f#3,f#4]@2 ~ d3@2 ~ [a2,a3]@2 ~ [d2,d3]@17 ~@8, ~@17 d4 ~@5 e3 ~@24", // G F# A D
  F: "[~@23 [g3,g4]@12 [f#3,f#4]@11 [e3,e4]@24 ~ a3@11 [g3,g4]@12 ~ f#4@12 [a#3,a#4]@11 [b3,b4]@13 [a3,a4]@11 [g3,g4]@13 [f#3,f#4]@11 ~ e4@12 [a3,a4]@49 [g3,g4]@12, ~@70 a4@12 ~@12 f#3@12 ~@60 e3@13 ~@61]/5", // G F# E G A# B A G …
  G: "[f#3,f#4]@11 [e3,e4]@24 ~ [a3,a4]@12", H: "[g3,g4]@12 [f#3,f#4]@12 [a#3,a#4]@11 [b3,b4]@13",
  I: "[a3,a4]@11 ~ g4@12 [f#3,f#4]@12 [e3,e4]@12, ~@11 g3@12 ~@25", J: "[g3,g4]@2 [a3,a4]@5 ~",
  K: "~@11 [d2,d3]@12 [f#2,f#3]@25", // D F#
  L: "~@2 [e2,e3]@3 [g2,g3]@3 [b2,b3]@4 ~@2 [g2,g3]@3 [e2,e3]@4 ~@5 e3@3 [a2,a3]@3 c#4@5 ~ [a2,a3]@3 [e2,e3]@5 ~@2, ~@26 e2@6 c#3@3 ~@13", // E G B G E A E
  M: "[d3,d4]@11 ~ c#4@11 ~ b3@11 [a2,a3]@12 ~, ~@11 c#3@12 b2@12 ~@13", N: "[e2,e3] [a2,a3]", O: "[g2,g3] ~",
  P: "[g3,g4]@3 [f#3,f#4]@2 ~ d3@2 ~ [a2,a3]@2 ~ [d2,d3]@17 ~@19, ~@6 d4 ~@5 e3 ~@35", // G F# A D
  Q: "[~@12 [g3,g4]@12 [f#3,f#4]@11 [e3,e4]@24 ~ [a3,a4]@12 [g3,g4]@12 [f#3,f#4]@12]/2", // G F# E A G F#
  R: "[a#3,a#4]@11 [b3,b4]@13 [a3,a4]@11 ~ g4@12, ~@35 g3@12 ~", // A# B A
  S: "[[f#3,f#4]@12 [e3,e4]@12 [a3,a4]@46 [g3,g4]@12 [f#3,f#4]@11 [e3,e4]@24 ~ a3@11 ~ g3@12 [f#3,f#4]@12 [a#3,a#4]@11 [b3,b4]@13 [a3,a4]@11 ~ g4@12 [f#3,f#4]@12 [e3,e4]@12 [a3,a4]@36 ~@12 g2@3 ~@11, ~@39 a4@4 g4@4 ~@16 g3@4 ~@29]/6", // F# E A G F# E F# A# …
  T: "~@16 f#2@3 g2@3 e2@3 e2@3 e2@3 ~@17", U: "~@10 g2@3 g2@3 ~@24 f#2@3 g2@3 e2@2",
  V: "~ e2@3 e2@3 e2@3 ~@6 e2@3 e2@3 e2@3 e2@3 ~@20",
  W: "[~@14 [g3,g4]@12 [f#3,f#4]@11 [e3,e4]@24 ~ a3@11 ~ g3@11 ~ f#4@10, ~@61 a4@12 g4@12 f#3@11]/2", // G F# E
  X: "~@2 [a#3,a#4]@11 [b3,b4]@13 [a3,a4]@11 ~ g4@10, ~@37 g3@11", // A# B A
  Y: "[~@2 [f#3,f#4]@11 ~ e4@12 [a3,a4]@41 ~@8 [g3,g4]@12 [f#3,f#4]@9, ~@13 e3@13 ~@70]/2", // F# A G F#
  Z: "~ e4@8 [a3,a4]@4 [g3,g4]@3, ~ e3@12 ~@11", AA: "~@3 [f#3,f#4]@12 [a#3,a#4]@11 [b3,b4]@13 [a3,a4]@9",
  AB: "[~ [g3,g4]@4 [f#3,f#4]@4 [e3,e4]@4 [a3,a4]@12 ~@7]/2", // G F# E A
})).s("gm_synth_strings_1").gain(0.37).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@3 A B C ~@2 D E ~@4 F G H I J ~@2 K L ~@3 M@2 ~@3 N O ~@2 P@6 ~@3 Q ~@4
>`.pickRestart({
  A: "~@38 [c#4,f#4,a4] ~@2 [c#4,f#4,a4] ~@2 [c#4,f#4,a4]@4", // F#m
  B: "~@2 [c#4,f#4,a4] ~@2 [c#4,f#4,a4]@6 ~@3 [b3,e4,b4] ~@2 [b3,e4,b4] ~@2 [b3,e4,b4]@4 ~@2 [b3,e4,b4] ~@2 [b3,e4,b4]@7 ~@2 [a3,e4,a4] ~@2 [a3,e4,a4] ~@2 [a3,e4,a4]@4", // F#m E5 A5
  C: "~@2 [a3,e4,a4] ~@2 [a3,e4,a4]@6 ~@37", D: "~@17 [g4,g5]@3 [f#4,f#5]@3 [d4,d5]",
  E: "~ [g4,g5]@3 [f#4,f#5]@3 [d4,d5]@3 [g4,g5]@3 [f#4,f#5]@3 [d4,d5] ~@2 [a3,a4]@2 ~ [d3,d4]@19 ~@7", // G F# D G F# D A D
  F: "~@8 a4@9 g4@9 ~ f#4@9 [g3,d4,g4]@6 ~@6", G: "[g3,d4,g4] ~ [b3,e4,g4] ~ [b3,e4,g4] ~ [a3,c#4,a4] ~",
  H: "[a3,c#4,a4] ~ [a#3,c#4,a#4] ~ [a#3,c#4,f#4] ~ [b3,d4,f#4] ~", // A A#m F# Bm
  I: "[b3,d4,f#4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,e4,g4] ~", J: "[b3,d4,g4] ~ [a3,c#4,a4] ~@5",
  K: "~@27 [c#4,f#4,a4] ~@2 [c#4,f#4,a4] ~@2 [c#4,f#4,a4]@4 ~@2 [c#4,f#4,a4] ~@2 [c#4,f#4,a4]@6", // F#m
  L: "~@3 [b3,e4,b4] ~@2 [b3,e4,b4] ~@2 [b3,e4,b4]@4 ~@2 [b3,e4,b4] ~@2 [b3,e4,b4]@7 ~@2 [a3,e4,a4] ~@2 [a3,e4,a4] ~@2 [a3,e4,a4]@5 ~ [a3,e4,a4] ~@2 [a3,e4,a4]@6", // E5 A5
  M: "[~@23 [g4,g5]@6 [f#4,f#5]@6 [d4,d5]@3 [g4,g5]@3 [f#4,f#5]@3 [d4,d5]@3 [g4,g5]@3 [f#4,f#5]@3 [d4,d5] ~@2 [a3,a4]@2 ~ [d3,d4]@19 ~@18]/2", // G F# D G F# D G F# …
  N: "~@7 a4", O: "~@3 g4@9 ~ f#4@9 ~@26",
  P: "[~@46 g4@5 f#4@6 d4@5 ~ g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@5 ~@2 a4@9 g4@9 ~ f#4@9 ~@34]/6",
  Q: "~@2 a4@8 g4@8 ~ f#4@8 ~@21",
})).s("gm_string_ensemble_2").gain(0.35).pan(0.8)

// other · string ensemble 1
const string_ensemble_1_2 = note("<~@6 A@2 ~@2 B C D E@5 F ~@5 G@2 ~@2 H@5 I J K@5 L M N O@6>".pickRestart({
  A: "[~@38 [a2,a4]@3 [b2,b4]@3 [d3,d5]@2 ~ [d3,d5]@3 [e3,e5]@3 [f#3,f#5]@2 ~ [g3,g5]@39 ~]/2", // A B D E F# G
  B: "~@25 g4@3 a4@3 g4@3 b4@3 g4@3 c#5@3 d5@5",
  C: "~ g4@3 a4@3 g4@3 b4@3 g4@3 d5@3 e5@6 a4@3 b4@3 a4@3 c#5@3 a4@3 d5@3 e5@5",
  D: "~ a#4@3 b4@3 a#4@3 c#5@3 a#4@3 e5@3 f#5@6 b4@3 c#5@3 b4@3 d5@3 b4@3 e5@3 f#5@5",
  E: "[~ b4@3 c#5@3 b4@3 d5@3 b4@3 f#5@3 g5@6 b4@3 d5@3 b4@3 e5@3 b4@3 g5@6 f#5@37 ~@3 g4@3 a4@3 g4@3 b4@3 g4@3 c#5@3 d5@6 g4@3 a4@3 g4@3 b4@3 g4@3 d5@3 e5@6 a4@3 b4@3 a4@3 c#5@3 a4@3 d5@3 e5@6 a#4@3 b4@3 a#4@3 c#5@3 a#4@3 e5@3 f#5@6 b4@3 c#5@3 b4@3 d5@3 b4@3 e5@3 f#5@6 b4@3 c#5@3 b4@3 d5@3 b4@3 f#5@3 g5@4 d5@12]/5",
  F: "b4 a4@3", G: "[~@27 [a2,a4]@3 [b2,b4]@3 [d3,d5]@2 ~ [d3,d5]@3 [e3,e5]@3 [f#3,f#5]@2 ~ [g3,g5]@39 ~@12]/2",
  H: "[~@14 g4@3 a4@3 g4@3 b4@3 g4@3 c#5@3 d5@6 g4@3 a4@3 g4@3 b4@3 g4@3 d5@3 e5@6 a4@3 b4@3 a4@3 c#5@3 a4@3 d5@3 e5@6 a#4@3 b4@3 a#4@3 c#5@3 a#4@3 e5@3 f#5@6 b4@3 c#5@3 b4@3 d5@3 b4@3 e5@3 f#5@6 b4@3 c#5@3 b4@3 d5@3 b4@3 f#5@3 g5@6 b4@3 d5@3 b4@3 e5@3 b4@3 g5@6 f#5@34 ~@3 g4@3 a4@3 g4@3 b4@3 g4@3 c#5@3 d5@6]/5",
  I: "g4 a4 g4 b4 g4 d5 e5@2 a4 b4 a4 c#5 a4 d5 e5@2", J: "a#4 b4 a#4 c#5 a#4 e5 f#5@2 b4 c#5 b4 d5 b4 e5 f#5@2",
  K: "[b4@3 c#5@3 b4@3 d5@3 b4@3 f#5@3 g5@6 b4@3 d5@3 b4@3 e5@3 b4@3 g5@5 ~@2 g4@5 f#4@6 d4@5 ~ g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@5 ~@16, ~@45 f#5@37 ~@158]/5",
  L: "~@16 g4@3 a4@3 g4@3 b4@3 g4@3 c#5@3 d5@6 g4@3 a4@3 g4@2",
  M: "~ b4@3 g4@3 d5@3 e5@6 a4@3 b4@3 a4@3 c#5@3 a4@3 d5@3 e5@6 a#4@3 b4@3 a#4@2",
  N: "~ c#5@3 a#4@3 e5@3 f#5@6 b4@3 c#5@3 b4@3 d5@3 b4@3 e5@3 f#5@6 b4@3 c#5@3 b4@2",
  O: "[~ d5@3 b4@3 f#5@3 g5@6 b4@3 d5@3 b4@3 e5@3 b4@3 g5@6 f#5@34 ~@6 g4@3 a4@3 g4@3 b4@3 g4@3 c#5@3 d5@6 g4@3 a4@3 g4@3 b4@3 g4@3 d5@3 e5@6 a4@3 b4@3 a4@3 c#5@3 a4@3 d5@3 e5@6 a#4@3 b4@3 a#4@3 c#5@3 a#4@3 e5@3 f#5@6 b4@3 c#5@3 b4@3 d5@3 b4@3 e5@3 f#5@6 b4@3 c#5@3 b4@3 d5@3 b4@3 f#5@3 g5@6 b4@3 d5@3 b4@3 e5@3 b4@3 g5@6 f#5@24 ~@22]/6",
})).s("gm_string_ensemble_1").gain(0.29).pan(1)

// other · timpani
const timpani = note(`<
  ~@36
  [~@17 d2@2 ~@5]
  [~@16 d2 ~@2 d2 ~@2 d2 ~@2 d2 ~@2 d2@3 ~@17]
  [~@10 d2@2 ~ d2@3 ~@24 d2 ~@2 d2 ~@2 d2 ~]
  [~ d2 ~@2 d2 ~@2 d2@2 ~@7 d2 ~@2 d2 ~@2 d2 ~@2 d2@2 ~@21]
  ~@9
>`).s("gm_timpani").gain(0.5).pan(1)

// other · french horn
const french_horn = note("<~@35 A@5 ~@9>".pickRestart({
  A: "[~@46 g4@5 f#4@6 d4@5 ~ g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@6 g4@6 f#4@6 d4@5 ~@16]/5",
})).s("gm_french_horn").gain(0.2).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C D@4 E ~ F G@2 H I J@3 K@2 L M L@4 N ~ O P@2 Q R S@3 ~@4 T U@2 V W X@3 Y
>`.pickRestart({
  A: "~@23 x ~@24", B: "~@11 x ~@20 x ~@2 x ~@12", C: "~@5 x ~@5 x ~@8 x ~@11 x ~@2 x ~@12",
  D: "~@5 x ~@5 x ~@20 x ~@2 x ~@12", E: "~@5 x ~@5 x ~@36", F: "~@23 x ~@20 x ~@2 x", G: "~@17 x ~@5 x ~@20 x ~@2 x",
  H: "~@17 x ~@5 x ~@23 x", I: "~@3 x", J: "~@4 x!3 ~@3 x ~ x ~@3", K: "~ x ~@2", L: "x ~@6 x!2 ~@5 x ~",
  M: "x ~@2 x ~@3 x!2 ~@5 x ~", N: "x", O: "~@4 x ~@6 x!2 ~@3", P: "~@2 x ~ x ~@6 x!2 ~@3", Q: "~ x!2 ~@3 x ~",
  R: "~@11 x ~@11 x", S: "~ x ~@2 x ~@11 x ~@5 x ~@23 x ~", T: "~@14 x ~@23 x ~@2 x ~@2 x ~@3",
  U: "~@8 x ~@5 x ~@23 x ~@2 x ~@2 x ~@3", V: "~@4 x ~@2 x ~@11 x ~@4", W: "~@9 x ~@6", X: "~ x!3 ~@3 x ~ x ~@6",
  Y: "~ x ~@14",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A@3 B A@2 ~@2 C D@3 ~ E@3 F ~ G@2 H I G@2 ~@2 J E@3 K L@3 ~@4 M N@3 O P@3 ~
>`.pickRestart({
  A: "~@23 x ~@23 x", B: "~@8 x ~@14 x ~@8 x ~@5 x ~@8 x", C: "~@35 x ~@12", D: "~@11 x ~@23 x ~@12", E: "x!2", F: "x",
  G: "~ x ~ x", H: "~@4 x ~@7 x ~@2 x", I: "~@4 x ~@2 x ~ x ~@2 x ~@3", J: "~ x", K: "~@17 x ~@6",
  L: "~@5 x ~@11 x ~@6", M: "~@13 x ~@10", N: "~ x ~@11 x ~@10", O: "~@13 x ~@2", P: "~@5 x ~@7 x ~@2",
})).gain(0.72)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A B@5 C ~ D B@2 E F G@3 H ~ I G@4 J K ~ L G@2 M N O@2 P ~@4 Q R@2 S T U@3 ~
>`.pickRestart({
  A: "~@17 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x", B: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x", C: "~@23 x ~@24",
  D: "~@23 x ~@5 x ~@5 x ~@5 x ~@5 x", E: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6", F: "~@6 x!2", G: "x!8",
  H: "x!2 ~@6", I: "~ x!7", J: "x!7 ~", K: "~ x ~@2", L: "~@2 x!6", M: "x!6 ~@2", N: "~@11 x ~@2 x ~@2 x ~@2 x ~@2 x",
  O: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", P: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3",
  Q: "~@7 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", R: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  S: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@7", T: "~@9 x ~ x ~ x ~ x", U: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@5 [~@11 x] [~@2 x ~@2 x ~@42] ~@16 [~@11 x ~ x!2 ~] ~@25>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@8 A ~@4 B ~@4 C ~@6 D ~@5 E ~@3 F ~@7 G ~@4 H>".pickRestart({
  A: "~@5 x ~@42", B: "~@47 x", C: "~ x ~@2", D: "~@7 x", E: "~@3 x", F: "~@23 x", G: "~@19 x ~@4", H: "~ x ~@14",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@5 [~@41 x ~@6] ~@17 [~@5 x ~@2] ~@25>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~ A B A ~ B@4 ~ A ~@3 C D@2 ~@2 E D E ~ D@4 ~ E ~@3 F G ~@6 H I ~@2 J K ~@3
// … 15 more lines

More by Pooh