Strudelify
KeyB♭ minorTempo181 bpm
0:00/0:00
// Tonight — Leonard Bernstein
// 181 bpm, 6/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 (6/8 at bar 1, 2/4 at bar 142) are rendered on a constant 6/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(181/3)

// 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 · vibraphone · "Vibes 1"
const vibraphone = note(`<
  A@3 B ~ C D E@2 ~@2 F@2 G@2 H I@4 ~ J@2 ~@12 K L M N ~@21 O P Q@8 P R S@4 ~ T@4 U V ~@19 W@3 X@7 ~ Y@2 Z AA@2 AB AC AD
  AE AF AG AH@2 AI@3 AJ AK@2 AL AM@2 ~@6
>`.pickRestart({
  A: "[~@17 [c2,c3]@3 ~@14 [a1,a2]@3 ~@11, ~@14 [eb4,e4,g4]@6 ~@11 [c4,db4,e4]@6 ~@11]/3", // C A Eb C
  B: "~@3 [c2,c3]@3 ~@6 [ab1,ab2]@3 ~, ~ [eb4,e4,g4]@6 ~@2 [bb3,b3,d4]@6 ~", // C Ab Eb Bb
  C: "~@6 [c2,c3]@3 ~@7, ~@3 [eb4,e4,g4]@6 ~@7", D: "~@8 [a1,a2]@3 ~@5, ~@5 [c4,db4,e4]@6 ~@5",
  E: "[~@9 [c2,c3]@3 ~@6 [ab1,ab2]@4 [c2,c3,c4]@4 ~@6, ~@6 [eb4,e4,g4]@6 ~@3 [bb3,b3,d4]@7 ~@10]/2", // C Ab C Eb Bb
  F: "[~@12 e4@3 e5@6 db5@3 a4@6 eb4@2]/2", G: "[~@18 [c2,c3]@3 ~@11, ~@15 [eb4,e4,g4]@6 ~@11]/2",
  H: "[c4,db4,e4]@3 ~@5", // C
  I: "[~@2 e4@3 e5@6 db5@3 a4@5 eb4@3 a4@6 ~@9 [eb4,e4,g4]@6 ~@3 [bb3,b3,d4]@7 c4@4 ~@7, ~@7 c5@3 ~@6]/4", // Eb Bb
  J: "[~@9 e4@3 f5@5 db5@3 a4@6 f4@3 ~@3]/2", K: "~ e5@3 [e5,e6]@5 [db5,db6]@3 [a4,a5]@4", L: "~ [eb4,eb5]@15",
  M: "~ [e4,e5]@3 [e5,e6]@5 [db5,db6]@3 [a4,a5]@4", N: "~ [eb4,eb5]@3 [a4,a5]@5 [c5,c6]@7",
  O: "~@5 [d5,f5]@8 [b4,d5]@3", P: "[c5,e5]@4 [a4,c5]@4 ~@5 [b4,d5]@3",
  Q: "[~@4 [c5,e5]@4 ~@13 [d5,f5]@8 [b4,d5]@3 [c5,e5]@4 [a4,c5]@4 ~@5 [b4,d5]@7 [ab4,b4]@4 ~@13 [d5,f5]@8 [b4,d5]@3 [c5,e5]@4 [a4,c5]@4 ~@5 [b4,d5]@7 [c5,e5]@4 ~@13 [d5,f5]@8 [b4,d5]@3, f4@8 ~@5 f4@43 ~@5 f4@43 ~@5 f4@19]/8", // C Dm Bm C Am Bm Abm Dm …
  R: "~@13 e4@3", S: "[e5@5 db5@3 a4@5 eb4@16 e4@2 e5@5 ~ db5@2 a4@5 ~ eb4@2 a4@5 c5@8 ~@4]/4",
  T: "[~@12 e4@2 e5@5 ~ db5@2 a4@5 ~ eb4@15 e4@3 e5@5 db5@3 a4@5 eb4@3 ~@2]/4", U: "~@11 [eb4,e4,g4]@4 ~",
  V: "~@3 [bb3,b3,d4]@6 db4@4 ~@3", // Bb
  W: "[~@13 [bb3,gb4,bb4]@8 [c4,ab4,c5]@3 [db4,bb4,db5]@4 [eb4,c5,eb5]@7 [c4,ab4,c5]@8 [ab3,ab4]@4 ~]/3", // Ebm Fm Gb Cm Fm Ab
  X: "[~@12 [bb3,gb4,bb4]@8 [c4,ab4,c5]@3 [db4,bb4,db5]@4 [eb4,c5,eb5]@8 [e4,db5,e5]@8 [db4,a4,db5]@9 [e4,db5,e5]@2 [eb4,b4,eb5]@4 [b3,eb4,b4]@9 [eb4,b4,eb5]@3 ~@5 b2@3 e3@5 bb3@3 ~@5 b3@3 e4@5 bb4@3 ~@10]/7", // Ebm Fm Gb Cm Dbm Gbm Dbm Abm …
  Y: "[~@10 [bb3,gb4,bb4]@8 [c4,ab4,c5]@3 [db4,bb4,db5]@4 [eb4,c5,eb5]@7]/2", Z: "~ [c4,ab4,c5]@7 [ab3,ab4]@4 ~@4",
  AA: "[~@10 [bb3,gb4,bb4]@7 [c4,ab4,c5]@3 [db4,bb4,db5]@4 [eb4,c5,eb5]@8]/2", AB: "[e4,db5,e5] [db4,a4,db5]",
  AC: "~ [e4,db5,e5]@2 [f4,d5,f5]@4 [d4,bb4,d5]@9", AD: "~ [f4,d5,f5]@3 ~@4 e2@3 a2@5", AE: "eb3@3 ~@5 e3@3 a3@5",
  AF: "eb4@3 ~@13", AG: "~ eb4", AH: "[c4@2 d4@4 bb3@9 c4@7 d4@4 ~@6]/2",
  AI: "[~@7 eb4@8 c4@2 d4@4 bb3@9 ~ c4@6 ab3@4 ~@7]/3", AJ: "~@3 eb4@4 c4", AK: "[~ d4@4 bb3@9 c4@6 d4@4 ~@8]/2",
  AL: "~@5 eb4@8 c4@3", AM: "[d4@4 bb3@9 c4@7 ab3@4 ~@5 [f3,f4]@3]/2",
})).s("gm_vibraphone").gain(0.4).pan(0.6)

