Strudelify

I Only Have Eyes for You

Flamingos

KeyF majorTempo68 bpm
0:00/0:00
// I Only Have Eyes for You — Flamingos
// 68 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 66 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(68/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 · string ensemble 2
const string_ensemble_2 = note(`<
  ~@23 A@2 B C@2 D@2 E F@2 G H@3 I J@3 K L A@2 B C@2 D@2 E M@2 G H@3 I J@3 K@2 N@3
>`.pickRestart({
  A: "[bb3@3 db4, f3]/2", B: "[a3,c4]", C: "[c4 ~@2 g3, ~ a3@2 ~, ~ d4]/2",
  D: "[a3@6 ~@12 gb3@5 ~, db4 c4, ~ g3@2 ~]/2", E: "gb3 f3, b3", F: "[c4@3 d4, ~@36 d2 ~@11]/2", G: "c4 bb3",
  H: "[g3 ~ a3@4, ~ c4@5]/3", I: "[gb3,d4] [g3,c4]", J: "[ab3 a3 bb3@3 c4, ~ d4@3 ~@2]/3", K: "a3 g3", L: "a3 f3",
  M: "[c4@3 d4]/2", N: "[a3@6 bb3@7 [f3,a3,c4]@16 ~@7]/3",
})).s("gm_string_ensemble_2").gain(0.25).pan(0.2)

// chords · vibraphone
const vibraphone = note(`<
  ~@5 A B@2 C B D E@2 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 AE AF AG AH AI ~@6 AJ AK AL AM AN AO AP AQ
  AR AS AT AU AV AW AX AY@2
>`.pickRestart({
  A: "c4@6 [bb3,d4]@5 ~, g4@7 ~, e4@3 ~@5", B: "[c4,e4]@6 [bb3,d4]@5 ~, g4@11 ~", C: "[c4,e4]@4 [bb3,d4]@3 ~, g4@7 ~",
  D: "[bb3,d4]@10 ~@2 [bb3,c4,e4]@9 ~@3, f4 ~", E: "[[e4,a4]@5 ~ [c4,a4]@11 ~ [c4,a4]@5 ~, c5 e4@2 f4]/2",
  F: "[c4,e4]@7 ~, a4", G: "[b3,eb4,ab4]@5 ~", H: "[e4,bb4,c5]@5 ~ [bb3,d4]@4 ~@2, ~ f4",
  I: "[c4,e4]@10 ~@2 [bb3,d4]@9 ~@3, g4 f4", J: "[c4,e4,g4]@5 ~ [d4,f4]@4 ~@2, ~ bb4",
  K: "[bb3,d4]@3 ~ [bb3,e4]@3 ~, f4 ~", L: "[c4,e4,a4]@11 ~", M: "[c4,a4]@5 ~ [c4,f4]@5 ~, e4 a4",
  N: "[d4,gb4] [c4,g4], c4@5 ~ e4@5 ~", O: "[c4,d4,gb4]@10 ~@2 [c4,d4,gb4]@9 ~@3, a4 ~", P: "[bb3,d4,g4]@11 ~",
  Q: "[bb3,db4,f4]@7 ~", R: "[e4,a4]@7 ~, c4", S: "[e4,a4,c5]@11 ~ [eb4,f4]@9 ~@3, ~ a4", T: "[bb3,d4,f4]@11 ~",
  U: "[bb3,db4,f4]@11 ~", V: "[c4,e4,g4]@6 [c4,e4,gb4]@5 ~", W: "[b3,eb4]@5 ~ [b3,eb4,f4]@5 ~, gb4 ~",
  X: "[e4,bb4]@5 ~ f4@6, c5@6 d4@5 ~", Y: "[c4,e4,g4]@6 [d4,f4]@5 ~", Z: "[c4,e4,g4]@11 ~ [d4,f4,bb4]@10 ~@2",
  AA: "[f4,bb4,c5]@12 [e4,bb4,c5]@11 ~", AB: "[e4,a4]@19 ~@5, c5", AC: "[e4,a4]@3 ~ [a4,c5]@3 ~, c4 e4",
  AD: "[gb4,d5]@5 ~ [g4,d5]@6, c5@6 e4@5 ~", AE: "ab4@6 [d4,gb4]@5 ~, f4@2 ~ a4@3", AF: "[d4,f4,bb4]@11 ~",
  AG: "[f4,bb4]@11 ~ [g4,bb4]@12, ~@4 e4@3 ~", AH: "[f4,a4] [eb4,g4], c4@3 ~ bb3@3 ~",
  AI: "[f4,a4]@10 ~@2 [eb4,g4,bb4]@6 [c4,f4,a4]@5 ~, c4 ~", AJ: "[g3,c4]@10 ~@2 [a3,c4,gb4]@11 ~, e4 ~",
  AK: "[b3,eb4]@10 ~@2 [b3,f4,ab4]@9 ~@3, gb4 ~", AL: "[bb4,c5] f4, e4@3 ~ d4@3 ~",
  AM: "c4@10 ~@2 [bb3,d4]@9 ~@3, g4@7 ~, e4 ~@2", AN: "[e4,bb4]@3 ~ [d4,f4]@3 ~, c5 bb4",
  AO: "[c4,f4,g4]@11 ~ [c4,e4,g4]@10 ~@2", AP: "[e4,a4]@11 ~, c5", AQ: "[e4,a4]@5 ~ [a4,c5]@5 ~, c4 e4",
  AR: "[gb4,d5]@5 ~ [e4,d5]@5 ~, c5 g4", AS: "[ab4,d5]@11 ~ [gb4,a4]@10 ~@2, f4 d5", AT: "[d4,g4,bb4]@11 ~",
  AU: "[db4,bb4] [e4,g4], f4@3 ~ c4@3 ~", AV: "~@14 c5 d5 f5 g5 ~ [ab5,a5] ~ c6 ~ d6",
  AW: "a5 ~ c6 d6 c6@2 ~@8 f6 [f6,g6] d6 c6 ~ a5 g5 f5 e5 ~", AX: "g5 f5 ~ c5@7 ~@4 d5 eb5 d5 c5 ~ bb4 g4 ~ f4 ~",
  AY: "[eb4@2 c4@5 ~@9 c6@17 ~@15, ~@13 c5@2 a5@18 ~@15, ~@14 [e5,g5]@19 ~@15]/2", // Em
})).s("gm_vibraphone").gain(0.22).pan(0.8)

