Strudelify

The Sorcerer's Apprentice

Paul Dukas

KeyF minorTempo175 bpm
0:00/0:00
// The Sorcerer's Apprentice — Paul Dukas
// 175 bpm, 3/8, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 15 "BASSOON" bassoon (copy of ch 6 "BASSOON" bassoon)
// note: Full arrangement: all 232 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(175/1.5)

// 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 · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  ~ A@2 B C D E F G H I J@4 K L M@2 N O P Q ~@6 R S@5 T U V W X@2 Y Z AA@3 ~@23 AB@3 ~@4 AC AD ~ AE AF ~ AG@3 ~@7 AH AI
  AJ@2 AK AJ@2 AK AJ AL AM ~@129
>`.pickRestart({
  A: "~@5 [ab3,c4,f4]@6 ~@5", B: "~@3 [g3,bb3,c4]@3 ~@2", C: "~@7 [f3,c4,f4]@6 ~@3", D: "~@4 [f3,c4,f4]@3 ~",
  E: "~@9 [g3,bb3,db4]@6 ~", F: "~@5 [f3,c4,f4]@3", G: "~@11 [f3,c4,f4]@5", H: "~@11 [g3,bb3,db4]@5",
  I: "~@3 [f3,c4,f4]", J: "[~@13 [ab3,c4,ab4]@6 ~@11 [c4,f4,c5]@6 ~@11 [db4,f4,db5]@6 ~@11]/4", K: "[db4,f4,db5]@3 ~@5",
  L: "~ [d4,f4,d5]@6 ~@9", M: "~ [db4,f4,db5]@3 ~@4", N: "~@3 [d4,f4,d5]@6 ~@7", O: "~@2 [e4,bb4,e5]@3 ~@3",
  P: "~@5 [d4,bb4,d5]@6 ~@5", Q: "~@3 [c4,bb4,c5]@3 ~@2", R: "~@3 [e3,g3,c4]",
  S: "[~@13 [f3,a3,d4]@6 ~@11 [bb3,e4,g4]@6 ~@11 [c4,e4,c5]@6 ~@10 [b3,e4,g4]@6 [eb4,c5]@6 [c4,eb5]@5]/5", // Dm Edim C Em Cm
  T: "[c5,ab5]@3 [g4,c6]@3 ~@2", U: "~ [db4,g4]@6 ~@9", V: "~ [db4,ab4]@3 ~@4", W: "~@3 [f4,bb4]@6 [f4,c5]@6 ~",
  X: "[~@15 [gb4,eb5]@6 [gb4,db5]@5 [e4,ab4]@6]/2", Y: "db4@6 [db4,g4]@5 [c4,f4]@5", Z: "~@3 [eb4,ab4]@3 [b3,f4]@2",
  AA: "[~@7 [d4,ab4]@6 [db4,g4]@5 [c4,f4]@6 [bb3,e4]@6 [ab3,f4]@6 ~@12]/3", // Ddim Dbdim F5 Bbdim Db
  AB: "[~@14 bb3@5 eb4@5 ~ bb4@5 eb5@5 bb5@5 ~ eb6@5 ~@2]/3", AC: "bb3@5 eb4@5 ~ bb4@5", AD: "eb5@5 ~ bb5@5 eb6@5",
  AE: "~ b3@5 e4@5 ~ b4@4", AF: "~ e5@5 ~ b5@5 e6@4", AG: "[~@2 b3@5 ~ e4@5 b4@5 ~ e5@5 b5@5 e6@5 ~@14]/3",
  AH: "c5@5 ~@11", AI: "c4@5 d4@5 ~ e4@5", AJ: "f4@5 ~@6 ab4@5", AK: "g4@5 f4@5 ~ e4@5", AL: "f4@5 ab4@5 ~ g4@5",
  AM: "f4@5 g4@5 ~ ab4@5",
})).s("gm_pizzicato_strings").gain(0.4)

// chords · string ensemble 1 · "PIZZICATO"
const string_ensemble_1 = note(`<
  ~@23 A@2 B@5 ~@18 C D E@2 ~@5 F@4 ~@5 G H I@2 ~@2 J@4 ~@8 K@6 L M ~@14 N O ~ P Q R O ~ P Q@2 R O ~ P S ~ T U ~ U V W X
  Y Z@8 AA AB AC AD@2 AE AF AG AH AF AG AI AJ AK AL AM AK AL AN AO AP AQ AR AS AT AR AS AU AV AW AX AY AW AZ BA BB BC@3
  BD BE BF BG BH BI BJ@2 BK BJ@2 BK BJ@3 BL BM BN BO BM BN BP BQ BR BS BT@2 BU@2 BV BU@2 BV BU BW BX BY@2 BZ BY@2 BZ
  BY@5 CA ~@6
