Strudelify

Almost Paradise

Mike Reno

KeyG majorTempo72 bpm
0:00/0:00
// Almost Paradise — Mike Reno
// 72 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 60 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/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 · lead 8 bass lead · "Bass&lead"
const lead_8_bass_lead = note("<~ A ~@16 B C D E F G H ~ I ~@9 J@7 K ~@2 L M@4 N@2 O P Q@4 ~>".pickRestart({
  A: "b4@31 ~@17",
  B: "[b3,d4,a4]@11 ~@2 [b3,d4,g4]@11 ~ [g2,d3,g3,b3,d4,g4]@10 ~@2 d3@11, [g2,d3,g3]@24 ~@12 [g2,g3,b3,d4,g4]@11 ~", // Bm7 G G5 G
  C: "~ [e2,e3,b3,e4,g4]@11 [e2,e3,b3]@12 ~@12 [c4,e4,g4]@9 ~@3, ~ f2 ~@10 [e4,g4]@24 ~@12, ~@8 [c2,c3]@7 ~", // Em E5 C Em C
  D: "[d4,g4,b4]@10 ~@3 [d4,g4,b4]@11 [e4,g4,b4]@12 [e4,g4,b4]@7 ~@5, [g2,g3]@24 [c2,c3]@19 ~@5", // G Em G C
  E: "[e3,c4,e4,a4]@12 ~ [c3,e3,c4,e4,a4]@10 ~ e3@12 e3@5 [b3,c4] ~@6, ~@23 e4@17 ~ e4@6 ~, ~@24 e2@17 ~@7, ~@12 c4 ~@11", // Am Cmaj7
  F: "~ c5@11 [e4,g4,c5]@11 ~ [a2,e3,c4,e4,b4]@18 ~@6, [c2,c3]@23 ~@25, [e4,g4] ~@3, ~ b4@22 ~@25", // C Am C Em
  G: "[d2,d3]@12 ~ d2@6 ~@5 [d3,a3]@8 ~@4 [d3,a3]@11 ~, [d4,b4]@19 ~@5 [c4,f#4,a4]@23 ~, ~@12 d3@6 ~@6 d4 ~@23", // D D5 G F#dim
  H: "c3@6 ~@7 g3@5 [d4,b4]@4 ~@2 [g2,g3]@24, [e4,c5]@19 ~@5 [d4,b4]@19 ~@5, ~@2 c3 ~@5", // G C G
  I: "[g4,b4,d5] ~, [g2,g3] ~@2", // G
  J: "[~ a2 ~@10 [b4,d5,g5]@5 ~@7 [b4,d5,f#5]@5 ~@6 [b4,d5,f#5]@8 ~@4 [b4,e5,g5]@8 ~@5 [b4,e5,g5]@8 ~@3 [b4,e5,g5]@12 [b4,e5,g5]@5 ~@8 [b4,d5]@11 ~ b4@11 [g4,b4,d5]@12 [g4,b4,d5]@9 ~@3 [a4,d5,f#5]@12 [a4,d5,f#5]@11 ~ [b4,e5,g5]@12 [b4,e5,g5]@11 ~@2 c5@11 [g4,c5,e5]@10 ~@3 e4@12 [e4,a4,c5]@10 ~ [d4,b4]@13 [d4,g4,b4]@10 ~@14 [c5,f#5,a5]@9 ~@3 [c2,c3,c5]@18 [g4,c5,e5]@2 ~@4 [g2,g3,g4,d5]@24, g3@21 ~@195 a3@22 ~@26 d3@21 ~@51, [b4,d5,g5]@7 ~@88 g4@12 [g4,d5]@11 ~@73 [g4,e5]@12 ~@12 [a4,c5]@12 ~@37 [c5,f#5,a5]@12 ~@11 [g4,e5]@18 ~@31, ~ g2@20 ~@3 [g2,g3]@19 ~@4 [e2,e3]@21 ~@3 [e2,e3]@16 ~@8 [g2,g3]@23 ~ g2@20 ~@4 [d2,d3]@22 ~@2 [e2,e3]@23 ~ [c2,c3]@22 ~@2 a2@22 ~@2 [g2,g3]@22 ~@4 a3@20 ~@51]/7", // G Bm Em Bm G D Em C …
  K: "[g2,g3,b4,d5,g5]@11 ~ [f2,f3,c5,f5]@11 ~ [g4,d5,g5]@24, ~@3 [g2,g3]@2 ~", L: "~@42 d#3 ~@5",
  M: "[d3@20 ~@4 [d3,a3,c4,f#4,a4]@4 ~@20 [b4,d5,a5]@3 ~@9 [b3,g4]@10 ~@3 [d3,b3,g4]@10 ~@2 d3@5 ~@7 e3@8 ~@2 e3 [b3,e5]@11 ~ [c2,c3]@11 b4 [g4,e5]@2 ~@9 [g2,g3] [g3,d4,g4]@11 ~ [d4,g4,b4]@11 ~ [e4,g4,b4]@10 ~@2 [e4,g4,b4]@3 ~@2 d3@2 ~@5, ~@47 [g2,g3]@3 ~@9 [b2,g3,d4]@12 ~ [g2,g3,d4,b4,d5,f#5]@11 [g3,b4,e5]@6 ~@6 [g3,e5]@2 ~@10 [b4,g5]@10 ~@2 [b4,e5,g5]@2 ~@10 g5@2 ~@10 [b4,a5]@11 ~@25 g3@6 ~@7, ~@59 [b4,d5,g5]@2 ~@23 [g2,b3,d4,g4]@6 ~@5 g2@9 ~@4 e3@30 ~@17 [g3,d5,g5]@12 ~ [c2,c3]@15 ~@9, ~@96 [e2,b3,e4,g4]@8 ~@3 e2@26 ~@11 g2@24 g2@20 ~@4, ~@108 [e4,g4]@24 [c4,e4] ~@10 d5@2 ~@47]/4", // D7 Bm7 Em G E5 C G G5 …
  N: "[[e3,c4,e4,a4,d5,f#5]@11 ~@2 [c3,c4,e4,a4]@8 ~@2 [e3,g4,b4,e5]@12 [e3,e5]@2 ~@4 [b3,c4] ~@6 [e4,g4,b4]@10 ~@2 [e4,g4,c5]@7 ~@5 [c4,e4,a4,c5]@12 [a4,c5]@6 ~@5 [d4,b4], d3@21 ~@27 [c3,g3]@19 ~@5 [a2,e3,a3]@18 ~@6, ~@11 f#5@2 ~@83, ~@12 e3@9 ~@2 c4@2 ~@10 [g4,b4] ~@5 e4@5 ~@38 e4@2 ~@10, ~@12 d5@2 ~@33 d5@11 ~@38]/2", // D7 Am Em E Cmaj7 Em C Am …
  O: "d3@12 [d3,d5,g5,b5]@6 ~@6 a3@12 ~ c5@8 ~@3, [d4,b4]@19 ~@4 d3@13 [d3,a3,f#5,a5]@8 ~@4, ~@23 [f#5,a5] d4 ~@23, ~@6 c4@5 ~, ~@24 c5@5 ~@19", // G D F#m
  P: "[g4,e5]@3 ~@12 g2@2 ~ c3@2 ~@4 [g4,b4,d5]@12 [g4,b4,d5]@11 ~, [e4,c5]@17 [d4,b4]@4 ~@27, c3@12 [c3,g3]@6 g2 ~@5 [g2,g3,d4]@23 ~", // C G C G C5 G5
  Q: "[~@48 [c4,e4]@20 ~@3 [d4,g4,b4]@24 [b4,d5,f#5]@14 ~@9 [g4,b4,e5]@20 ~@54, ~@47 c3@21 ~@3 [g2,g3]@88 ~@33]/4", // C G Bm Em G
})).s("gm_lead_8_bass_lead").gain(0.15).pan(0.3)