// bass · electric bass pick
const bass = note(`<
  ~ A@2 B C D E@2 F G H I J K L M E N O P Q R S T U V W X Y Z AA AB E F AC V AD AE AF T AG AH AI AJ AK AL AM AN AO Z AA
  AB E F AC V AD AE AF T AP AH AQ AR AS@2
>`.pickRestart({
  A: "[g1@3 ~ g1@3 ~ g1@3 ~ g1@24 gb1@12]/2", B: "f1@4 ~ f2 eb2@3 c2@3", C: "f1@7 ~@3 f1@2 eb1@6 bb1@6",
  D: "c2@7 ~@5 g1@6 bb1@6", E: "c2@4 ~ c2 g1@3 bb1@3", F: "c2@9 ~ c2@2 g1@6 bb1@6", G: "c2@7 ~@3 c2@2 g1@6 bb1@6",
  H: "c2@9 ~ c2 ~ c2@5 ~ c2 ~ c2 ~ c2 ~", I: "f1@8 ~@2 f1@2 c2@5 ~ c2@6", J: "f2@4 ~ f2 f1@3 f2@3",
  K: "d2@8 ~@2 d2 ~ d2@6 d1@6", L: "db1@9 ~ db1@2 ~@2 db1 ~@3 db2@2 ab1@2 db1@2, ~@12 db2@5 ~ db1@4 ~@2",
  M: "c2@8 ~@2 c2 ~ g1@6 bb1@6", N: "c2@7 ~@3 c2@2 g2@6 g1@6", O: "c2@9 ~ c2 ~ c2@5 ~ c2@2 c1@2 c2@2",
  P: "f1@9 ~ f1@2 c2@5 ~ c2@6", Q: "f1@4 ~ f1 c2@3 f2 c2 f1", R: "d2@9 ~ d2@2 a1@5 ~ a1@6",
  S: "d1@9 ~ d1@2 d2@6 d1@2 d2@2 d1@2", T: "g1@9 ~ g1@2 g2@6 g1@6", U: "bb1@9 ~ bb1@2 eb2@6 eb1@6",
  V: "f1@4 ~ f1 c2@3 c1@3", W: "f1@8 ~@2 f1 ~ f1@6 f2@4 f1@2", X: "bb1@4 ~ bb1 f2@3 f1@3",
  Y: "bb1@9 ~ bb1@2 f2@6 bb1@6", Z: "a1@8 ~@2 a1@2 d2@9 ~ d2@2", AA: "ab1@9 ~ ab1@2 db2@6 ~@2 ab1@2 db1@2, ~@9 db1@2 ~",
  AB: "c1@9 ~ c2@2 g1@6 bb1@6", AC: "c2@9 ~ c2@2 c1@3 ~ c1@2 c2@2 c1@2 c2@2", AD: "f1@9 ~ f1@2 c2@6 f1@6",
  AE: "d1@9 ~ d1@2 e1@9 ~ e1@2", AF: "f1@7 ~@3 f1@2 gb1@6 d1@6", AG: "c2@4 ~ c2 c3@3 c2@3", AH: "f1@4 ~ f1 eb1@3 c1@3",
  AI: "f1@8 ~@2 f1 ~ f1@5 ~ f1@6", AJ: "bb1@3 ~@3 bb1 ~ bb1 ~ bb1 ~ bb1@2 ~@4 bb1 ~@5",
  AK: "bb1 ~@5 bb1 ~ bb1 ~ bb1 ~ bb1@2 ~@4 bb1@2 ~@4", AL: "f1@2 ~@4 f1 ~ f1 ~ f1 ~ f1@2 ~@4 f1@2 ~@4",
  AM: "f1@2 ~@4 f1 ~ f1 ~ f1 ~ f1 ~@5 f1@2 ~@4", AN: "bb1@2 ~@4 bb1 ~ bb1 ~ bb1 ~ bb1@2 ~@4 bb1 ~@5",
  AO: "bb1 ~@5 bb1 ~ bb1 ~ bb1 ~ bb1@2 ~@4 bb1@2 f1@2 db1@2", AP: "c2@4 ~ c2 c3@3 ~@3",
  AQ: "f1@7 ~@3 f2@2 eb2@6 c2@4 c1@2", AR: "f1@3 ~@2 f1 eb1@3 c1@3", AS: "[~ f1@15 ~@8]/2",
})).s("gm_electric_bass_pick").gain(0.25)

