Strudelify

La donna infinita

Pooh

KeyE♭ majorTempo63 bpm
0:00/0:00
// La donna infinita — Pooh
// 63 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 73 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
setcpm(63/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 · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B@2 C@2 ~@4 D E F G H ~@7 I@3 J K L M N O P Q@3 ~@7 R@5 ~@7 S@4 ~@16
>`.pickRestart({
  A: "~@42 g4@2 ~ ab4@3", B: "[ab4@11 ~ ab4@5 ~ eb4@12 g4@4 ~@2 ab4@5 ~ ab4@26 ~@10 d4@2 ~ eb4@2 ~ eb4@5 ~ bb3@5 ~]/2",
  C: "[bb4@10 ~@2 bb4@5 ~ eb4@12 g4@3 ~@3 ab4@5 ~ ab4@40 ~@14]/2",
  D: "~@6 bb2@3 db3@2 ~ eb3@2 ~ gb3@2 ~ ab3@3 ~@12 gb3@3 eb4 gb4 ~ eb4@3 b3@2 ~@4",
  E: "~@12 gb4 ab4 gb4@3 ~@16 gb3@2 ~ [ab3,db4]@3 db4@7 ~@2", // Db5
  F: "~@12 [ab3,db4]@2 ~ db4@4 ~@11 gb3 ~@5 [eb4,ab4]@7 ~@5, ~@15 ab3@2 ~@31", // Db5 Ab5
  G: "~@10 eb3@3 gb3@2 [ab3,db4]@2 ~ [gb3,ab3,db4]@2 ~ gb3 ~@14 [gb3,b3,eb4]@8 ~@4", // Db5 Gbsus2 B
  H: "~@9 eb4 ~@2 [bb3,d4,f4]@11 ~, ab3@13 ~@2 ab3@5 ~@28, ~@3 eb4@5 ~@16, ~@9 c4@11 ~@28", // Bb
  I: "[~@86 g3@6 ~@18 f3@6 [bb2,bb3]@25 ~@2 eb4, ~@45 c3@23 ~ bb2@23 a2@23 ~@29, ~@51 g3@22 ~@2 g3@10 ~@59, ~@57 eb4@36 ~@11 f4@35 ~@5, ~@63 c4@16 ~ c4@12 ~@6 c4@41 ~@5]/3", // Bb
  J: "~ bb3@2 ~ bb3@2 ~ g3@2 ~ f3@3 eb3@2 ~ c3@2 ~@13 [bb3,eb4]@8 ~@9, ~ eb4@7 ~@40, ~@3 c4@2 ~@14 eb3@20 ~@9", // Eb5
  K: "~@3 eb3@3 ~@4 [bb3,eb4]@2 ~@4", L: "~@9 [bb3,eb4]@4 ~@17 [bb3,eb4]@7 ~@11",
  M: "~@5 d4@3 c4 ~ bb3 ~@4 eb3 ~@13 [bb3,eb4]@6 ~@13", N: "~@7 f4@6 ~@15 bb2@3 db3@3 gb3@7 ~@7, ~ ab3@11 ~@36",
  O: "~@4 eb4 gb4@2 eb4 ~ ab3@4 ~@14 [db4,gb4]@2 ~ [db4,gb4]@3 gb3@2 ~@13, ~@4 b3 ~@19", // Gb5
  P: "~@3 [gb3,b3,db4,gb4]@8 ~@15 bb3@3 ~@3 db4@4 ~@12, ~@29 gb4@7 ~@12", // Gbsus4
  Q: "[~@2 eb4 ~@2 eb4 b3@2 ab3@2 ~ gb3 ~@20 gb4@3 ~@14 b3@6 eb4@2 ~@4 eb4@12 c4@6 eb4 ~@5 bb3@11 ~@2 bb3@10 ~@36, ~@4 gb4@2 ~@20 db4@9 ~@26 c4@10 ~@73, ~@29 gb3@6 ~@8 gb3@13 ~@5 ab3@20 ~@4 [f3,d4,f4]@23 ~@36]/3", // Dm
  R: "[~@10 ab2@12 [ab3,c4,eb4]@12 ~@12 [g3,bb3,eb4]@11 c3@5 ~@7 [ab3,c4,eb4]@9 ~@3 [ab3,c4,eb4]@10 ~@2 [bb3,d4,f4]@11 ~ gb2@5 ~ gb2@5 [gb3,bb3,db4,gb4]@12 gb2@5 ~ gb2@6 [gb3,b3,eb4,gb4]@11 ~@13 [gb3,bb3,db4,gb4]@8 ~@3 [ab3,ab4]@21 ~@3 [bb3,d4,bb4]@14 ~@27, ~@34 bb2@22 ~@7 c3@15 ~@97 eb4@15 ~@50, ~@35 c4@2 ~@11]/5", // Ab Eb Ab Bb Gb B Gb Ab …
  S: "[~@48 c3@5 ~@12 c4@11 ~@25 [bb2,bb3]@56 ~@35, ~@30 c3@18 ~@6 bb2@17 ~@6 a2@24 ~@91, ~@36 g3@19 ~@4 g3@16 ~@8 f3@12 f3@62 ~@35, ~@42 c4@13 ~@34 c4@12 ~@91]/4", // Bb
})).s("gm_electric_guitar_jazz").gain(0.3)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<~@10 A B C ~@11 D E F G H I J K L ~@9 M ~ N@2 ~@8 O ~@18>".pickRestart({
  A: "~@9 gb4 ~@8 eb4@3 db4 ~@8 eb3@2 ~@7 bb3@3 gb3@3 eb3@2 ~", B: "~@7 eb3@2 gb3@3 ~@6 gb3@4 ~@26",
  C: "~@30 gb3@5 ~@13", D: "~@31 db4 ~@16", E: "~@6 c3@3 ~@9 f3 ~@8 eb3 ~@20", F: "~@12 c4@3 ~@15 db4 ~@17",
  G: "~@2 f3 ~@8 g3 ~ f3@2 ~@33", H: "~@4 c4@5 ~ c4@3 ab3 ~@11 gb3 ~@22, ~@4 b3 ~@43",
  I: "~ gb3@2 ~@18 gb3 ~@2 gb3@8 ~@7 gb3 ~@2 gb3 ~@5", J: "gb3 ~@11 b3 ~@2 gb3 ~@7 gb3 ~@11 gb3 ~@5 gb3 ~@5 gb3",
  K: "~@23 gb3@4 ~@21", L: "~@9 b3 ~@38", M: "~@11 bb2@4 ~",
  N: "[~@8 gb2@4 ~@2 gb2@6 ~@23 c4@6 eb4@3 ~@3 f4@14 ~@27]/2", O: "~@23 bb2@5 ~@20",
})).s("gm_electric_guitar_jazz").gain(0.15)

// chords · pad warm
const pad_warm = note("<~ A@4 B C D E F G H I@2 ~@59>".pickRestart({
  A: "[eb2@23 ~ c2@24 [f2,f3,ab3]@24 [bb2,ab3,c4]@12 ab2@11 ~ g2@23 ~ [c3,g3,bb3]@24 [bb2,ab3,c4]@48, eb4@41 ~@19 eb4@34 ~@2, bb3@69 ~@15 [bb3,d4,f4]@35 ~@73, g3@23 ~@73]/4", // Fm C7 Fm Bb
  B: "[eb2,g3,bb3,eb4] [f2,ab3,c4,eb4]", C: "[g2,bb3,eb4,f4,bb4] [ab2,ab3,c4,eb4]",
  D: "[g2,bb3,eb4,f4,bb4] [f2,ab3,c4,eb4]", E: "[g2,bb3,eb4,f4,bb4] [bb2,ab3,c4,eb4]",
  F: "[gb2,bb3]@23 ~ [ab2,b3]@24, [gb3,db4]@23 ~", G: "bb2@23 ~@13 b3@11 ~, gb3@23 ~, db4@3 ~, ~ [b2,eb4]",
  H: "[bb2,gb3]@23 ~ [ab2,gb3,b3]@24, db4@47 ~", I: "[[bb2,gb3,db4]@24 [db3,gb3,b3]@23 ~@49, ~@8 eb4@15 ~@9]/2",
})).s("gm_pad_warm").gain(0.14)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@4 A@2 ~@3 B@5 C@3 D@7 E@4 F@7 G@2 H@2 I@6 J@8 K@7 L@2 M N O@8 ~>".pickRestart({
  A: "[[bb2,ab3,c4] [eb3,g3,bb3], eb4]/2", // Fm Eb
  B: "[[gb3,bb3,db4] [ab3,b3,eb4] [bb3,db4] [b3,eb4] [bb3,db4] [ab3,b3,eb4] [bb3,db4] b3 [c4,ab4] [d4,f4,bb4], gb4@4 ~, ~@7 eb4@2 ~]/5", // Gb Abm Bbm B Bbm Abm Bbm Fm …
  C: "[~@3 [g3,bb3]@47 [ab3,c4]@34 ~@2 [d4,f4]@35 [g3,eb4]@23, ~@3 eb4@83 bb3@58]/3", // Gm Ab Dm Cm
  D: "[~ [ab3,c4]@35 ~@59 f3@24 ~@12 [d4,f4]@35 g3@22 ~@2 [ab3,c4]@35 [g3,d4,f4]@12 [eb4,g4]@46 ~ [f3,f4]@24 [ab3,eb4]@28, ~ f3@45 ~@2 g3@46 ~@242, ~@36 bb3@59 ~@36 bb3@59 ~@47 c4@99, ~@36 [d4,f4]@36 eb4@59 ~@35 eb4@58 ~@112]/7", // Ab Dm Ab G7 Eb F Ab5 Dm
  E: "[~@19 [g3,bb3]@24 [ab3,c4]@23 [g3,bb3]@24 [ab3,c4]@24 [g3,bb3]@23 [ab3,c4]@24 [g3,bb3]@23 [ab3,c4]@8, ~@19 eb4@173]/4", // Gm Ab Gm Ab Gm Ab Gm Ab
  F: "[~@16 bb3@24 [eb3,b3]@23 [ab3,db4]@24 [b3,eb4]@24 [bb3,db4]@23 [b3,eb4]@24 [bb3,db4]@23 b3@21 ~@3 [c4,ab4]@24 [d4,f4,bb4]@25 ~@2 [g3,bb3]@47 [f3,ab3,c4]@33, ~@16 gb3@164 ~ [ab3,eb4]@47 ~@108, ~@158 gb4@47 ~@51 eb4@80]/7", // Abm Db5 B Bbm B Bbm Fm Bb …
  G: "[~@3 [bb3,f4]@12 f3@23 g3@23 ~ [ab3,c4]@23 [ab3,c4,eb4]@11, ~@3 d4@35 eb4@47 ~@11, ~@15 bb3@47 f3@34]/2", // Bb5 Ab
  H: "[~@4 bb3@9 f3@22 ~@2 g3@22 ~ [ab3,c4]@36, ~@4 [d4,f4]@33 eb4@58 ~, ~@13 bb3@46 ~ f3@24 ~@12]/2", // Ab Dm
  I: "[f3@10 ~@2 f4@23 ~@24 ab3@23 ~@12 g4@11 ~ [ab3,c4,eb4]@23 ~ [g3,bb3,eb4]@23 [ab3,c4,eb4]@35 ~ [bb3,d4,f4]@11 ~ [bb3,db4]@23 [b3,eb4]@24 [bb3,db4]@23 [c4,eb4,ab4]@17, bb3@59 ~@23 [b3,d4]@23 ~@183, d4@34 ~ [c4,eb4]@47 ~@119 gb4@71 ~@16, ~@12 g3@45 ~@2 f3@46 ~@183]/6", // Ab Eb Ab Bb Bbm B Bbm Ab …
  J: "[~@7 [d4,f4,bb4]@14 ~@15 [g3,bb3]@47 [ab3,c4]@35 ~ [bb3,f4]@11 f3@23 ~ g3@23 ~ [ab3,c4]@23 [ab3,c4,eb4]@13 ~@2 bb3@9 f3@22 ~@2 g3@22 ~ [ab3,c4]@36 f3@10 ~ f4@24 ~@24 [f3,ab3]@17, ~@36 eb4@82 ~ d4@35 eb4@47 ~@15 [d4,f4]@33 eb4@58 ~ bb3@59 ~@17, ~@83 f3@46 ~ bb3@48 f3@36 ~@11 bb3@46 ~ f3@24 ~@12 d4@34 ~ [c4,eb4]@41, ~@319 g3@45 ~@20]/8", // Bb Gm Ab Bb5 Ab Fm Dm Cm
  K: "[~@6 [ab3,c4]@12 [b3,d4]@11 ~@25 bb3@21 ~@2 a3@23 ~ [ab3,bb3,eb4]@56 ~@4 [ab3,bb3,eb4]@91 ~@4 d4@23 ~@24 f4@23 ~ f3@9, ~@30 c4@127 ~@122 c4@57, ~@30 [g3,eb4]@70 ~@156 [e3,g3]@47 a3@33]/7", // Ab Bm Absus2 Cm Em
  L: "[~@2 [b3,d4]@11 ~ c4@23 ~@25 f4@23 f3@11, ~@2 g3@59 ~ a3@34, ~@14 e4@47 ~@35, ~@19 c4@29]/2", // Bm
  M: "~@4 b3@8 ~ e3@23 [c4,e4]@12, ~ g3@11, ~@4 d4@33 ~@11", N: "~@12 [a3,f4]@35 [b3,d4,g4]",
  O: "[~@11 g3@22 ~@2 e4@24 ~@23 [a3,c4]@12 [ab3,b3]@11 ~ a3@23 g3@25 ~@30 f4@67 ~ e4@60 g3@72, ~@11 c4@70 ~@25 c4@278, ~@35 a3@46 ~@74 a3@155 ~@74, ~@59 f4@34 ~ e4@90 ~@200, ~@155 a4@93 ~@4 g4@132]/8", // Am Abm
})).s("gm_string_ensemble_2").gain(0.33)

// chords · electric guitar clean
const electric_guitar_clean = note("<~@14 A B C D E@4 ~@2 F G H I J K L M@3 N O P Q R S@7 T@7 U@4 ~@16>".pickRestart({
  A: "~@3 eb3@11 ~ [bb3,eb4,g4]@11 ~ c3@9 ~@2 [bb3,eb4,g4]@10", // Eb
  B: "~@2 f3@10 ~@2 [c4,eb4,ab4]@9 ~@3 [ab3,c4,eb4]@10 ~@2 [bb3,d4,f4]@10", // Ab Bb
  C: "~ g2@10 ~@2 [d4,f4,bb4]@9 ~@3 c3@9 ~@3 [bb3,eb4,g4]@10 ~", // Bb Eb
  D: "~ f3@9 ~@3 [c4,eb4,ab4]@6 ~@5 [ab3,c4,eb4]@10 ~@2 [bb3,d4,f4]@12", // Ab Bb
  E: "[~@6 g2@4 ~@2 [d4,f4,bb4]@6 ~@6 c3@9 ~@2 [bb3,eb4,g4]@8 ~@4 f3@10 ~@2 [c4,eb4,ab4]@6 c4 ~@5 [ab3,c4,eb4]@10 ~@2 [bb3,d4,f4]@10 ~ g2@6 ~@6 [d4,f4,bb4]@7 ~@5 c3@12 [bb3,eb4,g4]@6 ~@6 f3@10 ~@2 [c4,eb4,ab4]@22 ~@16]/4", // Bb Eb Ab Bb Eb Ab
  F: "~@19 eb3@11 ~ [bb3,eb4]@8 ~@9, ~@31 db4 ~@16", G: "~@2 c3 eb3@3 ~@4 [bb3,eb4]@2 ~@4",
  H: "~@9 [bb3,eb4]@3 c4@3 ~@15 [bb3,eb4]@7 ~@11, ~@30 db4 ~@17", // Eb5
  I: "~@5 d4@3 c4 ~ bb3 g3 ~ f3@2 eb3 ~@13 [bb3,eb4]@6 ~@13", // Eb5
  J: "~@4 b3 ~@5 c4@3 ~@15 bb2@3 db3@3 gb3@7 ~@7, ~ ab3@11 ~@36, ~@4 c4@5 ~@39, ~@7 f4@6 ~@35",
  K: "~ gb3@2 ~ eb4 gb4@2 eb4 ~ ab3@4 ~@14 [db4,gb4]@2 ~ [db4,gb4]@3 gb3@2 ~@13, ~@4 b3 ~@7 gb3@4 ~@8", // Gb5
  L: "gb3 ~@2 [b3,db4,gb4]@8 ~@15 bb3@3 ~@3 db4@3 gb3 ~@11 gb3, ~@29 gb4@7 ~@12", // Bsus2
  M: "[~@2 eb4 ~@2 eb4 b3@2 ab3@2 ~ gb3 ~@11 gb3@3 ~@6 gb4@3 ~@14 b3@6 eb4@2 ~@4 eb4@12 c4@6 eb4 ~@5 bb3@11 ~@2 bb3@10 ~@16 [g3,bb3,eb4]@9 [bb3,eb4] ~@10, ~@4 gb4@2 ~@20 db4@9 ~@26 c4@10 ~@73, ~@29 gb3@6 ~@8 gb3@13 ~@5 ab3@20 ~@4 [f3,d4,f4]@23 ~@36]/3", // Eb Eb5 Dm
  N: "~@4 [g3,bb3,eb4]@2 [g3,bb3,eb4]@3 [g3,c4]@2 ~@16 [ab3,c4,eb4]@9 [ab3,c4,eb4] ~@11", // Eb C5 Ab
  O: "~@12 f3@3 ~@11 [bb3,d4]@9 [f3,bb3]@2 ~@11, ~@3 [f3,bb3]@11 ~@12 f3@6 ~@16, ~@3 f4@4 ~@17, ~@9 d4@5 ~@34", // Bb Bb5
  P: "~@2 [g3,bb3,eb4]@3 ~@3 c4@5 ~@7 f3@6 [f3,ab3,eb4]@9 [f3,ab3,eb4] ~@4 [f3,ab3,eb4]@2 ~ c4 ~@4, ~@5 [g3,bb3,eb4]@9 ~@34", // Eb Fm7 Eb
  Q: "~@4 [bb3,d4,f4]@8 ~@13 [f3,bb3,d4]@9 [f3,bb3,d4] ~@13", // Bb
  R: "~ [g3,bb3,eb4]@2 [g3,bb3,eb4]@3 c4 ~@17 [f3,ab3,eb4]@9 [f3,ab3,eb4] ~@5 [f3,ab3,eb4] ~@8", // Eb Fm7
  S: "[[f3,bb3]@11 ~ bb3@11 [bb3,d4,f4]@8 ~ [bb3,d4,f4] ~@14 g3@6 [g3,c4]@3 ~@15 [f3,ab3,eb4]@9 [f3,c4] ~@19 g4@6 ~@12 [ab3,c4,eb4]@12 bb2@10 ~@2 [g3,bb3,eb4]@11 c3@5 ~ c3@6 [ab3,c4,eb4]@9 ~@3 [ab3,c4,eb4]@10 ~@2 [bb3,d4,f4]@11 ~ gb2@5 ~ gb2@5 [bb3,db4,gb4]@12 gb2@5 ~ gb2@6 [b3,eb4,gb4]@11 ~ gb2@4 ~@2 gb2@6 [bb3,db4,gb4]@8 ~@3 eb4@12 c4@6 eb4@3 ~@3 [d4,f4,bb4]@14 ~@27, d4@23 ~@24 [bb3,eb4]@10 ~@37 [b3,d4]@11 ~@166 ab4@21 ~@44, ~@12 f3@6 ~@70 f3@17 ~@166 c4@10 ~@55]/7", // Bb5 Bb C5 Fm7 F5 Ab Eb Ab …
  T: "[[g3,bb3,eb4]@9 [bb3,eb4] ~@13 [g3,bb3,eb4]@3 [g3,bb3,eb4]@3 [g3,c4]@2 ~@16 [ab3,c4,eb4]@9 [ab3,c4,eb4] ~@22 f3@3 ~@12 [bb3,d4]@9 [f3,bb3]@2 ~@13 [g3,bb3,eb4]@3 ~@3 c4@5 ~@7 f3@5 [f3,ab3,eb4]@9 [f3,ab3,eb4] ~@5 [f3,ab3,eb4]@2 ~ c4 ~@8 [bb3,d4,f4]@8 ~@13 [f3,bb3,d4]@9 [f3,bb3,d4] ~@13 [g3,bb3,eb4]@3 [g3,bb3,eb4]@3 c4 ~@17 [f3,ab3,eb4]@9 [f3,ab3,eb4] ~@5 [f3,ab3,eb4] ~@8 [f3,bb3]@11 bb3@12 [bb3,d4,f4]@8 ~ [bb3,d4,f4] ~@14 g3@6 [g3,c4]@3 ~@14 [f3,ab3,eb4]@6, ~@71 [f3,bb3]@11 ~@12 f3@6 ~@21 [g3,bb3,eb4]@9 ~@141 f3@6 ~@59, ~@37 f4@4 ~@127, ~@76 d4@5 ~@179 d4@23 ~@24 [bb3,eb4]@10 ~@19]/7", // Eb Eb5 Eb C5 Ab Bb Bb5 Eb …
  U: "[~@3 [f3,c4] ~@20 g4@6 ~@18 c3@5 ~@18 bb2@5 ~@25 [bb2,bb3]@56 ~@35, ~@18 [b3,d4]@11 ~ c3@18 ~@6 bb2@17 ~@6 a2@24 ~@91, ~@36 g3@19 ~@4 g3@16 ~@8 f3@12 f3@62 ~@35, ~@42 c4@13 ~@10 c4@11 ~@13 c4@12 ~@91]/4", // F5 Bb Bm
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.6)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@16 A ~@3 B ~@4 C ~ D E F G ~ H I ~ J@2 ~ K L M ~@5 N ~ O@2 P Q R ~@20
>`.pickRestart({
  A: "~@46 eb4 ~", B: "~@4 f3@5 ~@31 bb3 ~@7", C: "~@18 f3 ~@8 eb3 ~@20", D: "~@2 f3 ~@45", E: "~@13 ab3 ~@11 gb3 ~@22",
  F: "~@21 gb3 ~@17 gb3 ~@2 gb3 ~@5", G: "~@12 b3 ~@2 gb3 ~@7 gb3 ~@17 gb3 ~@6", H: "~@9 b3 ~@38",
  I: "~@34 g3@3 g3 ~@10", J: "[~@32 f3@3 ~@9 g3@3 g3@3 ~@9 g3@3 ~@9 eb3@9 f3@3 ~@13, ~@22 bb3@3 ~@23]/2",
  K: "~@6 g3 ~@2 c3 ~@32 f3 ~@5", L: "~@3 f3 ~@4", M: "~@8 g3 ~@39", N: "~@6 g3@3 g3 ~@38",
  O: "[~@4 f3@3 ~@9 g3@3 g3@3 ~@9 g3@3 ~@17 f3@3 ~@42, ~@16 bb3@6 ~@21 eb3@12 ~@41]/2", P: "~@26 g3 ~@21",
  Q: "~@14 f3 ~@22 f3@6 ~@5", R: "~@28 g3 ~@19",
})).s("gm_electric_guitar_clean").gain(0.14).pan(0.6)