// chords · electric guitar jazz · "Jazz guit."
const electric_guitar_jazz = note(`<
  ~@8 A B C D E F G H I J K L M N O P Q ~@4 R ~@5 S T U V N O P Q ~@4 W X Y Z N AA P Q ~ AB ~@3
>`.pickRestart({
  A: "~@8 g4@2 ~ b4@7 c5@5 ~ d5@7 ~@2 d5@3 e5@5 ~ b4@4 ~@2", B: "a4@3 ~ g4@2 ~@37 d5@4 ~, ~@7 g4@41",
  C: "e4@4 e5@7 ~ e5@3 ~ b4@2 d5@21 ~@4 b4@4 ~", D: "~ b4@5 a4@2 ~@2 a4@6 b4@4 ~@2 a4@8 f#4@3 e4@3 d4@12",
  E: "~@8 g4@3 ~ b4@3 ~@2 c5@3 d5@10 ~@3 d5@2 e5@6 b4@2 g4@2 ~@3", F: "a4@3 g4@3 g4@24 ~@13 d5@4 ~",
  G: "e5@3 ~ e5@3 e5@12 b4@3 d5@20 ~@2 d5@3 ~", H: "[g4,e5]@2 g4@2 [g4,e5]@2 b4 d5@4 ~@3 d5@2, ~@2 e5 ~@4 b4@2 ~@7",
  I: "[g4,e5]@6 g4@6 [g4,e5]@3 [a4,f#5]@3 [b4,g5]@12 ~@6 a4@3 [a4,e5]@3 [f#4,b4]@4 ~@2, ~@6 e5@3 ~@26 e5@4 ~@9", // C D Em A5 B5
  J: "[b4,d5]@12 ~@12 [e4,c5]@6 [g3,g4,d5]@5 ~ [g4,e5]@5 ~ [a4,f5]@6, ~@23 e3@6 ~@6 g3@6 a3@6 ~", // Bm C G5 C Dm
  K: "[c4,c5,a5]@6 ~@4 [b4,g5]@2 ~ [b4,g5]@15 ~@5 g5@2 ~ a5@2 ~ g5@2 ~ f#5@2 ~ e5@2 ~, c6@3 b5@4 ~@9, ~@9 b3@3 b3@14 ~@7 g4@6 ~@9", // F Em
  L: "[a3,f#5]@5 ~ b3@3 ~ g5@6 ~@20 [g4,e5]@6 [a4,f#5]@6, ~@5 g5@4 b3@6 ~@33", // D C D
  M: "[c5,a5]@2 ~ [b4,g5] [b4,g5]@5 ~@5 [g4,g5] ~", N: "[a4,f#5]@3 [a4,f#5]!2 [b4,g5]@2 [g4,e5]@2 [g4,e5]@4 ~ d5@2",
  O: "[f4,d5]@2 ~ [e4,c5]!2 ~ [d4,b4] ~ [e4,c5]@2 d4@2 [c4,a4] b3@2 ~, ~@10 b4 ~@2 g4 ~@2", // Dm C G C F
  P: "[d4,b4]@6 [c4,c5] [a3,a4] a4@8, ~@4 a3@3 ~", Q: "[c4,e5]@6 [b3,d5] [b3,d5]@7 ~@2",
  R: "~ b4@4 ~ a4@3 ~ a4@5 ~ b4@4 ~@2 a4@8 f#4@3 e4@3 d4@12",
  S: "~@24 [e4,c5]@6 [g3,g4,d5]@4 ~@2 [g4,e5]@5 ~ [a4,f5]@6, ~@23 e3@6 ~@5 g3@6 ~ a3@6 ~", // C G5 C Dm
  T: "[c4,c5,a5]@6 ~@4 b4 ~ [b4,g5]@15 ~@6 g5@2 ~ [c4,c5,a5]@3 [b3,b4,g5]@3 [a3,a4,f#5]@2 ~ [g4,e5]@3, c6@3 b5@4 ~@9, ~@8 b3@17 ~@8 g4@6 ~@5 g3@3 ~, ~@9 g5@2 ~@37", // F Em F Em D C
  U: "[a3,f#5]@5 ~ b3@24 ~@6 [g4,e5]@6 f#5@6, ~@5 g5@24 ~@19", // D C
  V: "[c4,c5,a5,c6]@3 [b3,b4,g5]@9 ~@2 [g4,g5] ~, ~@3 b5@2 ~@11", // F Em G
  W: "~@34 g3 ~ [e3,e4,g4,e5]@5 ~ [f#3,f#4,a4]@6, ~@41 [a3,f#5]@6 ~", // Em F#m D
  X: "[c4,c5,a5]@6 ~@4 [b4,g5]@2 ~ [b4,g5]@15 ~@5 g5@2 ~ [c4,a5]@3 [b3,g5]@2 ~ f#5@2 ~ e5@2 ~, [a3,c6]@3 ~@5 b3@17 ~@8 g4@6 ~@2 a3@3 g3@3 ~, ~@3 b5@9 ~@4", // F Em F Em Am
  Y: "[a3,f#5]@5 ~ b3@2 ~ g5@6 ~@21 [g4,e5]@6 [a4,f#5]@6, ~@5 g5@3 b3@6 ~@34", // D C D
  Z: "[c5,a5,c6]@2 ~ [b4,g5] [b4,g5]@5 ~@5 [g4,g5] ~, ~@3 b5@2 ~@11", // F Em G
  AA: "[d4,f4,d5]@2 ~ [c4,e4,c5]!2 ~ [b3,d4,b4] ~ [e4,c5]@2 [b3,b4] ~ [a3,c4,a4] [g3,g4] ~@2, ~@8 c4 ~ d4@2 ~ b3@2 ~", // Dm C Bm C B Am G
  AB: "[c4,e5]@17 [b3,d5]@3 [b3,d5]@21 ~@7", // C Bm
})).s("gm_electric_guitar_jazz").gain(0.57).pan(0.7)

