Strudelify

All by Myself

Eric Carmen

KeyF majorTempo60 bpm
0:00/0:00
// All by Myself — Eric Carmen
// 60 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: metre changes (4/4 at bar 1, 5/4 at bar 43, 4/4 at bar 45, 5/4 at bar 56, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 7 "FR BASS b" fretless bass (copy of ch 8 "JAZ GTR" electric guitar jazz)
// note: Full arrangement: all 76 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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 · "PIANO1"
const piano = note("<~ A@7 B@6 C@8 D E F@2 G H E F@2 G I J K L M N K L M O P@2 Q@3 R S@7 T@6 U@6 V@5 W@4>".pickRestart({
  A: "[~@29 f3@6 ~@36 f3@6 f3@6 ~@36 f3@6 f3@6 ~@36 f3@6 g3@6 ~@12 g3@6 f3@6 ~@6 a3@6 a3@6 a3@6 ~@12 a3@5 ~@19 a3@5 ~ bb3@6 bb3@6 bb3@6 ~@3 a2@3 bb3@6 ~@12 bb3@5 ~ f3@6 ~@6 [c4,f4]@6 f3, ~@29 [c4,f4]@12 [c4,f4]@12 [c4,f4]@12 [c4,f4]@12 [c4,f4]@12 [c4,f4]@12 [c4,f4]@12 [c4,f4]@12 a3@30 f3@12 ~@12 g3@12 ~@6 [a3,c4]@12 c4@12 [eb3,c4,g4]@6 a3@6 [c4,g4]@11 ~ [c4,gb4]@12 [c4,gb4]@11 ~ [d4,g4]@12 [d4,g4]@12 [db4,f4]@12 [db4,f4]@11 ~ [c4,f4]@12 ~@7, ~@35 f3@12 f3@12 f3@12 ~@6 [f1,f2]@48 f2@48 f2@71 ~@25 g2@18 [g2,bb3]@6 bb2@23 ~ a2@19, ~@83 f3@12 f3@12 f3@12 ~@6 c4@12 [c4,f4]@12 f4@24 ~@36 f4@35 ~@7 a3@12 ~@36 bb3@12 ~@25, ~@131 f3@12 f3@6 c4@12 [a3,c4]@12 [bb3,db4]@12 [bb3,db4,f4]@13 ~@5 f3@41 ~ d3@23 ~@55 f3@12 ~]/7", // F5 Am Cm C5 Cdim G5 Db F5 …
  B: "[~@5 f3@7 f3@7 [e2,bb3,c4,g4]@20 ~ f3@6 ~@36 f3@6 g3@6 ~@12 g3@6 f3@6 ~@6 a3@6 a3@6 a3@6 ~@12 a3@5 ~@19 a3@5 ~ bb3@6 bb3@6 bb3@6 ~@3 a2@3 bb3@6 ~@12 bb3@5 ~@13 f4@6 f4@6 gb4@6 ~@12 d4@6 [g2,d4,f4,g4,b4]@6 d4@2, ~@5 [g2,bb3,db4]@14 ~@21 f2@48 f2@48 [c4,g4]@6 a3@6 [c4,g4]@11 ~ [c4,gb4]@12 [c4,gb4]@11 ~ [d4,g4]@12 [d4,g4]@12 [db4,f4]@12 [db4,f4]@11 ~@31 gb4@18 ~@8, ~@40 a3@30 f3@12 ~@12 g3@12 ~@6 [a3,c4]@12 c4@12 eb3@23 ~ d3@23 ~ g2@18 [g2,bb3]@6 bb2@23 ~ [a2,f3,a3,c4]@24 [d3,d5]@24 ~@8, ~@40 c4@12 [c4,f4]@12 f4@24 ~@36 f4@35 ~@85 [c5,eb5]@12 ~@12 c5@12 ~@8, ~@46 f3@12 f3@6 c4@12 [a3,c4]@12 [bb3,db4]@12 [bb3,db4,f4]@13 ~@5 f3@41 ~@7 a3@12 ~@36 bb3@12 ~@62]/6", // C7 G7 Gdim C5 Cdim G5 Db Am …
  C: "[~@10 db4@6 c4@5 ~@7 bb4@6 a4@6 f3@6 f3@6 f3@6 [f1,f2,f3]@6 f3@6 f3@6 f3@6 f3@5 ~ a3@6 a3@6 ~@6 [a1,a2]@5 ~ a3@6 a3@6 a3@6 a3@4 ~@2 [g3,c4,eb4]@12 ~@6 eb2@5 ~ gb3@5 ~ gb3@6 gb3@6 gb3@5 ~ d3@6 ~@12 [f2,g2]@5 ~ g3@6 g3@5 ~ bb3@5 ~ bb3@4 ~@2 f3@6 f3@6 f3@6 [f1,f2,f3]@6 f3@6 f3@6 f3@6 ~ f3@5 ~ a3@6 a3@6 ~@6 [a1,a2]@6 a3@6 a3@6 a3@6 a3@4 ~@2 [g3,c4,eb4]@12 ~@7 eb2@5 ~ gb3@5 ~ gb3@6 gb3@6 gb3@5 ~ [g2,d3,g3,bb3]@6, ~@4 [db3,f4,g4,bb4]@12 c3@24 [f1,f2]@18 ~@6 [f1,f2]@23 ~ [a1,a2]@18 ~@6 [a1,a2]@22 ~@2 eb1@23 ~ [d1,d2]@23 ~@7 d3@17 ~@13 [c3,e3,c4]@11 ~@98 eb2@18 ~@37, ~@16 [g4,bb4]@11 ~ g4@12 ~@108 [g3,c4,eb4]@11 ~ [c4,d4]@12 [c4,d4]@11 ~ [g3,bb3]@12 [g3,bb3]@11 ~@25 [a3,c4]@12 [a3,c4]@12 [a3,c4]@12 [a3,c4]@12 ~ [c4,e4]@12 [a3,c4,e4]@12 [c4,e4]@12 [c4,e4]@10 ~@15 [g3,c4,eb4]@12 [c4,d4]@12 [c4,d4]@11 ~@7, ~@22 c4@18 [a3,c4]@12 [a3,c4]@12 [a3,c4]@12 [a3,c4]@11 ~ [c4,e4]@12 [a3,c4,e4]@11 ~ [c4,e4]@12 [c4,e4]@10 ~@2 eb2@18 ~@30 g2@18 ~@6 [bb2,bb3,db4]@11 ~@13 [f1,f2]@18 ~@6 [f1,f2]@24 ~ [a1,a2]@18 ~@6 [a1,a2]@22 ~@2 eb1@24 ~ [d1,d2]@23 ~@7]/8", // F A Cm Fsus2 F A Cm Gm …
  D: "~@13 [f2,g2]@5 ~ g3@6 g3@6 ~ bb3@7 ~ bb3@6 ~@2, d3@18 ~ [bb2,bb3,db4]@13 [c3,e3,c4]@14 ~@2, ~ [g3,bb3]@2 ~@5", // Fsus2 Bbm C Gm
  E: "f3 ~@6 f3, f2, a3@5 f3@2 ~, c4 [c4,f4] f4@2, ~ f3@2 f3 c4@2 [a3,c4]@2", // F5 Am
  F: "[g3@6 ~@12 g3@6 f3@6 ~@6 a3@6 a3@6 a3@6 ~@12 a3@5 ~@19 a3@5 ~, f2@48 [c4,g4]@6 a3@6 [c4,g4]@11 ~ [c4,gb4]@12 [c4,gb4]@11 ~, [bb3,db4]@12 [bb3,db4,f4]@13 ~@5 f3@41 ~@7 a3@12 ~@6, ~@6 g3@12 ~@6 [a3,c4]@12 f4@35 ~@25, ~@36 c4@12 eb3@23 ~ d3@23 ~]/2", // C5 Cdim Bbm Am
  G: "bb3@6 bb3@6 bb3@6 ~@3 a2@3 bb3@6 ~@12 bb3@5 ~, g2@18 [g2,bb3]@6 bb2@23 ~, [d4,g4]@12 [d4,g4]@12 [db4,f4]@12 [db4,f4]@11 ~, ~@5 bb3@2 ~", // Gm G5 Db
  H: "f3@6 ~@12 f3@5 ~ f3@6 f3@6 [e2,bb3,c4,g4]@12, a2@23 ~ [g2,bb3,db4]@12 ~@12, [c4,f4]@12 [c4,f4]@11 ~@25, ~ f3@2 ~@5", // C7 Gdim F5
  I: "~@2 f4!2 gb4 ~@2 d4, [a2,f3,a3,c4] [d3,d5], ~@2 [c5,eb5]@2 ~ gb4@3, ~@3 c5", // F D Cm
  J: "d4@6 d4@6 ~@6 db4@6 c4@5 ~@7 bb4@6 a4@6, [g2,f4,g4,b4] [db3,f4,g4,bb4] c3@2, ~@24 [g4,bb4]@11 ~ g4@12, ~@5 c4@3", // G7 Gm7b5 Gm
  K: "f3@6 f3@6 f3@6 [f1,f2,f3]@6 f3@6 f3@6 f3@6 f3@5 ~, [f1,f2]@18 ~@6 [f1,f2]@23 ~, [a3,c4]@12 [a3,c4]@12 [a3,c4]@12 [a3,c4]@11 ~", // F Am
  L: "a3@6 a3@6 ~@6 [a1,a2]@5 ~ a3@6 a3@6 a3@6 a3@4 ~@2, [a1,a2]@9 ~@3 [a1,a2]@11 ~, [c4,e4]@12 [a3,c4,e4]@11 ~ [c4,e4]@12 [c4,e4]@10 ~@2", // A C Am C
  M: "[g3,c4,eb4]@12 ~@6 eb2@5 ~ gb3@5 ~ gb3@6 gb3@6 gb3@5 ~, eb1@23 ~ [d1,d2]@23 ~, eb2@3 ~@5, ~@12 [g3,c4,eb4]@11 ~ [c4,d4]@12 [c4,d4]@11 ~", // Cm D Cm Csus2
  N: "d3@6 ~@12 [f2,g2]@5 ~ g3@6 g3@5 ~ bb3@5 ~ bb3@4 ~@2, g2@18 ~@6 [bb2,bb3,db4]@11 ~ [c3,e3,c4]@11 ~, [g3,bb3]@12 [g3,bb3]@11 ~@25, ~@6 d3@17 ~@25", // Fsus2 Bbm C Gm
  O: "d3@6 ~@12 g2@5 ~ [f4,a4]@6 [e4,g4]@6 [g4,bb4]@6 [f4,a4]@6, g2@3 ~@5, [g3,bb3]@12 [g3,bb3]@11 ~@25, ~@6 d3@17 ~@25", // F Em Gm F Gm
  P: "[[e4,g4]@6 [f4,a4]@6 [eb4,g4]@6 [d4,f4]@6 [f4,ab4]@6 [eb4,g4]@6 [d4,f4]@6 [eb4,g4]@18 ~@20 g3@3 c4@2 ~@4 c4@2 ~@2 g3@2 c4, ~@72 c3@13 [d3,f4]@7 ~@4, ~@72 eb4@4 c4@6 ~@5 g3@5 ~@4, ~@74 g3@4 eb4@7 ~@6 [eb3,g4]@5]/2", // Em F Eb Dm Fm Eb Dm Eb …
  Q: "[~@6 c4@2 ~@5 c4@3 ~@14 b3@3 ~@11 c4@2 ~@5 c4@2 ~@4 c4@2 ~@5 c4@2 ~@5 c4@2 ~@15 b3@3 ~@12 c4@2 ~@5 c4@2 ~@5 c4@2 ~@4 bb3@3 ~@4 e3@2 ~@10 db4@2, ~ [f3,ab4]@7 [d3,f4]@8 [g2,eb4]@18 c3@13 ~@2 g3@5 ~ g3@4 [f3,ab4]@7 [d3,f4]@8 ~@2 f3@9 f3@6 c3@14 [d3,f4]@7 [eb3,g4]@7 [e3,g4]@7 ~@7 [db3,a4]@11, ~@4 ab3@5 ~@2 ab3@5 ~@2 f3@6 d4@9 ~ eb4@4 c4@4 g3@4 [d3,f4]@7 [eb3,g4]@6 ~@2 ab3@5 ~@2 ab3@5 [g2,eb4]@18 ~@5 c4@7 ~@18 db4@5 [db4,bb4]@7 ~@6 g4@5, ~@21 b3@6 f3@6 ~@3 g3@4 eb4@7 ~@32 b3@9 ~@6 g3@7 g3@5 ~ g3@5 ~@2 g3@5 ~@9 g3@5 ~@4 a3@7, ~@81 d4@9 ~ eb4@7 eb4@7 ~@30 e4@9]/3", // Fm Dm Cm Fm Dm Eb Em Gbm …
  R: "g3@2 ~@13 c4@2 ~@6 g3@3 ~@6 f3@3 ~@6 gb3@3 [bb2,gb4]@4, ~@2 [d3,f4]@15 [b2,g4]@9 [g2,f4]@9 [c3,eb4]@10 ~@3, ~@5 d4@5 ab4@8 ~@30, ~@7 c4@8 ~@14 b3@6 ~@3 bb3@7 ~@3, ~@12 d4@5 ~@3 d4@6 ~@22", // Ebm Dm Em G7 Cm
  S: "[~@3 c4@4 ~@17 c4@3 ~ f3@6 ~@33 f3@5 f3@6 ~@33 f3@5 ~ f3@5 ~@33 f3@5 ~ g3@6 ~@11 g3@5 f3@6 ~@5 a3@6 a3@5 a3@6 ~@11 a3@5 ~@17 a3@4 ~@2 bb3@6 bb3@6 bb3@6 ~@3 a2@3 bb3@6 ~@13 bb3@6 ~ f3@7 ~@14 f3@6 ~@2 [g2,f3,bb3,db4]@7, bb3@7 a2@96 ~@14 f2@44 f2@66 ~@23 g2@18 [g2,bb3]@6 bb2@25 ~ a2@28 ~@8, ~@7 f4@19 ~@52 f3@11 f3@11 f3@11 ~@6 c4@11 [c4,f4]@11 f4@22 ~@33 f4@11 [c4,g4]@6 a3@5 [c4,g4]@10 ~ [c4,gb4]@11 ~ [c4,gb4]@10 ~ [d4,g4]@12 [d4,g4]@12 [db4,f4]@13 [db4,f4]@12 ~ [c4,f4]@14 [c4,f4]@14 ~@8, ~@10 f3@7 eb4@10 ~ [c4,f4]@11 [c4,f4]@11 [c4,f4]@11 [c4,f4]@11 [c4,f4]@11 [c4,f4]@11 ~ [c4,f4]@11 [c4,f4]@11 a3@27 f3@11 ~@12 g3@11 ~@5 [a3,c4]@11 c4@11 eb3@21 ~ d3@21 ~@59 f3@14 ~@15, ~@14 c4@7 f3@7 ~@6 f3@11 f3@11 f3@11 ~@5 [f1,f2]@44 ~@6 f3@11 f3@6 c4@11 [a3,c4]@11 [bb3,db4]@11 [bb3,db4,f4]@12 ~@5 f3@38 ~@6 a3@11 ~@36 bb3@13 ~@43]/7", // Gm7b5 Gm F5 C5 Cdim G5 Db F5 …
  T: "[~ f3@8 [e2,bb3,c4,g4]@51 ~@9 f3@6 f3@5 f3@6 [f1,f2,f3]@5 f3@6 f3@5 f3@6 f3@5 ~ a3@5 a3@6 ~@5 [a1,a2]@5 ~ a3@5 a3@6 a3@5 a3@3 ~@3 [g3,c4,eb4]@11 ~@5 eb2@5 ~ gb3@5 ~ gb3@5 gb3@6 gb3@5 d3@6 ~@11 [f2,g2]@5 g3@6 g3@5 bb3@5 ~ bb3@4 ~ f3@6 f3@6 f3@5 [f1,f2,f3]@5 ~ f3@5 f3@6 f3@5 f3@3, ~@69 [f1,f2]@17 ~@5 [f1,f2]@22 ~ [a1,a2]@16 ~@6 [a1,a2]@20 ~@2 eb1@22 [d1,d2]@21 ~@7 d3@16 ~@11 [c3,e3,c4]@10 ~@43, ~@69 [a3,c4]@11 [a3,c4]@11 [a3,c4]@11 [a3,c4]@11 ~ [c4,e4]@11 [a3,c4,e4]@11 [c4,e4]@11 [c4,e4]@9 ~@2 eb2@16 ~@28 g2@17 ~@5 [bb2,bb3,db4]@11 ~@11 [f1,f2]@17 ~@6 [f1,f2]@19, ~@169 [g3,c4,eb4]@10 ~ [c4,d4]@11 [c4,d4]@10 ~ [g3,bb3]@11 [g3,bb3]@11 ~@22 [a3,c4]@11 ~ [a3,c4]@11 [a3,c4]@11 [a3,c4]@8]/6", // C7 F A Cm Fsus2 F A D …
  U: "[~@3 a3@5 a3@6 ~@5 [a1,a2]@5 ~ a3@5 a3@6 [a3,c4,e4]@6 a3@3 ~@2 [g3,c4,eb4]@11 ~@6 eb2@5 gb3@5 ~ gb3@5 gb3@6 gb3@5 d3@6 ~@11 [f2,g2]@5 ~ g3@5 g3@5 ~ bb3@5 bb3@4 ~@2 f3@5 f3@6 f3@5 [f1,f2,f3]@5 ~ f3@5 f3@6 f3@5 f3@5 ~ a3@6 a3@5 ~@6 [a1,a2]@5 a3@6 a3@5 [a3,c4,e4]@6 a3@3 ~@2 [g3,c4,eb4]@11 ~@6 eb2@5 gb3@5 ~ gb3@6 gb3@5 gb3@5 ~ d3@5 ~@11 [f2,g2]@3, ~@3 [a1,a2]@16 ~@6 [a1,a2]@20 ~@2 eb1@22 [d1,d2]@21 ~@7 d3@16 ~@12 [c3,e3,c4]@10 ~@89 eb2@17 ~@28 g2@16 ~@3, ~@3 [c4,e4]@11 [a3,c4,e4]@11 [c4,e4]@11 ~@11 eb2@17 ~@27 g2@17 ~@6 [bb2,bb3,db4]@11 ~@11 [f1,f2]@16 ~@6 [f1,f2]@22 [a1,a2]@17 ~@5 [a1,a2]@20 ~@2 eb1@22 [d1,d2]@21 ~@7 d3@14, ~@58 [g3,c4,eb4]@10 ~ [c4,d4]@11 [c4,d4]@10 ~ [g3,bb3]@11 [g3,bb3]@11 ~@23 [a3,c4]@11 [a3,c4]@11 [a3,c4]@11 [a3,c4]@11 [c4,e4]@11 [a3,c4,e4]@11 [c4,e4]@11 ~@22 [g3,c4,eb4]@10 ~ [c4,d4]@11 ~ [c4,d4]@10 ~ [g3,bb3]@11 [g3,bb3]@8]/6", // A Am Cm Fsus2 F A Am Cm …
  V: "[~@3 g3@5 g3@5 ~ bb3@5 bb3@4 ~@2 f3@5 f3@6 f3@6 [f1,f2,f3]@5 f3@6 f3@5 f3@6 f3@5 a3@6 a3@5 ~@6 [a1,a2]@5 a3@6 a3@5 [a3,c4,e4]@6 a3@3 ~@3 [g3,c4,eb4]@11 ~@5 eb2@5 ~ gb3@5 gb3@6 gb3@5 gb3@5 ~ d3@6 ~@13 [f2,g2]@6 ~ g3@8 g3@8 ~ bb3@9 ~ bb3@8 ~@2 f3@6 ~@6 [c4,f4]@6 f3, ~@3 [bb2,bb3,db4]@11 [c3,e3,c4]@10 ~ [f1,f2]@17 ~@5 [f1,f2]@22 [a1,a2]@17 ~@5 [a1,a2]@20 ~@3 eb1@22 [d1,d2]@21 ~@7 d3@19 ~@18 [c3,e3,c4]@18 ~@8 f3@12 ~, ~@25 [a3,c4]@11 [a3,c4]@11 [a3,c4]@11 [a3,c4]@11 [c4,e4]@11 [a3,c4,e4]@11 [c4,e4]@11 ~@12 eb2@16 ~@28 g2@19 ~@7 [bb2,bb3,db4]@16 ~@40, ~@125 [g3,c4,eb4]@10 ~ [c4,d4]@11 [c4,d4]@10 ~ [g3,bb3]@12 [g3,bb3]@13 ~@38 [c4,f4]@12 ~@7]/5", // F A Am Cm Fsus2 F5 Bbm C …
  W: "[~@22 f3@6 f3@6 ~@35 f3@6 ~@4 a3@96 ~@17, ~@5 [c4,f4]@11 [c4,f4]@12 [c4,f4]@11 [c4,f4]@12 [c4,f4]@12 [c4,f4]@11 ~@3 c3@96 ~@19, ~@10 f3@12 ~@6 [f1,f2]@46 ~ f1@96 ~@21, ~@34 f3@11 f3@12 f3@12 ~@7 f2@96 ~@20]/4", // F5 F
})).s("gm_piano").gain(0.35)