// other · french horn
const french_horn = note("<~@14 A B C D@7 ~@9 E@2 F@2 G@2 H@3 ~ I@2 J@7 K@2 ~@4 L@2 M@2 N@7 ~@4>".pickRestart({
  A: "~ bb3@15", B: "~ eb4@12 g4@6 f4@5", C: "~ bb3@24 eb4@23",
  D: "[~ ab4@12 g4@11 f4@6 d4@2 ~ eb4@3 f4@6 bb3@53 c4@36 d4@11 bb3@24 c4@59 b3@12 c4@24 bb3@23 a3@24 ab3@24 ~@4]/7",
  E: "[~@16 bb3@24 eb4@47 g4@9]/2", F: "[~@3 f4@11 ~ bb3@23 eb4@24 ab4@12 g4@11 f4@11]/2",
  G: "[~ d4@3 eb4@3 f4@3 c4@3 bb3@24 eb4@23 ab4@12 g4@12 f4@12]/2", H: "[d4@12 bb3@23 c4@47 b3@20 ~@42]/3",
  I: "[~@10 db4@10 db5@15 ~@3 eb4@6 eb5@15 ~@3 db4@6 db5@10 ~@18]/2",
  J: "[~@36 bb3@24 eb4@47 g4@12 f4@11 bb3@24 eb4@24 ab4@11 g4@12 f4@12 d4@3 eb4@3 f4@3 c4@3 bb3@24 eb4@23 ab4@12 g4@12 f4@12 d4@11 bb3@17]/7",
  K: "[~@7 c4@59 b3@12 ~@18]/2", L: "[~@16 g4@71 e4@9]/2", M: "[~@2 d4@12 g4@24 c5@24 f4@11 e4@12 d4@11]/2",
  N: "[~ b4@12 g4@12 e4@3 d4@2 e4@6 c4@47 ~ d4@23 e4@47 ~ f4@11 e4@12 d4@22 ~@25 d4@26 e4@29 f4@54 ~@2]/7",
})).s("gm_french_horn").gain(0.26)