>`.pickRestart({
  A: "[~@7 [c4,d4,gb4]@5 [b3,eb4,g4]@17 ~@3]/2", B: "[~@8 [g3,bb3]@6 [f3,ab3,b3]@51 [e3,g3,c4]@6 ~@9]/5",
  C: "[a4,f5,db6]@11 [ab4,e5,c6]@3 [a4,f5,db6]@2", D: "~ [f4,db5,a5]@11 [e4,c5,ab5]@2 [f4,db5,a5]@2",
  E: "[~ [db4,a4,f5]@11 [c4,ab4,e5]@3 [db4,a4,f5]@2 [a3,f4,db5]@5 ~@10]/2", // Dbaug Caug Dbaug Aaug
  F: "[~@4 [db5,a5,f6]@11 [c5,ab5,e6]@2 [db5,a5,f6]@3 [a4,f5,db6]@11 [ab4,e5,c6]@3 [a4,f5,db6]@2 [f4,db5,a5]@11 [e4,c5,ab5]@3 [f4,db5,a5]@3 [db4,a4,f5]@5 ~@6]/4", // Dbaug Caug Dbaug Aaug Abaug Aaug Faug Eaug …
  G: "~@7 [db5,a5,f6]@9", H: "~@2 [c5,ab5,e6]@3 [db5,a5,f6]@2 [a4,f5,db6]@9",
  I: "[~@2 [ab4,e5,c6]@3 [a4,f5,db6]@3 [f4,db5,a5]@11 [e4,c5,ab5]@2 [f4,db5,a5]@3 [db4,a4,f5]@5 ~@3]/2", // Abaug Aaug Faug Eaug Faug Dbaug
  J: "[~@9 [db5,a5,f6]@11 [c5,ab5,e6]@3 [db5,a5,f6]@3 [a4,f5,db6]@11 [ab4,e5,c6]@2 [a4,f5,db6]@3 [f4,db5,a5]@11 [e4,c5,ab5]@3 [f4,db5,a5]@2 [db4,a4,f5]@5 ~]/4", // Dbaug Caug Dbaug Aaug Abaug Aaug Faug Eaug …
  K: "[~@14 [e5,g5,db6]@5 [eb5,gb5,c6]@5 ~ [d5,f5,b5]@5 [db5,e5,bb5]@5 ~ [c5,eb5,a5]@5 [b4,d5,ab5]@5 ~ [bb4,db5,g5]@5 [a4,c5,gb5]@5 [ab4,b4,f5]@5 ~ [g4,bb4,e5]@5 [gb4,a4,eb5]@5 ~ [f4,ab4,d5]@5 [e4,g4,db5]@5 ~ [eb4,gb4,c5]@5 [d4,f4,b4]@5 ~]/6", // Dbdim Cdim Bdim Bbdim Adim Abdim Gdim Gbdim …
  L: "[db4,e4,bb4]@5 [b3,d4,ab4]@5 ~ [bb3,db4,g4]@5", M: "[ab3,c4,f4]@5 ~@11", N: "g4@5 bb4@5 ~ ab4@5", O: "g4@5 ~@11",
  P: "g4@5 ab4@5 ~ bb4@5", Q: "c5@5 c5@5 ~ c5@5", R: "c5@5 bb4@5 ~ ab4@5",
  S: "[ab3,c4,gb4,c5]@5 [ab2,c4,gb4,c5]@5 ~ [ab3,c4,gb4,c5]@5", // Ab7
  T: "[ab3,c4,gb4,c5]@5 [ab2,ab3,c4,c5]@5 ~ [ab3,c4,gb4,c5]@5", // Ab7 Ab Ab7
  U: "[g3,eb4,g4,c5]@5 [g2,c4,eb4,c5]@5 ~ [g3,eb4,g4,c5]@5", V: "[a3,eb4,g4,c5]@5 [a2,c4,eb4,c5]@5 ~ [a3,eb4,g4,c5]@5",
  W: "[c4,g4,a4,eb5]@5 [c3,eb4,g4,eb5]@5 ~ [c4,g4,a4,eb5]@5", // Am7b5 Cm Am7b5
  X: "[eb4,a4,c5,gb5]@5 [a3,c5,eb5,gb5]@5 ~ [c4,eb4,a4,gb5]@5", Y: "[b3,g4,d5,g5]@5 g4@3 gb4@3 g4@2 gb4@3",
  Z: "g4@5 g4@3 gb4@3 g4@2 gb4@3", AA: "g4@5 gb4@3 f4@3 gb4@2 f4@3", AB: "gb4@5 f4@3 eb4@3 f4@2 eb4@3",
  AC: "d4@5 a3@3 b3@3 c4@2 d4@3", AD: "eb4@5 eb4@3 d4@3 eb4@2 d4@3", AE: "eb4@5 d4@3 eb4@3 d4@2 eb4@3",
  AF: "[c2,e4]@5 eb4@3 e4@3 eb4@2 e4@3", AG: "[db2,f4]@5 g4@3 ab4@3 g4@2 ab4@3", AH: "[f2,db4]@5 c4@3 db4@3 c4@2 db4@3",
  AI: "[d2,b4]@5 bb4@3 ab4@3 gb4@2 e4@3", AJ: "[eb2,eb4]@5 ab4@3 g4@3 ab4@2 g4@3",
  AK: "[e2,ab4]@5 ab4@3 g4@3 ab4@2 g4@3", AL: "[f2,ab4]@5 ab4@3 g4@3 ab4@2 g4@3, ~@11 ab2@5",
  AM: "[eb2,ab4]@5 ab4@3 g4@3 ab4@2 g4@3", AN: "[eb2,ab4]@5 ab4@3 g4@3 ab4@2 g4@3, ~@11 ab2@5",
  AO: "[f2,ab4]@5 g4@3 ab4@3 gb4@2 f4@3, ~@11 ab2@5", AP: "[gb2,a4]@5 ab4@3 a4@3 g4@2 gb4@3, ~@11 a2@5",
  AQ: "e4@5 [c4,e4]@5 ~ [c4,e4]@5", AR: "[ab3,db4,f4]@5 [ab3,db4,f4]@5 ~ [ab3,db4,f4]@5",
  AS: "[a3,d4,gb4,gb5]@5 [a3,d4,gb4,a5]@5 ~ [a3,d4,gb4,c6]@5", AT: "[g3,e4,g4,e6]@5 [g3,e4,g4]@5 ~ [g3,e4,g4]@5",
  AU: "[e4,g4,e6]@5 [g3,c4,e4]@5 ~ [g3,c4,e4]@5", AV: "[f3,c4,e4,e6]@5 [f3,c4,e4]@5 ~ [f3,c4,e4]@5",
  AW: "[ab3,c4,d4,f5]@5 [ab3,c4,e4,e5]@5 ~ [ab3,c4,f4,d5]@5", AX: "[e4,g4,e5]@5 [g3,c4,e4]@5 ~ [g3,c4,e4]@5",
  AY: "[gb3,c4,e4,e5]@5 [gb3,c4,e4]@5 ~ [gb3,c4,e4]@5", AZ: "[e4,g4,e5]@5 ~@11", BA: "f5@5 e5@5 ~ d5@5",
  BB: "g5@5 f5@5 ~ e5@5", BC: "ab5@5 e5@3 gb5@3 e5@5", BD: "[e4,c5,g5,c6]@5 ~@11",
  BE: "[c5,e5,g6]@5 [e4,g4,c5]@3 [f4,ab4,d5]@3 [g4,bb4,e5]@2 [ab4,c5,f5]@3", // C Ddim Edim Fm
  BF: "[bb4,d5,g5]@3 [c5,e5,ab5]@2 [d5,f5,bb5]@3 [e5,g5,c6]@3 [f5,ab5,d6]@2 [g5,bb5,eb6]@3", // Gm Caug Bb C Ddim Eb
  BG: "[f5,ab5,f6]@5 [ab3,c4,f4]@3 [f4,ab4,c5]@3 [c5,f5,ab5]@2 [f4,ab4,c5]@3", // Fm
  BH: "[ab3,c4,f4]@5 [ab3,c4,f4]@3 [f4,ab4,c5]@3 [c5,f5,ab5]@2 [f4,ab4,c5]@3", // Fm
  BI: "[g3,bb3,e4]@5 [g3,bb3,e4]@3 [e4,g4,c5]@3 [c5,e5,bb5]@2 [e4,g4,c5]@3", // Edim C C7 C
  BJ: "[ab3,db4,f4]@5 [ab3,db4,f4]@3 [f4,ab4,db5]@3 [db5,f5,ab5]@2 [f4,ab4,db5]@3", // Db
  BK: "[bb3,db4,e4]@5 [bb3,db4,e4]@3 [e4,bb4,db5]@3 [db5,g5,bb5]@2 [e4,bb4,db5]@3", // Bbdim Gdim Bbdim
  BL: "~@5 [bb3,db4,g4]@3 [e4,bb4,db5]@3 [db5,g5,bb5]@2 [e4,bb4,db5]@3", // Gdim Bbdim Gdim Bbdim
  BM: "[c4,e4,ab4]@5 [c4,e4,ab4]@3 [ab4,c5,e5]@3 [e5,ab5,c6]@2 [ab4,c5,e5]@3", // Caug Abaug Eaug Abaug
  BN: "[e4,ab4,c5]@5 [e4,ab4,c5]@3 [c5,e5,ab5]@3 [ab5,c6,e6]@2 [c5,e5,ab5]@3", // Eaug Caug Abaug Caug
  BO: "[bb3,db4,g4]@5 [bb3,db4,g4]@3 [e4,bb4,db5]@3 [db5,g5,bb5]@2 [e4,bb4,db5]@3", // Gdim Bbdim Gdim Bbdim
  BP: "~@5 [d4,gb4,bb4]@3 [bb4,d5,gb5]@3 [gb5,bb5,d6]@2 [bb4,d5,gb5]@3", // Daug Bbaug Gbaug Bbaug
  BQ: "[bb3,gb4,d5]@5 [bb3,gb4,d5]@3 [gb4,d5,bb5]@3 [d5,bb5,gb6]@2 [gb4,d5,bb5]@3", // Bbaug Gbaug Daug Gbaug
  BR: "[g5,b5]@3 [g5,b5]@2 [eb5,e6]@3 [eb5,e6]@3 [db5,db6]@2 [db5,db6]@3", // G Emaj7 Db
  BS: "[c5,c6]@3 [c5,c6]@2 [d5,d6]@3 [d5,d6]@3 [e5,e6]@2 [e5,e6]@3", BT: "[f5,f6]@5 [f5,f6]@5 ~ [f5,f6]@5",
  BU: "gb5@5 ~@6 a5@5", BV: "a5@3 g5@2 f5@5 ~ eb5@5", BW: "a5@3 g5@2 gb5@5 ~ g5@5", BX: "ab5@5 a5@5 ~ bb5@5",
  BY: "b5@5 ~@6 d6@5", BZ: "d6@3 c6@2 bb5@5 ~ ab5@5", CA: "b5@3 ~@3 d6@2",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · string ensemble 1 · "PIZZICATO" · soft notes
const string_ensemble_1_soft = note("<~@103 A B C ~ D C E F G H ~ I F G J H ~ I ~@51 K L M N@3 O ~@53>".pickRestart({
  A: "g4@5 bb4@5 ~ ab4@5", B: "g4@5 ~@6 db5@5", C: "e4@11 ab4@5", D: "~@11 db5@5",
  E: "[eb3,db4,e4]@5 [db4,eb4]@5 ~ [g3,db4,g4]@5", F: "[ab3,c4,gb4]@5 [ab2,c4,gb4]@5 ~ [ab3,c4,gb4]@5",
  G: "[ab2,c4,gb4]@5 [ab2,c4,gb4]@5 ~ [ab3,c4,gb4]@5", H: "[eb3,b3]@5 ~@11", I: "[db4,eb4]@5 [db4,eb4]@5 ~ [db4,g4]@5",
  J: "[ab2,c4,gb4]@5 [ab3,c4,gb4]@5 ~ [ab2,c4,gb4]@5", K: "~@5 [c4,e4]@5 ~ [c4,e4]@5",
  L: "[d4,f4]@5 [d4,f4]@5 ~ [d4,f4]@5", M: "[db4,g4]@5 [db4,g4]@5 ~ [db4,g4]@5",
  N: "[e4,ab4]@5 [e4,ab4]@5 ~ [e4,ab4]@5", O: "~@5 [g5,bb5,c6]@3 [f5,ab5,d6]@3 [e5,g5,e6]@2 [d5,f5,f6]@3",
})).s("gm_string_ensemble_1").gain(0.25)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings_2 = note(`<
  A B C D E@5 F G H I J K@2 L M N O P Q R S T@4 U V ~@18 W ~@56 X ~@27 Y@3 Z AA AB AC AD AE AF AG AH AI AJ AK AI AJ AL
  AM@2 ~@2 AN ~@76
