Strudelify

No More Boleros

Gerard Joling

KeyF majorTempo110 bpm
0:00/0:00
// No More Boleros — Gerard Joling
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 105 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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 · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note("<A@5 B@6 C D@2 E@3 ~@34 F@4 G@4 H ~@11 F@4 I@4 J@8 K@6 L@4 M@7 ~>".pickRestart({
  A: "[a4@19 bb4@6 ~@26 bb4@6 a4@6 ~ [bb4,db5]@7 ~ [a4,c5]@7 ~, f5, c5@31 d5@33 ~@16, ~@25 a4@26 ~@29]/5", // Bbm Am
  B: "[d5@31 c5@32 ~@21 bb4@6 a4@6, bb4@29 ~@2 a4@53 ~@12, g4@17 ~@46 d5@33]/6", C: "~ db5@7 [a4,c5]@7 ~, bb4@7 ~@9",
  D: "[g4@16 c4@15 ~, [bb4,d5]@31 ~]/2", E: "[[ab4,eb5]@4 [bb3,d5,f5]@7 ~, g5@11 ~, c5@7 ~@17]/3", F: "[f4,bb4,d5]/4",
  G: "[[a4,f5]@61 ~@2 e5@64 ~, c5, ~@61 bb4@64 ~@3]/4", H: "[f3,f4]", I: "[a4@31 ~ [bb4,e5]@31 ~, c5, f5@29 ~@35]/4",
  J: "[[a4,f5]@63 ~, f4@7 ~]/8", K: "[[f4,bb4,d5]@47 ~]/6", L: "[[a4,f5]@31 [bb4,e5]@32 ~, c5@63 ~]/4",
  M: "[[a4,c5,f5]@51 ~@5]/7", // F
})).s("gm_tremolo_strings").gain(0.24).pan(0.1)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@17 A B C D B E A@2 E@2 D F G H I J A E@2 K A E A L A@2 M N G I@2 O A P Q@3 R S T I J U V A@3 B I@3 J L W Q@3 X L Y I
  J K@3 A K@2 S Z Q@5 R S T I J S K@4 P AA ~