// chords · pad metallic · "Various"
const pad_metallic = note(`<
  A@3 B ~ C D E@2 ~@4 F@2 G ~@2 H@2 ~@3 I J@2 K ~ L M ~ N O ~ P ~@4 Q R S T ~@17 U ~ V U ~ V U ~ V U ~ V ~@3 W X Y ~@3 Z
  AA ~@18 AB AC ~@38
>`.pickRestart({
  A: "[~@14 [eb4,e4,g4]@6 ~@11 [c4,db4,e4]@6 ~@11]/3", B: "~ [eb4,e4,g4]@6 ~@2 [bb3,b3,d4]@6 ~",
  C: "~@3 [eb4,e4,g4]@6 ~@7", D: "~@5 [c4,db4,e4]@6 ~@5", E: "[~@6 [eb4,e4,g4]@6 ~@3 [bb3,b3,d4]@7 c4@4 ~@6]/2",
  F: "[~@15 [eb4,e4,g4]@6 ~@11]/2", G: "[c4,db4,e4]@3 ~@5", H: "[~@5 [eb4,e4,g4]@6 ~@3 [bb3,b3,d4]@7 c4@4 ~@7]/2",
  I: "~@5 [gb3,c4,d4]@6 ~@5", J: "[~@7 [gb3,c4,d4]@3 ~@6]/2", K: "~@7 [gb3,c4,d4]@6 ~@3", L: "[gb3,c4,d4]@3 ~@5",
  M: "~@9 [gb3,c4,d4]@6 ~", N: "~ [gb3,c4,d4]@3 ~@4", O: "~@11 [gb3,c4,d4]@5", P: "~@2 [gb3,c4,d4]@3 ~@3",
  Q: "~ [eb4,e4,g4]@7 ~ [c4,db4,e4]@7", R: "~ [eb4,e4,g4]@7 ~ [bb3,b3,d4]@7", S: "~ [eb4,e4,g4]@7 ~ [bb3,b3,d4]@5 ~@2",
  T: "c4 ~@3", U: "~@8 [gb3,c4,d4]@5 ~@3", V: "[gb3,c4,d4]@5 ~@11", W: "~@3 [eb4,e4,g4]",
  X: "~ [c4,db4,e4] ~ [eb4,e4,g4]", Y: "~ [bb3,b3,d4] ~@2", Z: "~@11 [eb4,e4,g4]@4 ~",
  AA: "~@3 [bb3,b3,d4]@6 db4@4 ~@3", AB: "~@8 a5@5 f5 ~@2", AC: "db5@5 a4@3 ~@8",
})).s("gm_pad_metallic").gain(0.41).pan(0.4)