// chords · string ensemble 2 · "Legato string"
const string_ensemble_2 = note("<~@27 A@7 B ~ C@2 D@4 ~ E@2 ~ F@2 ~@12>".pickRestart({
  A: "[e5@45 ~ [c5,e5]@22 [b4,d5]@18 ~@9 [a4,a5]@37 ~@5 d5@4 ~@2 [b4,g5]@24 f#5@23 [e4,e5]@25 [d4,d5]@24 [c4,c5]@24 [b3,b4]@24 [c4,c5]@24 [b3,b4]@25, b4@35 ~@33 d4@26 ~ c#5@30 ~@7 d4@8 ~@3 g3@44 ~@149]/7", // C Bm A Em E D C B …
  B: "[c4,c5]@23 [e4,e5]@24 ~", C: "[[g4,g5]@47 [e4,e5]@48 ~]/2",
  D: "[[d4,d5]@39 ~@2 [d4,d5]@4 ~@3 f#4@20 ~@3 e4@21 ~@4 c4@18 ~@5 [e5,a5]@18 ~@6 [d5,b5]@22 ~@27, ~@47 f#5@22 ~ e5@20 ~@5 c5@22 ~@75]/4", // D A5 G
  E: "[~ [d#4,d#5,a#5], ~@47 d#2@34 ~@15]/2", F: "[~@47 [d5,f#5]@23 ~ f#5@7 ~@18]/2",
})).s("gm_string_ensemble_2").gain(0.23)

