Strudelify

I'm Falling in Love

Boris Gardiner

KeyG majorTempo80 bpm
0:00/0:00
// I'm Falling in Love — Boris Gardiner
// 80 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 2 "BASS" named as a bass, played on electric bass finger (its electric guitar jazz patch is not one)
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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.

// bass · electric bass finger · "BASS"
const bass = note(`<
  ~@2 A B C D E F G H I J G K L M N G O P Q R S T U V W X Y Z W AA AB AC AD T AE V AF AG AH AI AJ AK AL AM R I AN AO AP
  I AQ AR AS AT AU AV Q I AN AW AX AY AZ BA AX BB BC BD BE BF BG BH H BI BJ
>`.pickRestart({
  A: "g1 ~ g1!3 ~ g1!2 f#1 ~ f#1!3 ~ f#1!2", B: "e1 ~ e1!3 ~ e1!2 d1 ~ d1!3 ~ d1!2",
  C: "c1 ~ c1!3 ~ c1!3 ~ c1!3 ~ c1!2", D: "d1 ~ d1!3 ~ d1!3 ~ d1!3 ~ d1!2", E: "~ g1!5 ~ g1 f#1!3 ~ f#1!2 ~@2",
  F: "~ e1!5 ~ e1 d1!3 ~ b1 b1@2 ~", G: "~ g1 c2!4 ~ g1 c2!3 ~ c2!2 ~@2", H: "~ a1 d2!4 ~ a1 d2!3 ~ d2 ~ d2!2",
  I: "~ g1!5 ~ g1 f#1!3 ~ f#1 ~ f#1!2", J: "~ e1!5 ~ e1 d1!3 ~ d1!2 ~@2", K: "~ a1 d2!4 ~ a1 d2!3 ~ d2!2 ~ f#1",
  L: "~ f#1 b1!4 ~ f#1 b1!3 ~ b1!2 ~@2", M: "~ b1 e2!4 ~ b1 e2!3 ~ e2!2 ~@2", N: "~ d1 g1!4 ~ g1!4 ~ g1!2 ~ g1",
  O: "~ e1 a1!4 ~ e1 a1!3 ~ a1!2 ~@2", P: "~ e1 a1!4 ~ a1!4 ~ a1!2 ~ a1", Q: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  R: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", S: "d2 ~ d2 ~ d2 ~ d2 ~@2 g1!5 ~ g1",
  T: "f#1!3 ~ f#1!2 ~ f#1 ~ e1!5 ~ e1", U: "~ e1!2 ~ e1!2 ~ e1 ~ f1!5 ~ f1", V: "c2!3 ~ c2!2 ~ c2 ~ a1 d2!4 ~ a1",
  W: "d2!3 ~ d2!2 ~ d2 ~ g1!5 ~ g1", X: "f#1!3 ~ f#1!3 ~@2 e1!5 ~ e1", Y: "~ e1!2 ~ e1 b1 e1@2 ~ f1!5 ~ f1",
  Z: "c2!3 ~ c2!2 ~ c2 ~ d2!5 ~ a1", AA: "f#1 ~ f#1!4 ~ f#1 ~ e1!5 ~ e1", AB: "b1!3 ~ d1 b1 ~ b1 ~ c2!5 ~ g1",
  AC: "c2!3 ~ c2!2 ~@3 a1 d2!4 ~ a1", AD: "d2!3 ~ d2!2 ~ d2 ~ g1!5 ~ d2", AE: "d1!2 b1 ~ b1!2 ~ b1 ~ g1 c2!4 ~ g1",
  AF: "d2!3 ~ d2!2 ~@3 f#1 b1!4 ~ f#1", AG: "b1!3 ~ b1 ~ b1!2 ~ e1!3 e2!2 ~ b1", AH: "e2!3 ~ b1 e2 ~ e2 ~ d1 g1!4 ~ d1",
  AI: "g1!3 ~ g1 d1 ~ g1 ~ g1 c2!4 ~ g1", AJ: "c2!3 ~ c2 ~ c2 ~@2 e1 a1!4 ~ e1", AK: "a1!3 ~ a1 ~@4 a1!5 ~ e1",
  AL: "a1!3 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", AM: "a1 ~ a1 ~ a1 ~ a1 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  AN: "~ e1!5 ~ e1!4 ~ e1 ~@2 e1", AO: "~ f1!5 ~ c1 c2!3 ~ c2 ~ c2 ~", AP: "~ a1 d2!4 ~ a1 d2!4 ~ d2!2 ~",
  AQ: "~ e1!5 ~ b1 e2!3 ~ e2 ~ [e1,a#1] e1", AR: "~ f1!5 ~ f1 c2!3 ~ c2@2 c2!2", AS: "~ a1 d2!4 ~ a1 d2!3 ~ d2!2 ~@2",
  AT: "~ g1!2 ~ g1!2 ~ d2 f#1!3 ~ f#1 ~ f#1!2", AU: "~ f1!5 ~ f1 e1!3 ~ e1 ~ e1!2",
  AV: "~ a1!5 ~ a1!2 ~ a1 ~ a1 ~ a1 ~", AW: "~ f1!5 ~ f1 c2!3 ~ c2@2 ~ g1", AX: "~ a1 d2!4 ~ a1 d2!3 ~ d2 ~ d2 ~",
  AY: "~ g1!5 ~ g1 f#1!3 ~ f#1 ~@2 f#1", AZ: "~ e1!5 ~ e1@2 e1!2 ~ e1 ~ e1 ~", BA: "~ f1 ~ f1!3 ~ f1 c2!3 ~ c2@2 ~@2",
  BB: "~ g1!5 ~ g1 f#1!3 ~ f#1 ~ f#1 ~", BC: "~ e1!5 ~ e1 ~ e1!2 ~ e1 ~ e1 ~", BD: "~ f1!5 ~ f1 c2!3 ~ c2 ~ c2 ~",
  BE: "~ d2!5 ~ a1 d2!3 a1 d1!2 ~ [c2,d2]", BF: "~ g1!2 ~ g1 ~ g1 ~@2 f#1!2 ~ f#1!3 ~",
  BG: "~ e1!5 ~ b1 e2!2 [b1,c#2] ~ e1 b1 e2 e1", BH: "f1!3 ~ f1 ~ f1!2 c2!3 ~ c2 ~@2 g1",
  BI: "~ g1!2 ~ g1!2 ~ d1 g1!3 ~ g1 ~ g1!2", BJ: "g1@7 ~@9",
})).s("gm_electric_bass_finger").gain(0.6)