// chords · pad metallic · "Various" · soft notes
const pad_metallic_soft = note("<~ A B C ~ D E F G ~@5 H I ~@2 J K ~@121>".pickRestart({
  A: "~ [c2,c3]@3 ~@12", B: "~@2 [a1,a2]@3 ~@11", C: "~@3 [c2,c3]@3 ~@6 [ab1,ab2]@3 ~", D: "~@6 [c2,c3]@3 ~@7",
  E: "~@8 [a1,a2]@3 ~@5", F: "~@9 [c2,c3]@3 ~@4", G: "~ [ab1,ab2]@2 [c2,c3]@2 ~@3", H: "~@2 [c2,c3]@3 ~@11",
  I: "~@3 [a1,a2]@3 ~@10", J: "~@8 [c2,c3]@3 ~@5", K: "[ab1,ab2]@4 ~ [c2,c3]@4 ~@7",
})).s("gm_pad_metallic").gain(0.26).pan(0.4)

// other · xylophone · "Various"
const xylophone = note("<~@109 A@3 ~@8 B C D ~@18>".pickRestart({
  A: "[~@11 b5@3 e6@5 bb6@3 ~@5 b5@3 e6@5 bb6@3 ~@10]/3", B: "~@8 e6@3 a6@5", C: "eb7@3 ~@5 e6@3 a6@5", D: "eb7@3 ~@13",
})).s("gm_xylophone").gain(0.31).pan(0.4)

// other · orchestra hit · "Various"
const orchestra_hit = note("<~@139 A@2>".pickRestart({
  A: "[~@15 bb4@3 ~@14]/2",
})).s("gm_orchestra_hit").gain(0.51).pan(0.4)