>`.pickRestart({
  A: "f1@5 ~ c2@5 ~ c2@4", B: "f1@5 ~ c2@5 ~ c2@3 ~", C: "f1@2 ~ c2@2 ~ c2@2", D: "f1@4 ~@2 c2@5 ~ c2@3 ~",
  E: "f1@4 ~@2 c2@5 ~ c2@4", F: "bb1@5 ~ f1@5 ~ f1@3 ~", G: "c2@4 ~@8 g1@3 ~, ~@3 g2@5", H: "c2@3 ~@3 g1 ~, ~@3 g2@5",
  I: "c2@6 ~@6 g1@3 ~, ~@3 g2@5", J: "c2@3 g2@3 c2@2", K: "f1@5 ~ c2@4 ~@2 c2@4", L: "f1@6 c2@5 ~ c2@4",
  M: "f1@4 ~@2 c2@5 ~ f1@3 ~", N: "c2@5 ~@7 g1@3 ~, ~@3 g2@5", O: "c2@6 g2@6 c2@3 ~", P: "f1@4 ~@2 c2@4 ~@2 c2@3 ~",
  Q: "bb1@6 ~@6 f1@3 ~, ~@3 f2@5", R: "bb1@3 f2@3 bb1@2", S: "f1@3 c2@2 ~ c2@2", T: "f1@3 c2@2 ~ c2 ~",
  U: "f1@2 ~@2 f1 ~ f1 ~ f1 ~@3 f1 ~@3", V: "f1@2 ~@2 f1 ~ f1 ~ f1@2 ~@2 f1 ~@3", W: "f1@6 c2@4 ~@2 c2@3 ~",
  X: "bb1@6 ~@6 f1@3 ~, ~@6 f2@9 ~", Y: "f1@3 c2@3 f1@2", Z: "f1@5 ~ c2@4 ~@2 c2@3 ~", AA: "f1 ~",
})).s("gm_acoustic_bass").gain(0.48)

// other · soprano sax · "SOPRAN SAX"
const soprano_sax = note("<~@79 A@2 B@2 C@2 D@2 ~@10 E@5 F G ~>".pickRestart({
  A: "[c5@4 ~@4 c5@4 a4@4 c5@19 ~@5 a4@4 c5@4 d5@4 c5@4 a4@4 bb4@4]/2",
  B: "[c5@4 ~@4 c5@4 a4@4 c5@19 ~@5 a4@4 c5@4 a4@4 g4@4 f4@4 g4@4]/2",
  C: "[f4@4 ~@4 f4@4 d4@4 f4@19 ~ a4@4 bb4@4 a4@4 g4@4 f4@4 e4@4 d4@4]/2", D: "[e4@2 d4@2 c4@45 ~@15]/2",
  E: "f4 ~@3 f4!3 ~ f4 ~@3 f4 ~@3", F: "f4 ~@3 f4!3 ~ f4 ~@3 c5 ~@3", G: "f5 ~@7",
})).s("gm_soprano_sax").gain(0.4)

// other · trumpet
const trumpet = note("<~@59 A@2 ~@18 B C B C B D B C ~@10 E@3 F E G H ~>".pickRestart({
  A: "f5 ~@3 f5!3 ~ f5 ~@3 f5 ~@3", B: "c5 ~@3 c5!3 ~ c5 ~@3 c5 ~@3", C: "c5 ~@3 c5!3 ~ c5!3 ~ c5!3 ~",
  D: "c5 ~@3 c5!4 ~ c5!3 ~ c5!2 ~", E: "f4 ~@3 f4!3 ~ f4 ~@3 f4 ~@3", F: "f4 ~@3 f4!3 ~ f4!3 ~ f4!3 ~",
  G: "f4 ~@3 f4!3 ~ f4 ~@3 c5@3 ~", H: "f5",
})).s("gm_trumpet").gain(0.48)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@4 B C@6 D E@2 F G@2 ~@7 H@3 I@2 J@8 ~@14 K@8 L M N ~@7 O P@7 Q@2 R@2 S@2 T@2 U V@7 W@4 X@6 Y@2
>`.pickRestart({
  A: "[a4@10 bb4@3 a4 g4 f4 g4@2 a4 f4@7 bb4@3 a4 g4 f4, f3@31 ~, c4@16 d4@15 ~]/4",
  B: "g4@7 f4@2 a4@7, f3, db4@6 ~ c4@9",
  C: "[~ g3@7 f4@8 a4@10 bb4@3 a4 g4 f4 g4@2 a4@8 bb4@3 a4 g4 f4, bb4 ~@2, ~ d4@30 ~ f3@62 ~@2, ~@8 c4@24 d4@15 ~]/6",
  D: "[db4,g4]@2 f4 a4, f3@7 ~, ~ c4", E: "[g3@16 [c4,f4]@15 ~, [d4,bb4]]/2", F: "[c5,g5]@15 ~, [ab3,eb4]@13 ~@3",
  G: "[[bb4,f5]@8 [d4,f4]@7 ~, [bb3,g4]@15 ~]/2", H: "c4/3", I: "[bb3@11 a3@5]/2",
  J: "[~@64 a3@19 ~@13 f2@32, g3@4 f3@3 ~, ~@16 bb3@53 ~@59]/8",
  K: "[d4@6 c4@6 d4@2 ~@2 d4@6 c4@6 d4@2 ~@2 d4@6 c4@6 d4@3 ~ d4@6 c4@6 d4@3 ~ [a3,a4]@6 [g3,g4]@5 ~@11 [g3,g4]@6 [a3,a4]@4 ~@6 d4@6 ~@10 d4@6 e4@3 ~, [f3,bb3,f4,bb4]@63 f3@7 ~@5 a3@8 f3@12 ~@5 g3@25 ~@3, ~@32 c4@31 ~, ~@32 f4@16 g4@15 ~, ~@76 a4@11 ~@10 e4@5 ~@6 e4@4 c3@12 ~@4]/8", // A G A Bb5
  L: "[f2,f3,a3,c4,f4] ~@3 [f2,f3,a3,c4,f4]!3 ~ [f2,f3,a3,c4,f4] ~@3 [f2,f3,a3,c4,f4] ~@3", // F
  M: "[f2,f3,a3,c4,f4] ~@3 [f2,f3,a3,c4,f4]!3 ~ [f2,f3,a3,c4,f4] ~@7", N: "[f3,a3,c4,f4]@7 ~@9",
  O: "~@5 a3@3, ~@3 f3@5",
  P: "[~@16 d4@8 ~@4 d4@10 c4@6 d4@10 c4@6 d4@10 c4@6 d4@3 ~ [a3,a4]@6 [g3,g4]@6 ~@10 [g3,g4]@6 [a3,a4]@4, c4@14 ~@2 bb4@63 ~@17 f3@13 ~@3, ~@6 f4@105 ~, ~@16 bb3@6 ~@2 f3@61 ~@7 [a3,a4]@10 ~@10, ~@24 bb3@53 ~@3 c4@32]/7", // A G A
  Q: "[e4@6 d4@6 e4@10 d4@6 e4 ~@3, [g3,g4]@29 ~@3, ~@3 c3@11 ~@2]/2", // G
  R: "[[f5,f6] ~@3 [f5,f6]@2 [d5,d6]@2 [f5,f6]@12 [e5,e6]@2 [f5,f6]@2 [g5,g6]@2 [f5,f6]@2 [e5,e6]@2 [d5,d6]@2]/2", // F D F E F G F E …
  S: "[f6 ~ [f5,f6] [d5,d6] [f5,f6]@6 [e5,e6] [f5,f6] [d5,d6] [c5,c6] [a4,a5] [bb4,bb5], f5 ~@31]/2", // F D F E F D C A …
  T: "[[c5,c6] ~ [c5,c6] [a4,a5] [c5,c6]@5 [d5,d6] [e5,e6] [d5,d6] [c5,c6] [bb4,bb5] [a4,a5] [g4,g5]]/2", // C A C D E D C Bb …
  U: "[a4,a5] [g4,g5] ~@12 f3@2, ~ [f4,f5]@7", // A G F
  V: "[~@8 d5@3 c5@3 d5@5 [c4,c5]@3 ~@2 f3@3 [c4,c5]@3 ~@5 [c4,c5]@3 d4@3 ~@7 f5@8, ~@2 a4@14 bb4@58 ~@2 [bb4,d5]@35 ~, ~@2 c5@12 ~@2 d4@6 f3@11 ~@11 [d4,d5]@11 ~@5 [d4,d5]@4 f3@10 ~@10 d4@25 ~@3, ~@8 c4@8 bb3@61 ~@5 bb3@13 bb5@16 ~, ~@3 f4@25]/7", // C Bb D
  W: "[a5@6 ~@3 g4@2 ~@3 c4@2, c5@61 ~@3, a4@30 ~@2 bb4@29 ~@3, ~@24 c4@8 e5@14 g4@15 ~@3, ~@8 e4@6 bb3 ~]/4",
  X: "[f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]!3 ~ [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~@3", Y: "[[f2,f3,a3,c4,f4]@25 ~@7]/2",
})).s("gm_string_ensemble_1").gain(0.32).pan(0.9)