>`.pickRestart({
  A: "~@9 [f2,ab2]@6 ~", B: "~@5 [f2,ab2]@3", C: "~@11 [f2,bb2]@5", D: "~@3 [f2,ab2]",
  E: "[~@13 [f2,ab2]@6 ~@11 [f2,bb2]@6 ~@11 [f2,ab2]@6 ~@10 [f2,ab2]@6 ~@11]/5", F: "[f2,bb2]@3 ~@5",
  G: "~ [f2,ab2]@6 ~@9", H: "~ [f2,ab2]@3 ~@4", I: "~@3 [ab2,c3]@6 ~@7", J: "~@2 [bb2,f3]@3 ~@3",
  K: "~@5 [b2,f3]@6 ~@5", L: "~@3 [bb2,f3]@3 ~@2", M: "~@7 [b2,f3]@6 ~@3", N: "~@4 [b2,f3]@3 ~", O: "~@9 [db3,e3]@6 ~",
  P: "~@5 [d3,gb3]@3", Q: "~@11 [e3,ab3]@5", R: "~@3 [f3,a3]", S: "~@7 ab3@5 g3@4",
  T: "[~@2 bb3@6 ab3@5 g3@6 f3@5 eb3@6 eb3@6 d3@5 c3@6 bb2@6 ab2@5 g2@6]/4", U: "f2@5 eb2@6 d2@5", V: "~ c2@6 ~@9",
  W: "f3@5 ~@11", X: "e4@5 ~@11", Y: "[b2,g3,d4,d5]@5 ~@11", Z: "[c3,g3,eb4,c5]@5 ~@11", AA: "[d3,b3,d4,b4]@5 ~@11",
  AB: "[eb3,c4,g4]@5 ~@11", AC: "[a3,eb4,g4]@5 ~@11", AD: "[bb3,eb4,g4]@5 ~@11", AE: "[bb2,d4,f4]@5 ~@11",
  AF: "[eb3,bb3,eb4]@5 ~@11", AG: "[eb3,g4,bb4]@5 ~@11", AH: "[eb3,eb5,g5]@5 ~@11", AI: "[e4,c5,ab5]@5 ~@11",
  AJ: "[f4,db5,ab5]@5 ~@11", AK: "[db4,ab4,f5]@5 ~@11", AL: "[e4,ab4,e5]@5 ~@11", AM: "[ab4,c5,ab5]@5 ~@11",
  AN: "[c5,ab5]@5 ~@11, ab4 ~@15", // Fm
})).s("gm_pizzicato_strings").gain(0.4)

// chords · pizzicato strings · "PIZZICATO" · soft notes
const pizzicato_strings_soft = note(`<
  ~@29 A B@5 C D E F G@2 H I J@3 ~@48 K@2 L K@2 L K@2 M ~@5 N ~@3 O P ~@4 O P ~@106 Q@4 ~@2
