Strudelify

If You Think You Know How to Love Me

Smokie

KeyB♭ majorTempo122 bpm
0:00/0:00
// If You Think You Know How to Love Me — Smokie
// 122 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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 · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@53 A@2 B C D@2 E F G@2 H@2 ~@2 I@2 J K I@2 L M N@2 O@3 P Q R S T U V W@2 X R Y Z Q AA AB@2 Q AC AD AE Q AF AG AH AI
  AJ U AK Q AL AM@3 AN AO AP@2 AN AO AP@2 AQ ~
>`.pickRestart({
  A: "c4/2", B: "bb3@8 f3@2 g3@3 ~ bb3@2", C: "c4 d4", D: "[c4,c5]/2", E: "[bb3,bb4]@4 [f3,f4] g3 g4 [bb3,bb4]",
  F: "[c4,c5]@6 [d4,d5]@8 [c4,d4,c5,d5] ~", G: "[[eb4,eb5]@31 ~]/2", H: "[d4,d5]/2", I: "[[c4,eb4,c5]@31 ~]/2",
  J: "[bb3,bb4]@8 [f3,f4]@3 ~ [g3,g4]@2 [bb3,bb4]@2, d4@3 ~@5", K: "[c4,c5]@7 ~ [d4,d5]@8",
  L: "[bb3,bb4]@8 [f3,f4]@3 ~ [g3,g4]@2 [bb3,bb4]@2, d4@7 ~@9", M: "[c4,c5]@3 [d4,d5]@5", N: "[eb4,g4]/2",
  O: "[f5@20 g4 [f4,f5] [g4,g5] [f4,f5], d4@2 ~, bb4@29 ~@19]/3", // F G F
  P: "[g4,g5] [f4,f5] [g4,g5] [f4,f5] [g4,g5] [f4,f5] [g4,g5] [f4,f5]", Q: "[c4,eb4,c5]@15 ~",
  R: "[bb3,d4,bb4]@8 [f3,f4]@2 [g3,g4]@3 ~ [bb3,bb4]@2", S: "[c4,eb4,c5]@7 ~",
  T: "[d4,bb4]@8 [f3,f4]@3 ~ [g3,g4]@2 [bb3,bb4]@2", U: "~@2 eb4@13 ~, [c4,c5]@15 ~", V: "[bb3,d4,bb4]",
  W: "[[f3,c4]@7 ~ g4 f4 g4 f4 g4 f4 g4 f4, a4@15 ~, ~@16 f5@15 ~]/2", X: "[eb4,c5]@15 ~, c4 ~@3", Y: "[c4,eb4]@15 ~",
  Z: "[bb3,d4]@8 [f3,f4]@2 [g3,g4]@3 ~ [bb3,bb4]@2", AA: "[bb3,d4]@13 ~@3",
  AB: "[[a4,f5]@15 ~ bb4@8 d5@8, f4@15 ~, ~ bb3]/2", AC: "[bb3,d4]@2 g4 f4, ~ f3", AD: "~@4 eb4@11 ~, [c4,c5]",
  AE: "[bb3,bb4]@8 [f3,f4]@2 [g3,g4]@3 ~ [bb3,bb4]@2, d4@3 ~@5", AF: "[bb3,d4]@7 ~", AG: "[f4,a4,f5]",
  AH: "g5 f5 g5 f5 [g4,g5] [f4,f5] [g4,g5] [f4,f5], f4@5 ~ g4 ~@9", AI: "[c4,c5]",
  AJ: "[bb3,d4]@7 ~ [f3,f4]@2 [g3,g4]@2 ~@2 [bb3,bb4]@2", AK: "[bb3,bb4]@5 [f3,f4] [g3,g4] [bb3,bb4], d4@7 ~@9",
  AL: "[d4,bb4]@7 ~, bb3@3 ~", AM: "[a4@6 bb3@2 bb3@15 ~, f4@11 ~@13, f5 ~@7]/3", AN: "c4@15 ~", AO: "bb3 c4",
  AP: "[bb3@10 f3@2 g3 f3@2 g3]/2", AQ: "bb3 ~",
})).s("gm_string_ensemble_1").gain(0.4)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note(`<
  ~@65 A@2 ~@8 B@2 ~ C@2 ~@4 D ~@6 E F ~ G ~@3 H ~@3 G ~@3 F ~@5 I@3 ~@9