// other · string ensemble 2
const string_ensemble_2_2 = note("<~@14 A B C@8 ~@9 D@2 E@2 F G H@6 I@6 J@4 K@5 L@2 M N@6 O@4>".pickRestart({
  A: "~ bb5@11, ~ eb5@15", B: "~@3 ab5@23 g5@12 f5@10",
  C: "[~@48 ab5@12 g5@11 ~ f5@6 d5@6 d6@6 ~@30 eb5@23 ab5@24 g5@12 f5@12 ~@23 eb5@23 ab5@36 g5@59 f5@50 ~@2, ~@2 bb5@47 ~@41 bb5@53 ~@48 bb5@47 ~@146, ~@25 eb5@27 ~@332]/8",
  D: "[~@17 bb5@23 eb5@23 ab5@24 g5@9]/2", E: "[~@3 f5@12 ~@23 eb5@24 ab5@11 g5@12 f5@11, ~@15 bb5@35 ~@46]/2",
  F: "~ d6@12 bb5@23 ~ eb5@11, ~@3 eb6", G: "~ [bb5,bb6]@11 [ab5,ab6]@12 [g5,g6]@12 [f5,f6]@12",
  H: "[[d6,d7]@12 [bb5,bb6]@23 ~ eb6@47 [d6,d7]@21 ~@14 [ab4,c5,eb5]@6 ~@18 [g4,bb4,eb5]@7 ~@17 [ab4,c5,eb5]@9 ~@14 [bb4,d5,f5]@9 ~@15 [bb4,db5,gb5]@9 ~@15 b4@8 ~@15 [bb4,db5,gb5]@9 ~@19, ~@35 eb7@48 ~@153 [eb5,gb5]@8 ~@44]/6", // D Bb D Ab Eb Ab Bb Gb …
  I: "[~@21 f4 g4@2 ~ bb4 c5 ~ d5 eb5 ~@2 g5@2 ab5@2 [bb5,bb6]@47 [ab5,ab6]@24 [g5,g6]@11 [f5,f6]@12 [bb5,bb6]@47 [ab5,ab6]@12 [g5,g6]@12 [f5,f6]@12 [d6,d7]@12 [bb5,bb6]@46 ~ ab5@12 [g5,g6]@4, ~@24 ab4@2 ~@5 f5@2 ~@238 ab6@13 ~@4]/6", // Bb Ab G F Bb Ab G F …
  J: "[~@8 [f5,f6]@11 [d6,d7]@12 [bb5,bb6]@47 [ab5,ab6]@35 ~ g6@10 ~@2 [g5,g6]@24 [d6,d7]@11 [eb6,eb7]@12 [g6,g7]@19, ~@113 g5@10 ~@69]/4", // F D Bb Ab G D Eb G
  K: "[~@5 [bb5,bb6]@60 [bb5,bb6]@89 ~@6 [g5,g6]@47 [f5,f6]@23 [e5,e6]@10]/5", // Bb G F E
  L: "[~@3 [d5,d6]@11 [g5,g6]@47 [f5,f6]@12 [e5,e6]@12 [d5,d6]@11]/2", M: "~ [b5,b6]@12 [g5,g6]@23 [c6,c7]@12",
  N: "[[g6,g7]@24 [f6,f7]@12 [e6,e7]@11 ~ d6@35 [c6,c7]@59 [b5,b6]@12 [a5,a6]@23 [b5,b6]@26 ~ [c6,c7]@29 [d6,d7]@55, ~@47 d7@36 ~@205]/6", // G F E C B A B C …
  O: "[~@12 c6@161 ~@19, ~@11 c7@161 ~@20]/4",
})).s("gm_string_ensemble_2").gain(0.4)