// chords · piano · "Piano 1"
const piano = note(`<
  A@3 B ~ C D E@2 ~@4 F@2 G ~@2 H@2 ~@2 I@6 J K L M N O P@2 Q R S T U V W ~@17 X Y Z X Y Z X Y Z X Y Z AA AB@8 AC@2 ~@19
  AD AE AF@2 AG@3 ~@4 AH AI@2 AJ AK AL AM ~@3 AN AO AP AN AQ AR AS AT AU AV AW AX ~@6
>`.pickRestart({
  A: "[~@17 [c2,c3]@3 ~@14 [a1,a2]@3 ~@11, ~@14 [eb4,e4,g4]@6 ~@11 [c4,db4,e4]@6 ~@11]/3", // C A Eb C
  B: "~@3 [c2,c3]@3 ~@6 [ab1,ab2]@3 ~, ~ [eb4,e4,g4]@6 ~@2 [bb3,b3,d4]@6 ~", // C Ab Eb Bb
  C: "~@6 [c2,c3]@3 ~@7, ~@3 [eb4,e4,g4]@6 ~@7", D: "~@8 [a1,a2]@3 ~@5, ~@5 [c4,db4,e4]@6 ~@5",
  E: "[~@9 [c2,c3]@3 ~@6 [ab1,ab2]@4 [c2,c3,c4]@4 ~@6, ~@6 [eb4,e4,g4]@6 ~@3 [bb3,b3,d4]@7 ~@10]/2", // C Ab C Eb Bb
  F: "[~@18 [c2,c3]@3 ~@11, ~@15 [eb4,e4,g4]@6 ~@11]/2", G: "~@3 [a1,a2]@3 ~@10, [c4,db4,e4]@3 ~@5",
  H: "[~@8 [c2,c3]@3 ~@5 [ab1,ab2]@4 ~ [c2,c3,c4]@4 ~@7, ~@5 [eb4,e4,g4]@6 ~@3 [bb3,b3,d4]@7 ~@11]/2", // C Ab C Eb Bb
  I: "[~@12 gb2@6 ~@3 [gb3,c4,d4]@6 ~@2 db2@6 ~@2 gb2@6 ~@3 [gb3,c4,d4]@6 ~@2 db2@6 ~@2 gb2@6 ~@3 [gb3,c4,d4]@6 ~@2 db2@6 ~@2 gb2@6 ~@3]/6", // D7
  J: "[gb3,c4,d4]@3 ~ db2@3 ~", K: "gb2@6 ~@3 [gb3,c4,d4]@6 ~", L: "~ db2@6 ~@2 gb2@6 ~", M: "~ [gb3,c4,d4]@3 ~ db2@3",
  N: "~@2 gb2@6 ~@3 [gb3,c4,d4]@5", O: "~@3 db2@6 ~@2 gb2@5",
  P: "[~@4 [gb3,c4,d4]@6 ~@2 db2@6 ~@2 a2@5 ~@3 [db4,eb4]@4]/2", Q: "~@4 gb2@5 ~@3 a2@4",
  R: "~@4 [db4,eb4]@5 ~@3 gb2@4", S: "~@4 a2@5 ~@3 [db4,eb4]@4", T: "~ [eb4,e4,g4]@3 [c2,c3]@5 [c4,db4,e4]@3 [a1,a2]@4",
  U: "~ [eb4,e4,g4]@3 [c2,c3]@5 [bb3,b3,d4]@3 [ab1,ab2]@4", // Eb C Bb Ab
  V: "~ [eb4,e4,g4]@3 [c2,c3]@5 ~@3 [ab1,ab2]@4, ~@9 [bb3,b3,d4]@7", W: "[c2,c3,c4] ~@3",
  X: "gb2@5 ~@3 [gb3,c4,d4]@5 ~@3", Y: "db2@5 ~@3 gb2@5 ~@3", Z: "[gb3,c4,d4]@5 ~@3 db2@5 ~@3",
  AA: "a2@5 ~@3 [db4,eb4]@5 ~@3", // Dbsus2
  AB: "[gb2@5 ~@3 a2@5 ~@2 [db4,eb4]@5 ~@3 gb2@5 ~@3 a2@5 ~@3 [db4,eb4]@5 [eb4,e4,g4]@3 [c2,c3]@5 [c4,db4,e4]@3 [a1,a2]@5 [eb4,e4,g4]@3 [c2,c3]@5 [bb3,b3,d4]@3 [ab1,ab2]@5 ~@2 a2@5 ~@3 [db4,eb4]@5 ~@3 gb2@5 ~@3 a2@5 ~@3 [db4,eb4]@5 ~@3 gb2@5 ~@3 a2@2]/8", // Dbsus2 Eb C A Eb C Bb Ab …
  AC: "[~@6 [db4,eb4]@5 ~@2 [c2,c3]@5 ~@3 [ab1,ab2]@4 [db2,db3,db4]@4 ~@3, ~@11 [eb4,e4,g4]@4 ~@4 [bb3,b3,d4]@7 ~@6]/2", // Dbsus2 C Ab Db Eb Bb
  AD: "~@8 gb2@5 ~@3", AE: "~@8 db2@5 ~@3", AF: "[gb2@5 ~@10 db2@5 ~@3 gb2@5 ~@4]/2",
  AG: "[~@7 db2@5 ~@3 gb2@5 ~@10 db2@5 ~@3 gb2@5 ~@5]/3", AH: "~@5 gb2@5 ~@6", AI: "[~@5 db2@5 ~@3 gb2@5 ~@10 db2@4]/2",
  AJ: "~@4 gb2@5 ~@7", AK: "~@4 db2@5 ~@3 gb2@4", AL: "~@3 db2", AM: "~@3 c2@3 ~@5 [c3,f3,bb3]@3 ~@2",
  AN: "~@2 ab2@5 ~@9", AO: "~@2 eb2@5 ~@3 ab2@5 ~", AP: "~@10 eb2@5 ~", AQ: "~ eb2@5 ~@3 ab2@5 ~@2",
  AR: "~@9 eb2@5 ~@2", AS: "~ ab2@5 ~@10", AT: "~ eb2@5 ~@2 ab2@5 ~@3", AU: "~@8 eb2@5 ~@3", AV: "ab2@5 ~@11",
  AW: "eb2@5 ~@3 ab2@5 ~@3", AX: "~@7 eb2@5 ~@4",
})).s("gm_piano").gain(0.26)