// chords · orchestral harp · "HARP"
const orchestral_harp = note(`<
  A@2 B@3 C D E@3 F G H I J K@3 ~@33 L M@2 N O@2 P@2 Q R@2 ~@9 S@3 T U@2 V@2 W X Y Z AA Y@2 AB AC@2 AD AE@2 AF AG@2 AH@2
  Y@3 Z AI X AJ ~
>`.pickRestart({
  A: "[~@6 a3 ~@7 a3 f3, f3@2 f4@2 ~ c4 f4@2, ~@2 a3@7 ~@5 f3@11 ~@7, ~@4 c4@5 ~ c4@7 ~ a3@8 c4@6, ~@6 a4@11 ~@5 a4@9 ~]/2",
  B: "[~@12 d5@4 ~@12 a3@4 ~@12 d5@2 d5 ~@5 f4@4 ~@4 a3@4 f3@4 bb3@4 ~@4 g4@4 ~@4 c4@4 a3@4 f3@4, d3@4 a4@5 ~@3 a4@2 ~@6 f4@4, ~@2 f3@8 ~@2 d4@7 ~ d4@6 ~@2 d4@8 db4@4 ~@8, ~@4 a3@6 f4@8 a3@9 ~@21, ~@4 d3@3 ~@5]/3",
  C: "~@7 d4, g3 d5, ~@2 bb3@9 ~@5, ~ d4@2 g4, ~@3 g4@2 bb4@3",
  D: "~@7 d4, f3@10 bb4@5 ~, ~ bb3@5 ~@2, ~ d4@2 f4, ~@6 f4@2 d5@7 ~",
  E: "[~@4 f5 ~@4 a3 ~@4 a4 ~@8 a3, f3@10 c5@5 ~@7 f4@4 ~@4 f4@4 ~@2 a3@6 f4@6, ~@2 a3@9 ~@3 f4@6 c4@7 ~@5 d3@8 a4@8, ~@4 c4@8 a4@4 f3@6 ~@2 c5@7 ~@7 d4@5 ~ d4@4]/3",
  F: "f3 a3 ~@5 d4, ~ d4@2 f4, ~@3 f4@2 a4@3, ~ d5", G: "~@4 db4@2 g4@2 ~@4 a3@2 f3 ~, f3@7 ~@3 c4@6, ~ bb3@3 f4@4",
  H: "~@4 d5 ~@2 d4, g3@7 ~, ~ bb3@6 ~, ~ d4@2 g4, ~@3 g4@2 bb4@3",
  I: "~@3 f4, f3 d5, ~ bb3@5 ~@2, ~ d4@2 ~, ~@3 f4@2 bb4@3",
  J: "~@4 g5 eb5 c5 ab4, ab3@7 ~, ~@2 c4@11 ~@3, ~@2 eb4@5 ~, ~@6 g4@5 ~@5",
  K: "[~@28 bb4@3 ~ [a3,c4]@12 ~@4, bb3@13 ~ bb4@5 ~@5 f5@8 ~@16, ~@2 d4@6 g5@8 bb3@12 ~@3 f3@13 ~@4, ~@4 f4@6 f5@8 ~@4 g5@9 ~@17, ~@3 g4@3 d5@3 d4@4 d5@3 ~@8]/3", // Am
  L: "~@4 bb5 ~@2 bb4, ~ bb3@4 ~@3, ~@2 d4@3 ~ d5@2, ~@3 f4@2 f5@3",
  M: "[~@15 bb4, bb3 bb5 bb3 bb5, ~@2 d4@7 ~@3 d5@6 d4@8 f5@6, ~@4 f4@5 ~ f5@10 ~@2 bb4@6 d5@4, ~@6 bb4@7 ~ bb4@6 f4@9 ~@3]/2",
  N: "~@6 d5 bb4, bb3@4 bb5@3 ~, ~@2 d4@7 ~@7, ~@4 f4@5 ~ f5@4 ~@2, ~@6 bb4@7 ~@3",
  O: "[~@4 a5 ~@7 a5 ~ c5 a4, ~ a3@5 ~@2 a3@5 f5@2 ~, ~@2 c4@4 c5@3 c4@5 ~@2, ~@6 f4@7 ~ a4@7 ~ a4@7 ~@3, ~@5 f5@4 ~ f4@4 ~@2]/2",
  P: "[~@3 bb4 ~@7 bb4 ~ bb4 g4 c4, g3@4 e5@4 g3@4 e5@3 ~, ~@2 bb3@8 bb4@7 ~@5 e4@6 ~@4, ~@4 c4@7 ~@3 e4@4 bb3@10 ~@4, ~@6 e4@5 ~ g4@5 ~@3 c4@8 ~@4]/2",
  Q: "f4 ~@3 [c4,f4]!3 ~ [c4,f4] ~@3 [c4,f4] ~@3", R: "[[c4,f4] ~@3 [c4,f4]!2 ~ [c4,f4]!2 ~@3 [c4,f4]@16 ~@4]/2",
  S: "[~@4 bb5 f5 ~ bb4 ~ d4 f4 bb4 ~@3 bb4 ~ d4 f4 ~@4 bb4, ~@2 bb3@7 ~@7 bb3@6 ~@6 d5@8 ~@2 bb4@5 ~ d5@4, ~@4 d4@5 ~@17 f5@6 bb3@4 ~@6 f5@5 ~, ~@6 f4@4 ~@2 d5@7 ~@5 bb5@8 ~@8 bb5@7 ~]/3",
  T: "~ d4 f4 ~@4 bb4, bb3@4 ~@2 bb4@4 f5@5 ~, ~@8 bb5@7 ~, ~@3 d5",
  U: "[bb3 ~@3 a5 ~@7 a5 f5 c5 a4, ~@2 f3@8 f5@7 ~ a3@10 ~@4, ~ a3@2 c5 f3@3 ~, ~@6 c4@7 ~ a4@5 ~ c4@10 ~@2, ~@22 a4@7 ~@3]/2",
  V: "[~@3 e4 ~@7 bb4 ~ c5 bb4 g4, g3@8 e5@10 ~@6 e5@7 ~, ~@2 bb3@7 ~@3 bb4@4 c4@8 ~@8, ~@4 c4@5 ~ c5@8 ~@2 g4@7 ~@5, ~@14 g4@4 e4@7 ~@7]/2",
  W: "f3 ~@3 [c4,f4]!3 ~ [c4,f4] ~@3 [c4,f4] ~@3", // F5
  X: "[c4,f4] ~@3 [c4,f4] c4 [c4,f4] ~ [c4,f4] ~@3 [c4,f4] ~@3, ~@10 f4 ~@21", // F5
  Y: "[c4,f4] ~@3 [c4,f4]!3 ~ [c4,f4] ~@3 [c4,f4] ~@3", // F5
  Z: "[c4,f4] ~@3 [c4,f4]!2 c4 ~ [c4,f4] ~@3 [c4,f4] ~@3, ~@12 f4 ~@19", // F5
  AA: "[c3,c4] ~@3 [c4,f4]!3 ~ [c4,f4] ~@3 [c4,f4] ~@3", AB: "[c4,f4] ~@3 [c4,f4]!3 ~ [c4,f4] ~@3 [c4,f4]@3 ~",
  AC: "[~@2 d4@2 bb5 ~ d5 bb4@2 ~@3 bb5 ~@2 bb4, ~@2 bb3@8 f5@5 ~@3 bb3@8 f5@6, ~@20 d4@7 ~@5, ~@22 f4@5 ~ d5@4]/2",
  AD: "~@7 bb4, ~ bb3@4 f5@3, ~ d4@2 d5, ~@3 f4@4 ~, ~ bb5",
  AE: "[~@3 f6 ~@2 d6 ~@8 bb4, bb3@13 ~@3 bb3@12 d5@4, ~@2 d4@8 f6@4 bb5@6 f4@6 f5@5 ~, ~@4 [f4,bb5]@8 ~@6 d4@11 ~@3, ~@5 d6@3 bb6@6 ~@10 bb5@7 ~]/2", // Bb5
  AF: "~@6 d5 bb4, ~ bb3@4 f5@2 ~, ~@4 d4@9 ~@3, ~@3 f4@4 ~, ~@8 bb5@5 ~@3",
  AG: "[~@4 a5 ~@7 a5 ~ c5 a4, a3@11 ~@5 a3@10 f5@4 ~@2, ~@2 c4@8 f5@8 c4@11 ~@3, ~@4 f4@8 c5@8 ~@2 a4@7 ~@3, ~@6 a4@7 ~ a4@6 f4@9 ~@3]/2",
  AH: "[~@7 e4 ~@5 c5@2 bb4, ~@2 g3@10 g4@6 c4@11 ~@3, ~@2 c4@3 c5@6 g4@5, ~@6 e4@7 ~@3 g3@8 e5@8, ~@8 e5@12 e4@7 ~@5]/2",
  AI: "[c4,f4] ~@3 c4 [c4,f4]!2 ~ [c4,f4] ~@3 [c4,f4] ~@3, ~@8 f4 ~@23", AJ: "[c4,f4]@11 ~@5",
})).s("gm_orchestral_harp").gain(0.4)