// chords · string ensemble 2 · "Legato string" · soft notes
const string_ensemble_2_soft = note("<~@27 A@2 B@2 ~@10 C ~@5 D ~@12>".pickRestart({
  A: "[g5@46 ~ [e4,g4]@17 ~@5 g3@25 ~@2, ~@46 c4@17 ~@33]/2", B: "[~@47 g4@46 ~@3]/2", C: "~@23 [c5,f#5,a5]@12 ~@13",
  D: "~@24 a5@7 ~@17",
})).s("gm_string_ensemble_2").gain(0.13)

// other · synth brass 2 · "Synt.brass"
const synth_brass_2 = note("<~@43 A@2 ~@15>".pickRestart({
  A: "[~@33 g4 ~@3 f#4 ~@2 f4 ~ e4 ~@3 d#4@15 ~@35]/2",
})).s("gm_synth_brass_2").gain(0.51).pan(0.6)

// chords · pad warm · "Thick pad"
const pad_warm = note("<A@7 B@4 C D@3 E@7 F G@3 H@2 I J@5 K@8 L@6 M N@4 O@6 ~>".pickRestart({
  A: "[[d3,b4,d5]@23 ~ f#3@23 [e2,e3,e4]@25 [d2,d3,d4,f#4]@23 ~ g3@47 [c#4,a4]@24 [d2,d4,b4]@23 d3@3 ~@70 [a4,d5]@23 ~@37 d3@10 d2@3, ~@23 [f#2,f#4]@24 ~@48 [c3,g4,c5,e5]@48 ~@47 g3@41 ~@55 g3@34 ~@16, ~@190 g4@26 ~@47 c5@18 ~@55, ~@203 [b3,d4]@79 ~@5 [d2,d5]@48 ~]/7", // G E D F#m G D5 F# C …
  B: "[~@23 e3@9 ~@2 d3@11 ~@57 d5@16 ~ e5@23 ~ [a2,c5,e5]@24 [d3,b4,d5]@25, [g3,b4,d5]@71 b4@30 b4@41 ~@50, [d4,g4]@36 ~@34 [g4,d5]@31 ~@17 e3@49 ~@25, ~@95 a5@47 g5@25 ~@25, ~@95 [g2,g3,g5]@24 ~@73]/4", // Am G G5 G
  C: "[a2,e3,a4,c#5,a5]", // A
  D: "[[g2,d3,g3,d5]@47 e5@47 ~ [c3,g4,c5]@24 [g3,d4,g4,b4]@24 [e4,g4,c5], [b4,g5]@93 ~ e5@25 ~@25]/3", // G5 C5 G C Em
  E: "[c3@23 e3@12 e3@5 ~@7 [c3,c4,e4,g4]@47 ~ [e3,e4,g4,c5]@24 [c4,e4]@12 [c4,f#4]@11 ~@49 e3@24 e3@11 ~ [d3,d5,f#5]@12 [b4,d5]@36 [b4,d5,f#5]@13 e5@17 f#5@6 [a2,c5,e5]@25, ~@23 [d3,e4,g4,b4]@24 ~@48 b4@4 ~@45 d3@47 [b4,e5]@35 ~@62 e3@48, ~@95 f4 ~@23 c3@23 ~ [g2,g3,b4,d5,a5]@48 ~@48 [d3,g5]@50 ~@47, ~@156 g5@70 ~@62 b4 ~@47]/7", // C Cdim D Bm Am Em7 E5 G …
  F: "[c2,c3,e4,g4,d5] [a2,a3,e4,a4,c5]", // C Am
  G: "[~@4 f#5@18 ~ [c5,f#5,a5]@22 ~@2 [c3,g4,c5,e5]@23 ~ [g2,g3]@21 ~@4 [g2,g5]@23 ~ [d3,a4,c5,f#5]@24, d3@46 ~@25 [d4,b4]@73, ~@4 [d5,b5]@41 ~@26 g4@48 b3@24 ~]/3", // F#dim C G D7 G
  H: "[[g2,d3,g3]@45 ~@2 [e2,e3,b4,e5,g5]@24 ~ f3@10 [f#3,f#5]@12 [e3,e5]@2, ~@71 [g3,g5]@12 ~@11 f#5 ~]/2", // G5 Em F# E G
  I: "~@4 a2@18 [d2,d3,d5]@25 [c#5,e5], ~@3 c5@19 ~@26", // D C#m
  J: "[a2@46 ~@2 d3@47 [e2,e3,e5]@11 g2@12 ~ g2@24 ~ b2 ~@22 [g2,g3,g4,b4,d5]@23 [c3,e4,g4,b4,c5]@28 b2 d3@20 [c3,e4], ~@47 [g2,g3,b4,g5]@48 [g4,b4]@49 ~@96, ~@106 [d3,d5]@37 [c3,e4,c5,e5]@25 ~@50 [g2,d4,g4,b4]@22]/5", // E G Cmaj7 C G D C G
  K: "[~@22 c6@25 ~@2 e4@45 ~ d4@13 d4@22 [g2,d3,b3,d4,g4]@13 ~@15 [d5,e5]@33 g3@24 ~@11 e5@12 ~ [c3,c5]@24 ~@2 c5@22 ~ g3@23 [a2,e4,a4,c5]@24 [d2,d3,d4,b4]@24 [d3,a3,c4,f#4,a4]@25, ~@6 g5@41 [e3,g5,b5,e6]@47 ~ a4@49 [e3,e4]@48 ~@23 g3@23 e5@49 [c3,e4,g4,c5]@24 ~@73, ~@95 [g2,d3,b3]@35 ~@13 [e2,b3,g4]@48 [g2,d5]@48 ~@24 [a2,e3,a4]@25 ~@96]/8", // G Dsus2 C Am G D7 Em E …
  L: "[[c3,e4,g4,c5]@22 [g2,d4,b4]@73 ~@24 [g4,a#4,d#5]@37 [c3,g4,c5]@35 [d#3,g4,a#4,d#5]@40 [d#3,g4,a#4,d#5]@8 [f#4,d5]@24 ~ [c4,f#4,a4]@24, ~@22 g4@13 ~@60 [d#3,g3,a#3]@61 ~@83 d3@48 ~]/6", // C G D# C5 D# D F#dim D#
  M: "[g2,d3,g3,a5,a6] [g2,d3,g3,g5,b5,d6,g6]@3", // Gsus2 G
  N: "[[e2,e3,b4,e5,g5]@47 [b4,d5,g5]@12 ~ f#5@35 [d3,d5,f#5]@21 ~@2 [e2,e3,g4,b4]@24 ~ [c3,e4,g4,d5]@22 c5@2 c5@23 ~ d3, ~@47 [g2,d3,a5]@48 ~@70 [a2,e3,e4,a4]@25 ~@2, ~@59 [b4,d5,g5]@36 ~@21 e5@27 ~@47 b4@2]/4", // Em G D Em C Gsus2 A5 G
  O: "[~@48 c3@21 [d4,g4,b4]@2 g3@12 ~@12 [g4,b4]@24 [c4,e4,c5,e5]@23 ~ e3@23 ~ d4@50 ~@22 d3@19 ~@30, ~@22 [d3,a3,a4]@25 e4@24 [g4,b4]@24 ~@143 g4@2 ~@48, ~@36 a5@14 ~@19 g2@7 ~@7 g3@50 ~@9 [a2,c4,a4,c5]@24 ~ g2@25 ~@96, ~@46 c5@24 ~ [d4,d5,f#5]@48 ~@119 e4@41 ~@9, ~@83 b3@23 ~@60 [g3,b4]@58 ~@64]/6", // G C D5 G Am D G
})).s("gm_pad_warm").gain(0.09).pan(0.4)