// chords · pizzicato strings · "Pizzicattos"
const pizzicato_strings = note(`<
  ~ A B C ~ D E F G ~@5 H I ~@2 J K ~@2 L@6 M N O P Q R S@2 T U V W X@2 Y ~@17 Z AA AB Z AA AB Z AA AB Z AA AB AC AD@8
  AE@2 ~@2 AF ~@16 AG AH AI@4 AJ ~@4 AK AL AM AN AO AP AQ ~@3 AR ~ AS AR ~ AT AU ~ AV AW ~ AV ~@6
>`.pickRestart({
  A: "~ [c2,c3]@3 ~@12", B: "~@2 [a1,a2]@3 ~@11", C: "~@3 [c2,c3]@3 ~@6 [ab1,ab2]@3 ~", D: "~@6 [c2,c3]@3 ~@7",
  E: "~@8 [a1,a2]@3 ~@5", F: "~@9 [c2,c3]@3 ~@4", G: "~ [ab1,ab2]@2 [c2,c3]@2 ~@3", H: "~@2 [c2,c3]@3 ~@11",
  I: "~@3 [a1,a2]@3 ~@10", J: "~@8 [c2,c3]@3 ~@5", K: "[ab1,ab2]@4 ~ [c2,c3]@4 ~@7",
  L: "[~@12 gb2@6 ~@3 [gb3,c4,d4]@6 ~@2 db2@6 ~@2 gb2@6 ~@3 [gb3,c4,d4]@6 ~@2 db2@6 ~@2 gb2@6 ~@3 [gb3,c4,d4]@6 ~@2 db2@6 ~@2 gb2@6 ~@3]/6", // D7
  M: "[gb3,c4,d4]@3 ~ db2@3 ~", N: "gb2@6 ~@3 [gb3,c4,d4]@6 ~", O: "~ db2@6 ~@2 gb2@6 ~", P: "~ [gb3,c4,d4]@3 ~ db2@3",
  Q: "~@2 gb2@6 ~@3 [gb3,c4,d4]@5", R: "~@3 db2@6 ~@2 gb2@5",
  S: "[~@4 [gb3,c4,d4]@6 ~@2 db2@6 ~@2 a2@5 ~@3 [db4,eb4]@4]/2", T: "~@4 gb2@5 ~@3 a2@4",
  U: "~@4 [db4,eb4]@5 ~@3 gb2@4", V: "~@4 a2@5 ~@3 [db4,eb4]@4", W: "~@4 [c2,c3]@5 ~@3 [a1,a2]@4",
  X: "~@4 [c2,c3]@5 ~@3 [ab1,ab2]@4", Y: "[c2,c3] ~@3", Z: "gb2@5 ~@3 [gb3,c4,d4]@5 ~@3", AA: "db2@5 ~@3 gb2@5 ~@3",
  AB: "[gb3,c4,d4]@5 ~@3 db2@5 ~@3", AC: "a2@5 ~@3 [db4,eb4]@5 ~@3",
  AD: "[gb2@5 ~@3 a2@5 ~@2 [db4,eb4]@5 ~@3 gb2@5 ~@3 a2@5 ~@3 [db4,eb4]@5 ~@3 [c2,c3]@5 ~@3 [a1,a2]@5 ~@3 [c2,c3]@5 ~@3 [ab1,ab2]@5 ~@2 a2@5 ~@3 [db4,eb4]@5 ~@3 gb2@5 ~@3 a2@5 ~@3 [db4,eb4]@5 ~@3 gb2@5 ~@3 a2@2]/8", // Dbsus2 C A C Ab Dbsus2
  AE: "[~@6 [db4,eb4]@5 ~@2 [c2,c3]@5 ~@3 [ab1,ab2]@4 [db2,db3]@4 ~@3]/2", AF: "~@10 g3 ~@5", AG: "~@8 gb2@3 ~@5",
  AH: "[gb3,bb3,db4]@3 ~@5 db2@3 ~@5", // Gb
  AI: "[gb2@3 ~@4 [ab3,c4,eb4]@3 ~@5 db2@3 ~@5 gb2@3 ~@5 [gb3,bb3,db4]@3 ~@5 db2@3 ~@5 gb2@3 ~@5 [a3,db4,e4]@3 ~@4 db2@2]/4", // Ab Gb A
  AJ: "~@6 gb2@3 ~@5 [gb3,b3,eb4]@2", AK: "~@5 gb2@3 ~@5 [gb3,bb3,db4]@3", AL: "~@5 db2@3 ~@5 gb2@3",
  AM: "~@5 [ab3,c4,eb4]@3 ~@4 db2@3 ~", AN: "~@4 gb2@3 ~@5 [gb3,bb3,db4]@3 ~", AO: "~@4 db2@3 ~@5 gb2@3 ~",
  AP: "~@4 [a3,db4,e4]@3 ~@5 db2@3 ~", AQ: "~@3 c2@3 ~@5 [c3,f3,bb3]@3 ~@2", AR: "~@10 [eb3,ab3,c4]@5 ~",
  AS: "~@2 [eb3,ab3,c4]@5 ~@9", AT: "~ [eb3,ab3,c4]@5 ~@10", AU: "~@9 [eb3,ab3,c4]@5 ~@2", AV: "[eb3,ab3,c4]@5 ~@11",
  AW: "~@8 [eb3,ab3,c4]@5 ~@3", // Ab
})).s("gm_pizzicato_strings").gain(0.36)