// chords · string ensemble 2
const string_ensemble_2_2 = note("<A B@2 C D E F ~@38 G H I J K L M N O@2 P Q R S T P U V W@3>".pickRestart({
  A: "~@3 d5", B: "[f5@4 a5@4 g5@4 f5@23 ~ [bb3,f4,f5]@12, [bb3,d4,f4]@12 db4@3 ~]/2",
  C: "[c4,e4,e5]@6 d5@4 bb4 g4, a3@5 ~ [g3,bb3,d4]@6", D: "[a3,c4,c5]@6 [d4,bb4]@4 g4 eb4, e4@3 ~ [g3,bb3]@4",
  E: "e4 [bb3,d4], g4, c4@3 ~@5", F: "c4@2 ~", G: "f3@2 a3 c4", H: "g4 f4", I: "d4@3 f3", J: "f4@3 g4", K: "e4 c4",
  L: "b3@3 ~", M: "g3", N: "c4 d4", O: "[e4 f4@2 e4]/2", P: "c4", Q: "a3", R: "d4 e4", S: "f4 gb4", T: "f4@2 a4 g4",
  U: "a4 g4", V: "f4@12 d4@6 bb3@5 ~", W: "[a3@6 bb3@7 [f2,a3,c4]@17 ~@6]/3",
})).s("gm_string_ensemble_2").gain(0.25).pan(0.6)