// other · oboe
const oboe = note(`<
  ~@7 A@2 B@2 C D E F@3 ~@33 G H@3 ~@5 I J ~@9 G K@3 ~@5 L@2 M@2 N@2 O@7 ~@5 P Q R@3 S T ~
>`.pickRestart({
  A: "[c5@2 a5 a5@7 bb5@2 bb5 a5 g5 f5]/2", B: "[g5@4 a5@2 f5@14 bb5 ~ bb5@2 bb5@2 a5@2 g5@2 f5@2]/2",
  C: "g5@2 a5 f5@3 a4@2", D: "bb4@2 g5 g5@4 a4", E: "bb4@2 f5 f5@3 g5@2", F: "[c5@2 g5 g5@10 f5@11]/3",
  G: "~@8 a5@2 ~ a5@3 g5 ~", H: "[g5@3 f5@3 bb5@34 ~@8]/3", I: "f4 ~@3 f4!3 ~ f4 ~@3 f4 ~@3",
  J: "f4 ~@3 f4!3 ~ f4 ~@3 f4@2 ~@2", K: "[g5@3 f5@3 bb5@37 ~@5]/3", L: "[f5 ~ f5 d5 f5@6 e5 f5 g5 f5 e5 d5]/2",
  M: "[f5 ~ f5 d5 f5@6 e5 f5 d5 c5 a4 bb4]/2", N: "[c5@3 ~ c5@2 a4@2 c5@10 d5@2 e5@2 d5@2 c5@2 bb4@2 a4@2 g4@2]/2",
  O: "[a4 g4 f4@21 ~ a5@2 ~ a5@3 g5@4 f5@4 bb5@74]/7", P: "f5 ~@3 f5!3 ~ f5 ~@3 c5 ~@3", Q: "f5 ~@3 f5!4 ~@4 f5 ~@3",
  R: "f5 ~@3 f5!3 ~ f5 ~@3 f5 ~@3", S: "f5 ~@3 f5!3 ~ f5 ~@3 c5@2 ~@2", T: "f5@9 ~@7",
})).s("gm_oboe").gain(0.4)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~@19 A B C D@2 ~@4 E F G ~@2 H I J K@2 ~@4 L M N ~@5 O P@3 Q R S T@2 U ~ V@2 W@2 X@3 Y Z@2 AA P@2 Q AB S AC@3 ~@7 AD
  AE@5 AF@2 AG@2 AH@7 ~