// chords · pad new age · "Wind Choir 1a"
const pad_new_age = note("<~@23 A B@2 C@3 D E@2 F G H ~@106>".pickRestart({
  A: "~@2 [d5,f5]@8 [b4,d5]@3 [c5,e5]@3", B: "[~ [a4,c5]@4 ~@6 [b4,d5]@7 [c5,e5]@4 ~@10]/2",
  C: "[~@4 [d5,f5]@8 [b4,d5]@3 [c5,e5]@4 [a4,c5]@4 ~@6 [b4,d5]@7 [ab4,b4]@4 ~@8]/3", D: "~@3 [d5,f5]@4 [b4,d5]",
  E: "[~ [c5,e5]@4 [a4,c5]@4 ~@6 [b4,d5]@7 [c5,e5]@4 ~@6]/2", F: "~ [d5,f5]", G: "[b4,d5]@3 [c5,e5]@4 [a4,c5]@4 ~@5",
  H: "~ [b4,d5]@7 [ab4,b4]@4 ~@4", // Bm Abm
})).s("gm_pad_new_age").gain(0.29).pan(0.6)

// chords · trombone · "Wind Choir 1a"
const trombone = note("<~@44 A@2 B ~@13 C D@2 C E@2 F G@2 F H@2 ~@19 I@3 ~@6 J K ~@39>".pickRestart({
  A: "[~ c3@2 f3@28 ~]/2", B: "~ b3@3 ~@12", C: "~@5 [d5,f5]@8 [b4,d5]@3",
  D: "[[c5,e5]@4 [a4,c5]@4 ~@5 [b4,d5]@7 [c5,e5]@4 ~@8]/2", E: "[[c5,e5]@4 [a4,c5]@4 ~@5 [b4,d5]@7 [ab4,b4]@4 ~@8]/2",
  F: "~@5 [d6,f6]@8 [b5,d6]@3", G: "[[c6,e6]@4 [a5,c6]@4 ~@5 [b5,d6]@7 [c6,e6]@4 ~@8]/2",
  H: "[[c6,e6]@4 [a5,c6]@4 ~@5 [b5,d6]@7 [ab5,b5]@4 ~@8]/2", I: "[~@8 ab3@2 ~ db4@28 ~ g4@3 ~@5]/3",
  J: "~@6 e3 ~ f4@5 ~ d4 ~", K: "a3@5 ~@11",
})).s("gm_trombone").gain(0.33).pan(0.6)

