Strudelify

Feels Like the First Time

Foreigner

KeyG majorTempo110 bpm
0:00/0:00
// Feels Like the First Time — Foreigner
// 110 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 11 lead 2 sawtooth (copy of ch 12 pad new age); ch 15 distortion guitar (copy of ch 14 distortion guitar, 0.067 beats late)
// note: Full arrangement: all 96 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// bass · electric bass pick
const bass = note(`<
  A B@3 C D@4 E@3 F E@3 G H I H J K L K M@2 D@2 N O D@3 E@3 F E@3 G H I H J K L K P Q R S T@8 U@2 V W X Y Z AA AB@3 AC
  AD AB@2 AE AF@3 AG AB@3 AC AB@7 AH ~@4
>`.pickRestart({
  A: "~@3 g1", B: "~ g1 ~ g1", C: "~ g1 ~@2", D: "g1 ~ g1 ~ g1 ~ g1 ~", E: "g1@2 g1 ~ g1 ~ g1 ~",
  F: "g1@2 g1 ~ g1 e1 f1 f#1", G: "g1@4 g1@2 ~@2 g1@2 e1 ~ f1 d1 e1@2", H: "a1@2 a1 ~ a1 ~ a1 ~",
  I: "a1 ~ a1 ~ a1 ~ f#1 g1", J: "a1 ~ a1 ~ a1 g#1 a1 a#1", K: "b1@2 b1 ~ b1 ~ b1 ~", L: "b1@2 b1 ~ b1 ~ b1 a1",
  M: "[b1@2 b1 ~ b1 c2 ~ g1@2 g1 g1@2 g1 ~ g1 ~]/2", N: "g1 ~ g1 ~ g1 e1 f1 f#1", O: "g1 ~ g1@2 g1 ~ g1 ~",
  P: "b1@2 b1 ~ a1 b1 d2@2", Q: "~ e2@31", R: "~ d2@15", S: "~ c2@7",
  T: "[~@5 b1@34 e2@33 d2@34 c2@33 b1@34 e2@4 b2@4 ~@5 e3@4 f#3@16 d2@4 ~ a2@4 ~@4 d3@4 e3@17 c2@4 g2@4 ~@5 c3@3]/8",
  U: "[~ d3@17 b1@4 ~@8 c3@4 b2@8 ~ f#2@8 e2@4 b2@4 ~@5]/2", V: "e3@4 f#3@17 d2@4 a2@4 ~@3",
  W: "~ d3@4 e3@17 c2@4 g2@4 ~@2", X: "~@3 c3@4 d3@17 b1@6 ~@2", Y: "~@8 b2@6 ~@3 f#2@8 c2@3 ~ c2@3",
  Z: "~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3", AA: "~ c2@3 ~ c2@3 ~ c2@3 ~ c2@3 ~@5 g1@3 ~ g1@4 ~@3",
  AB: "~ g1@4 ~@4 g1@4 ~@4 g1@4 ~@4 g1@4 ~@3", AC: "~ g1@4 ~@4 g1@4 e1@4 f1@4 f#1@4 g1@4 ~@3",
  AD: "~ g1@8 g1@4 ~@4 g1@4 ~@4 g1@4 ~@3", AE: "~ g1@4 ~@4 g1@4 ~@4 g1@4 ~@11", AF: "~ g1@8 ~@8 g2@8 ~@7",
  AG: "~@9 a2@4 a2@4 g2@2 e2@2 d2@4 g1@4 ~@3", AH: "~ g1@4 ~@27",
})).s("gm_electric_bass_pick").gain(0.78)

// bass · electric bass pick · soft notes
const bass_soft = note(`<
  ~@91
  [~@9 g1@4 e1@4 f1@4 f#1@4 g1@4 ~@3]
  [~ g1@4 ~@4 g1@4 ~@4 g1@4 ~@4 g1@4 ~@3]!3
  [~ g1@4 ~@4 g1@4 ~@4 g1@4 ~@11]
>`).s("gm_electric_bass_pick").gain(0.31)