>`.pickRestart({
  A: "~@3 c3", B: "[~@13 c3@6 ~@11 c3@6 ~@11 ab3@6 ~@10 g3@6 [gb3,bb3]@6 ~@5]/5", C: "[f3,ab3]@3 [e3,g3]@3 ~@2",
  D: "~ [e3,g3]@6 ~@9", E: "~ [f3,ab3]@3 ~@4", F: "~@3 [g3,bb3]@6 [ab3,c4]@6 ~",
  G: "[~@4 [a3,c4]@5 [bb3,db4]@6 [gb3,bb3]@6 [bb3,db4]@5 [db3,bb3]@6]/2", H: "~@6 [db3,bb3]@5 [c3,ab3]@5",
  I: "~@3 [c3,c4]@3 [c3,ab3]@2", J: "[~@7 [c3,b3]@6 [c3,bb3]@5 [c3,ab3]@6 [c3,g3]@6 f3@6 ~@12]/3",
  K: "[f3,ab3,db4]@5 ~@11", L: "[bb3,db4]@5 ~@11", M: "[ab3,db4,f4]@5 ~@11", N: "e4@5 ~@11", O: "~@11 [f3,g3,b3]@5",
  P: "[g3,b3,e4]@5 ~@11", Q: "[~@2 [ab1,ab2]@6 ~@5 ab3@6 [ab1,ab2]@6 ~@5 ab3@6 [ab1,ab2]@6 ~@5 ab3@6 ~@11]/4",
})).s("gm_pizzicato_strings").gain(0.25)

// other · string ensemble 1 · "PIZZICATO"
const string_ensemble_1_2 = note(`<
  ~@51 A@3 B@3 ~@3 C@7 D@4 E F G@2 H I J K L M N@3 O@6 P Q ~@17 R S@2 R ~ R S@3 R ~ R S ~@30 T U V T U W U X Y ~@2 Z ~@2
  Z ~@2 Z ~@2 AA AB AC AD@3 AE AF ~ AG ~ AG@3 AH AG@2 AH AG@3 AI AJ AK AI AJ AL AM AN AO AP AQ AR AS AT AU AS AT AU AT
  AV AW AX AY AZ AX AY AZ AX@4 BA BB ~@3 BC BD ~