// bass · fretless bass · "FR BASS"
const bass = note(`<
  ~@9 A@4 ~ B@5 C@4 D@2 E F G H I J F K ~ L M N O L M N P@3 ~@6 Q@3 ~@3 R@4 S T@5 U V@4 W@5
>`.pickRestart({
  A: "[~@13 f1@2 ~ f1@71 ~ eb2@24 d2@24 g2@21 a2@3 bb2@23 ~@9]/4",
  B: "[~@40 f1@17 ~ f1@5 ~ f1@17 ~ f1@3 g1@2 ~ a1@17 ~ a1@5 ~ a1@18 c2@3 d2@2 ~ eb2@17 ~ eb2@5 ~ d2@23 ~ g2@17 ~ g2@2 ~ a2@2 ~ bb2@12 c3@5 ~ c2@5 ~ f1@8]/5",
  C: "[~@10 f1@5 ~ f1@17 ~@2 f1@3 g1@2 ~ a1@17 ~ a1@5 ~ a1@18 c2@3 d2@2 ~ eb2@17 ~@2 eb2@5 ~ d2@24 g2@24 ~ db2@13 c2@15 ~]/4",
  D: "[f1@17 ~ f1@5 ~ f1@44 ~ f1@2 ~ f1@17 ~ c2@3 f2@3]/2", E: "eb2@18 eb2@5 ~ d2@23 ~", F: "g2@21 a2@3 bb2@23 ~",
  G: "a2@23 ~ g2@11 ~ e2@12", H: "f2@21 f1@2 ~ f1@23 ~", I: "f1@20 ~ f1@2 ~ f1@17 ~ c2@3 f2@3", J: "eb2 d2",
  K: "a2@23 ~", L: "f1@17 ~ f1@5 ~ f1@17 ~ f1@3 g1@2 ~", M: "a1@17 ~ a1@5 ~ a1@18 c2@3 d2@2 ~",
  N: "eb2@17 ~ eb2@5 ~ d2@23 ~", O: "g2@17 ~ g2@2 ~ a2@2 ~ bb2@12 c3@5 ~ c2@5 ~",
  P: "[g2@23 ~ bb1@12 a1@24 ab1@12 g1@48 ~@24]/3", Q: "[~@21 f1@86 ~@37]/3",
  R: "[~@21 f1@15 ~@2 f1@5 f1@16 ~ f1@2 ~ g1@2 ~ a1@16 a1@4 ~@2 a1@16 c2@2 ~ d2@2 ~ eb2@15 ~ eb2@5 ~ d2@21 ~ g2@15 ~@2 g2@2 ~ a2@2 bb2@11 c3@5]/4",
  S: "~ c2@4 ~ f1@15 ~@2 f1@5 ~ f1@16 f1@2 ~",
  T: "[g1@2 ~ a1@16 a1@4 ~@2 a1@16 ~ c2@2 d2@2 ~ eb2@15 ~@2 eb2@5 d2@21 ~ g2@15 ~@2 g2@2 ~ a2@2 ~ bb2@11 c3@5 c2@4 ~@2 f1@15 ~ f1@5 ~ f1@16 f1@2 ~ g1@2 ~ a1@16 ~ a1@4 ~ a1@16 ~ c2@2 ~ d2@2 eb2@15 ~]/5",
  U: "~ eb2@5 d2@21 ~@2 g2@15 ~ g2@2 ~",
  V: "[a2@2 ~ bb2@11 c3@5 c2@4 ~@2 f1@15 ~@2 f1@5 f1@16 ~ f1@2 g1@2 ~ a1@16 ~ a1@4 ~ a1@16 ~ c2@2 ~ d2@2 ~ eb2@15 ~ eb2@5 ~ d2@21 ~ g2@18 ~ g1@3 ~ a1@3 bb1@8]/4",
  W: "[~@9 c2@20 f1@92 ~ f1@92 ~@26]/5",
})).s("gm_fretless_bass").gain(0.45)