// other · distortion guitar
const distortion_guitar = note("<~@41 A@2 B@2 C@8 ~@5 D E F G H I@7 ~@3>".pickRestart({
  A: "[~@10 ab2@19 ~@5 bb2@21 ~@2 c3@21 ~@3 bb2@15]/2", B: "[~@3 ab2@6 gb2@21 ~@2 gb2@22 ~@2 gb2@22 ~ bb2@17]/2",
  C: "[~@7 bb2@24 ~@5 eb3@23 c3@23 ~ f2@23 bb2@12 ab2@12 g2@23 ~ c3@23 f2@23 ~ bb2 ~@2 bb2 ~@2 bb2 ~@2 bb2 ~@2 bb2 ~@2 bb2@9 g2@23 c3@23 ~ f2@23 bb2@12 ~ ab2@11 g2@24 c3@23 f2@18]/8",
  D: "~@8 [g4,c5] g5@5 ~@2 g5@23 c6@7 ~@2", // C5
  E: "~@9 e5@7 f5 ~ e5 f5 ~ e5 f5 e5 ~ f5 e5@2 ~ db5 ~ d5 c5 d5 ~ c5 a4 ~ g4 ~@2 c5 ~ a4 ~ e5 g5 ~, ~@14 d5 ~@5 e4 ~@3",
  F: "~ g5@2 a5@8 b5@3 g5@24 c6@9 ~, e5 ~@23", G: "~@8 c6@2 d6@3 e6@6 ~ f6@5 e6@6 d6@17",
  H: "~ c6@3 b5@3 a5@2 ab5@3 g5@13 c6@23",
  I: "[~@6 f5@18 b4@20 d4@14 c4@2 d4@17 f4@3 g4@3 d4@6 c4@12 e4@2 a4@3 c5@2 a4 g4 ~ e4 eb4 ~ d4 c4 ~ a3 c4 ~ d4@3 f4@2 d4@2 c4 ~ a3 d4 ~ c4 a3 ab3 ~ g3 a3 ~@2 d4@3 c4@2 a3 ab3 ~ g3 a3 c4@2 d4@2 e4@12 g4@11 a4@13 c5@13 a5@96 ~@37, ~@139 c4@2 ~@195]/7",
})).s("gm_distortion_guitar").gain(0.49)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A@4 B C D E F G H I J K L M N O P Q R S T U V W S X Y Z AA AB AC AD AE AF AG AA AB AC AH AI AJ AK AL AM AN ~@2 AO
  AP AQ AR AS AT AU AV AW AX ~@5