// chords · piano
const piano = note(`<
  ~@5 A B@4 C D@2 E F B@3 G D@2 H I J K D L M N E F B@3 O D@2 P Q R S T U V W X Y Z AA E F B@3 O D@2 P Q R AB T@2 AC AD
  ~
>`.pickRestart({
  A: "[c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~@3 [c5,e5,g5] ~ [c5,e5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~", // C Gm
  B: "[c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~", // C Gm
  C: "[bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [bb4,d5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~ [c5,e5,g5] ~", // Gm C
  D: "[a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~", // Am
  E: "[g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [g4,c5,e5] ~ [gb4,c5,eb5,e5] ~ [gb4,c5,e5] ~ [gb4,c5,e5] ~ [gb4,c5,e5] ~ [gb4,c5,e5] ~ [gb4,c5,e5] ~", // C Cdim Gbm7b5
  F: "[gb4,b4,eb5] ~ [gb4,b4,eb5] ~ [gb4,b4,eb5] ~ [gb4,b4,eb5] ~ [gb4,b4,eb5] ~ [gb4,b4,eb5] ~ [f4,b4,eb5] ~ [f4,b4,eb5] ~ [f4,b4,eb5] ~ [f4,b4,eb5] ~ [f4,b4,eb5] ~ [f4,b4,eb5] ~", // B Fm7b5
  G: "[bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5] ~", // Bb C7
  H: "[gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [g4,b4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~", // D7 G Gsus4
  I: "[gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~", // D7
  J: "[bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~", // Bb
  K: "[bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~", // Bbm
  L: "[a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~", // Am F
  M: "[bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~", // Bb Dm
  N: "[g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~ [g4,db5,f5] ~", // Gm7b5
  O: "[f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,c5] ~ [e4,bb4,c5] ~", // Fsus4 C7
  P: "[a4,c5,gb5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [gb4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~", // Gbdim D7 Gsus4
  Q: "[f4,ab4,c5,d5] ~ [f4,ab4,c5,d5] ~ [f4,ab4,c5,d5] ~ [f4,ab4,c5,d5] ~ [f4,ab4,c5,d5] ~ [f4,ab4,c5,d5] ~ [gb4,a4,c5,d5] ~ [gb4,a4,c5,d5] ~ [gb4,a4,c5,d5] ~ [gb4,a4,c5,d5] ~ [gb4,a4,c5,d5] ~ [gb4,a4,c5,d5] ~", // Dm7b5 D7
  R: "[f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~", // Bb
  S: "[f4,bb4,db5,f5]@10 ~@2 [f4,bb4,db5]@7 ~@5", // Bbm
  T: "[e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~", // Am Gm
  U: "[e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [g4,bb4,eb5,f5] ~ [g4,bb4,eb5,f5] ~ [g4,bb4,eb5,f5] ~ [a4,eb5,f5] ~ [a4,eb5,f5] ~ [a4,eb5,f5] ~", // Am Eb F7
  V: "[bb4,d5,f5] ~@5 [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~@5 [bb4,d5,f5] ~@5", // Bb
  W: "[bb4,db5] ~@5 [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5,f5] ~ [bb4,db5] ~@5 [bb4,db5,f5] ~@5, f5 ~@5 f5 ~@5", // Bbm
  X: "[e4,a4,c5] ~@5 [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~@5 [e4,a4,c5] ~@5", // Am
  Y: "[eb4,g4,bb4] ~@5 [eb4,g4,bb4] ~ [eb4,g4,bb4] ~ [eb4,g4] ~ [eb4,f4,a4] ~@5 [eb4,f4,a4] ~@5, ~@5 bb4 ~@6", // Eb F7
  Z: "[f4,a4,d5] ~@5 [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~@5 [f4,a4,d5] ~@5", // Dm
  AA: "[f4,bb4,db5] ~@5 [f4,bb4,db5] ~ [f4,bb4,db5] ~ [f4,bb4,db5] ~ [f4,bb4,db5] ~@5 [f4,bb4,db5]@2 ~@4", // Bbm
  AB: "[f4,bb4,db5,f5]@10 ~@2 [bb4,db5,g5]@9 ~@3", // Bbm Gdim
  AC: "[e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [e4,a4,c5] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~ [d4,g4,bb4] ~@2 [d4,g4,bb4] ~ [d4,g4,bb4]", // Am Gm
  AD: "~@2 [e4,a4,c5]@13 ~@9", // Am
})).s("gm_piano").gain(0.3).pan(0.3)