>`.pickRestart({
  A: "[~ [f1,f2]@44 ~@3]/3", B: "[~@3 [f1,f2]@44 ~]/3", C: "[~@5 [f1,f2]@44 ~@5 [f1,f2]@44 ~@5 f2@5 ~@4]/7",
  D: "[~@2 a2@5 f2@5 ~ a2@5 g2@5 ~ f2@5 g2@5 ~ a2@5 g2@5 ~ bb2@5 ab2@5 ~ g2@5 ~@2]/4", E: "~@3 eb3@5 ~ g2@5 ~@2",
  F: "~@4 g3@5 f2@5 ~@2", G: "[~@4 a2@5 ~ f2@5 a2@5 ~ g2@5 f2@5 ~]/2", H: "g2@5 a2@5 g2@5 ~", I: "bb2@5 ab2@5 ~ g2@5",
  J: "~@6 eb3@5 g2@5", K: "~@6 g3@5 ~ g2@4", L: "~ b2@5 a2@5 ~ g2@4", M: "~@7 e3@5 g2@4",
  N: "[~@7 g3@5 ~ g2@5 ~@11 g2@5 ~@11 g2@3]/3", O: "[~@14 c2@11 ~@5 c2@11 ~@6 c2@11 ~@5 c2@11 ~@5 c2@11 ~@6]/6",
  P: "c2@11 ~@5", Q: "f2@5 ~@11", R: "eb2@11 ~@5", S: "ab2@11 ~@5", T: "~@11 [ab4,ab5]@5",
  U: "[db5,db6]@5 [c5,c6]@5 ~ [bb4,bb5]@5", V: "[c5,c6]@5 ~@11", W: "[c5,c6]@5 ~@6 [ab4,ab5]@5",
  X: "[eb5,eb6]@5 [d5,d6]@5 ~ [c5,c6]@5", Y: "[g2,g3,e5,e6]@5 g3@5 ~ g3@5", Z: "g2@5 ~@11", AA: "g2@5 g3@5 ~ g3@5",
  AB: "ab3@5 ab3@5 ~ ab3@5", AC: "bb3@5 bb3@5 ~ bb3@5", AD: "db4@5 db4@5 ~ db4@5", AE: "c4@5 ~@11", AF: "c2@5 ~@11",
  AG: "f3@5 ~@11", AH: "bb3@5 ~@11", AI: "e3@5 e3@5 ~ e3@5", AJ: "c4@5 ~@6 bb3@5", AK: "ab3@5 ~@6 gb3@5",
  AL: "ab3@5 ~@6 bb3@5", AM: "d4@5 ~@6 c4@5", AN: "bb3@5 ~@6 c4@5", AO: "[eb4,g4]@5 [eb4,g4]@5 ~ [eb4,g4]@5",
  AP: "[e4,ab4]@5 [d4,ab4]@5 ~ [c4,ab4]@5", AQ: "[b3,ab4]@5 [b3,ab4]@5 ~ [b3,ab4]@5",
  AR: "[b3,ab4]@5 [b3,ab4]@5 ~@2 g3 a3 ~ bb3, ~@11 ab4@5", AS: "[g3,c4,eb4]@5 ~@7 g3 a3 ~ bb3",
  AT: "[g3,c4,eb4]@5 ~@7 d4 eb4 ~ f4", AU: "[g3,bb3,eb4,g4]@5 ~@7 g3 a3 ~ bb3", AV: "[g3,bb3,eb4,g4]@5 ~@11",
  AW: "[db4,e4]@5 ~@7 c4 d4 ~ eb4", AX: "[ab3,c4,f4]@5 ~@7 c4 d4 ~ eb4", AY: "[ab3,c4,f4]@5 ~@7 eb4 f4 ~ g4",
  AZ: "[c4,eb4,ab4]@5 ~@7 c4 d4 ~ eb4", BA: "[ab3,c4,f4]@5 ~@7 c4 ~ d4 eb4", BB: "[ab3,c4,f4]@3 ~@5",
  BC: "~@5 [c2,c3,c4]@6 ~@5", BD: "~@3 [c3,c4,c5]@3 ~@2",
})).s("gm_string_ensemble_1").gain(0.5)

// other · string ensemble 1 · "PIZZICATO" · soft notes · Db B Bbm Ab Gm Db B Bbm …
const string_ensemble_1_soft_2 = note(`<
  ~@103
  [[db4,f4]@5 [db4,f4]@5 ~ [db4,f4]@5]
  [[db4,f4]@3 [b3,eb4]@2 [bb3,db4]@3 [ab3,c4]@3 [g3,bb3]@5]
  ~
  [[db4,f4]@5 [db4,f4]@5 ~ [db4,f4]@5]
  [[db4,f4]@3 [b3,eb4]@2 [bb3,db4]@3 [ab3,c4]@3 [g3,bb3]@5]
  ~@124