>`.pickRestart({
  A: "[c4,c5]/2", B: "eb5/2", C: "[~@8 f4@4 g5 ~@3, ~@7 a4@4 ~@5]/2", D: "bb3 ~", E: "c5@15 ~", F: "bb4 ~",
  G: "bb4@7 ~", H: "bb4@9 ~@7", I: "[~@2 d4@9 ~@5]/3",
})).s("gm_string_ensemble_1").gain(0.24)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@18 A B C D A B C@2 E F C G H I J K L M N K O P Q R S R T U V C U W X C U A B Y Z A B C AA E AB C U AC I A AD C Z A
  AE C U E AB AF AG AH AI Q AJ AK U AL U O AM W AN S AO S AJ AP AQ S AR Q AS W AT AC I AU AV S AV S AW AX C D AY X AZ BA
  AY X AZ BA BB ~
>`.pickRestart({
  A: "c2@5 ~ c2@2 g1@5 ~ g1@2", B: "c2@5 ~ c2@2 g1@4 c2@2 b1@2", C: "bb1@5 ~ bb1@2 f1@5 ~ f1@2",
  D: "bb1@5 ~ bb1@2 f1 ~ f1 ~ bb1@2 b1@2", E: "eb2@5 ~ eb2@2 bb1@5 ~ bb1@2", F: "eb2@5 ~ eb2@2 bb1@4 eb2@4",
  G: "bb1@5 ~ bb1@2 f1@2 f1@4 bb1@2", H: "f1@5 ~ f1 ~ f1@4 ~@2 c2@2", I: "f1@5 ~ f1 ~ f1 ~ f1@3 ~ f1@2",
  J: "c2@5 ~ c2@2 c2@2 c2@3 ~ c2@2", K: "bb1@5 ~ bb1@2 f1 ~ f1@4 bb1@2", L: "c2@5 ~ c2 ~ c2@2 c2@3 ~ c2@2",
  M: "bb1@5 ~ bb1@2 f1@5 ~ bb1@2", N: "c2@5 ~ c2@2 c2@2 c2@4 c2@2", O: "f1@5 ~ f1@2 c2@5 ~ c2@2",
  P: "f1@2 f1@3 ~ f1 ~ f1@2 f1@3 ~ f1@2", Q: "c2@5 ~ c2@2 g1 ~ g1@2 c2@4", R: "bb1@5 ~ bb1@2 f1@4 bb1@4",
  S: "c2@5 ~ c2 ~ c2@5 ~ c2@2", T: "c2@5 ~ c2@2 c2@5 ~ c2@2", U: "bb1@5 ~ bb1@2 f1 ~ f1@2 bb1@4",
  V: "f1@5 ~ f1@2 c2@4 f1@4", W: "c2@5 ~ c2@2 g1@4 c2@4", X: "eb2@5 ~ eb2@2 f1@5 ~ f1@2",
  Y: "bb1@5 ~ bb1@2 f1@5 ~ a1@2", Z: "bb1@5 ~ bb1@2 f1 ~ f1@2 bb1@2 b1@2", AA: "bb1@5 ~ bb1@2 f1 ~ f1@2 bb1@3 ~",
  AB: "eb2@5 ~ eb2 ~ eb2@6 a1@2", AC: "f1@5 ~ f1 ~ f1@5 ~ c2@2", AD: "c2@5 ~ c2@4 g1@2 c2@2 b1@2",
  AE: "c2@5 ~ c2@2 g1@4 c2@2 b1 ~", AF: "bb1@6 bb1@2 f1@5 ~ f1@2", AG: "bb1@5 ~ bb1@2 f1@2 f1@3 ~ f1 ~",
  AH: "f1@5 ~ f1@2 f1@5 ~ c2@2", AI: "f1@5 ~ f1 ~ f1 ~ f1@3 ~ f1 ~", AJ: "bb1@5 ~ bb1 ~ bb1@5 ~ bb1@2",
  AK: "c2@5 ~ c2@2 c2 ~ c2@3 ~ c2@2", AL: "c2@5 ~ c2 ~ c2 ~ c2@6", AM: "f1@2 f1@3 ~ f1 ~ f1 ~ f1@3 ~ f1@2",
  AN: "bb1@5 ~ bb1 ~ f1@4 bb1@3 ~", AO: "bb1@5 ~ bb1@2 f1@3 ~ bb1@3 ~", AP: "f1@5 ~ f1 ~ f1@4 ~@2 f1@2",
  AQ: "bb1@5 ~ bb1 ~ bb1 ~ bb1@3 ~ bb1 ~", AR: "bb1@5 ~ bb1@2 f1@6 bb1@2", AS: "bb1@5 ~ bb1 ~ bb1@4 ~@2 f1@2",
  AT: "bb1@5 ~ bb1 ~ f1@7 ~, ~@8 bb1 ~@7", AU: "c2@5 ~ c2 ~ c2@6 g1@2", AV: "bb1@5 ~ bb1@2 f1@4 bb1@3 ~",
  AW: "bb1@5 ~ bb1 ~ bb1@5 ~ bb1 ~", AX: "f1@5 ~ f1 ~ f1@5 ~ f1@2", AY: "c2@5 ~ c2@2 g1@8",
  AZ: "bb1@5 ~ bb1@2 f1@6 a1@2", BA: "bb1@5 ~ bb1@2 f1@4 g1@2 f1@2", BB: "bb1@7 ~",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@18 A@2 B@2 C@2 D@2 E@2 F@2 G@2 H F I F J F G K J F H F L F G D@2 H M F N H@2 O F H@2 P F Q R S T U V W H X@2 W@2 S Y
  Z AA S@2 V AB AC S W S W S AD V W S W S W AE AF T W S AG S AG AE U AH W S AG AE W S AI S Y W AJ S AK W AJ S AK AL ~
>`.pickRestart({
  A: "[~@4 [c4,eb4,g4,c5,eb5]@5 ~ [c4,eb4,g4,c5,eb5]@3 ~ [c4,eb4,g4,c5,eb5]@5 ~ [c4,eb4,g4,c5,eb5]@5 ~ [c4,eb4,g4,c5,eb5]@3 ~ [c4,eb4,g4,c5,eb5]@2]/2", // Cm
  B: "[~@4 [bb3,f4,bb4,d5,f5]@4 ~@2 [bb3,f4,bb4,d5,f5]@3 ~ [bb3,f4,bb4,d5,f5]@5 ~ [bb3,f4,bb4,d5,f5]@5 ~ [bb3,f4,bb4,d5,f5]@3 ~ [bb3,f4,bb4,d5,f5]@2]/2", // Bb
  C: "[~@4 [c4,eb4,g4,c5,eb5]@5 ~ [c4,eb4,g4,c5,eb5]@3 ~ [eb4,g4,c5,eb5]@5 ~ [c4,eb4,g4,c5,eb5]@5 ~ [c4,eb4,g4,c5,eb5]@3 ~ [c4,eb4,g4,c5,eb5]@2, ~@14 c4@3 ~@15]/2", // Cm
  D: "[~@4 [bb3,f4,bb4,d5,f5]@5 ~ [bb3,f4,bb4,d5,f5]@3 ~ [bb3,f4,bb4,d5,f5]@4 ~@2 [bb3,f4,bb4,d5,f5]@5 ~ [bb3,f4,bb4,d5,f5]@3 ~ [bb3,f4,bb4,d5,f5]@2]/2", // Bb
  E: "~@4 [eb4,g4,bb4,eb5,g5,bb5]@5 ~ [eb4,g4,bb4,eb5,g5,bb5]@3 ~ [eb4,g4,bb4,eb5,g5,bb5]@2", // Eb
  F: "~@4 [bb3,f4,bb4,d5,f5]@5 ~ [bb3,f4,bb4,d5,f5]@3 ~ [bb3,f4,bb4,d5,f5]@2", // Bb
  G: "~@4 [f4,a4,c5,f5,a5]@5 ~ [f4,a4,c5,f5,a5]@3 ~ [f4,a4,c5,f5,a5]@2", // F
  H: "~@4 [c4,eb4,g4,c5,eb5]@5 ~ [c4,eb4,g4,c5,eb5]@3 ~ [c4,eb4,g4,c5,eb5]@2", // Cm
  I: "~@4 [c4,eb4,g4,c5,eb5,g5]@5 ~ [c4,g4,c5,eb5,g5]@3 ~ [c4,g4,c5,eb5,g5]@2", // Cm
  J: "~@4 [c4,g4,c5,eb5,g5]@5 ~ [c4,g4,c5,eb5,g5]@3 ~ [c4,g4,c5,eb5,g5]@2", // Cm
  K: "~@2 [f4,a4,c5,f5,a5] ~ [f4,a4,c5,f5,a5]@3 ~ [f4,a4,c5,f5,a5] ~ [f4,a4,c5,f5,a5]@3 ~ [f4,a4,c5,f5,a5]@2", // F
  L: "~@4 [c4,eb4,g4,c5,eb5]@4 ~@2 [c4,eb4,g4,c5,eb5]@3 ~ [c4,eb4,g4,c5,eb5]@2", // Cm
  M: "~@4 [eb4,bb4,eb5,g5]@4 ~@2 [f4,a4,c5,f5]@3 ~ [f4,a4,c5,f5]@2", // Eb F
  N: "~@2 [bb3,bb4,d5,f5] ~ [bb3,f4,bb4,d5,f5]@5 ~ [bb3,f4,bb4,d5,f5]@3 ~ [bb3,f4,bb4,d5,f5]@2", // Bb
  O: "~@4 [bb3,f4,bb4,d5,f5]@4 ~@2 [bb3,f4,bb4,d5,f5]@3 ~ [bb3,f4,bb4,d5,f5]@2", // Bb
  P: "~@4 [bb3,bb4,d5,f5]@5 ~ [bb3,f4,bb4,d5,f5]@3 ~ [bb3,f4,bb4,d5,f5]@2, ~@4 f4 ~@11", // Bb
  Q: "~@4 [eb4,bb4,eb5,g5]@5 ~ [eb4,bb4,eb5,g5]@3 ~ [eb4,bb4,eb5,g5]@2", // Eb
  R: "~@4 [eb4,g4,bb4,eb5]@5 ~ [eb4,g4,bb4,eb5]@3 ~ [eb4,g4,bb4,eb5]@2", // Eb
  S: "~@4 [bb3,f4,bb4,d5]@5 ~ [bb3,f4,bb4,d5]@3 ~ [bb3,f4,bb4,d5]@2", // Bb
  T: "~@2 [bb3,bb4,d5] ~ [bb3,f4,bb4,d5]@5 ~ [bb3,f4,bb4,d5]@3 ~ [bb3,f4,bb4,d5]@2", // Bb
  U: "~@4 [f4,c5,f5,a5]@5 ~ [f4,c5,f5,a5]@3 ~ [f4,c5,f5,a5]@2", // F
  V: "~@2 [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@3 ~ [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@3 ~ [f4,c5,f5,a5]@2", // F
  W: "~@4 [c4,g4,c5,eb5]@5 ~ [c4,g4,c5,eb5]@3 ~ [c4,g4,c5,eb5]@2", // Cm
  X: "[~@4 [d4,f4,bb4,d5]@5 ~ [bb3,f4,bb4,d5]@3 ~ [bb3,f4,bb4,d5]@4 ~@2 [bb3,f4,bb4,d5]@5 ~ [bb3,f4,bb4,d5]@3 ~ [bb3,f4,bb4,d5]@2]/2", // Bb
  Y: "~@2 [bb3,f4,bb4,d5] ~ [bb3,f4,bb4,d5]@5 ~ [bb3,f4,bb4,d5]@3 ~ [bb3,f4,bb4,d5]@2", // Bb
  Z: "~@4 [bb3,eb4,g4,bb4,eb5]@5 ~ [bb3,eb4,g4,bb4,eb5]@3 ~ [bb3,eb4,g4,bb4,eb5]@2", // Eb
  AA: "~@2 [bb3,eb4,g4,bb4,eb5] ~ [bb3,eb4,g4,bb4,eb5]@5 ~ [bb3,eb4,g4,bb4,eb5]@3 ~ [bb3,eb4,g4,bb4,eb5]@2", // Eb
  AB: "~@2 [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@3 ~ [f4,c5,f5,a5] ~ [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@4", // F
  AC: "~@4 [c5,eb5]@5 ~ [c4,g4,c5,eb5]@3 ~ [c4,g4,c5,eb5]@2, ~@4 [c4,g4]@3 ~@9", // Cm C5
  AD: "~@4 [f4,a4,c5,f5]@5 ~ [f4,c5,f5,a5]@3 ~ [f4,c5,f5,a5]@2", // F
  AE: "~@4 [bb3,f4,bb4,d5]@4 ~@2 [bb3,f4,bb4,d5]@3 ~ [bb3,f4,bb4,d5]@2", // Bb
  AF: "~@4 [f4,a4,f5]@5 ~ [f4,c5,f5,a5]@3 ~ [f4,c5,f5,a5]@2, ~@4 c5@3 ~@9", // F
  AG: "~@4 [c4,g4,c5,eb5]@4 ~@2 [c4,g4,c5,eb5]@3 ~ [c4,g4,c5,eb5]@2", // Cm
  AH: "~@2 [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@3 ~ [f4,c5,f5,a5] ~ [f4,c5,f5,a5] ~ [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@2", // F
  AI: "~@2 [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@3 ~ [f4,c5,f5,a5] ~ [f4,c5,f5,a5]@6", // F
  AJ: "~@4 [eb4,g4,bb4,eb5]@4 ~@2 [f4,a4,c5,f5]@3 ~ [f4,a4,c5,f5]@2", AK: "~@2 [bb3,f4,bb4,d5]@2 ~ [bb3,f4,bb4,d5]@2 ~",
  AL: "[bb3,f4,bb4,d5]", // Bb
})).s("gm_acoustic_guitar_steel").gain(0.4).pan(1)

// chords · pad new age · "FANTASIA"
const pad_new_age = note(`<
  ~@31 A B C D@2 E F G@2 E H I J K F L@2 ~@32 A B C D@2 E F G@2 E H I J K F M@2 B C D@2 E F G@2 E H I J K F L@2 ~@11
>`.pickRestart({
  A: "~@10 [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~", // Dm
  B: "[eb4,g4,d5]@3 ~ [eb4,g4,c5] ~ [eb4,g4,c5]@3 ~ [d4,f4,bb4] ~ [d4,f4,bb4] ~ [d4,f4,bb4]@2", // Ebmaj7 Cm Bb
  C: "~@2 [bb3,d4,f4]@7 ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5]@2", // Bb
  D: "[~@2 [eb4,g4,c5]@3 ~ [eb4,g4,c5]@3 ~ [d4,f4,bb4] ~ [bb3,d4,g4] ~ [bb3,d4,f4]@10 ~@2 [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~, ~@14 c4 ~@17]/2", // Cm Bb Gm Bb
  E: "[eb4,g4,d5]@3 ~ [eb4,g4,c5] ~ [eb4,g4,c5]@3 ~ [d4,f4,bb4]@3 ~ [d4,f4,bb4]@2", // Ebmaj7 Cm Bb
  F: "~@2 [d4,f4,bb4] ~ [eb4,g4,c5] ~ [d4,f4,bb4]@7 ~@3", // Bb Cm Bb
  G: "[[f4,a4,d5] ~ [f4,a4,c5]@3 ~ [f4,g4,bb4] ~ [f4,a4,c5]@3 ~ [f4,a4,d5] ~ [f4,a4,c5]@10 ~@2 [f4,a4,d5] ~ [f4,a4,d5] ~ [f4,a4,d5] ~]/2", // Dm F Gm7 F Dm F Dm
  H: "~@2 [bb3,d4,f4]@7 ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~", // Bb
  I: "[f4,bb4,d5]@3 ~ [eb4,g4,c5] ~ [eb4,g4,c5]@3 ~ [d4,f4,bb4]@3 ~ [d4,f4,bb4]@2", // Bb Cm Bb
  J: "~@2 [d4,f4,bb4] ~ [bb3,d4,g4] ~ [bb3,d4,f4]@3 ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~", // Bb Gm Bb
  K: "[f4,bb4,d5]@2 ~@2 [eb4,g4,c5] ~ [eb4,g4,c5]@3 ~ [eb4,g4,c5]@3 ~ [d4,f4,bb4]@2", // Bb Cm Bb
  L: "[[f4,a4,d5] ~ [f4,a4,c5]@2 ~@2 [f4,g4,bb4] ~ [f4,a4,c5]@2 ~@2 [d4,f4,bb4] ~ [d4,f4,bb4]@7 ~@11]/2", // Dm F Gm7 F Bb
  M: "[[f4,a4,d5] ~ [f4,a4,c5]@2 ~@2 [f4,g4,bb4] ~ [f4,a4,c5]@2 ~@2 [d4,f4,bb4] ~ [d4,f4,bb4]@7 ~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~]/2", // Dm F Gm7 F Bb
})).s("gm_pad_new_age").gain(0.32)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C D E F D G H I J K L M N O P Q R S T U V W X Y Z L AA AB AC@2 AD U AE AF AG AH AI AJ AK AL AM Y V AN AO AP AQ AR
  AS AT AU E F D G H I J K L M N O P Q R S T U V W X Y Z L AA AB AC@2 AD U AE AF AG AH AI AJ AK AL AM Y V AN AO AV AD U
  AE AF AG AH AI AJ AK AL AM Y V AN AO AP AW AX AY AZ BA@2 AY AZ BB@2 ~
>`.pickRestart({
  A: "~@2 g3 d4@2 eb4 c4 g3, c3 ~@3, ~ eb3@4 ~@3", B: "~ g3 bb3 d4@2 eb4 bb3 g3, eb3@3 ~@5",
  C: "bb2 ~ d3 f4@2 bb3 f3 bb3, ~ f3@4 ~@3", D: "~ f3 d3 f4@2 bb3 f3 bb3, bb2 ~@3",
  E: "c3 g3 ~ eb4@2 c4 g3 c4, ~@2 eb3@3 ~@3", F: "~ g3 ~ eb4@2 c4 g3 c4, c3@2 eb3@5 ~",
  G: "~@3 f4@2 bb3 f3 bb3, bb2@4 d3@9 ~@3, ~ f3@2 ~@5", H: "~ g3 ~ eb4@2 c4 g3 c4, c3@4 eb3@7 ~@5",
  I: "c3 g3 eb3 eb4@2 c4 g3 c4", J: "~@2 d3 f4@2 bb3 f3 bb3, bb2 ~@3, ~ f3@4 ~@3",
  K: "bb2 ~@2 f4@2 bb3 f3 bb3, ~ f3@4 ~@3, ~ d3 ~@2", L: "~ bb3 g3 eb4@2 bb3 g3 bb3, eb3@7 ~",
  M: "~ bb3 g3 eb4@2 bb3 g3 bb3, eb3 ~", N: "bb2 ~ d3 f4@2 bb3 ~ bb3, ~ f3@4 ~ f3@2",
  O: "~@2 bb3@2 ~@2 f4@4 bb3@2 f3@2 bb3 ~, bb2@3 ~@5, ~@2 f3@3 ~@3", P: "~ c4 ~ a4@2 f4 ~ f4, f3@7 ~, ~ a3@3, ~@3 c4",
  Q: "~ f4 ~ g4@2 ~@2 c4, f3@3 ~, ~ c4@2 f4, ~@5 a4@3", R: "~@3 eb4@2 c4 g3 c4, c3@4 eb3@9 ~@3, ~@2 g3@7 ~@7",
  S: "~@3 eb4@2 c4 ~ c4, c3@4 eb3@11 ~, ~ g3@4 ~ g3@2", T: "~@3 f4@2 bb3 ~ bb3, bb2 d3@2 ~, ~ f3@4 ~ f3@2",
  U: "~@3 f4@2 bb3 f3 bb3, bb2@4 d3@9 ~@3, ~ f3@4 ~@3", V: "~@3 eb4@2 c4 g3 c4, c3@4 eb3@11 ~, ~ g3@4 ~@3",
  W: "~@3 eb4@2 c4 ~ c4, c3 eb3@2 ~, ~ g3@4 ~ g3@2", X: "~@3 f4@2 bb3 ~ bb3, bb2@4 d3@5 ~@7, ~ f3@4 ~ f3@2",
  Y: "~@3 f4@2 bb3 f3 bb3, bb2@2 d3@5 ~, ~ f3@4 ~@3", Z: "~ bb3 ~ eb4@2 bb3 g3 bb3, eb3@7 ~, ~@4 g3@5 ~@7",
  AA: "~@3 f4@2 bb3 ~ bb3, bb2@2 d3@5 ~, ~ f3@4 ~ f3@2", AB: "~@6 f4@4 bb3@2 f3@2 bb3 ~, bb2@4 d3@9 ~@3, ~ f3@4 ~@3",
  AC: "[~@5 f4 ~@7 f4 ~ f4, f3@7 ~ f3@6 ~@2, ~ f4@2 a4@4 f4@2 ~ a3@4 ~@2, ~@2 c4@3 ~ c4@2 ~ c4@4 ~ c4@2, ~@22 a4@9 ~]/2",
  AD: "c3 ~@2 eb4@2 c4 g3 c4, ~ g3@4 ~@3, ~@2 eb3@5 ~", AE: "~@3 eb4@2 c4 g3 c4, c3 eb3@3, ~ g3@4 ~@3",
  AF: "~@3 f4@2 bb3 f3 bb3, bb2@4 d3@11 ~, ~ f3@4 ~@3", AG: "c3 ~@2 eb4@2 c4 ~ c4, ~@2 g3@7 ~@3 g3@4, ~ eb3@2 ~",
  AH: "~@2 bb3@2 ~@2 f4@4 bb3@2 f3@2 bb3 ~, bb2@3 ~, ~@2 f3@3 ~@3",
  AI: "~ f4 c4 ~@2 f4 ~ f4, f3@7 ~, ~@3 a4@4 ~, ~@8 a3@7 ~, ~@3 c4",
  AJ: "~ f4 ~@3 f4 ~ f4, f3@3 ~, ~ c4 a3 c4, ~@6 a4@9 ~", AK: "~@3 eb4@2 c4 g3 c4, c3@2 eb3@5 ~, ~ g3@4 ~@3",
  AL: "~@6 f4@4 bb3@2 f3@2 bb3 ~, bb2@4 d3@11 ~, ~@2 f3@9 ~@5",
  AM: "~@3 eb4@2 c4 ~ c4, c3@3 ~, ~ g3@4 ~ g3@2, ~@2 eb3@5 ~",
  AN: "~@6 f4@4 bb3@2 f3@2 bb3 ~, d3@3 ~, ~ f3@4 ~@3, ~ bb3 ~@2", AO: "~ c4 ~@3 f4 ~ f4, f3@3 c4, ~@2 a3@5 ~, ~@3 a4@5",
  AP: "bb2 ~@2 f4@2 bb3 ~ bb3, ~ f3@4 ~ f3@2, ~@2 d3@5 ~",
  AQ: "~@3 f4@2 bb3 f3 bb3, bb2@11 ~@5, ~ f3@4 ~@3, ~@4 d3@9 ~@3",
  AR: "~@5 c4 ~ c4, c3@2 eb3@5 ~, ~@2 g3@7 ~@3 g3@4, ~@6 eb4@7 ~@3", AS: "~ bb3 g3 eb4 ~ c4 a3 f4, eb3@3 ~ f3@2 ~@2",
  AT: "~ bb3 ~ f4@2 bb3 f3 bb3, bb2@5 ~@3, ~@4 f3@7 ~@5", AU: "~@6 f4@4 bb3@2 f3@2 bb3 ~, bb2@4 d3@5 ~@7, ~ f3@4 ~@3",
  AV: "bb2@2 ~@2 d3@2 f4@4 bb3@2 f3@2 bb3 ~, ~ f3@4 ~@3", AW: "~@3 f4@2 bb3 f3 bb3, bb2@7 ~, ~ f3@4 ~@3, ~@2 d3@5 ~",
  AX: "c3 ~@2 eb4@2 c4 ~ c4, ~ g3@2 ~@3 g3@2, ~@2 eb3@5 ~", AY: "~ bb3 g3 eb4 ~ c4 a3 f4, eb3@6 ~@2 f3@5 ~@3",
  AZ: "~@3 f4@2 bb3 ~ bb3, bb2@3 ~@5, ~@2 f3@9 ~ f3@4, ~@4 d3@11 ~",
  BA: "[~ bb3 ~ f4@2 bb3 ~ d3 c3 ~@2 eb4@2 c4 ~ c4, bb2@7 ~@2 g3@2 ~@3 g3@2, ~@4 f3@6 ~@2 f3@13 ~@7, ~@10 eb3@5 ~]/2",
  BB: "[~ bb3 ~ f4@2 bb3 ~ d3 [bb2,bb3,f4]@5 ~@3, bb2@7 ~@9, ~@4 f3@6 ~@2 f3@13 ~@7]/2", // Bb5
})).s("gm_acoustic_guitar_nylon").gain(0.56)

// drums · kick
const kick = s("bd").struct(`<
  ~@18 A@3 B A C A D A@2 B D C E C@2 A D A C A F A C@3 A@2 C A C@2 A@2 C A@3 D A C A D A C@3 A C@2 G A D A C@2 G C@2 G C
  G C@4 D A D A H A C A G A G@2 E C A G A C@3 E C@7 A G@2 B A E G B A E I ~
>`.pickRestart({
  A: "x!2", B: "x ~@3 x ~@2 x", C: "x ~@2 x!2 ~@3", D: "x ~@3 x!2 ~ x", E: "x ~@2 x ~ x ~@2", F: "x ~@2 x ~ x ~ x",
  G: "x ~@3 x!2 ~@2", H: "x ~@2 x!3 ~@2", I: "x",
})).gain(0.51)

// drums · rim
const rim = s("rim").struct("<~@18 [~ x ~ x]!14 ~@21 [~ x ~ x]!13 [~ x ~@4 x ~] [~ x ~ x]!13 [~ x ~@4 x ~] ~@43>")
  .gain(0.51)

// drums · snare
const snare = s("sd").struct("<~@32 [~ x ~ x]!20 [~@2 x ~@2 x!2 ~] ~@28 [~ x ~ x]!41 ~@2>").gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@31 A ~@7 B ~@40 A ~@7 A ~@7 A ~@7 A ~@12 A ~@3 A ~@2>".pickRestart({
  A: "~@6 x!2", B: "~@7 x",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<~@18 [x!8]!100 [~ x!7] [x!8]!3 x ~>").gain(0.46)

// drums · mid tom
const mid_tom = s("mt").struct("<~@31 A ~@7 A ~@40 A ~@7 A ~@7 B ~@7 A ~@12 B ~@3 B ~@2>".pickRestart({
  A: "~@5 x!3", B: "~@4 x!4",
})).gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<~@31 A ~@7 B ~@40 A ~@7 A ~@7 C ~@7 A ~@12 D ~@3 D ~@2>".pickRestart({
// … 12 more lines

More by Smokie