// chords · epiano2 · "E.PIANO"
const epiano2 = note(`<
  ~@2 A@2 B C D E F G D E H G I J K L M@2 N O@2 P@2 Q@2 R@2 S@2 T U@3 T V@6 W@5 X Y Z AA X AB AC AD D AC AE AF D AG AH
  AI D AB AJ AK AL AM AN AO D AP AN AQ AR@2
>`.pickRestart({
  A: "[[g3,b3,d4]@4 g4@2 d5@2 f#4@4 d5@2 e4@13 ~ f#4 g4 a4 ~, ~@14 g#4 ~@17]/2", B: "[c4,e4,a4]@5 ~ [c4,e4,g4]@8 ~@2",
  C: "[d4,f#4,b4]@5 ~ [d4,f#4,a4]@8 ~@2", D: "[b3,d4,g4]@7 ~ [a3,d4,f#4]@7 ~", E: "[b3,e4,g4]@7 ~ [b3,d4,f#4]@7 ~",
  F: "[c4,e4,g4]@15 ~", G: "[d4,f#4,a4]@15 ~", H: "[c4,e4,g4]@7 ~", I: "~@8 f#4@7 ~, ~@4 b3@11 ~, ~@6 d4@9 ~",
  J: "[b3,e4]@12 b3@2 e4 ~, g4@15 ~", K: "[b3,d4,g4]@7 ~, f4@5 ~@11", L: "[c4,e4]@10 c4@2 e4 ~ [c4,e4,g4] ~, g4@3 ~",
  M: "[[e4,a4]@9 ~@3 c#5@3 ~, c#4@14 ~@4 c#4@9 ~@5, ~@10 e4@5 ~, ~@22 a4@9 ~]/2", // A5
  N: "[c4,e4,a4] ~ [e4,a4]@7 ~@7, c5@9 ~@7, ~ c4@6 ~", // Am A5
  O: "[~@12 b3 ~@2 g4@7 ~@2 [b3,d4,g4]@7 ~, a3@10 ~@2 a3@9 ~@11, ~ c4@11 ~ c4@8 ~@11, ~@2 e4@11 ~ e4@7 ~@11, ~@3 g4@11 ~@18]/2", // G
  P: "[[a3,d4,f#4]@7 ~ [b3,e4,g4]@13 ~@3 [a3,c4,f4]@7 ~]/2", // D Em F
  Q: "[[g3,c4,e4]@5 ~@3 [a3,d4]@10 ~@2 d4@2 f#4 ~ [b3,d4,g4]@7 ~, ~@2 f#4@3 ~@3, ~@18 a3@5 ~@9]/2", // C D5 G
  R: "[[a3,d4,f#4]@7 ~ [b3,e4]@10 ~@2 e4@2 g4 ~ [a3,c4,f4]@7 ~, ~@2 g4@3 ~@3, ~@18 b3@5 ~@9]/2", // D E5 F
  S: "[[g3,c4,e4]@6 ~@2 [a3,d4]@10 ~@2 d4@2 f#4 ~ [b3,d4,g4]@7 ~, ~@2 f#4@3 ~@3, ~@18 a3@5 ~@9]/2", // C D5 G
  T: "[a3,d4,f#4]@7 ~ [b3,e4,g4]@7 ~", U: "[[b3,d4,f#4]@6 ~@2 [g3,c4,e4]@13 ~@3 [a3,d4,f#4]@13 ~@3 [b3,d4,g4]@7 ~]/3",
  V: "[[b3,d4,f#4]@5 ~@3 [g3,c4,e4]@14 ~@2 [a3,d4,f#4]@12 ~@4 [b3,d4,f#4]@15 ~ [b3,e4,g4]@14 ~@2 [b3,d4,f4,g4]@14 ~@2 [c4,e4,g4]@8]/6", // Bm C D Bm Em G7 C
  W: "[~@4 [c4,e4,g4]@3 ~ [e4,a4]@16 ~@4 e4@9 ~@7 g4@10 ~@5 g4@8 ~ [a3,c4,e4,g4]@10 ~@2, ~@8 c#4@14 ~@2 a4@13 ~@20 c4@10 ~@13, ~@26 c#4@11 ~@3 [c4,e4,a4]@15 ~ a3@11 ~@13, ~@58 e4@9 ~@13]/5", // C A5 Am7 Am
  X: "[b3,d4,g4]@7 ~ [a3,d4,f#4]@6 ~@2", Y: "[b3,e4,g4]@12 [b3,e4,g4]@3 ~", Z: "[c4,f4,a4]@7 ~ [c4,e4,g4]@7 ~",
  AA: "[d4,f#4]@5 ~ d4 f#4, a3@9 ~ a3@5 ~", AB: "[b3,e4,g4]@7 ~", AC: "[a3,c4,f4]@7 ~ [g3,c4,e4]@7 ~",
  AD: "[a3,d4,f#4]@13 ~@3", AE: "[c4,e4]@3 ~ b3 ~ e4 ~, a3@5 ~ a3@9 ~, ~@5 c4@2 ~",
  AF: "[a3,c4,e4]@8 ~@4 g4@3 ~, g4@9 c4@6 ~, d3@3 ~@5 a3@7 ~, ~@10 e4@5 ~", AG: "[b3,e4]@5 ~ e4@2, g4, ~@5 b3@3",
  AH: "~@4 [a3,c4,f4]@5 ~@3 [g3,c4,e4]@4", AI: "[a3,d4,f#4]@7 ~@6 a3@2 ~, ~@2 a3 d4, ~@9 d4@2 f#4@5, ~@5 g4 ~@2",
  AJ: "[a3,c4,f4]@7 ~ [c4,e4]@6 g3 ~, ~@8 g3@5 ~@3", AK: "[a3,d4,f#4]@7 ~@2 e4 ~ d5@3 ~@2, ~@7 d3@9, ~ a3, ~@5 f#4@2 ~",
  AL: "[d4,g4,b4]@7 ~ [d4,f#4,a4]@7 ~", AM: "[e4,g4]@8 ~@3 b3@4 ~, b3@9 g4@6 ~, ~@8 b4@2 e4@5 ~",
  AN: "[c4,f4,a4]@7 ~ [c4,e4,g4]@6 ~@2", AO: "[a3,d4,f#4]@15 ~", AP: "[e4,g4]@9 ~@2 g4@4 ~, b3@8 ~ b3@6 ~, ~@10 e4@5 ~",
  AQ: "[a3,d4]@10 ~@2 d4@2 f#4 ~, f#4@3 ~, ~@10 a3@5 ~", AR: "[[b3,d4,g4]@11 ~ a3@3 ~ [g3,b3]@9 ~@7, ~@12 d4@13 ~@7]/2",
})).s("gm_epiano2").gain(0.45)