>`.pickRestart({
  A: "x!2", B: "x", C: "~ x ~@5 x ~ x ~@6", D: "~ x ~@11 x ~@10", E: "~ x ~@17 x ~@5 x ~@22",
  F: "~ x ~@16 x ~@5 x ~@23", G: "x ~@17 x ~@5 x ~@22 x", H: "~@17 x ~@5 x ~@22 x ~", I: "~@8 x ~@2 x ~@11 x",
  J: "~@7 x ~@7 x", K: "~@15 x ~@5 x ~@22 x ~@3", L: "~@7 x ~@2 x ~@13", M: "~@19 x ~@23 x ~@4", N: "~@3 x ~@3 x",
  O: "~@18 x ~@22 x ~@6", P: "~@17 x ~@22 x ~@7", Q: "~ x ~@14 x ~@23 x ~@7", R: "~@5 x ~@7 x ~ x",
  S: "~@15 x ~@22 x ~@9", T: "~@14 x ~@22 x ~@5 x ~@4", U: "~@13 x ~@17 x ~@5 x ~@9 x", V: "~@2 x ~@2 x",
  W: "~@5 x ~@7 x ~@2", X: "~@14 x ~@22 x ~@10", Y: "~@4 x ~@8 x ~@23 x ~@10", Z: "~@4 x ~@6 x!2 ~@3",
  AA: "~@12 x ~@22 x ~@12", AB: "~@11 x ~@22 x ~@13", AC: "~@5 x ~@11 x ~@6", AD: "~@3 x ~ x ~@5 x ~@2 x ~",
  AE: "~@9 x ~@22 x ~@5 x ~@9", AF: "~@8 x ~@22 x ~@5 x ~@10", AG: "~ x ~@7 x ~@2", AH: "~@3 x ~@4 x ~@2 x ~@4",
  AI: "~@9 x ~@22 x ~@15", AJ: "~@5 x ~@2 x ~@22 x ~@16", AK: "~@7 x ~@23 x ~@16", AL: "~ x ~@3 x ~@2",
  AM: "~@6 x ~@22 x ~@18", AN: "~@5 x ~@42", AO: "~@16 x ~@22 x ~@8", AP: "~@5 x ~ x ~@5 x ~@2", AQ: "~@7 x ~@11 x ~@4",
  AR: "~@7 x ~@15 x", AS: "~@4 x ~@8 x ~@22 x ~@11", AT: "~ x ~ x", AU: "~@11 x ~@23 x ~@12",
  AV: "~@11 x ~@4 x ~@17 x ~@13", AW: "~@10 x ~@22 x ~@5 x ~@8", AX: "~@11 x ~@36",
})).gain(0.5)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@15 A ~@5 B ~@2 C D E ~ F G H@2 I ~ J K L M N O@2 P Q R S ~ O T P K@2 U V W X ~@3 G J Y M Z AA AB P AC ~@6
>`.pickRestart({
  A: "~@5 x ~@6", B: "~@5 x ~@10", C: "~@5 x", D: "~@13 x ~@2", E: "~@19 x ~@4", F: "~@37 x ~@10", G: "~@3 x",
  H: "~@35 x ~@12", I: "~@11 x ~@12", J: "~ x ~ x", K: "~ x ~@6", L: "~@11 x ~@23 x ~@12", M: "~@17 x ~@6", N: "~@15 x",
  O: "~@2 x", P: "~@31 x ~@16", Q: "~ x ~@3 x ~@2", R: "~@29 x ~@18", S: "~@5 x ~@23 x ~@18", T: "~@4 x ~@8 x ~@10",
  U: "~@17 x ~@30", V: "~ x ~@10", W: "~ x ~@14", X: "~@3 x ~@22 x ~@20 x", Y: "~ x ~@4", Z: "~@11 x ~@2 x ~",
  AA: "~@2 x ~@8 x ~@4", AB: "~@5 x ~@26 x ~@8 x ~@6", AC: "~@9 x ~@6",
})).gain(0.25)