// other · french horn
const french_horn = note(`<
  A B@2 C D ~@18 E F G ~ E H I J ~ K L M N O P Q R ~ S T U ~@5 V W X ~@2 Y Z O AA AB AC AD AE AF AG@3
>`.pickRestart({
  A: "~@3 d4", B: "[f4@2 a4@2 g4@2 f4@11 ~ f4@6]/2", C: "e4 ~", D: "a3@2 bb3@2 c4@2 [bb3,d4]@3 bb3@3", E: "~ g4 f4 d4",
  F: "c4@6 bb3@6 a3@9 ~ g3@2", G: "c4@3 ~ c4@20", H: "c4@3 bb3@3 ~@2 a3@2 g3@2", I: "c4", J: "eb4@3 ~", K: "~ c4 d4 f4",
  L: "e4 d4", M: "~ c4 a4 g4", N: "e4@3 d4", O: "c4 a3", P: "d4@4 db4 d4 e4@3 ~ d4 e4",
  Q: "f4@7 ~ e4@2 f4@2 gb4@2 d4@2 a3@2 gb3@6", R: "g3 ~", S: "f4@4 c4 a3 d4@5 ~", T: "c4@4 a3 f3 g3@3 a3@3", U: "bb3 ~",
  V: "c4 d4 e4 gb4 d4 a3", W: "b3 db4 eb4 f4 db4 ab3", X: "c4 ~", Y: "~ g3 c4 bb3", Z: "a3@3 d4", AA: "gb3 g3",
  AB: "ab3@12 a3@11 ~", AC: "bb3@3 d4", AD: "f4 g4", AE: "f4", AF: "~@2 g3 bb3", AG: "[c4@12 d4@14 [a3,e4]@25 ~@21]/3",
})).s("gm_french_horn").gain(0.36).pan(0.1)

// chords · flute
const flute = note("<~ A B C ~@9 D E F ~@5 G H I ~@33 G H I ~@6>".pickRestart({
  A: "~@14 [a4,c5] [bb4,d5] [c5,e5] [d5,f5] [e5,g5] [f5,a5] [g5,bb5] [a5,c6] [bb5,d6] [c6,e6]", // Am Bb C Dm Em F Gm Am …
  B: "[d6,f6] [e6,g6] [d6,f6] [e6,g6] [d6,f6] [e6,g6] [d6,f6] [e6,g6] [d6,f6] [e6,g6] [d6,f6] [e6,g6] [f6,ab6] [eb6,gb6] [db6,f6] [c6,eb6] [bb5,db6] [ab5,c6] [gb5,bb5] [f5,ab5] [eb5,gb5] [db5,f5] [c5,eb5] [bb4,db5]", // Dm Em Dm Em Dm Em Dm Em …
  C: "[a4,c5]@11 ~@13", // Am
  D: "~@2 [gb5,a5] [f5,ab5] [gb5,a5] ~ [d5,gb5] [db5,f5] [d5,gb5] ~ [a4,d5] [ab4,db5] [a4,d5] ~ [gb4,a4]@2 [a4,d5]@2 d5@2 a5@2 [a5,d6]@2, ~@9 gb5@2 ~", // Gbm Fm Gbm D Db D D5 Db5 …
  E: "~@2 [ab5,db6] [g5,c6] [ab5,db6] ~ [f5,ab5] [e5,g5] [f5,ab5] ~ [db5,f5] [c5,e5] [db5,f5] ~ [f4,ab4]@2 [gb4,bb4]@2 [ab4,b4]@2 [bb4,db5]@2 [b4,eb5]@2", // Db5 C5 Db5 Fm Em Fm Db C …
  F: "~ c5@6 ~@17, e5 ~@3",
  G: "~@2 [gb5,a5] [f5,ab5] [gb5,a5] ~ [d5,gb5] [db5,f5] [d5,gb5] ~ [a4,d5] ~@3 [e5,g5] [eb5,gb5] [e5,g5] ~ [c5,e5] ~ [g4,c5] ~ [e4,g4] ~", // Gbm Fm Gbm D Db D D5 Em …
  H: "~@2 [gb5,a5] [f5,ab5] [gb5,a5] ~ [d5,gb5] ~ [a4,d5] ~ [gb4,a4]@2 [g4,bb4]@2 [a4,c5]@2 [bb4,d5]@2 [c5,e5]@2 [d5,gb5]@2 [gb5,a5]@2", // Gbm Fm Gbm D D5 Gbm Gm Am …
  I: "[g5,bb5]@5 ~@19", // Gm
})).s("gm_flute").gain(0.19).pan(0.7)