>`).s("gm_string_ensemble_1").gain(0.25)

// other · piccolo
const piccolo = note(`<
  ~@31 A@4 B ~@33 C D E F ~@2 G H I J K@4 L M ~@6 N@5 O N@2 O N@2 P Q ~ R ~@2 R ~@3 S T U ~@3 S T U ~ V W X Y Z AA AB W
  AC ~@42 AD AE ~@3 AF AG AH AI AJ AK AL@2 AM AL@2 AM AL@3 AM AN AO AM AN AO AP AQ AR AS@2 AT AU@2 AV AU@2 AV AU AW AX
  AY@2 AZ AY@2 AZ AY@4 BA BB@2 ~@5
>`.pickRestart({
  A: "[~@8 e6@6 g6@5 c7@3 db7@3 c7@3 db7@3 c7@2 db7@3 c7@3 db7@3 c7@3 db7@2 c7@3 db7@3 c7@3 db7@3 c7@2 db7@3]/4",
  B: "c7@3 db7@3 c7@6 ~@4", C: "~@8 g4@3 gb4@3 g4@2", D: "gb4@3 g4@3 gb4@3 g4@2 gb4@3 g4@2",
  E: "~ gb4@2 g4@3 gb4@3 g4@3 gb4@2 g4@2", F: "~ gb4@3 g4@3 ab4@2 a4@5 ~@2", G: "~@10 g4@3 gb4@3",
  H: "g4@3 gb4@2 g4@3 gb4@3 g4@3 gb4@2", I: "g4@3 gb4@3 g4@2 gb4@3 g4@3 gb4@2", J: "~ g4@2 gb4@3 g4@3 gb4@3 g4@2 gb4@2",
  K: "[~ g4@3 gb4@2 g4@3 a4@3 b4@3 bb4@2 b4@3 bb4@3 b4@3 eb5@2 e5@3 eb5@3 e5@2 eb5@3 e5@3 gb5@3 g5@2 gb5@3 g5@3 gb5@3 g5@2 a5@3 b5@3]/4",
  L: "bb5@3 b5@2 bb5@3 b5@3 eb6@2 e6@3", M: "eb6@3 e6@3 eb6@2 e6@3 gb6@3 g6@2", N: "ab6@5 ab6@3 g6@3 ab6@5",
  O: "g6@3 gb6@2 g6@3 gb6@3 g6@5", P: "f6@5 f6@3 e6@3 f6@5", Q: "f6@5 ~@11", R: "gb5@3 ab5@2 bb5@3 b5@3 db6@5",
  S: "eb5@5 g5@5 ~ f5@5", T: "eb5@5 ~@6 b5@5", U: "eb5@5 ~@6 eb6@5", V: "gb5@5 gb5@5 ~ gb5@5", W: "~@11 gb5@5",
  X: "c5@5 ~@11", Y: "g5@5 g5@5 ~ g5@5", Z: "~@11 g5@5", AA: "c5@5 ~@6 c5@5", AB: "~@11 eb5@5", AC: "g5@5 ~@11",
  AD: "f6@5 e6@5 ~ d6@5", AE: "g6@5 f6@5 ~ e6@5", AF: "~@5 [g5,bb5]@3 [f5,ab5]@3 [e5,g5]@2 [d5,f5]@3",
  AG: "[c5,e5]@5 [e5,g5]@3 [f5,ab5]@3 [g5,bb5]@2 [a5,c6]@3", // C Em Fm Gm Am
  AH: "[bb5,d6]@3 [c6,e6]@2 [d6,f6]@3 [e6,g6]@3 [f6,ab6]@2 [gb6,bb6]@3", AI: "a6@5 ab6@3 f6@3 c6@5",
  AJ: "d7@3 c7@2 ab6@3 f6@3 c6@5", AK: "db7@3 c7@2 bb6@3 g6@3 c6@5", AL: "eb7@3 db7@2 ab6@3 f6@3 db6@5",
  AM: "eb7@3 db7@2 bb6@3 g6@3 db6@5", AN: "d7@3 c7@2 ab6@3 e6@3 c6@5", AO: "c6@3 e6@2 ab6@3 d7@3 c7@5",
  AP: "e7@3 d7@2 bb6@3 gb6@3 d6@5", AQ: "d6@3 gb6@2 bb6@3 e7@3 d7@5", AR: "b5@3 db6@2 eb6@3 e6@3 gb6@2 gb6@3",
  AS: "ab6@3 bb6@2 ab6@3 bb6@3 ab6@2 bb6@3", AT: "ab6@3 bb6@2 ab6@3 bb6@3 g6@2 ab6@3", AU: "a6@3 f6@2 eb6@3 c6@3 a5@5",
  AV: "bb5@3 c6@2 d6@3 eb6@3 f6@2 g6@3", AW: "bb5@3 a5@2 bb5@3 c6@3 d6@2 eb6@3", AX: "e6@3 f6@2 g6@3 a6@3 bb6@2 c7@3",
  AY: "d7@3 b6@2 a6@3 ab6@3 f6@2 d6@3", AZ: "eb6@3 f6@2 g6@3 ab6@3 bb6@2 c7@3", BA: "d7@3 b6@2 a6@3 ab6@3 f6@3 d6@2",
  BB: "[d7@3 b6@3 a6@3 ab6@3 f6@3 d6@3 ~@14]/2",
})).s("gm_piccolo").gain(0.16)

// other · clarinet
const clarinet = note(`<
  ~@29 A B C@4 D E F G@3 H I J@3 ~@2 K@4 ~@5 L@4 ~@6 M N O@4 P Q R S T U V W X Y Z AA@7 ~@21 AB@3 ~@3 AB@3 ~@2 AC ~@2 AD
  AE AF@2 AG ~@98 AH AI ~
