Strudelify

Blue Hawaii

Elvis

KeyF majorTempo120 bpm
0:00/0:00
// Blue Hawaii — Elvis
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: 227 stray notes after a silence of more than 6 bars (from bar 178) are dropped
// note: Full arrangement: all 135 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · piano · "PIANO MELODY"
const piano = note(`<
  ~@2 A@2 ~ B@4 C@6 D@7 E@7 F@2 ~ G@6 ~ H@8 I J@7 K@4 L M N@5 O@4 P Q@2 R@8 S@3 T@5 ~@46
>`.pickRestart({
  A: "[~@37 d6@13 ~ [d5,bb6]@12 ~, ~@18 bb3@45 ~, ~@9 [g4,d5]@6 [g4,bb5]@10 d6@6 ~, ~@12 d4@19 ~, ~@24 [bb4,g5]@6 d5@7 [bb4,g5]@26 ~]/2", // Gm G5 Gm Eb
  B: "[~@41 d6@13 [d5,d6,bb6]@13 ~@3 a4@16 ~@2 ab3@5 ab4@2 ~ a4@21 ~@11, ~@22 bb3@13 d5@6 [bb4,g5]@26 ~@2 c5@17 ~@42, ~@22 [g4,d5]@12 g4@33 ~ ab4@2 ~@17 [ab4,b4]@6 ~@35, ~@28 [bb4,g5]@7 bb5@33 ~@60, ~@29 d4@39 a3@18 ~@7 [a3,c5]@24 ~@11]/4", // Gm Eb G5 Abm Eb Am
  C: "[~@2 [e3,db4,a4,db5]@13 a4@3 bb4@17 [bb4,d5]@6 ~ [a3,a4,c5]@14 [ab4,b4]@5 bb4@5 ~@8 [a3,c4]@7 ~ b3@3 ~ [g3,bb3]@5 [eb3,a3]@11 ~ [eb3,c4,a4,c5,a5]@11 ~ [d3,c4,bb4,d5,bb5]@11 ~ [gb3,c4,eb4,a4,c5,a5]@13 ~@21 [f3,a3,b3,e4,g4,b4]@6 ~@5 b4@18 ~@2, ~@15 [f3,d4]@26 ~@40 ab3@4 ~@56 [f3,a3,b3,e4]@20 ~@6 f3@23 ~@2, ~@15 d5@20 ~@26 g4@3 ~@2 [f4,a4]@26 ~@49 a4@27 [a3,b3,d5]@22 ~@2, ~@141 db5@2 d5@24 ~ a4@3 ~@21, ~@142 g5@25 ~@2 e4@22 ~]/6", // A Bb Am Abm Am Gm Ebdim Adim …
  D: "[~@19 [d4,bb4]@7 ~@18 g5@7 [a3,c4,a4,c5,f5]@18 ~@2 a4@5 ~@3 a4@19 ~@2 bb3@4 ~@16 f4@4 ~@9 bb4@4 ~@8 e5@5 ~@21 [ab3,ab5,b5]@5 ~@4 a5@20 ~@13 [e3,db4]@11, ~@18 [f3,bb3,d5,g5]@8 e3@24 ~@19 ab4@2 ~@5 g4@2 ~@26 bb3@12 e4@8 ~@5 a4@9 ~@3 d5@7 ~@3 f5@25 ~@2 ab5@2 ~@32 [db5,a5,db6]@12, ~@27 [bb4,d5,a5]@23 ~@19 f4@7 c4@23 ~ [f3,g3]@24 ~ [e3,g4]@13 ~@32 b4@6 ~@3 c6@21 ~@24, ~@70 [d4,d5]@7 c5@22 ~@9 c4@16 bb3@13 [bb3,e4,c5]@11 ~@2 a3@13 [a3,c5,a5,c6]@13 [a3,c5]@23 ~@25, ~@56 d4@6 ~@13 f4@13 ~@24]/7", // Gm F Abm Dbm Gm7 Gbm Bbmaj7 Fsus2 …
  E: "[~@5 bb5@17 [f3,d4,d5,bb5,d6]@4 ~ g5@3 a5@2 ~@4 g5@3 ~@9 [g5,bb5]@4 ~@20 [g4,bb4]@5 ~@13 [a4,a5]@12 ~@3 bb5@10 [c4,eb4,a4,c5,a5]@12 ~@2 g5@8 [f3,a3,b3,g4,d5,g5]@7 [f3,a3,b3,g4]@4 [f3,a3,b3,g4,b4]@5 ~ a4@3 b4@21 ~@12 g3@15 ~ g3@6 ab3@2 a3@8 g3 ~, ~@2 [f3,d4,d5]@20 ~@5 c4@25 ~@8 [a4,c5]@17 eb4@25 gb3@25 [f3,a3,g4]@10 ~@16 f3@25 ~@46, ~@2 a5@2 ~@35 a5@13 a5@27 a4 c5@22 bb4@13 ~@109, ~@3 d6@19 ~@5 c6@5 ~@4 c6@16 ~@16 [ab4,b4]@10 g4@24 ~ c4@12 ~@13 [b3,d5]@9 ~@17 [e4,d5]@24 ~@46, ~@44 [ab5,b5]@8 f5@51 d5@6 ~@35 [d5,g5]@9 ~@71]/7", // Bb Gm A Adim G7 Dm Am F …
  F: "[f3 e3@4 ~ f3 g3 f3@51 ~@5]/2",
  G: "[~@16 [d4,f4,g4,bb4,d5]@9 [bb4,d5]@4 ~ a4@4 ~ bb4@13 ~@5 g5@2 ~@4 g6@24 c5@2 d5@12 [d4,f4,bb4,d5]@10 ~@3 f4@7 ~ [c5,d5]@7 ~@6 [d4,a4,c5,d5]@3 db4 ~ c4@10 ~@15 f7@23 ~@8, ~@15 db4@2 ~@8 [d4,f4,g4]@9 ~ [d5,g5]@17 d5@3 g5 bb5@2 d6@25 bb4@13 ~@12 e4@2 ~@7 [f4,a4]@9 [a4,c5,d5] e4@8 ~@12 c4@3 a4 c5 d5 f5 g5 a5 c6 d6 f6 a6 [c7,d7]@24 ~@8, ~@29 [ab4,bb4,d5,f5,a5]@5 g4@14 bb3@36 ~@34 d4@11 eb4@6 ~@11 a3@38 ~@8, ~@49 f4@35 ~@23 eb4@2 [a4,c5,d5]@8 ~@8 f4@10 [f4,a4,c5]@14 f4@35 ~@8, ~@50 [g4,bb4]@34 ~ f5@24 f5@17 f5@9 ~@13 d4@36 ~@8]/6", // Gm7 Bb Csus2 D7 G7 G5 F D7 …
  H: "[~@16 db4@2 [d4,f4,a4,b4,d5]@9 ~ e5 ~@2 [ab4,b4,ab5]@5 [g4,b4,d5,f5,g5]@13 ~@9 eb4@3 ~ [f4,g4,b4]@8 ~@8 f5@7 ~ c3 ~@37 [bb4,d5,g5]@12 ~@46 b6@4 ~ f2@39 ~@28 db5@2, ~@27 [a4,d5,b5]@9 ~@13 [f4,g4,b4,d5,f5]@12 ~@25 g4@9 d4@12 [e6,g6] bb6@2 d7 g7@24 ~@9 d4@9 ab4@4 c5@4 e5@4 ab5@5 c6@4 e6@4 ab6@8 ~ c7 ~@68, ~@27 b4@4 ~@25 e4@5 [d4,d5]@9 [d4,f4,g4,b4,d5]@15 ~@7 g3@6 g4@38 ~@5 bb3@45 ~@70, ~@28 [f5,a5]@8 ~@51 [d5,g5]@9 f4@40 ~ c3@49 ~@70, ~@93 bb3@6 bb4 d5 g5@2 bb5@2 d6@31 ~ ab5@11 e4@38 ~@70]/8", // Bm7b5 Abm G7 Gm Bm7 G7 Em D …
  I: "~ f4@2 ~ a4@2 ~ db5@4 ~ a4@2 ~ bb4@4 ~ a4 ~ bb4@3 ~ [f4,bb4]@3 ~ [bb4,d5]@2, ~@3 [bb3,d4]@5, ~@14 d5@5 ~@2 d5@4 ~@7", // Bb5 Bb
  J: "[~@4 [a4,c5]@13 [ab4,b4]@4 [g4,bb4]@5 ~@8 [a3,c4]@7 ~@5 f3@5 ~@22 a5@3 ~@19 a5@6 ~@2 db5@2 ~@16 [g4,b4]@5 ~@2 a4@3 b4@20 ~@20 g5@6 ~@19 g5@4 f5 g5 f4@12 ~@4 f5@4 g5@2, ~@2 a3@16 ~@8 [f4,a4]@28 ~@9 c4@13 d3@25 f3@25 ~ [f3,d5]@25 [e3,bb3,d4]@25 ~@37 f4@10, ~@41 a3@29 c5@7 ~@3 bb5@21 ~@2 e4@23 ~@2 e4@24 ~@26 [g4,db5]@23 ~ a4@22, ~@41 c4@9 ~ eb3@27 [c4,bb4]@23 ~ b3@24 ~@51 bb3@24 a3@23, ~@63 a5@4 a4@11 ~@11 a4@12 ~ g4@3 [d5,g5]@21 ~@53 a5@22 ~ f5@16 ~@6]/7", // Am Abm Gm Am G F Dm Em7b5 …
  K: "[~@5 d5@6 ~@8 c5@4 bb4@4 ~ [c4,a4]@20 ~@25 [eb4,eb5]@4 ~ [d4,d5]@8 ~ d5@6 ~ [a4,bb4,d5,a5]@8 ~ [g4,bb4,d5,g5]@12 c4 ~@8 [a6,a7]@4, ~@3 f3@46 ~@71 [c4,d6,d7]@8, ~@3 d4@9 ~@3 d4@12 ~@34 [f4,f5]@15 ~@17 ab4@8 ~@22 bb3@5, ~@3 c5@2 ~@6 c5@2 d5@6 ~@50 [e4,e5]@7 ~@11 [d4,f4]@15 ~@14 [d4,f4]@12, ~@4 f5@8 f5@37 ~@79]/4", // F Eb D Bbmaj7 Gm A Csus2 F …
  L: "c4 ~ d4@21 c4@2 [d4,f4,g4,bb4,d5,f5]@7, f4@3 ~, ~ [g6,g7]@2 ~@29", // Gm7 G
  M: "~@2 [f4,g4,bb4,d5]@6 ~@2 [f4,g4,bb4,d5]@7 ~ [c4,f4,a4,c5]@9 [c4,d4,f4,a4,c5,d5]@5, ~ [d4,f5]@8 ~@7, ~@4 c4@5 ~@7, ~@9 bb3@8 ~ [a3,f5]@14", // Gm7 F Dm7 Dm
  N: "[~@3 [c4,a4]@7 ~ c4@7 ~@38 c5@6 c5@8 c5@3 ~@2 gb4@4 ~@4 c5@4 ~@2 f4@7 [b3,d4,a4,d5]@8 [b3,b4]@8 ~@42 [e4,e5]@4 [eb4,a4,eb5]@2, ~@3 [a3,c5,f5]@15 ~ [f3,a3,d4,f4,a4]@55 c4@12 ~@2 [f3,b3,d4]@8 f4@16 [f3,b3,g4]@17 [d6,d7]@4 a7 a6@5 [g6,g7]@11 [f4,a4,b4,d5,f5]@10, ~@10 [d4,g4,a4,d5]@8 c4@20 [c6,c7]@36 ~ [b4,d5]@12 ~ b4@8 f3@8 [d4,a5]@56, ~@19 c5@14 [d6,d7]@40 [d3,gb3]@14 g2@26 e5@12 [b5,b6]@35, ~@28 [f6,f7]@45 ~@6 [gb4,db5]@7 ~@2 g4@16 [a4,d5]@8 b4 [g3,g5]@47]/5", // F Bm7 B E Ebdim F Dm Bdim …
  O: "[~@3 [b4,d5]@8 [a4,b4,d5]@8 [f4,a4,b4,d5,f5]@7 ~@2 [g4,bb4,d5]@8 [bb3,d4,g4,bb4,d5]@8 [f4,bb4,g5]@8 ~ g5@12 [f3,bb3,d4,g4,bb4,d5,g5]@12 ~ bb3 ~@26 e7@17 ~@6, ~@2 d4@24 ~@2 [c2,c3]@49 ~@14 c4@2 ab4 c5 e5@3 ab5 c6@2 e6 ab6@2 b6@18 ~@6, ~@2 f4@17 ~@9 g5@16 [bb3,d4,g4,d5]@8 bb4 [c4,bb5]@24 ~@13 ab3@32 ~@6, ~@2 a4@9 [e4,e5]@16 ~@9 f3@29 ~@13 [c3,d5]@44 ~@6, ~@52 [f4,d6,g6]@25 ~ ab5@14 e4@30 ~@6]/4", // Bm Bm7 Bm7b5 Gm Gm7 C Gm C7 …
  P: "~@8 ab5 ~ a5@3 ~ c6@5 ~@2 ab5 a5@3 ~@2 c6@5",
  Q: "[~@2 ab5 ~ a5@3 c6@4 ~@3 ab5@2 a5@2 ~@13 db6@3 ~ f5@2 ~ a5@2 ~@2 db6@3 ~ a5@2 ~ bb5@3 ~@4 bb5@3 ~@3 [f5,bb5]@2, ~@48 d6@5 ~ a5@2 ~@8, ~@55 d6@5 ~@4]/2", // Bb5
  R: "[~@2 [bb5,d6]@3 ~@2 ab5 ~ [a5,c6]@11 ~@2 [ab5,b5]@4 [g5,bb5]@4 ~@8 [a4,c5]@9 b4@3 ~ [g4,bb4]@6 ~@23 a5@3 ~@15 a5@9 ~ db5@2 ~@20 g4@4 ~@3 a4@2 b4@17 ~@13 [bb4,d5,g5]@10 ~@33 f5@18 ~@7 f5@18 f3, ~@31 [f5,a5]@26 eb4@26 [gb3,c4]@24 [f3,a3]@22 b4@5 f3@22 ~ [e3,bb3,d4]@24 ~@2 [a4,db5] e5 a5@17 g5@8 c5@21 ~@3 c5@22, ~@47 ab4@11 g4@26 ~@10 a4@13 g4@4 g5@25 ~ d5@19 ~@26 [e4,bb4]@25 ~@2 [f4,a4]@23 ~ f4@2 db5@21, ~@59 a4@12 a5@6 c5@7 ~@2 bb5@21 ~@3 d5@26 e4@20 ~@25 db4@26 ~@23 g3@26, ~@60 c5@14 a4@10 bb4@23 ~ b3@27 [a3,b3]@21 ~@23 bb3@28 a3@25 [c4,db4,g4]@24]/8", // Bb Am Abm Gm Am Gm F Gbdim …
  S: "[~@3 f5@22 ~@9 c7@35 ~@27, [c4,a4]@25 ab3@45 ~@26, ~ c5@24 ~ c4@44 ~@26, ~@27 f4@3 f6@2 ab6@38 ~@26, ~@29 [ab4,c6]@41 ~@26]/3", // F Ab
  T: "[~@10 e5@6 ~@7 [g4,d5]@5 ~ [g4,b4,d5]@8 ~ [d4,e4,g4,b4]@9 ~ e4@10 ~@33 c7@60 ~@9, ~@7 db5@14 a4 [ab4,b4,e5] g5@15 ~@34 [a5,c6] [e6,a6]@6 [ab5,b6]@10 e6@62 ~@9, ~@9 d6@19 d4@9 ~ b3@20 c4@29 a5@64 ~@9, ~@9 [d5,g5,b5]@7 b5@22 ~@34 [g6,c7]@8 b5@10 [g6,a6]@61 ~@9, ~@16 [b4,d5,e5,g5]@3 bb4@18 ~@10 [d4,g4,b4,d5]@11 ~ [e4,g4,a4,c5]@29 c6@63 ~@9]/5", // G5 G Em7 E Am A5 Abm G …
})).s("gm_piano").gain(0.45)