// other · trumpet · "Wind Choir 1a"
const trumpet = note("<~@101 A@3 ~@8 B C@2 ~@7 D E ~ F G@3 H@3 I@3 ~@4 J K>".pickRestart({
  A: "[~@6 a4 ~ a5@5 f5 ~@2 db5@5 a4@16 ~@11, ~ f3@3 ~@4]/3", B: "~@11 b3@2 e4@3", C: "[~ bb4@8 ~@7]/2",
  D: "~@8 e4 ~@2 a4@3 ~@2", E: "eb5", F: "~@15 f3", G: "[~@2 bb3@44 f4 ~]/3", H: "[~ bb4@44 [f4,f5] ~@2]/3",
  I: "[[bb4,bb5]@15 ~]/3", J: "~@15 [bb4,bb5]", K: "~ [b4,b5] [a4,a5]@3 ~@11",
})).s("gm_trumpet").gain(0.66).pan(0.6)

// chords · synth brass 1 · "Wind Choir 1a"
const synth_brass_1 = note("<~@72 A@2 B@2 ~@2 C@4 ~@59>".pickRestart({
  A: "[~ [db4,eb4]@3]/2", B: "[~@7 [db4,eb4]@24 ~]/2", C: "[~@3 [db4,eb4]@12 ~]/2",
})).s("gm_synth_brass_1").gain(0.11).pan(0.6)

// other · trumpet · "Wind Choir 1b"
const trumpet_2 = note("<~@100 A B@2 C D E@2 F G ~@4 H ~ I J ~ K L ~@3 M N@2 O@3 P Q@2 R S@6 T U>".pickRestart({
  A: "~@14 db4 ~", B: "[db5@5 ~ a4@2 f4@5 db4@10 ~@9]/2", C: "[gb3,bb3,db4]@3 ~@13", D: "~@7 [ab3,c4,eb4]@3 ~@6",
  E: "[~@15 [gb3,bb3,db4]@3 ~@14]/2", F: "~@7 [a3,db4,e4]@3 ~@6", G: "~@7 [gb3,b3,eb4]", H: "~@13 [gb3,bb3,db4]@3",
  I: "~@5 [ab3,c4,eb4]@3 ~@8", J: "~@12 [gb3,bb3,db4]@3 ~", K: "~@4 [a3,db4,e4]@3 ~@9", L: "~@11 [c3,f3,bb3]@3 ~@2",
  M: "~ eb5", N: "[c5@2 d5@4 bb4@9 c5@7 d5@4 ~@6]/2", O: "[~@7 eb5@8 c5@2 d5@4 bb4@9 ~ c5@6 ab4@4 ~@7]/3",
  P: "~@3 eb5@4 c5", Q: "[~ d5@4 bb4@9 c5@6 d5@4 ~@8]/2", R: "~@5 eb5@8 c5@3",
  S: "[d5@4 bb4@9 c5@7 ab4@4 ~@5 [f4,f5]@2 [bb4,bb5]@57 [e5,e6]@4 ~@4]/6", T: "~@15 [bb4,bb5]",
  U: "~ [b4,b5] [a4,a5]@3 ~@11", // B A
})).s("gm_trumpet").gain(0.18).pan(0.4)

// other · trumpet · "Wind Choir 1b" · soft notes
const trumpet_soft = note("<~@102 A B C@2 D@2 E ~@4 F G H I J H K ~@21>".pickRestart({
  A: "~@8 gb2@3 ~@5", B: "~@8 db2@3 ~@5", C: "[gb2@3 ~@12 db2@3 ~@5 gb2@3 ~@6]/2",
  D: "[~@7 db2@3 ~@5 gb2@3 ~@12 db2@2]/2", E: "~@6 gb2@3 ~@7", F: "~@5 gb2@3 ~@8", G: "~@5 db2@3 ~@5 gb2@3",
  H: "~@12 db2@3 ~", I: "~@4 gb2@3 ~@9", J: "~@4 db2@3 ~@5 gb2@3 ~", K: "~@3 c2@3 ~@10",
})).s("gm_trumpet").gain(0.09).pan(0.4)