>`.pickRestart({
  A: "~ [e3,g3,c4]@3 [f3,ab3,db4]@2 [e3,g3,c4]@3 [f3,ab3,db4]@3 [e3,g3,c4]@4", // C Db C Db C
  B: "~@2 [f3,ab3,db4]@2 [g3,bb3,eb4]@3 [f3,ab3,db4]@3 [gb3,bb3,eb4]@3 [eb3,g3,c4]@3", // Db Eb Db Ebm Cm
  C: "[[f3,ab3,db4]@2 [e3,g3,c4]@6 [g3,c4,e4]@6 [bb3,e4,g4]@5 ab4@17 g4@17 gb4@11]/4", D: "f4@3 c4@3 ~@2",
  E: "~@7 db4@6 ~@3", F: "~@4 db4@3 ~", G: "[~@9 ab4@5 g4@6 gb4@5 gb4@6 gb4@6 gb4@5 e4@6]/3", H: "db4@6 db4@5 ab3@5",
  I: "~@3 eb4@3 ab3@2", J: "[~@7 d4@6 db4@5 c4@6 bb3@6 ab3@6 ~@12]/3", K: "[f2@49 ~@15]/4", L: "[~@4 f2@49 ~@11]/4",
  M: "~@2 f4@5 ~@9", N: "~@2 db5@5 ~@9",
  O: "[~@3 db5@5 eb5@4 ~@2 eb5@4 ~ eb5@4 ~@2 eb5@4 ~ eb5@4 ~ eb5@4 ~@2 eb5@4 ~ eb5@4 ~@2 eb5@4 ~@8]/4",
// … 339 more lines