// chords · trumpet
const trumpet = note("<A@8 ~@34 B@2 C@3 ~@11 D E@2 F G@2 ~@3 H I@2 J@2 ~@7 K@2 L@2 ~@52>".pickRestart({
  A: "[~@38 a3@37 ~@13 bb3@37 ~@13 a3@37 ~@14 bb3@37 ~@30, ~@25 f2@50 f2@50 f2@50 f2@50 ~@31, ~@31 c3@44 ~@6 c3@44 ~@7 c3@44 ~@6 c3@43 ~@31]/8",
  B: "[~@2 g4@12 bb4@13 d5@14 ~@12 ab4@11]/2", C: "[~ d5@13 ab5@11 ~@2 f5@20 e5@4 ~ g5@39 ~@5]/3",
  D: "~@19 a5@4 d5@4 ~ a5@4", E: "[g5@49 ~@15]/2", F: "~@6 c6 b5", G: "[bb5@5 a5@37 ~@22]/2", H: "~@2 g4@3 bb4@3",
  I: "[d5@15 ~@11 ab4@13 d5@12 ab5@13]/2", J: "[f5@21 e5@4 g5@39]/2",
  K: "[~@13 a3@6 ~@7 g3@6, ~@14 f2@25 eb2@25, ~@20 c3@19 ~@6 bb2@19]/2",
  L: "[~@13 f3@13 ~@6 ab2@7 ~ f3@24, d2@26 db2@13 ~@25, ~@6 a2@19 ~@39]/2",
})).s("gm_trumpet").gain(0.39)