// chords · string ensemble 1 · "String Choir 1a"
const string_ensemble_1 = note(`<
  ~@35 A B A C ~@32 D E@4 ~ F@5 G@4 ~@16 H@3 I@5 ~@3 J@2 K L@2 M N O ~@2 P Q@2 R@3 S T@2 U V@6 W X
>`.pickRestart({
  A: "~ [e4,e5]@3 [e5,e6]@5 [db5,db6]@3 [a4,a5]@4", B: "~ [eb4,eb5]@15", C: "~ [eb4,eb5]@3 [a4,a5]@5 [c5,c6]@7",
  D: "~@13 [e4,e5]@3", // E
  E: "[[e5,e6]@5 [db5,db6]@3 [a4,a5]@5 [eb4,eb5]@16 [e4,e5]@2 [e5,e6]@5 ~ [db5,db6]@2 [a4,a5]@5 ~ [eb4,eb5]@2 [a4,a5]@5 [c5,c6]@8 ~@4]/4", // E Db A Eb E Db A Eb …
  F: "[~@12 [e4,e5]@2 [e5,e6]@5 ~ [db5,db6]@2 [a4,a5]@5 ~ [eb4,eb5]@15 [e4,e5]@3 [e5,e6]@5 [db5,db6]@3 [a4,a5]@5 [eb4,eb5]@3 [a4,a5]@5 [c5,c6]@8 ~@5]/5", // E Db A Eb E Db A Eb …
  G: "[~@5 [ab1,ab2]@4 [db2,db3]@49 g3@3 ~@3]/4", // Ab Db
  H: "[~@13 [gb4,bb4]@8 [ab4,c5]@3 [bb4,db5]@4 [c5,eb5]@7 [ab4,c5]@8 ab4@4 ~]/3", // Gb Ab Bbm Cm Ab
  I: "[~@12 [gb4,bb4]@8 [ab4,c5]@3 [bb4,db5]@4 [c5,eb5]@8 [db5,e5]@8 [a4,db5]@9 [db5,e5]@2 [b4,eb5]@4 [eb4,b4]@9 [b4,eb5]@3 ~@10]/5", // Gb Ab Bbm Cm Dbm A Dbm B …
  J: "[~@10 [gb4,bb4]@8 [ab4,c5]@3 [bb4,db5]@4 [c5,eb5]@7]/2", K: "~ [ab4,c5]@7 ab4@4 ~@4",
  L: "[~@10 [gb4,bb4]@7 [ab4,c5]@3 [bb4,db5]@4 [c5,eb5]@8]/2", M: "[db5,e5] [a4,db5]",
  N: "~ [db5,e5]@2 [d5,f5]@4 [bb4,d5]@9", O: "~ [d5,f5]@3 ~@12", P: "~ [c5,eb5,c6,eb6]",
  Q: "[[ab4,c5,ab5,c6]@2 [bb4,d5,bb5,d6]@4 [g4,bb4,g5,bb5]@9 [ab4,c5,ab5,c6]@7 [bb4,d5,bb5,d6]@4 ~@6]/2", // Ab Bb Gm Ab Bb
  R: "[~@7 [c5,eb5,c6,eb6]@8 [ab4,c5,ab5,c6]@2 [bb4,d5,bb5,d6]@4 [g4,bb4,g5,bb5]@9 ~ [ab4,c5,ab5,c6]@6 [c4,ab4,c5,ab5]@4 ~@7]/3", // Cm Ab Bb Gm Ab Fm
  S: "~@3 [c5,eb5,c6,eb6]@4 [ab4,c5,ab5,c6]", // Cm Ab
  T: "[~ [bb4,d5,bb5,d6]@4 [g4,bb4,g5,bb5]@9 [ab4,c5,ab5,c6]@6 [bb4,d5,bb5,d6]@4 ~@8]/2", // Bb Gm Ab Bb
  U: "~@5 [c5,eb5,c6,eb6]@8 [ab4,c5,ab5,c6]@3", // Cm Ab
  V: "[[bb4,d5,bb5,d6]@4 [g4,bb4,g5,bb5]@9 [ab4,c5,ab5,c6]@7 [c4,ab4,c5,ab5]@4 ~@5 [f4,f5,f6]@2 [bb4,bb5]@57 [e5,e6]@4 ~@4]/6", // Bb Gm Ab Fm F Bb E
  W: "~@15 [bb1,bb2,bb4,bb5]", X: "~ [b1,b2,b4,b5] [a1,a2,a4,a5]@3 ~@11",
})).s("gm_string_ensemble_1").gain(0.22).pan(0.7)

// … 84 more lines

More by Bernstein Leonard