// other · orchestral harp
const orchestral_harp = note("<~@3 A B ~@17 C D@8 E@8 ~@24 F G ~>".pickRestart({
  A: "a3 ~ c4 ~ e4 ~ g4 ~ c5 ~ e5 ~ d5 ~ bb4 ~ g4 ~ g3@2 bb3@2 d4 ~",
  B: "a3 ~ c4 ~ e4 ~ g4 ~ c5 ~ e5 ~ d5 ~ bb4 ~ g4 ~ d4 ~ bb3 ~@3",
  C: "~@18 d4 [gb4,a4] [c5,d5] [gb5,a5] [c6,d6] [gb6,a6]", // Gbm Csus2 Gbm Csus2 Gbm
  D: "[bb6@186 db4 [f4,ab4] [b4,db5] [f5,ab5] [b5,db6] [f6,ab6], c7 ~@191]/8", E: "[c7, b6 ~@191]/8",
  F: "~@13 eb3 g3 bb3 d4 f4 bb4 ~ d5 f5 bb5 d6", G: "f6 ~ g6 ~@21",
})).s("gm_orchestral_harp").gain(0.25).pan(0.3)

// other · pad new age
const pad_new_age = note("<~@3 A B C ~@19 D E F ~ G H ~@35>".pickRestart({
  A: "e6@3 ~@3 d6@4 bb5 g5", B: "c6@6 bb5@4 g5 eb5", C: "g5 ~", D: "~ a6 g6 f6", E: "c6 a5 g5 f5", F: "d6@11 ~@13",
  G: "~ g6 gb6 d6", H: "~ gb6 f6 db6",
})).s("gm_pad_new_age").gain(0.33).pan(0.7)

// other · pizzicato strings
const pizzicato_strings = note("<~@43 A B C D E B F G H ~@14>".pickRestart({
  A: "f3 ~ bb3 ~ d4 ~ f4 ~ bb4 ~ d5 ~ f5 ~ d5 ~ bb4 ~ f4 ~ d4 ~ bb3 ~",
  B: "f3 ~ bb3 ~ db4 ~ f4 ~ bb4 ~ db5 ~ f5 ~ db5 ~ bb4 ~ f4 ~ db4 ~ bb3 ~",
  C: "f3 ~ a3 ~ c4 ~ e4 ~ a4 ~ c5 ~ e5 ~ c5 ~ a4 ~ e4 ~ c4 ~ a3 ~",
  D: "f3 ~ bb3 ~ eb4 ~ f4 ~ bb4 ~ c5 ~ f5 ~ c5 ~ a4 ~ f4 ~ c4 ~ a3 ~",
  E: "f3 ~ bb3 ~ d4 ~ f4 ~ a4 ~ d5 ~ f5 ~ d5 ~ a4 ~ f4 ~ d4 ~ a3 ~", F: "g3 ~@17 gb4 ~ a4 ~ e5 ~",
  G: "eb5 ~@13 db4 ~ f4 ~ ab4 ~ f4 ~ db5 ~", H: "c5 ~@23",
})).s("gm_pizzicato_strings").gain(0.36).pan(0.8)

// drums · kick
const kick = s("bd").struct("<~@2 A B C B@38 D@6 B@15 E ~>".pickRestart({
  A: "~ x", B: "x ~@4 x!2 ~@5", C: "x ~@4 x!2 ~@2 x ~@2", D: "x", E: "~ x ~@10",
})).gain(0.19)

// drums · rim
const rim = s("rim").struct("<~@3 [~ x ~ x]!2 ~@61>").gain(0.25)

// drums · snare
const snare = s("sd").struct("<~@5 A@35 ~ A@2 ~@6 A@5 B A@5 ~ A@3 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@5 x ~ x",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@17 A ~@7 A ~@9 A B ~@8 A ~@3 A ~@3 C B ~@3 D E ~>".pickRestart({
  A: "~@11 x", B: "x", C: "~@22 x!2", D: "~@23 x", E: "~ x ~@10",
})).gain(0.22)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@5 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A ~ C B ~@6 A B A B A B A B A B A ~ A B A ~@2
>`.pickRestart({
  A: "~ x ~@2 x ~@2 x ~@4", B: "~ x ~@10", C: "~@4 x ~@2 x ~@4",
})).gain(0.1)

// drums · mid tom
// … 37 more lines