// chords · acoustic guitar nylon · "ACOU GUITAR"
const acoustic_guitar_nylon = note("<~ A@3 B@5 ~@8 C@4 ~@21 D@2 E@2 F ~@9 G@5 H@2 ~@4 I J@2 K@2 ~@63>".pickRestart({
  A: "[~@5 c5@26 bb4@5 a4@7 g4@51 ~@2]/3", B: "[~@9 c5@26 bb4@6 a4@7 g4@6 a4@6 bb4@25 f4@6 d4@7 c4@39 ~@23]/5",
  C: "[~@26 c4@4 c5@5 bb4@16 a4@4 g4@5 f4@13 d4@12 c4@38 ~@5]/4", D: "[~@3 e4@12 g4@11 bb4@16 ~@10 e4@12]/2",
  E: "[~ bb4@13 e5@13 d5@20 db5@4 e5@13]/2", F: "eb5@3 ~@5",
  G: "[~@20 [a4,c5,d5]@8 ~ [a4,c5]@8 [g4,a4,c5]@8 ~ f4@20 ~ f5@3 ~ [bb4,d5,f5]@48 ~@2 [g4,bb4,d5]@12 [f4,g4,bb4]@12 [a4,c5,d5]@9 [f4,a4,c5]@6, ~@28 g4@8 ~@9 [g4,bb4]@21 [bb4,d5]@3 ~@91]/5", // D7 Am Am7 Bb Gm Gm7 D7 F …
  H: "[~@2 [a4,c5,d5]@4 [f4,a4,c5]@4 ~ [d4,f4,a4]@51 ~@2]/2", I: "~@2 e4@3 g4@3",
  J: "[bb4@15 ~@11 e4@12 bb4@13 e5@13]/2", K: "[d5@21 db5@4 e5@12 ~ eb5@13 ~@13]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.37)

// other · vibraphone · "VIBES"
const vibraphone = note("<~@31 A@2 B@2 ~@2 C@4 ~ D@2 E@3 ~@20 F G@2 H@2 ~@63>".pickRestart({
  A: "[~@2 f5@11 ~ e5@13 eb5@13 d5@20 a5@4]/2", B: "[~ g5@50 ~@13]/2",
  C: "[~@24 c5@12 db5@12 d5@22 a5@3 ~ g5@52 ~@2]/4", D: "[~@2 d4@12 e4@13 g4@13 ~@13 d4@11]/2",
  E: "[~ ab4@13 d5@13 c5@19 b4@5 c5@39 ~@6]/3", F: "~@8 d4@11 e4@13", G: "[g4@13 ~@14 d4@11 ab4@13 d5@13]/2",
  H: "[c5@20 b4@5 c5@39]/2",
})).s("gm_vibraphone").gain(0.31)

// other · brass section · "BRASS"
const brass_section = note("<A@8 ~@23 B@2 C@2 ~@2 D@5 E@2 F@3 ~@20 G H@2 I@2 ~@63>".pickRestart({
  A: "[~@25 g4@100 a4@50 g4@52 ~@29]/8", B: "[~@2 f5@13 e5@12 eb5@12 d5@21 a5@4]/2", C: "[g5@13 ~@3]/2",
  D: "[~@24 c5@13 db5@12 d5@21 a5@4 g5@56 ~@30]/5", E: "[~@2 bb4@12 d5@13 e5@14 ~@12 bb4@11]/2",
  F: "[~ e5@13 bb5@13 a5@20 ab5@5 a5@27 ~@17]/3", G: "~@7 bb4@13 d5@12", H: "[~ e5@14 ~@11 bb4@12 e5@13 bb5@13]/2",
  I: "[a5@20 ab5@6 a5@27 ~@11]/2",
})).s("gm_brass_section").gain(0.42)

// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note("<A@7 B@2 C D@8 E@4 F@5 G@4 H@7 I@5 J@8 ~@32 K L@14 ~@28 M@8 ~>".pickRestart({
  A: "[~@25 a3@50 bb3@50 ~ a3@50 [bb3,d4]@48, ~@25 [f2,d4]@100 e4@50 ~@49, ~@25 c3@98 ~@2 [f2,c3]@99]/7", // Bb Dm F5
  B: "[~@2 [f2,c3,a3,c4]@25 e4@12 ~ eb4@12 ~ bb3@11, ~@27 [f2,a3]@25 [bb2,f3,d4]@12]/2", // F Bb
  C: "~ [e3,a3,db4,gb4]@12 ~ d4@18, ~@13 [f3,bb3,g4]@19", // Gbm7 Gm7
  D: "[~@7 [a3,c4]@48 ~@2 eb3@25 d3@23 ~@2 [d3,g3,b3]@38 ~ [b3,d4]@11 ~ [bb3,d4]@25 [c3,e3,g3]@25 [f2,f3,a3]@48, ~@6 [f3,f4]@51 [a3,c4]@51 ~@37 [g2,f3]@12 [c3,g3]@25 ~@74]/8", // Am G Bm Bb C F Am G7 …
  E: "[~@3 f4@50 [f2,c3,a3,c4]@25 e4@12 eb4@12 ~ [f3,bb3,d4]@12 ~ a3@12, ~@2 [c3,g3,bb3]@51 ~@25 [f2,a3]@24 bb2@13 [e3,db4,gb4]@13]/4", // F Bb C7 F Gb7
  F: "[~ d4@24 ~ f3@50 eb3@25 ~@13 d4@9 ~@3 [d3,g3,b3]@34, [f3,bb3,g4]@25 f4@51 ~@50 d4@26 ~@8, ~@25 c4@48 ~@28 d3@25 ~@34, ~@26 a3@47 ~@3 [a3,c4]@51 ~@33]/5", // G Gm7 Am
  G: "[~@4 [f3,b3]@12 ~ [g3,bb3]@24 ~ [e3,g3,bb3]@24 ~ [f2,c3]@25 [bb2,d3,bb3]@25 [f2,c3,a3]@5 ~@6, ~@3 [g2,d4]@13 d4@26 ~@24 a3@26 ~@36, ~@16 c3@23 ~@2 c3@25 ~ f3@55 ~@6]/4", // Fdim Gm Edim F5 Bb F G5
  H: "[~@2 [f2,f3,a3]@12 ~ [g2,e3]@12 [a2,eb3,f3,c4]@13 [bb2,bb3,d4]@73 ~@28 c3@73 ~@2 g3@8, ~@2 c3@25 ~@88 [bb2,f3,bb3,d4]@25 a3@75 [a2,e3,c4]@9, ~@14 bb3@13 ~@112 f2@77 ~@8]/7", // F C F7 Bb Am
  I: "[~@5 db4@12 ~ f3@49 [d3,f3]@24 ~@2 [g2,f3]@24 ~ [c3,e3,bb3]@35 ~@3 bb3@4, ~@4 [ab2,f3,b3]@13 [g2,b3]@74 ~ [d3,b3]@25 ~@38 [c3,e3,d4]@5, ~@17 d4@51 ~@49 d4@38 ~@5]/5", // Dm G7 C7 Fdim G C
  J: "[~@8 [c3,bb3]@51 f4@24 e4@13 eb4@12 ~ d4@12 ~ a3@11 ~ [bb3,d4]@24 ~ [f3,a3,f4]@24 ~@10 e4@8 d4@4 ~@5 [eb3,g4]@24 ~ c4@21, ~@8 [e3,d4]@48 ~@3 [f2,a3,c4]@49 [bb2,f3,bb3]@13 [e3,db4,gb4]@12 f3@24 ~ c4@23 ~@3 f3@26 ~@24 [d3,gb4]@22, ~@134 g4@22 ~@27 f4@9 ~@18 c4 ~@45, ~@184 [a3,c4]@23 ~@2 a3@25 bb3@13 ~@9]/8", // C7 Bb F Eb E7 F Bb5 Gb7 …
  K: "~@16 gb2 ~@7 gb2 ~@4 gb2 ~@2", L: "gb2 ~@7 gb2 ~@4 gb2 ~@2 gb2 ~@7 gb2 ~@4 gb2 ~@2",
  M: "[~@4 gb4 bb2 ~@7 bb2 ~@242, ~@5 b3@251]/8",
})).s("gm_string_ensemble_2").gain(0.33)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A@5 B@2 C@2 D E F@3 G@8 H@2 I J@6 K@2 L@3 M@4 N@6 O@5 P@3 Q@5 R@3 S@8 T@3 U@3 V W@5 X@7 ~@46
>`.pickRestart({
  A: "[~@25 f2@33 ~@5 f2@11 ~ f2@32 ~@6 f2@12 ~ f2@33 ~]/5", B: "[~@3 f2@12 ~ f2@31 ~@7 f2@10]/2",
  C: "[~@2 f2@23 ~@2 f2@15 ~@2 f2@4 a2@4 ~ bb2@11]/2", D: "~ a2@13 bb2@18", E: "~@3 bb2@4 f2@20 ~ c2@4",
  F: "[f2@16 ~ f2@4 e2@4 eb2@19 ~@2 eb2@4 ~ d2@16 d2@4 gb2@5 g2@20]/3",
  G: "[~ d2@4 g2@16 ~ f2@4 d2@4 c2@22 ~@3 c2@16 ~ c2@4 e2@4 f2@19 ~@7 f2@16 c2@4 f2@5 c3@25 c2@16 ~ g2@4 c2@4 f2@23 ~@2 f2@14 ~@3 f2@4 a2@4 bb2@13 a2@12]/8",
  H: "[~ bb2@20 ~ bb2@4 f2@21 c2@4 f2@13]/2", I: "~@4 f2@4 e2@4 eb2@19 ~",
  J: "[~ eb2@4 d2@15 ~@2 d2@4 gb2@4 g2@21 d2@5 g2@16 f2@4 ~ d2@4 c2@19 ~@6 c2@14 ~@3 c2@4 e2@4 f2@15 ~@2 f2@4 a2@4 bb2@19 ~@2 bb2@4 f2@10 ~]/6",
  K: "[~@2 f2@13 g2@12 a2@12 ~ bb2@21 f2@3]/2", L: "[~ bb2@22 ~@3 bb2@21 f2@4 bb2@23 ~@2 f2@20]/3",
  M: "[~@2 c2@4 f2@22 ~@3 f2@21 c3@4 a2@13 ab2@12 g2@21 d2@4 g2@22]/4",
  N: "[~@3 g2@21 ~ d2@4 g2@23 ~@2 c3@20 ~ g2@4 c3@25 c2@47 ~@4 f2@20 ~ c2@4 f2@12]/6",
  O: "[~@4 f2@4 ~ a2@4 bb2@12 a2@12 ~ bb2@20 ~ bb2@4 f2@19 ~@2 c2@4 f2@16 ~ f2@4 e2@5 eb2@19 ~@2 eb2@4 d2@15 ~@2 d2@4]/5",
  P: "[gb2@4 g2@24 ~ g2@13 ~@4 f2@4 d2@4 c2@22 ~@3 c2@16 ~]/3",
  Q: "[c2@4 e2@4 ~ f2@15 ~ f2@4 ~ a2@4 bb2@20 ~ bb2@4 f2@18 ~@3 c3@3 ~ f2@8 g2@9 a2@8 bb2@21 f2@4 bb2@23 ~@3]/5",
  R: "[bb2@20 ~ f2@4 bb2@25 f2@21 c2@4 f2@21]/3",
  S: "[~@4 f2@21 c2@4 f2@13 gb2@12 ~ g2@21 d2@4 g2@23 ~@2 g2@21 d2@4 g2@24 ~ c3@21 g2@5 c3@23 ~@2 c2@49 ~]/8",
  T: "[f2@20 ~ c2@4 f2@16 ~ f2@4 a2@4 bb2@12 ~ a2@12 ~ bb2@20]/3",
  U: "[~ bb2@4 f2@20 ~ c2@4 f2@16 ~ f2@4 e2@4 eb2@19 ~@2 eb2@4 d2@15 ~]/3", V: "~ d2@4 gb2@4 g2@23",
  W: "[~@3 g2@13 ~@3 f2@4 ~ d2@4 c2@22 ~@3 c2@16 ~ c2@4 e2@4 ~@6 c3@6 ~ f2@15 ~@4 bb2@6 eb2@15 ~@4 a2@6 d2@13 ~@6]/5",
  X: "[~ ab2@7 db2@29 ~@4 db2@18 f2@149 ~@16]/7",
})).s("gm_acoustic_bass").gain(0.37)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@7 A B C D E F G H I J C D K L M H I N O P K L M Q R S O P K T U Q V W X Y Z ~ AA AB F G X Y Z C D E F AC AD AE J C D
  E AF M H I J C AG AH L M H V W O P K AI AJ ~@54
>`.pickRestart({
  A: "~@27 x ~@3 x", B: "~@4 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@2",
  C: "~ x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~", D: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3",
  E: "x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", F: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x",
  G: "~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3", H: "x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~",
  I: "~@2 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x", J: "~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@2",
  K: "x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@2", L: "~ x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x",
  M: "~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3", N: "~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@2",
  O: "~ x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~", P: "~@2 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3",
  Q: "x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~", R: "~ x ~ x ~ x ~@10", S: "~@5 x ~@2",
  T: "~ x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x", U: "~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3",
  V: "~@2 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x", W: "~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@2",
  X: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~", Y: "~@2 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4",
  Z: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@2", AA: "~@7 x ~@12 x ~@3 x ~@3 x ~@3",
  AB: "x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", AC: "~@3 x ~@3 x ~@4 x ~@3 x ~@11 x ~@3",
  AD: "~ x ~@3 x ~@3 x ~@3 x ~@8 x ~@7 x ~", AE: "~@6 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x",
  AF: "~ x ~@4 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x", AG: "~ x ~@14", AH: "~@12 x ~@12 x ~@3 x ~@2",
  AI: "~ x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x", AJ: "~@3 x ~@28",
})).gain(0.45)

// drums · crash
const crash = s("cr").struct("<~@7 A ~@23 A B ~@11 C ~@12 D ~@11 E ~@10 F G ~@53>".pickRestart({
  A: "~@27 x ~@4", B: "~ x ~@2", C: "~ x ~@30", D: "~@11 x ~@3 x", E: "~@7 x ~@24", F: "~@5 x ~@2", G: "~@13 x ~@18",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct("<~ A ~ B C ~ D ~@24 E ~@25 F ~@22 F G H ~@2 I J ~@48>".pickRestart({
  A: "~@9 x ~@2 x ~@3", B: "~@4 x ~@6 x ~@20", C: "~@23 x ~@5 x ~@2", D: "~@9 x ~@5 x ~@16", E: "~@15 x ~@16",
  F: "~@13 x ~@18", G: "~@7 x ~@24", H: "x ~@12 x ~@2", I: "~@23 x ~@8", J: "~@5 x ~@10",
})).gain(0.4)

stack(
  piano, trumpet, acoustic_guitar_nylon, vibraphone, brass_section, string_ensemble_2, bass, kick, rim, hihat, crash,
  ride
)

More by Elvis