// chords · epiano2 · "E PIANO2"
const epiano2 = note("<~@18 A@5 ~@11 B C D E B C D F@2 ~@13 G@5 H@7 I@4 ~@4>".pickRestart({
  A: "[~@46 g3 ~@2 a3 ~@2 c4 ~@48 e4@34 ~@12 g4@15 ~@9 gb4@15 ~@9 bb3@15 ~ [g3,db4]@13 [e3,c4]@16, ~@40 f2@32 ~@20 e3@43 ~@2 eb3@23 ~@2 d3@23 ~@4 d3@20 ~@31, ~@43 c3@28 ~@18 a2@46 ~@51 g2@24 ~@30, ~@95 g3@40 ~@5 g3@21 ~@4 gb3@21 ~@6 f3@18 ~@30, ~@98 g4@37 ~@9 c4@20 ~@4 c4@18 ~@54]/5", // Gdim C
  B: "~@6 g3 ~@2 a3 ~@2 c4 ~@35, f2@31 ~@17, ~ c3@9 ~@6",
  C: "~@4 e4@11 ~, a2@15 ~, ~ e3@14 ~, ~@2 g3@13 ~, ~@3 g4@12 ~",
  D: "~@3 g4@5 ~@3 gb4@5, eb3@23 ~ d3@23 ~, ~ g3@7 ~ gb3@7, ~@6 c4@19 ~@5 c4@17 ~",
  E: "~@3 bb3@5 [g3,db4]@4 [e3,c4]@4, g2@23 ~@25, ~@3 d3@20 ~@25, ~ f3@3 ~@4", // Gdim C
  F: "[~@3 bb3@5 [g3,d4]@4 [e3,db4]@8 [f3,c4]@4 [d3,b3]@8, g2@23 ~@73, ~@3 d3@20 ~@73, ~ f3@3 ~@12]/2", // G5 Dbm F5 G
  G: "[~@32 c4@31 ~@14 e4@31 ~@79 [e3,c4]@11 ~@6 g3 ~@2 a3 ~@2 c4 ~@29, ~@21 f2@42 ~@11 g4@34 ~@7 c4@22 ~ c4@16 ~@6 f3@17 ~@24 c3@25 ~@14, ~@12 c3@20 ~ a2@21 ~@5 g4@11 gb4@11 bb3@11 ~@28, ~@27 g3@37 ~@4 e3@40 ~@2 eb3@21 ~ d3@21 ~ g2@21 ~@23 f2@29 ~@13, ~@30 a3@34 ~@7 g3@37 ~@5 g3@19 ~@3 gb3@19 ~@3 d3@18 ~ [g3,db4]@19 ~@45]/5", // C Gdim
  H: "[~@14 e4@31 ~@10 g4@14 ~@9 gb4@13 ~@9 bb3@14 [g3,db4]@11 [e3,c4]@3 ~@19 c4@31 ~@13 e4@31 ~@80 [e3,c4]@11 ~@5 g3 ~@2 a3 ~@2 c4 ~@11, ~@3 a2@42 ~@46 g2@21 ~@24 f2@42 ~@10 g4@34 ~@8 c4@22 c4@16 ~@6 f3@17 [g3,db4]@19 ~@26, ~@6 e3@39 ~@2 eb3@21 ~ d3@21 ~@4 d3@18 ~@26 c3@40 ~@2 a2@42 ~@11 g4@22 gb4@22 bb3@22 ~@37, ~@8 g3@36 ~@6 g3@19 ~@3 gb3@19 ~@6 f3@17 ~@27 g3@37 ~@5 e3@40 ~ eb3@21 ~ d3@21 ~@2 g2@21 ~@23 f2@23, ~@11 g4@34 ~@8 c4@18 ~@4 c4@16 ~@53 a3@34 ~@8 g3@37 ~@4 g3@19 ~@3 gb3@19 ~@3 d3@18 ~@27 c3@20]/7", // Gdim C Gdim
  I: "[~@32 e4@31 ~@11 g4@14 ~@8 gb4@14 ~@9 bb3@17 [g3,db4]@17 [e3,c4]@5 ~@34, ~@21 a2@42 ~@47 g2@25 ~@57, ~@24 e3@39 ~@3 eb3@21 ~ d3@21 ~@4 d3@22 ~@57, ~@27 g3@36 ~@5 g3@19 ~@3 gb3@19 ~@7 f3@20 ~@56, ~@30 g4@34 ~@7 c4@18 ~@4 c4@16 ~@83]/4", // Gdim C
})).s("gm_epiano2").gain(0.29)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@9 A@5 B@4 C@5 D@2 E F G H@2 I J K ~ L M N O L M N P@2 ~ Q@3 R@4 ~@5 S@5 T@6 U@8 ~
>`.pickRestart({
  A: "[~@13 [f2,f3,a3,c4]@2 ~ [a3,c4]@24 [bb3,db4]@24 [a3,c4]@24 [eb2,g3,a3,c4]@24 [d2,gb3,a3,c4]@24 [g2,f3,g3,bb3]@24 [bb2,g3,bb3,db4]@24 [a2,f3,c4,f4]@23 ~@33, ~@2 [f2,f3]@9 ~@19]/5", // F Am Bbm Am Am7b5 D7 Gm7 Gdim …
  B: "[~@5 [f2,c3,a3]@6 [a2,e3,c4]@6 [eb3,c4,g4]@3 [d3,c4,gb4]@3 [g2,bb3,f4]]/4", // F Am Cm D7 Gm7
  C: "[~@16 [bb2,g3,db4]@12 [e3,c4,g4]@12 [f2,c3,a3]@49 [a2,e3,c4]@48 [eb3,c4,g4]@24 ~ [d3,c4,gb4]@24 [g2,bb3,f4]@24 ~ [bb2,g3,db4]@13 [e3,c4,g4]@16]/5", // Gdim C F Am Cm D7 Gm7 Gdim …
  D: "[[c3,a3]@2 [db3,bb3] [f2,c3,a3], f2@3 ~]/2", E: "[eb3,g3] [d3,gb3], c4", F: "[g2,g3,bb3,d4] [bb2,g3,bb3,db4]",
  G: "[a2,f3,c4]@8 [g2,f3,bb3]@4 ~ e2@3, ~@3 [e3,bb3]", H: "[[f2,f3,a3,c4] [a3,c4] [bb3,db4] [a3,c4], ~ [f2,f3]@3]/2",
  I: "[eb2,g3,a3,c4] [d2,gb3,a3,c4]", J: "[g2,f3,g3,bb3] [bb2,g3,bb3,db4]", K: "[a2,f3,c4,f4]@23 ~@25", L: "[f2,c3,a3]",
  M: "[a2,e3,c4]", N: "[eb3,c4,g4] [d3,c4,gb4]", O: "[g2,bb3,f4]@2 [bb2,g3,db4] [e3,c4,g4]",
  P: "[[g2,bb3,f4]@2 bb3 a3@2 ab3 g3@2]/2", // Gm7
  Q: "[~@34 c2@12 d2@6 ~ eb2@6 f2@7 d2@7 g2@8 ~@10 c3@14 d3@7 eb3@7 e3@14 db3@11]/3",
  R: "[~@2 d3@15 b2@8 ~ g2@9 c3@9 bb2@11 a2@21 f2@87 ~@29]/4",
  S: "[~@21 [f2,c3,a3]@44 ~ [a2,e3,c4]@44 [eb3,c4,g4]@22 [d3,c4,gb4]@22 [g2,bb3,f4]@22 [bb2,g3,db4]@11 [e3,c4,g4]@11 [f2,c3,a3]@42]/5", // F Am Cm D7 Gm7 Gdim C F
  T: "[~@3 [a2,e3,c4]@44 [eb3,c4,g4]@22 [d3,c4,gb4]@22 [g2,bb3,f4]@22 ~ [bb2,g3,db4]@11 [e3,c4,g4]@11 [f2,c3,a3]@44 [a2,e3,c4]@44 [eb3,c4,g4]@22 [d3,c4,gb4]@22 ~ [g2,bb3,f4]@19]/6", // Am Cm D7 Gm7 Gdim C F Am …
  U: "[~@3 [bb2,g3,db4]@11 [e3,c4,g4]@11 [f2,c3,a3]@44 [a2,e3,c4]@44 ~ [eb3,c4,g4]@22 [d3,c4,gb4]@22 [g2,bb3,f4]@26 [bb2,g3,db4]@17 [e3,c4,g4]@20 f2@91 ~@2 f2@67 ~@3]/8", // Gdim C F Am Cm D7 Gm7 Gdim …
})).s("gm_string_ensemble_1").gain(0.23)

// chords · string ensemble 1 · "Hi String"
const string_ensemble_1_2 = note("<~@23 A B C D E ~@6 F@2 G H I J K L ~@14 M@5 N@6 O@5 ~@4>".pickRestart({
  A: "~@24 c5@11 ~ f4@12", B: "db5@23 ~ c5@12 f5@12", C: "c6", D: "bb5", E: "c6@2 db6 c6", F: "[a5,c6]",
  G: "[a5,g6] [a5,gb6]", H: "[g5,f6]@2 db6 c6", I: "[c6,a6]", J: "[g5,c6]", K: "[c6,g6] [c6,gb6]",
  L: "[bb5,g6]@25 ~@23", // Eb
  M: "[~@21 [a5,c6]@44 ~ [a5,c6]@44 [a5,g6]@22 [a5,gb6]@22 [g5,f6]@22 db6@11 c6@11 [a5,c6]@42]/5", // Am A7 D G7 Am
  N: "[~@3 [a5,c6]@44 [a5,g6]@22 [a5,gb6]@22 [g5,f6]@22 ~ db6@11 c6@11 [a5,c6]@44 [a5,c6]@44 [a5,g6]@22 [a5,gb6]@22 ~ [g5,f6]@19]/6", // Am A7 D G7 Am A7 D G7
  O: "[~@3 db6@11 c6@11 [a5,c6]@44 [a5,c6]@44 ~ [a5,g6]@22 [a5,gb6]@22 [g5,f6]@26 db6@17 c6@21 ~@18]/5", // Am A7 D G7
})).s("gm_string_ensemble_1").gain(0.15)

// other · electric guitar jazz · "JAZ GTR"
const electric_guitar_jazz = note("<~@28 A B C@3 ~@30 D@3 E F G H@2 ~@5>".pickRestart({
  A: "a4@2 ~ c5@2 ~ a4@2 ~ g5@21 ~@9 g5@5 ~ f5@2 ~", B: "f5@7 ~@2 db5@3 ~@3 f4@2 ~ g4@2 ~ a4@4 ~@2 c5 ~@2 a5@18",
  C: "[~@15 c5@2 ~ a5@4 ~@2 a5@5 ~ bb5@2 ~ g5@7 ~@2 gb5@2 ~ g5@25 ~@8 g5@2 ~ f5@8 ~ e5@2 ~ f5@23 ~@28]/3",
  D: "[~@45 c5@9 ~@2 g5@9 ~@2 a5@7 ~@4 c5@24 ~ bb4@2 ~ a4@2 ~ bb4@2 ~ c5@16 ~@6 c5@9 ~]/3",
  E: "~ g5@10 ~ a5@9 ~@2 bb4@17 ~@2 a4@5 ~", F: "g4@2 ~ g4@18 ~@9 c5@10 ~@2 g5@6",
  G: "~@5 a5@10 ~ c5@23 ~@2 bb4@2 a4@2 ~ bb4@2", H: "[~ c5@16 ~@6 c5@10 ~ g5@10 ~ a5@10 ~ bb5@28 ~@12]/2",
})).s("gm_electric_guitar_jazz").gain(0.22)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@18 A ~@11 B ~@4 C ~ D ~@19 E F G ~ H ~ I ~ J ~ K L M ~@6>".pickRestart({
  A: "~@11 x ~@12", B: "~ x ~@14", C: "~@9 x ~ x ~@4", D: "~@5 x ~@2", E: "~@7 x", F: "x", G: "~@19 x ~@4",
  H: "~@28 x ~@4 x ~@14", I: "~@23 x ~@24", J: "~@13 x ~@4 x ~@29", K: "~ x ~@4", L: "~@23 x", M: "~ x ~@10",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~@14 A ~@15 B C ~ D ~@22 E ~@19>".pickRestart({
  A: "~@31 x ~@2 x ~@13", B: "~@13 x!2 ~", C: "~@8 x ~ x ~ x!3 ~", D: "~@19 x!3 ~@2", E: "~@7 x ~@3 x ~@36",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  A B ~@12 C D@2 E F G H I J K L@3 M ~@6 K M N O K L P M ~@14 Q R S T U V W X Y Z AA AB AC AD AE ~@5
>`.pickRestart({
  A: "~@29 x ~@11 x ~@6", B: "~@5 x ~@11 x ~@30", C: "~@23 x", D: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  E: "~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@3", F: "~@2 x ~@2 x ~@17 x",
  G: "~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6 x ~@5 x ~@5 x", H: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@6",
  I: "x!4 ~ x!3", J: "~@6 x ~@6 x ~@34", K: "~ x!7", L: "x!8", M: "x!4 ~@4", N: "~ x!4 ~ x!2", O: "x ~ x!2 ~@4",
  P: "x!5 ~ x!2", Q: "~@27 x ~@4 x ~@5 x ~@4 x ~@4", R: "~ x ~@4 x ~@5 x ~@5 x ~@4 x ~@5 x ~@4 x ~@13",
  S: "~@19 x ~@5 x ~@4 x ~@5 x ~@10 x", T: "~@5 x ~@4 x ~@10 x ~@5 x ~@20",
  U: "~@12 x ~@5 x ~@4 x ~@5 x ~@4 x ~@5 x ~@4 x ~@2", V: "~@3 x ~@4 x ~@5 x ~@4 x ~@28",
  W: "~@5 x ~@4 x ~@5 x ~@4 x ~@10 x ~@5 x ~@4 x ~@4", X: "~@2 x ~ x ~@10 x",
  Y: "~@3 x ~@4 x ~@5 x ~@4 x ~@5 x ~@4 x ~@5 x ~@5 x ~@4 x", Z: "~@5 x ~@32 x ~@4 x ~@4",
  AA: "~ x ~@4 x ~@11 x ~@4 x ~@5 x ~@10 x ~@4 x ~@2", AB: "~@30 x ~@5 x ~@5 x ~@4 x",
  AC: "~@5 x ~@4 x ~@5 x ~@4 x ~@5 x ~@4 x ~@5 x ~@9", AD: "~@23 x ~@5 x ~@4 x ~@5 x ~@7",
  AE: "~@3 x ~@4 x ~@5 x ~@11 x ~@6 x ~@14",
})).gain(0.3)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@17 A ~@3 B C ~@13 D E ~@2 D ~@17 F G ~@2 H I ~@2 J ~@2 K L ~@5>".pickRestart({
  A: "~@11 x ~@11 x", B: "~ x", C: "x", D: "~@5 x ~@2", E: "~ x ~@6", F: "~@7 x", G: "~ x ~", H: "~@9 x ~@6",
  I: "~ x ~@46", J: "~@6 x ~@10 x ~@6", K: "~@15 x", L: "~@5 x ~@6",
})).gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@14 A ~@3 B ~@8 C ~@2 D E ~ F ~ G ~ C ~@18 H ~ I ~ J G ~ B ~ K ~ L ~ M ~@6
>`.pickRestart({
  A: "~@22 x ~@2 x ~@5 x ~@2 x ~@13", B: "~@17 x ~@6", C: "~@7 x", D: "~@5 x!2 ~", E: "~@5 x ~ x ~@8",
  F: "~@14 x!5 ~@5", G: "~@13 x!2 ~", H: "~@2 x ~@3 x ~@4 x ~@36", I: "~@3 x!2 ~@19", J: "~ x ~@46", K: "~@8 x!2 ~@6",
  L: "~@19 x ~@28", M: "~@3 x!2 ~@11",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@18 A ~@8 B ~@9 C ~@21 D ~@3 E ~@3 F ~@2 G ~@5>".pickRestart({
  A: "~ x ~", B: "~@3 x", C: "~ x", D: "~@2 x", E: "~@3 x ~@4", F: "~ x ~@14", G: "~@5 x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@14 A ~@3 B ~@3 C ~@4 D ~@2 E F ~ G ~ H ~ D ~@18 I J ~ K ~ H ~ B ~ L ~ M ~ I ~@6
>`.pickRestart({
  A: "~@22 x ~@2 x ~@22", B: "~@31 x ~@16", C: "~@8 x!3 ~", D: "~@13 x ~@2", E: "~@3 x ~@4", F: "~ x!2 ~@5",
  G: "~@11 x!2 ~@35", H: "~@5 x ~@2", I: "~ x ~@46", J: "~@15 x", K: "~@23 x", L: "~ x ~", M: "~@17 x ~@30",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A ~@3 A ~@4 B ~@3 C B ~ B@3 ~ B ~ B ~ B ~@2 C ~@14 D ~ E ~ F G ~ A ~ H ~ I ~ J ~ K ~@4
// … 19 more lines

More by Eric Carmen