// chords · distortion guitar
const distortion_guitar = note(`<
  A B@2 C D B@2 C D ~@8 E F E F G H G I@3 C D B@2 C D ~@8 E F E F G H G J K L M N O P Q R S T@8 U V W X Y Z W X Y AA AB
  AC AD AE W X Y Z W X Y Z W X Y AF ~@4
>`.pickRestart({
  A: "~@10 c3 d3 f3 ~ g2@2", B: "[[g3,b3]@2 ~ [g3,b3] ~ [g3,b3] ~ [g3,b3]@3 ~ [f3,a3]@4 ~]/2",
  C: "[e3,a3]!2 ~ [e3,a3] ~ [e3,a3]@2 ~", D: "[e3,a3]@4 [e3,a3]@4 ~@4 [g3,b3]@6 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~",
  E: "[a3,d4,f#4] [a3,d4,f#4]@5 [a3,d4,f#4] ~", F: "[a3,c#4,e4]@5 ~ [a3,e4] ~, ~@3 c#4",
  G: "[b3,e4,g#4] [b3,e4,g#4]@5 [b3,e4,g#4] ~", H: "[b3,d#4,f#4]@5 ~ [b3,f#4] ~, ~@3 d#4",
  I: "[[b3,d#4,f#4]@5 [c4,e4,g4] ~ [g3,b3]@3 ~ [g3,b3] ~ [g3,b3] ~ [g3,b3]@3 ~ [f3,a3]@4 ~]/3", // B C G F
  J: "[b3,d#4,f#4]@4 a2 b2 d3@2", K: "~ e3@31", L: "~ d3@15", M: "~ c3@7", N: "~@5 b2@27", O: "~@7 d3@25", P: "~ d3@3",
  Q: "~@5 c3@11", R: "~@11 b2@21", S: "~@13 e3@19",
  T: "[~@14 d3@34 c3@34 b2@33 e3@34 d3@33 c3@34 b2@33 [c3,g3]@4 [c3,g3]@3]/8", // C5
  U: "~ [c3,g3]@4 [c3,g3]@4 [c3,g3]@4 [c3,g3]@4 [c3,g3]@4 [c3,g3]@4 [c3,g3]@4 [c3,g3]@3", // C5
  V: "~ [c3,g3]@4 [c3,g3]@4 [c3,g3]@4 [c3,g3]@4 ~@4 [d3,g3,b3]@4 [g3,b3]@7", // C5 G
  W: "~@5 [g3,b3]@4 ~@4 [g3,b3]@4 ~@4 [g3,b3]@11", X: "~@5 [f3,a3]@16 ~@4 [e3,a3]@4 [e3,a3]@3",
  Y: "~@5 [e3,a3]@4 ~@4 [e3,a3]@8 ~@4 [e3,a3]@4 [e3,a3]@3", Z: "~@5 [g3,b3]@6 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~ [g3,b3]@7",
  AA: "~@5 [g3,b3]@6 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~ f4 d4 ~ g3 f4 d4 ~", // G
  AB: "g3 f4 d4 ~ g3 f4 d4 ~ g3 f4 d4 ~ g3 f4 d4 ~ g3 f4 d4 ~ g3 f4 d4 ~ g3 e4 c#4 ~ g3 e4 c#4 ~",
  AC: "g3 e4 c#4 ~ g3 e4 c#4 ~ g3 e4 c#4 ~ g3 e4 c#4 ~ g3 e4 c#4 ~ g3 e4 c#4 ~ g3 d#4 c4 ~ g3 d#4 c4 ~",
  AD: "g3 d#4 c4 ~ g3 d#4 c4 ~ g3 d#4 c4 ~ g3 d#4 c4 ~ g3 d#4 c4 ~ g3 d#4 c4 ~ g3 d#4 c4 ~ g3 d#4 c4 ~",
  AE: "g3 d#4 c4 ~ g3 d4 b3 ~ g3 d4 b3 ~ g3 d4 b3 ~ g3 d4 b3 ~ g3 d4 b3 ~ g3 [g3,b3]@7", AF: "~@5 [g3,b3]@6 ~@21",
})).s("gm_distortion_guitar").gain(0.25).pan(0)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note("<~@33 A B C D A B C B ~@50 E F G H I>".pickRestart({
  A: "~@16 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ g2 ~", // G5
  B: "[g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ g2 ~@3 [g2,d3] ~ [g2,d3] ~@3 [g2,d3] ~ [g2,d3] ~@3 [g2,d3] ~", // G5
  C: "[g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ [g2,d3] ~@5 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ [g2,d3] ~@3 [g2,d3] ~", // G5
  D: "[g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ g2 ~@3 [g2,d3] ~ e2@4 f2@4 f#2@4", // G5
  E: "~@11 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~ [g3,b3]@7", F: "~@5 [g3,b3]@4 ~@4 [g3,b3]@4 ~@4 [g3,b3]@11",
  G: "~@5 [f3,a3]@16 ~@4 [e3,a3]@4 [e3,a3]@3", H: "~@5 [e3,a3]@4 ~@4 [e3,a3]@8 ~@4 [e3,a3]@4 [e3,a3]@3",
  I: "~@5 [g3,b3]@6 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~@8", // G
})).s("gm_distortion_guitar").gain(0.13).pan(0)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~ A@2 B C A@2 B C ~@8 D@4 E@3 F@3 B C A@2 B C ~@8 D@4 E@3 G H I J K L M N O P Q@8 R@2 S T@3 S U@6 V S T@3 S T@3 S W@3
  ~@4