// drums · rim
const rim = s("rim").struct("<~@9 A@4 ~ B C D E F G H I J ~@6 K L M N ~@40>".pickRestart({
  A: "~@3 x", B: "~@15 x ~@22 x ~@9", C: "~@7 x ~@11 x ~@4", D: "~@13 x ~@23 x ~@10", E: "~@13 x ~@22 x ~@11",
  F: "~@12 x ~@22 x ~@12", G: "~@11 x ~@23 x ~@12", H: "~@5 x ~@11 x ~@6", I: "~@10 x ~@22 x ~@14",
  J: "~@9 x ~@22 x ~@15", K: "~ x ~@10", L: "~ x ~@14", M: "~ x ~@22", N: "~ x ~@46",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct(`<
  ~@24 A B C D E F G H I J F G H I K L M N O P Q R S M T O P U V W X ~@3 Y Z H AA I AB AC N@2 ~@6
>`.pickRestart({
  A: "~@31 x ~@16", B: "~@7 x ~@22 x ~@17", C: "~@6 x ~@22 x ~@18", D: "~@5 x ~@23 x ~@18", E: "~ x ~@5 x ~@4",
  F: "~@4 x ~@22 x ~@20", G: "~@3 x ~@22 x ~@21", H: "~ x ~@11 x ~@10", I: "~ x ~@23 x ~@22", J: "~ x ~@12 x ~@9",
  K: "~ x ~@22 x ~@23", L: "x ~@5 x ~@16 x ~@23 x", M: "~@23 x ~@22 x ~", N: "~@11 x ~@11 x", O: "~@7 x ~@7 x",
  P: "~@5 x ~@5 x", Q: "~@20 x ~@22 x ~@4", R: "~@7 x ~@40", S: "x ~@22 x ~@23 x", T: "~@22 x ~@22 x ~@2",
  U: "~@20 x ~@4 x ~@17 x ~@4", V: "~@19 x ~@22 x ~@5", W: "~@3 x ~@3 x", X: "~@17 x ~@23 x ~@6", Y: "~@7 x ~@4",
  Z: "~ x ~@7 x ~@6", AA: "~@2 x ~@22 x ~@22", AB: "x ~@23 x ~@22 x", AC: "~@23 x ~@23 x",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@24 A ~@7 B C ~@2 D ~@8 E ~@3 F ~@23>".pickRestart({
  A: "~@10 x ~@2 x ~@34", B: "~@47 x", C: "~@2 x ~@6 x ~@3 x ~@34", D: "~@23 x", E: "~@5 x ~ x ~@4", F: "~@3 x ~@4",
})).gain(0.5)

// … 98 more lines

More by Pooh