>`.pickRestart({
  A: "~@3 [f4,a4]@3 [g4,bb4]@2 [a4,c5]@2 ~ [a4,c5]@2 ~ [a4,c5] ~", // F Gm Am
  B: "[a4,c5]@3 [g4,bb4]@2 ~ [g4,bb4] ~ [g4,bb4]@3 [f4,a4]@2 ~ [f4,a4] ~", // Am Gm F
  C: "[f4,a4]@3 [e4,g4]@2 ~ g4@2 [d4,f4]@2 ~ c4@2 ~ [bb3,d4] ~, ~@6 e4 ~@4 e4 ~@4", D: "[[a3,c4]@5 ~@3]/2",
  E: "[f3,bb3,d4]@5 ~ [f3,a3,c4]@9 ~", F: "[e3,g3,c4]@13 ~ [c4,e4] [d4,f4]", G: "[c4,e4]", H: "~@14 [f4,a4] [g4,bb4]",
  I: "[a4,c5]@2 ~ [a4,c5] ~@2 [a4,c5] ~ [a4,c5]@3 [g4,bb4]@3 [f4,a4] ~", // Am Gm F
  J: "[f4,a4]@3 g4@2 ~ [d4,f4] ~ [c4,e4]@2 ~ [bb3,d4]@3 [a3,c4]@2, ~@3 e4 ~@12", K: "[[g3,bb3]@6 [f3,a3]@17 ~@9]/2",
  L: "~@10 [a4,c5]@2 [g4,bb4]@2 [f4,a4] ~", M: "[f4,a4]@6 [e4,g4]@6 [d4,f4]@3 ~", N: "[c4,e4,g4]@13 ~@3",
  O: "~@2 [a3,c4]@2 [g3,bb3]@2 [f3,a3]@9 ~", P: "d4@6 c4@6 d4@3 ~", Q: "d4@3 c4@3 d4@2", R: "a3@3 g3@3 a3 ~",
  S: "a3@3 g3@3 a3@2", T: "[[c4,e4]@6 d4@6 e4@3 ~ e4@6 d4@6 e4@3 ~, ~@15 g3@3 ~@14, ~@2 c4 ~]/2",
  U: "[a3,c4] ~@3, f4 ~", V: "[[a3,c4,f4]@25 ~@7]/2", W: "[[a3,c4,f4]@13 ~@3]/2",
  X: "[~@10 [c4,e4]@2 [bb3,d4]@2 [c4,e4]@19 ~@15]/3", Y: "~ [bb3,d4]@3 [a3,c4]@2 [g3,bb3]@2",
  Z: "[f3@9 [a3,c4] [g3,bb3] [f3,a3]@4 ~, a3@15 ~@17]/2", AA: "[f3,bb3,d4]@6 c4@6 d4@3 ~", AB: "a3@3 g3@3 ~@2",
  AC: "[[c4,e4]@6 d4@6 e4@3 ~ [c4,e4]@6 d4@6 e4@2 ~@2 f4@11 ~@5, ~@15 g3@13 ~@3 a3@4 ~@13, ~@32 c4@3 ~@13]/3", // C
  AD: "~@6 c5@6 d5@3 ~",
  AE: "[[bb4,d5]@6 c5@6 ~@4 d4@6 c4@6 ~@16 c4@2 d4 ~ d4@6 c4@6 d4@10 c4@6 d4@4, ~@6 d5@9 ~@2 bb4@15 ~@8, ~@7 d4@3 bb5@6 ~@4, ~@36 d5@27 ~@17, ~@19 f5@12 ~@9]/5", // Bb
  AF: "[a3@3 g3@3 ~@3 a4@2 g4@3 a4@2, ~@6 a3@5 ~@5, ~@7 c4@8 ~, ~@4 f4@3 ~]/2",
  AG: "[e4@6 d4@6 e4@10 d4@6 e4@3 ~, c4@21 ~ c4@8 ~@2, g4@3 ~@5, g3@9 ~@23]/2",
  AH: "[[a3,c4]@6 ~@5 f4 g4 a4@12 ~@2 f4 g4 ~@16 f4 g4 ~ f4@5 ~@3, f4@20 c4@17 ~@15 c4@4 ~@2 a4@20 f4@10 ~@6 a4@4 ~@14, ~@18 f3@19 ~@13 f3@6 ~@18 f3@10 ~@2 f3@8 ~@18, ~@24 c5@15 ~@17 c5@34 ~@2 c5@4 ~@16, ~@38 c4@4 ~@2 c4@3 ~@9]/7", // Am
})).s("gm_epiano1").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@17 [x ~@2 x ~@4]!42 [x!2]!2 [x ~@2 x ~@4]!42 x ~>").gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@17 [~@2 x ~@2 x ~@2]!42 [~ x ~ x]!2 [~@2 x ~@2 x ~@2]!42 ~@2>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@16 [~@3 x] [x!8]!42 [x!4] [x ~ x ~ x ~ x!2] [x!8]!42 x ~>").gain(0.32)

// drums · crash
const crash = s("cr").struct("<~@17 A ~@33 A ~@9 A ~@9 A ~@7 A ~@7 A ~@9 A ~@5 A ~>".pickRestart({
  A: "x",
})).gain(0.4)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct(`<
  ~@16
  [~@31 x]
  [~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x]!42
  [~@7 x ~ x ~@3 x ~ x ~@7 x ~@7 x]!2
  [~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x]!18
  [~@7 x ~ x ~@3 x ~ x ~@7 x ~@7 x]!8
  [~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x]!16
  ~@2
>`).gain(1.04)

stack(
  tremolo_strings, bass, soprano_sax, trumpet, string_ensemble_1, orchestral_harp, oboe, epiano1, kick, rim, hihat,
  crash, jingle_bells
)

More by Gerard Joling