>`.pickRestart({
  A: "[~ [g3,b3]@8 ~@4 [g3,b3]@4 ~@4 [g3,b3]@4 ~@4 [g3,b3]@12 ~@4 [f3,a3]@16 ~@3]/2", // G F
  B: "~ [e3,a3]@4 [e3,a3]@4 ~@4 [e3,a3]@4 ~@4 [e3,a3]@8 ~@3", // A5
  C: "~ [e3,a3]@4 [e3,a3]@4 ~@4 [g3,b3]@6 e3@2 f3@2 ~@2 f3@3 ~ g3@3", D: "~ a2@4 a2@8 ~@8 a2@8 a2@3",
  E: "~ b2@4 b2@8 ~@8 b2@8 b2@3",
  F: "[~ b2@4 b2@8 ~@8 c3@4 ~@4 [g3,b3]@12 ~@4 [g3,b3]@4 ~@4 [g3,b3]@4 ~@4 [g3,b3]@12 ~@4 [f3,a3]@16 ~@3]/3", // G F
  G: "~ [b3,d#4,f#4]@16 a2@4 b2@4 d3@7", H: "~ e3@31", I: "~@3 d3@29", J: "~ c3@7", K: "~@3 b2@13", L: "~@7 d3@25",
  M: "~@9 d3@23", N: "~@5 c3@11", O: "~@3 b2@5", P: "~@7 e3@9",
  Q: "[~@15 d3@34 c3@33 b2@34 e3@33 d3@34 c3@33 b2@33 ~ [c3,g3]@4 [c3,g3]@2]/8", // C5
  R: "[~ [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 [c3,g3]@2 ~@2 [d3,g3,b3]@2 [g3,b3]@3]/2", // C5 G
  S: "~@3 [g3,b3]@2 ~@2 [g3,b3]@2 ~@2 [g3,b3]@5", // G
  T: "[~@6 [f3,a3]@16 ~@4 [e3,a3]@4 [e3,a3]@4 ~@4 [e3,a3]@4 ~@4 [e3,a3]@8 ~@4 [e3,a3]@4 [e3,a3]@4 ~@4 [g3,b3]@6 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~ [g3,b3]@6]/3", // F A5 G
  U: "[~@6 [f3,a3]@16 ~@4 [e3,a3]@4 [e3,a3]@4 ~@4 [e3,a3]@4 ~@4 [e3,a3]@8 ~@4 [e3,a3]@4 [e3,a3]@4 ~@4 [g3,b3]@6 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~ d4@2 ~@2 a#3@4 b3@4 d4@4 g4@2 ~@2 g4@2 ~@2 g4@2 ~@2 g4@2 ~@6 a#3@8 b3@2 ~@2 g3@16 ~@4 a#3@8 b3@2 ~@2 g4@8 ~@4 a4@4 g4@6]/6", // F A5 G
  V: "~@2 f4@4 ~@7 [g3,b3]@3", // G
  W: "[~@3 [f3,a3]@8 ~@2 [e3,a3]@2 [e3,a3]@2 ~@2 [e3,a3]@2 ~@2 [e3,a3]@4 ~@2 [e3,a3]@2 [e3,a3]@2 ~@2 [g3,b3]@3 ~@10]/3", // F A5 G
})).s("gm_distortion_guitar").gain(0.25).pan(1)

// chords · distortion guitar · soft notes
const distortion_guitar_soft_2 = note("<~@33 A B C D A B C B ~@50 E F G@3>".pickRestart({
  A: "~@17 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ g2", // G5
  B: "~ [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ g2 ~@3 [g2,d3] ~ [g2,d3] ~@3 [g2,d3] ~ [g2,d3] ~@3 [g2,d3]", // G5
  C: "~ [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ [g2,d3] ~@5 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ [g2,d3] ~@3 [g2,d3]", // G5
  D: "~ [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~@3 [g2,d3] ~ g2 ~@3 [g2,d3] ~ e2@4 f2@4 f#2@3", // G5
  E: "~@12 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~ [g3,b3]@6", F: "~@3 [g3,b3]@2 ~@2 [g3,b3]@2 ~@2 [g3,b3]@5",
  G: "[~@6 [f3,a3]@16 ~@4 [e3,a3]@4 [e3,a3]@4 ~@4 [e3,a3]@4 ~@4 [e3,a3]@8 ~@4 [e3,a3]@4 [e3,a3]@4 ~@4 [g3,b3]@6 e3@2 f3@2 ~@2 f3@3 ~ g3@3 ~@7]/3", // F A5 G
})).s("gm_distortion_guitar").gain(0.13).pan(1)

// other · pad new age
const pad_new_age = note("<~ A@8 ~@15 B C A@7 ~@32 D@3 E@7 F ~@3 G E@11 H ~@4>".pickRestart({
  A: "d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6]", // Fsus2
  B: "~@28 d6 [f6,g6] d6 [f6,g6]", // Fsus2
  C: "d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] ~@4", // Fsus2
  D: "[~@25 c4@16 g4@16 c5@16 ~@16 d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6]/3", // Fsus2
  E: "[f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6", // Fsus2
  F: "[f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] ~@7", // Fsus2
  G: "~@25 d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6", H: "[f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 ~@24",
})).s("gm_pad_new_age").gain(0.14)

// other · pad new age · soft notes · Fsus2
const pad_new_age_soft = note(`<
  ~@91
  [~@8 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6]
  [[f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6]!3
  [[f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] d6 [f6,g6] ~@7]
>`).s("gm_pad_new_age").gain(0.05)

// chords · rock organ
const rock_organ = note(`<
  ~@17 A B A B C D C E@2 F G@2 H F G@2 ~@8 A B A B C D C I J K L M N O@3 P@4 Q@5 ~ R@8 S T@3 U@8 V@5 ~@4
>`.pickRestart({
  A: "[a4,d5,e5]@6 [a4,d5,e5] ~", B: "[a4,c#5,e5]@6 [a4,c#5,e5] ~", C: "[b4,e5,f#5]@6 [b4,e5,f#5] ~",
  D: "[b4,d#5,f#5]@6 [b4,d#5,f#5] ~", E: "[[b4,d#5,f#5]@4 ~ [c5,e5,g5] ~ [g4,b4,d5]@9]/2", F: "[c5,f5,a5]",
  G: "[[g4,c5,e5]@11 [g4,b4,d5]@5]/2", H: "[g4,b4,d5]", I: "[b4,d#5,f#5] ~", J: "~ [g4,b4,e5]@31", K: "~ [g4,b4,d5]@15",
  L: "~ [g4,c5,e5]@7", M: "~@5 e5@8 ~ d#5@8 e5@8 f#5@2, ~@5 [f#4,b4]@27", N: "~@7 [g4,b4,e5]@25",
  O: "[~@8 [g4,b4,d5]@34 [g4,c5,e5]@33 e5@8 ~ d#5@8 e5@4, ~@25 [f#4,b4]@7]/3", // G C B5
  P: "[~@5 f#5@8 [g4,b4,e5]@33 [g4,b4,d5]@34 [g4,c5,e5]@34 e5@8 d#5@6, ~@57 [f#4,b4]@7]/4", // Em G C B5
  Q: "[~@2 e5@8 ~ f#5@8 [g4,b4,e5]@34 [g4,b4,d5]@33 [g4,c5,e5]@34 e5@8 d#5@8 e5@8 ~ f#5@8 ~@7, ~@60 [f#4,b4]@17 ~@3]/5", // Em G C B5
  R: "[~@25 [g4,b4,d5]@32 [c5,f5,a5]@32 [g4,c5,e5]@44 [g4,b4,d5]@20 [g4,b4,d5]@32 [c5,f5,a5]@32 [g4,c5,e5]@39]/8", // G F C G F C
  S: "~@5 [g4,b4,d5]@20 ~@7", T: "[~@17 [d5,g5]@8 [c#5,e5,g5]@32 [c5,g5]@39]/3",
  U: "[~@5 [b4,d5,g5]@20 [g4,b4,d5]@32 [c5,f5,a5]@32 [g4,c5,e5]@44 [g4,b4,d5]@20 [g4,b4,d5]@32 [c5,f5,a5]@32 [g4,c5,e5]@39]/8", // G F C G F C
  V: "[~@5 [g4,b4,d5]@20 [g4,b4,d5]@32 [c5,f5,a5]@32 [g4,c5,e5]@44 [g4,b4,d5]@20 ~@7]/5", // G F C G
})).s("gm_rock_organ").gain(0.32).pan(1)

// chords · rock organ · soft notes
const rock_organ_soft = note("<~@9 A B C@2 A D C@2 ~@16 A B C@2 A D C@2 ~@50 E@5>".pickRestart({
  A: "[g4,b4,d5]", B: "e5 f5, [g4,c5]", C: "[[g4,c5,e5]@11 [g4,b4,d5]@5]/2", D: "[g4,c5,f5]",
  E: "[~@25 [g4,b4,d5]@32 [c5,f5,a5]@32 [g4,c5,e5]@44 [g4,b4,d5]@20 ~@7]/5", // G F C G
})).s("gm_rock_organ").gain(0.16).pan(1)

// other · distortion guitar
const distortion_guitar_3 = note(`<
  ~@75
  [~@25 f4 ~ d4 g3 f4 ~ d4]
  [g3 f4 ~ d4 g3 f4 ~ d4 g3 f4 ~ d4 g3 f4 ~ d4 g3 f4 ~ d4 g3 f4 ~ d4 g3 e4 ~ c#4 g3 e4 ~ c#4]
  [g3 e4 ~ c#4 g3 e4 ~ c#4 g3 e4 ~ c#4 g3 e4 ~ c#4 g3 e4 ~ c#4 g3 e4 ~ c#4 g3 d#4 ~ c4 g3 d#4 ~ c4]
  [g3 d#4 ~ c4 g3 d#4 ~ c4 g3 d#4 ~ c4 g3 d#4 ~ c4 g3 d#4 ~ c4 g3 d#4 ~ c4 g3 d#4 ~ c4 g3 d#4 ~ c4]
  [g3 d#4 ~ c4 g3 d4 ~ b3 g3 d4 ~ b3 g3 d4 ~ b3 g3 d4 ~ b3 g3 d4 ~ b3 g3 ~@7]
  ~@16
>`).s("gm_distortion_guitar").gain(0.25).pan(1)

// other · pad new age
const pad_new_age_2 = note("<~@49 A@2 B C@2 D E@2 F@3 G@2 H I@2 J@3 ~@28>".pickRestart({
  A: "[~ a4@4 f#4@4 g4@4 e4@4 ~ a4@4 f#4@4 g4@4 e4@4 a4@4 f#4@4 ~ g4@4 d4@4 a4@4 f#4@4 g4@4 ~]/2",
  B: "d4@4 a4@4 f#4@4 g4@4 c4@4 ~ a4@4 f#4@4 g4@3",
  C: "[~ c4@4 e4@4 ~ c4@4 d#4@4 b3@4 c4@4 b3@4 f#4@4 ~ b3@4 a4@4 f#4@4 g4@4 e4@4 ~ a4@4 f#4@4]/2",
  D: "g4@4 e4@4 a4@4 ~ f#4@4 g4@4 d4@4 a4@4 f#4@3",
  E: "[~@2 g4@4 d4@4 a4@4 f#4@4 g4@4 c4@4 ~ a4@4 f#4@4 g4@4 c4@4 e4@4 ~ c4@4 d#4@4 b3@4 c4@4]/2",
  F: "[b3@4 ~ f#4@4 b3@4 a4@4 f#4@4 g4@4 ~ e4@4 a4@4 f#4@4 g4@4 e4@4 a4@4 ~ f#4@4 g4@4 d4@4 a4@4 f#4@4 ~ g4@4 d4@4 a4@4 f#4@4 g4@4 ~ c4@3]/3",
  G: "[~ a4@4 f#4@4 g4@4 c4@4 ~ e4@4 c4@4 d#4@4 b3@4 c4@4 b3@4 ~ f#4@4 b3@4 a4@4 f#4@4 g4@4 ~]/2",
  H: "e4@4 a4@4 f#4@4 g4@4 e4@4 ~ a4@4 f#4@4 g4@3",
  I: "[~ d4@4 a4@4 ~ f#4@4 g4@4 d4@4 a4@4 f#4@4 g4@4 ~ c4@4 a4@4 f#4@4 g4@4 c4@4 ~ e4@4 c4@4]/2",
  J: "[d#4@4 b3@4 c4@4 ~ b3@4 f#4@4 b3@4 c4@16 g4@16 c5@16 ~@23]/3",
})).s("gm_pad_new_age").gain(0.32).pan(1)

// other · synth strings 1
const synth_strings_1 = note("<~@65 A@3 ~@28>".pickRestart({
  A: "[~@25 c5@16 g5@16 c6@16 ~@23]/3",
})).s("gm_synth_strings_1").gain(0.25).pan(1)

// chords · distortion guitar
const distortion_guitar_4 = note("<~@9 A@2 ~@2 A@2 ~@18 A@2 ~@2 A@2 ~@57>".pickRestart({
  A: "[[g3,d4]@3 ~]/2", // G5
})).s("gm_distortion_guitar").gain(0.25).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B@19 C B@15 D B@7 E F ~@3 G ~@3 H ~@3 I ~@2 J K ~ L M@8 ~@2 N O M@11 ~@5
>`.pickRestart({
  A: "~@7 x", B: "x!2", C: "x ~@6 x", D: "x", E: "x!2 ~@2", F: "~ x ~@30", G: "~@7 x ~@24", H: "~@13 x ~@18",
  I: "~@19 x ~@12", J: "~@3 x", K: "~ x ~@2", L: "~@13 x ~@11 x ~@6", M: "~@9 x ~@15 x ~@6", N: "~@29 x ~@2",
  O: "~ x ~ x ~@21 x ~@6",
})).gain(0.78)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@91 [~@9 x ~@15 x ~@6]!4 [~@9 x ~@22]>").gain(0.31)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@11 C B@7 D B@15 E B@7 F G H I ~@2 J K L ~ M F N ~ O P Q R S T U@3 V U@6 W X U@3 V U@12
>`.pickRestart({
  A: "~@9 x!2 ~ x ~@3", B: "~ x ~ x", C: "~@4 x ~@6 x!2 ~ x ~", D: "~@4 x ~@2 x!2 ~@7", E: "~@4 x ~@3 x ~@2 x ~@2 x ~",
  F: "~ x ~@2", G: "~@13 x ~@2", H: "~@27 x ~@4", I: "~@29 x ~@2", J: "x", K: "~ x ~@14", L: "~@3 x ~@28",
// … 59 more lines

More by Foreigner