// chords · pad warm · "Thick pad" · soft notes
const pad_warm_soft = note("<A B C D@2 E@2 ~@2 F ~@5 G ~ H ~@3 I ~ J K ~@6 L ~@4 M ~@10 N ~@8 O P Q@2>".pickRestart({
  A: "[g2,g3,g4] ~", B: "~ d5", C: "~ e3 ~@46",
  D: "[~@23 d3@23 d4@3 ~ b3@9 ~@37, ~@23 g2@23 ~@2, ~@49 d3@37 ~@10, ~@49 d4@9 ~@38]/2", E: "[~@46 g2@36 d3 ~@13]/2",
  F: "~@5 a4@18 ~@25", G: "~@5 e3, ~@23 e2@24 ~", H: "~ b4@5 ~@6", I: "~@20 e5@3 ~@25", J: "~@43 e5@3 ~@2",
  K: "~@6 d3@5 ~", L: "~@7 g#2", M: "~@6 g4@11 ~@7", N: "d#5@24 g#4 ~@23", O: "~@10 g4 ~@13",
  P: "d3@12 ~@24 d5 d3@10 ~, ~@22 c4@25 ~, ~@18 f#4@5 ~", Q: "[~ g2@62 ~@33, [g3,g5]@9 ~@7, g4@47 ~@49]/2",
})).s("gm_pad_warm").gain(0.04).pan(0.4)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~@4 A@4 B C D E F@6 G H I J K L M@2 N O P Q@3 R S T@3 U V W X@2 Y Z AA AB AC AD AE AF@2 AG AH@3 AI@2 ~@3
>`.pickRestart({
  A: "a1 ~", B: "g2@22 ~ f#2@23 ~@2", C: "e2@23 d2@24 ~", D: "c2@23 g2@21 ~@4", E: "a2@22 ~ d2@23 ~@2",
  F: "[d2@3 ~ g2@18 ~@2 f#2@21 ~@2 e2@21 ~@3 d2@22 ~@2 c2@23 ~@2 g2@15 ~@2 g2@5 ~ c2@22 ~@3 g2@14 ~@2 g2@5 ~@2 c2@15 ~@3 c2@5 ~@2 b1@15 ~@2 b1@4 ~@2 e2@21 ~@3 c2@14 ~@11]/6",
  G: "g2@18 g2@5 ~ d2@16 ~@2 d2@5 ~, f2 ~@47", H: "e2@17 ~ g2@5 b2@17 ~ g2@3 ~@4", I: "g2@23 ~ d2@14 ~@3 d2@4 ~@3",
  J: "d2@16 ~ d2@4 ~@3 e2@15 ~@2 e2@5 ~@2", K: "c2@15 ~@3 c2@5 ~ a2@15 ~@3 a2@4 ~@2", L: "d2@15 ~@2 d2@5 ~@2 a2@21 ~@3",
  M: "[g2@22 ~@2 g2@69 ~@3]/2", N: "b2@23 f#2@16 ~@2 f#2@6 ~", O: "e2@23 d2@17 ~ d2@6 ~",
  P: "e2@17 ~ e2@5 ~ d2@17 ~ d2@5 ~",
  Q: "[a2@16 ~@2 a2@20 ~ a2@7 d2@17 ~@2 d2@5 ~ g2@12 f#2@11 ~ e2@16 ~@2 e2@6 ~ d2@16 ~ d2@5 ~@2]/3",
  R: "e2@16 ~ e2@5 ~@2 g2@15 ~@2 g2@6 ~", S: "~ e2@15 ~@2 e2@6 d2@14 ~@3 d2@5 ~@2",
  T: "[e3@15 ~@2 e3@5 ~ a3@15 ~@3 a3@5 ~ e3@24 ~@24 g2@16 ~@2 g2@5 ~ f#2@17 ~ e2@5 ~@2]/3",
  U: "e2@22 ~@2 g2@16 ~ e2@5 ~@2", V: "a2@11 ~ g2@22 f#2 d2@4 ~ g2@5 ~@3", W: "f#2@10 ~ f#2@10 ~@2 e2@14 ~@4 e2@5 ~@2",
  X: "[c2@10 ~@2 c2@9 ~@2 a2@15 ~@3 a2@5 ~ d2@16 ~@2 d2@5 ~ a2@16 ~@2 a2@6 ~]/2", Y: "c2@16 ~ b1@5 ~ b1@22 ~@3",
  Z: "g2@11 f#2@12 ~ g2@24", AA: "d#2@17 a#1@5 ~@2 d#2@15 ~@3 d#2@4 ~@2", AB: "c2@18 d#2@6 ~ g2@12 ~@5 a#1@3 ~@3",
  AC: "d#2@22 ~@2 d#2@14 ~@3 d#2@4 ~@3", AD: "e2@15 ~@2 e2@5 ~@3 f#2@15 ~@2 d2@3 ~@3",
  AE: "g2@16 ~@2 g2@5 ~ d2@15 ~@2 d2@4 ~@3", AF: "[e2@17 g2@6 ~ e2@17 a2@5 ~ g2@16 ~@2 g2@6 ~ d2@15 ~@2 d2@4 ~@3]/2",
  AG: "f#2@15 ~@2 f#2@5 ~ e2@16 ~@3 e2@4 ~@2",
  AH: "[c2@10 ~@2 c2@8 ~@3 a2@15 ~@3 a2@5 ~ d2@16 ~@2 d2@5 ~@21 d2 ~@3 c2@16 ~@3 b1@3 ~@3 b1@24, ~@72 a2@23 ~@49]/3",
  AI: "[d2@24 ~@23 c2@15 ~@3 b1@4 ~@2 b1@24 ~]/2",
})).s("gm_electric_bass_pick").gain(0.33)

// chords · electric guitar jazz · "Pedal steel"
const electric_guitar_jazz_2 = note("<~@26 A B C D E F G H I J ~@8 K L M N O P Q R S T U ~ V ~@3>".pickRestart({
  A: "~@8 g3@2 ~ b3@6 ~ c4@5 ~ d4@7 ~@2 d4@3 e4@5 ~ b3@4 ~@2", B: "a3@3 g3@3 ~ g3@26 ~@10 d4@4 ~",
  C: "e4@3 ~ e4@7 ~ e4@3 b3@2 ~ d4@21 ~@4 b3@4 ~", D: "~ b3@4 ~ a3@3 ~ a3@5 ~ b3@4 ~@2 a3@8 f#3@3 e3@3 ~@12",
  E: "~@7 g4@3 ~ b4@3 ~@3 c5@3 d5@10 ~@3 d5@2 e5@5 b4@2 ~ g4@2 ~@3", F: "a4@3 g4@3 g4@12 ~@25 d5@4 ~",
  G: "e5@3 e5@3 ~ e5@11 b4@3 d5@20 ~@3 d5@3 ~", H: "e5@6 e5@3 ~@3 e5@5 d5@3 ~ d5@12 ~@9 d5@3 ~@3",
  I: "e5@6 e5@6 [g4,e5]@3 [a4,f#5]@3 [b4,g5]@12 ~@5 e5@4 a4 ~ [f#4,b4]@4 ~@3, ~@39 e5@4 ~@5", J: "[d4,d5]@3 ~@5",
  K: "~@3 a#3@2 ~ d#4@2 ~ e4 ~ g4@15 ~@3 f4@3 ~@3 f4@5 ~ d#4@2 ~@5, ~@4 f4 ~@19",
  L: "f4@3 ~ d#4@3 d4@3 d#4@3 c4@28 ~@7", M: "~@8 a#3@2 d#4@2 ~@6 g4@8 ~ g4@18 ~@3, ~@14 f4@7 ~@27",
  N: "[d4,f#4]@4 ~@5 [d4,f#4]@2 ~ [d4,f#4]@4 ~ [e4,g4]@5 [f#4,a4]@12 ~@14", // D Em F#m
  O: "[a3,c6]@3 ~@7 [b4,g5]@2 ~ [b4,g5]@15 ~@5 g5@2 ~ [c4,a5]@3 [b3,g5]@2 ~ f#5@2 ~ e5@2 ~, ~@8 b3@17 ~@8 g4@6 ~@2 a3@3 g3@3 ~, ~@3 b5@9 ~@4", // Am Em F Em
  P: "[a3,f#5]@5 ~ b3@2 ~ g5@6 ~@21 [g4,e5]@6 [a4,f#5]@6, ~@5 g5@3 b3@6 ~@34", // D C D
  Q: "[c5,a5,c6]@2 ~ [b4,g5] [b4,g5]@5 ~@5 [g4,g5] ~, ~@3 b5@2 ~@11", // F Em G
  R: "[a4,f#5]@3 [a4,f#5]!2 [b4,g5]@2 [g4,e5]@2 [g4,e5]@4 ~ d5@2", // D Em C
  S: "[d4,f4,d5]@2 ~ [c4,e4,c5]!2 ~ [b3,d4,b4] ~ [e4,c5]@2 [b3,b4] ~ [a3,c4,a4] [g3,g4] ~@2, ~@8 c4 ~ d4@2 ~ b3@2 ~", // Dm C Bm C B Am G
  T: "[d4,b4]@6 [c4,c5] [a3,a4] a4@8, ~@4 a3@3 ~", U: "[c4,e5]@6 [b3,d5] [b3,d5]@7 ~@2",
  V: "[c4,e5]@17 [b3,d5]@3 [b3,d5]@21 ~@7", // C Bm
})).s("gm_electric_guitar_jazz").gain(0.27).pan(0.6)

// other · pad metallic · "Tine pad"
const pad_metallic = note("<~@25 A@2 ~@33>".pickRestart({
  A: "[f#5@23 [e4,e5]@23 d4@25 ~@25, ~@46 d5@21 ~@29]/2", // E
})).s("gm_pad_metallic").gain(0.17)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@4 B@3 C B@3 C B D B C B C B@3 A E B@2 C B@4 E F B@7 G B@3 ~ B C E H B C B I@2 ~@3
>`.pickRestart({
  A: "x", B: "x!2", C: "x ~@3 x ~@2 x", D: "x ~@2 x ~@4", E: "~ x", F: "~@10 x!3 ~ x ~", G: "x ~@10 x ~@11 x ~@24",
  H: "x ~@23 x ~@16 x ~@6", I: "x ~@22 x ~@24",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@18 A@5 B@2 ~@11 A@7 ~ A B A ~ A@7 C D ~@3>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@11 x ~@23 x ~@12", D: "~@11 x ~@36",
})).gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<~@11 A ~@5 B ~@17 C ~@7 D E F ~ G ~@12>".pickRestart({
  A: "~@7 x", B: "~@8 x!2 ~@2 x!4", C: "~@11 x ~@14 x ~@15 x ~@2 x ~@2", D: "~@9 x!3", E: "x", F: "~@9 x ~ x",
  G: "~@27 x ~@2 x ~@7 x ~@3 x ~@2 x ~@2",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<~@8 A@9 B C D E F G H I ~ A@3 J A B A@3 ~ C D E F G H I ~@17>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~ x ~@4 x ~@4 x ~@5 x ~@5 x ~@6 x ~@5 x ~@5 x ~@5",
  D: "x ~@5 x ~@4 x ~@5 x ~@5 x ~@6 x ~@5 x ~@4 x ~@6", E: "x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x",
  F: "~@5 x ~@6 x ~@4 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x", G: "~@6 x ~@4 x ~@5 x ~@5 x ~@5 x ~@6 x ~@4 x ~@5 x",
  H: "~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x ~@5 x", I: "~@5 x ~@6 x ~@4 x ~@5 x ~@6 x ~@5 x ~@4 x ~@5 x",
  J: "~@12 x ~@22 x ~@12",
})).gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~@9 B ~ C ~ C ~ A ~@5 C ~ C D C D E ~@7 F ~ G D H ~ C ~ I ~ I ~@6>".pickRestart({
  A: "~@35 x ~@3 x ~@3 x ~@4", B: "~@6 x ~@3 x!2 ~@4", C: "~@7 x", D: "x", E: "~@10 x ~@2 x ~@2", F: "~@6 x!3 ~@3",
  G: "~@5 x", H: "~@8 x!2 ~@2", I: "~@41 x ~@6",
})).gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<~@35 [x ~@3 x ~@3 x ~@24 x ~@2 x ~@11] ~@8 x ~@15>").gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@12 A ~@5 A ~@22 A ~@5 A@2 B A B A@2 B ~@5>".pickRestart({
  A: "x", B: "~ x ~@46",
})).gain(0.8)

// drums · ride bell
const ride_bell = s("rd").struct("<~@12 A ~@10 B C D A ~@3 A ~@5 A ~@7 A ~ A@2 ~ A@6 ~@5>".pickRestart({
  A: "x", B: "~ x", C: "x!2", D: "~ x ~@46",
})).gain(0.8)

stack(
// … 4 more lines