// chords · synth brass 2 · "SYNTHBRASS"
const synth_brass_2 = note(`<
  ~@3 A@2 B ~@16 C D E@3 F G@3 ~@7 H I@2 ~@5 J K L@2 M N O@2 P Q R S@2 ~ T@2 M U O@2 V W X@2 Y Z AA@2 AB AC ~
>`.pickRestart({
  A: "[~@4 d5@2 f#4@5 ~ d5@2 e4@7 ~@5 a4 g4 a4 g4 ~@2]/2", B: "~@2 b4 a4 b4 a4 ~@4 b4 a4 b4 a4 ~@2",
  C: "~@7 [a3,c4,e4,g4] [b3,d4]@6 ~ [b3,d4,g4], ~@8 g4 ~@7", D: "[a3,d4,f#4]@7 ~ [g3,b3,e4]@8",
  E: "[g4@2 a4@2 b4@2 ~@2 f4@8 [e4,g4]@7 ~ [d4,f#4,a4]@14 ~ [d4,f#4] [b3,d4,g4]@6 ~ [b3,d4,g4], ~@3 a4@5 ~@16, ~@8 c4@15 ~@25]/3", // Em D G
  F: "[a3,d4,f#4]@5 ~@2 [a3,d4,f#4] [b3,e4,g4]@8", // D Em
  G: "[g4@2 a4@2 b4@2 ~@2 f4@8 [e4,g4]@7 ~ [a3,d4,f#4]@12 ~@12, ~@3 a4@5 ~@16, ~@8 c4@15 ~@25]/3", // Em D
  H: "~@10 b4@2 d5 ~ b4 ~", I: "[d5@2 b4 a4@3 b4@2 d5@2 b4@2 a4@2 b4@5 ~@13]/2", J: "~@15 [a3,c4,e4,g4]",
  K: "[b3,d4]@5 ~@2 [b3,d4,g4] [a3,d4,f#4]@6 ~ [a3,d4,f#4], g4 ~@15", // Bm G D
  L: "[[g3,b3,e4]@6 ~@2 g4@2 a4@2 b4@2 ~@2 f4@8 [e4,g4]@7 ~, ~@7 a4@5 ~@4, ~@16 c4@15 ~]/2", // Em
  M: "[d4,f#4,a4]@12 ~@3 [d4,f#4]", N: "[b3,d4,g4]@6 ~ [b3,d4,g4] [a3,d4,f#4]@6 ~ [a3,d4,f#4]",
  O: "[[g3,b3,e4]@8 g4@2 a4@2 b4@2 ~@2 f4@8 [e4,g4]@7 ~, ~@7 a4@5 ~@4, ~@16 c4@15 ~]/2", P: "[d4,f#4,a4]@3 ~",
  Q: "~@4 b4 d5 ~@2 d5 e5@3 ~@4", R: "~@4 c5 b4 ~@2 c5 g4@5 ~@2, ~@9 b4 ~@6", S: "[e5@18 d5 ~ d5@2 b4 d5 ~@8]/2",
  T: "[[g3,b3,e4]@7 ~ g4@2 a4@2 b4@2 ~@4 f4@6 [e4,g4]@7 ~, ~@7 a4@5 ~@4, ~@18 c4@13 ~]/2", // Em
  U: "[b3,d4,g4]@5 ~@2 [b3,d4,g4] [a3,d4,f#4]@5 ~@2 [a3,d4,f#4]", V: "[d4,f#4,a4]@11 ~@4 [d4,f#4]",
  W: "[b3,d4,g4]@6 ~ [b3,d4,g4] [a3,d4,f#4]@5 ~@2 [a3,d4,f#4]", // G D
  X: "[[g3,b3,e4]@8 g4@2 a4@2 b4@2 ~@2 [c4,f4]@7 ~ [c4,e4,g4]@7 ~, ~@14 a4@9 ~@9]/2", // Em F5 C
  Y: "[a3,d4,f#4]@11 ~@4 [a3,d4,f#4]", Z: "[b3,d4,g4]@5 ~@2 [b3,d4,g4] [a3,d4,f#4]@6 ~ [a3,d4,f#4]",
  AA: "[[g3,b3,e4]@8 g4@2 a4@2 b4@2 ~@2 f4@7 ~ [e4,g4]@7 ~, ~@7 a4@5 ~@4, ~@16 c4@15 ~]/2", AB: "[d4,f#4,a4]@7 ~",
  AC: "[b3,d4,g4]", // G
})).s("gm_synth_brass_2").gain(0.35).pan(0.8)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@2 A B C D@3 E F@2 G E H@8 I@8 J@3 K@4 L M@8 N@2 A O P Q R O S T@4 U V O S Q W O S Q A O S Q A O S X@3
>`.pickRestart({
  A: "[b3,g4] [a3,f#4], d4", B: "[e4,g4]@7 [d4,f#4]@8 ~, b3@15 ~", C: "a4@3 g4@5, [c4,e4]@15 ~",
  D: "[b4@6 a4@10 [b3,g4]@8 [a3,f#4]@7 ~@9 [d4,f#4]@8, d4@32 b3@15 ~, f#4@16 ~@15 [e4,g4]@9 ~@8]/3", E: "[g3,c4,e4]",
  F: "[[a3,f#4]@2 [b3,g4] [a3,f#4], d4]/2", G: "[e4,g4]@8 [d4,f#4]@7 ~, b3",
  H: "[a3@15 ~@17 e4@16 [d4,f4]@15 ~ [g3,c4]@16 ~@16 a4@16 [c4,g4]@16, [d4,f#4]@32 g4@32 f3 ~@15 a3@48, ~@16 b3@47 e4@65, ~@80 c#4@31 ~@17]/8", // Dm C5 D
  I: "[[a3,c4,e4,g4]@23 ~ [b3,g4]@8 [a3,f#4]@8 [b3,e4,g4]@16 [f4,a4]@8 [e4,g4]@8 [a3,d4,f#4]@16 [b3,g4]@8 [a3,f#4]@8 [b3,e4,g4]@16 [c4,f4,a4]@8, ~@24 d4@16 ~@16 c4@15 ~@17 d4@16 ~@24]/8", // Am7 Em D Em F Em D Em …
  J: "[[e4,g4] [a3,f#4]@2 [b3,g4] [a3,f#4] [b3,e4,g4], ~ d4@4 ~]/3", // Em D Em D Em
  K: "[[d4,f#4]@8 [g3,c4]@15 ~ [a3,f#4]@16 [b3,g4]@8 [a3,f#4]@8 [b3,e4,g4]@8, ~ e4@2 d4@4 ~]/4", // D C5 D Em D Em
  L: "[d4,f#4]@7 ~ [g3,c4,e4]@8", // D C
  M: "[~@8 a3@15 ~@17 e4@16 [d4,f4]@16 [g3,c4]@16 c#4@31 ~ c4@8, ~ [d4,f#4]@4 g4@6 [a3,a4]@5, ~@24 b3@47 ~ e4@56]/8", // Dm C5 D A
  N: "[~@8 [a3,c4,e4,g4]@23 ~]/2", O: "[b3,e4,g4]", P: "[f4,a4]@7 [e4,g4]@9, c4@15 ~", Q: "[a3,d4,f#4]",
  R: "[b3,g4]@8 [a3,f#4]@7 ~, d4", S: "[f4,a4] [e4,g4], c4@15 ~",
  T: "[[a3,f#4]@16 [b3,g4]@8 f#4@8 f4@8 g3@7 ~ a3@15 ~, d4@31 ~ c4@31 ~, ~@24 a3@15 ~ e4@24]/4", U: "[d3,a3,c4,e4,g4]",
  V: "[b3,d4,g4] [a3,d4,f#4]", W: "[b3,g4]@7 ~ [a3,f#4]@8, d4", X: "[[a3,f#4]@16 [b3,g4]@21 ~@11, d4@19 ~@5]/3",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@2 A B ~@2 A B C D A B C D E F G C H@2 I@2 J K L M N K L M N K O M N K O M P Q R S T H U V I A F W D A F W D A W X I
  A F W D A F W D A F W D A F W D Y ~
>`.pickRestart({
  A: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", // G D
  B: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~", // Em Bm
  C: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~", // C
  D: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", // D
  E: "~@2 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~", // Bm
  F: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~", // Em
  G: "~@2 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~", // G7
  H: "~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~", // A
  I: "~@2 [a3,c4,e4,g4] ~@3 [a3,c4,e4,g4] ~@3 [a3,c4,e4,g4] ~@3 [a3,c4,e4,g4] ~", // Am7
  J: "~@2 [a3,c4,e4,g4] ~@3 [a3,c4,e4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // Am7 G
  K: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~", // D Em
  L: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~", // Em F
  M: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~", // C D
  N: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // D G
  O: "~@2 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // Bm C
  P: "~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~", // D Bm
  Q: "~@2 [b3,d4,f#4] ~@3 [b3,d4,f#4] ~@3 [b3,e4,g4] ~@3 [b3,e4,g4] ~", // Bm Em
  R: "~@2 [b3,e4,g4] ~@3 [b3,e4,g4] ~@3 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~", // Em G7
  S: "~@2 [b3,d4,f4,g4] ~@3 [b3,d4,f4,g4] ~@3 [c4,e4,g4] ~@3 [c4,e4,g4] ~", // G7 C
  T: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~@3 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~", // C A
  U: "~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~@3 [c4,e4,a4] ~@3 [c4,e4,a4] ~", // A Am
  V: "~@2 [c4,e4,a4] ~@3 [c4,e4,a4] ~@3 [a3,c4,e4,g4] ~@3 [a3,c4,e4,g4] ~", // Am Am7
  W: "~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~", // F C
  X: "~@2 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~", // Am
  Y: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~@3 [b3,d4,g4] ~", // G
})).s("gm_electric_guitar_muted").gain(0.4).pan(0.2)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted_2 = note(`<
  ~@2 A B C D E F G H I J G K L M N G O P Q R S T U V W X Y Z W AA AB AC AD T AE V AF AG AH AI AJ AK AL AM R I AN AO AP
  I AQ AR AS AT AU AV Q I AN AW AX AY AZ BA AX BB AZ BC BD BE BF BG H BH BI
>`.pickRestart({
  A: "g2 ~ g2!3 ~ g2!2 f#2 ~ f#2!3 ~ f#2!2", B: "e2 ~ e2!3 ~ e2!2 d2 ~ d2!3 ~ d2!2",
  C: "c2 ~ c2!3 ~ c2!3 ~ c2!3 ~ c2!2", D: "d2 ~ d2!3 ~ d2!3 ~ d2!3 ~ d2!2", E: "~ g2!5 ~ g2 f#2!3 ~ f#2!2 ~@2",
  F: "~ e2!5 ~ e2 d2!3 ~ b2 b2@2 ~", G: "~ g2 c3!4 ~ g2 c3!3 ~ c3!2 ~@2", H: "~ a2 d3!4 ~ a2 d3!3 ~ d3 ~ d3!2",
  I: "~ g2!5 ~ g2 f#2!3 ~ f#2 ~ f#2!2", J: "~ e2!5 ~ e2 d2!3 ~ d2!2 ~@2", K: "~ a2 d3!4 ~ a2 d3!3 ~ d3!2 ~ f#2",
  L: "~ f#2 b2!4 ~ f#2 b2!3 ~ b2!2 ~@2", M: "~ b2 e3!4 ~ b2 e3!3 ~ e3!2 ~@2", N: "~ d2 g2!4 ~ g2!4 ~ g2!2 ~ g2",
  O: "~ e2 a2!4 ~ e2 a2!3 ~ a2!2 ~@2", P: "~ e2 a2!4 ~ a2!4 ~ a2!2 ~ a2", Q: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~",
  R: "d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~ d3 ~", S: "d3 ~ d3 ~ d3 ~ d3 ~@2 g2!5 ~ g2",
  T: "f#2!3 ~ f#2!2 ~ f#2 ~ e2!5 ~ e2", U: "~ e2!2 ~ e2!2 ~ e2 ~ f2!5 ~ f2", V: "c3!3 ~ c3!2 ~ c3 ~ a2 d3!4 ~ a2",
  W: "d3!3 ~ d3!2 ~ d3 ~ g2!5 ~ g2", X: "f#2!3 ~ f#2!3 ~@2 e2!5 ~ e2", Y: "~ e2!2 ~ e2 b2 e2@2 ~ f2!5 ~ f2",
  Z: "c3!3 ~ c3!2 ~ c3 ~ d3!5 ~ a2", AA: "f#2 ~ f#2!4 ~ f#2 ~ e2!5 ~ e2", AB: "b2!3 ~ d2 b2 ~ b2 ~ c3!5 ~ g2",
  AC: "c3!3 ~ c3!2 ~@3 a2 d3!4 ~ a2", AD: "d3!3 ~ d3!2 ~ d3 ~ g2!5 ~ d3", AE: "d2!2 b2 ~ b2!2 ~ b2 ~ g2 c3!4 ~ g2",
  AF: "d3!3 ~ d3!2 ~@3 f#2 b2!4 ~ f#2", AG: "b2!3 ~ b2 ~ b2!2 ~ e2!3 e3!2 ~ b2", AH: "e3!3 ~ b2 e3 ~ e3 ~ d2 g2!4 ~ d2",
  AI: "g2!3 ~ g2 d2 ~ g2 ~ g2 c3!4 ~ g2", AJ: "c3!3 ~ c3 ~ c3 ~@2 e2 a2!4 ~ e2", AK: "a2!3 ~ a2 ~@4 a2!5 ~ e2",
  AL: "a2!3 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~", AM: "a2 ~ a2 ~ a2 ~ a2 ~ d3 ~ d3 ~ d3 ~ d3 ~",
  AN: "~ e2!5 ~ e2!4 ~ e2 ~@2 e2", AO: "~ f2!5 ~ c2 c3!3 ~ c3 ~ c3 ~", AP: "~ a2 d3!4 ~ a2 d3!4 ~ d3!2 ~",
  AQ: "~ e2!5 ~ b2 e3!3 ~ e3 ~ [e2,a#2] e2", AR: "~ f2!5 ~ f2 c3!3 ~ c3@2 c3!2", AS: "~ a2 d3!4 ~ a2 d3!3 ~ d3!2 ~@2",
  AT: "~ g2!2 ~ g2!2 ~ d3 f#2!3 ~ f#2 ~ f#2!2", AU: "~ f2!5 ~ f2 e2!3 ~ e2 ~ e2!2",
  AV: "~ a2!5 ~ a2!2 ~ a2 ~ a2 ~ a2 ~", AW: "~ f2!5 ~ f2 c3!3 ~ c3@2 ~ g2", AX: "~ a2 d3!4 ~ a2 d3!3 ~ d3 ~ d3 ~",
  AY: "~ g2!5 ~ g2 f#2!3 ~ f#2 ~@2 f#2", AZ: "~ e2!5 ~ e2 ~ e2!2 ~ e2 ~ e2 ~", BA: "~ f2 ~ f2!3 ~ f2 c3!3 ~ c3@2 ~@2",
  BB: "~ g2!5 ~ g2 f#2!3 ~ f#2 ~ f#2 ~", BC: "~ f2!5 ~ f2 c3!3 ~ c3 ~ c3 ~", BD: "~ d3!5 ~ a2 d3!3 a2 d2!2 ~ [c3,d3]",
  BE: "~ g2!2 ~ g2 ~ g2 ~@2 f#2!2 ~ f#2!3 ~", BF: "~ e2!5 ~ b2 e3!2 [b2,c#3] ~ e2 b2 e3 e2",
  BG: "f2!3 ~ f2 ~ f2!2 c3!3 ~ c3 ~@2 g2", BH: "~ g2!2 ~ g2!2 ~ d2 g2!3 ~ g2 ~ g2!2", BI: "g2@7 ~@9",
})).s("gm_electric_guitar_muted").gain(0.5).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~ [x!3 ~ x ~ x!3 ~@7] [x!4]!74 x>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<[x!2 ~ x!2 ~@3 x!2 ~ x!2 ~@3] [~@12 x!3 ~] [~ x ~ x]!74 ~>").gain(0.8)

// drums · low tom
const low_tom = s("lt").struct("<[~ x ~ x] [~@3 x] ~@75>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<[~@6 x!3 ~@7] ~ [x!16]!74 x>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~ [~ x ~@2] ~@3 [~@7 x] ~@71>").gain(0.8)

// drums · high tom
const high_tom = s("ht").struct("<[~@3 x ~@3 x] [~@3 x] ~@75>").gain(0.8)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ A ~ B@18 ~ C@23 ~@2 B@19 D B@2 E B@4 F G ~>".pickRestart({
  A: "~@15 x", B: "~@3 x ~@12", C: "~@11 x ~@4", D: "~@11 x ~ x ~@2", E: "~@3 x ~@9 x ~@2", F: "~@3 x ~@9 x ~ x",
  G: "~@11 x ~@3 x",
})).gain(4.06)

stack(
// … 3 more lines

More by Boris Gardiner