Strudelify

I Fall to Pieces

Patsy Cline

KeyC majorTempo120 bpm
0:00/0:00
// I Fall to Pieces — Patsy Cline
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 79 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): JAZZ GTR.
setcpm(120/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 · "A.PIANO 3"
const piano = note(`<
  A B C@2 D E F G@2 H I J K L M N@2 O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM@2 AN@2 AO AP AQ AR@2
  AS AT@2 AU AV AW AX AY AZ BA BB W BC AG BD BE BF BG Z BE BH BI BJ BK BL BM BN ~@2
>`.pickRestart({
  A: "~@6 c3@5 ~ d3@6 e3@6", B: "f2@5 ~ a2@6 [a5,c6]@3 ~@3 a2@5 ~, ~@2 c3 ~, ~@16 [a5,f6]@7 ~",
  C: "[g2@5 ~ b2@6 [g5,b5]@3 ~@3 b2@5 ~ c3@4 ~@2 e3@5 ~ d#6 e6@3 d6@2 e6@2 d6@2 [c6,g6]@2, ~@12 d3@4 [g5,d6]@11 ~ [g5,c6]@7 ~ g3@6 e3@6, ~@36 g6@3 ~ g6@4 ~@4]/2", // G C5 G5 C5
  D: "[c3,g5,c6]@3 ~ g5@2 [g2,c6,e6]@4 ~@2 a2@4 [g5,c6] ~ [e5,c6]@3 ~ [e5,g5]@2, ~@6 d#6 ~@3 [g5,c6]@4 ~@4 b2@6", // C5 C C5 C Em C5
  E: "[c3,c5,e5]@6 e3@5 ~ g3@6 ~@5 c6, ~@3 e3, ~@11 a5", // C
  F: "~@6 a2@5 ~ c3@6 ~@5 b5, f6@2 ~, f2 ~@2 a2, ~ a5@17 ~@4 g5@2",
  G: "[~@6 b2@5 ~ d3@5 ~ b2@6 g2@5 ~ b2@5 ~ [g2,b5]@5 ~ [b5,d6]@2 a5@2 [g5,d6] ~, g2@5 ~@37 f#2@6, ~ d6@28 ~@7 d6@3 ~@9]/2", // G Bm G5
  H: "b5 ~@5 a2@5 ~ c3@6 a2@5 ~, g5@5 ~@7, f2@5 ~@19, ~ c6@10 ~@13",
  I: "g2@5 ~@13 g2@5 ~, ~ b2 d3 ~, ~@10 [g5,d6]@4 ~@2 [b5,d6]@5 ~@3", // G5 Bm
  J: "b5 ~@7 g5 ~ g6@2 [g3,e6]@6 ~@2 g5@2 e6 ~, [c3,g5]@6 e3@5 ~@7 e3@6, ~ c6@7 ~@16", // C C5
  K: "c3@2 ~@6 g5 ~ d6 ~ a2@6 b2@5 ~, d6@2 ~ c6@2 ~, ~@6 g2@5 ~@13", L: "c3@6 e3@5 ~@5 g5@2 e6 ~ d6 ~ c6@2, ~@2 g3 e3",
  M: "f2@6 a2@6 c3@6 a2@5 ~, [a5,f6]@2 ~", // Dm
  N: "[g2@5 ~ b2@5 ~ d3@4 [b5,c#6,d6] ~ [a5,d6] ~@11 b2@6 [g2,a5]@4 [g5,d6]@2 ~@2 [a5,d6]@3 ~, ~@18 b2@6 g2@6 ~@12 f#2@5 ~, ~@22 [g5,d6]@4 ~@2 [a5,d6]@7 ~ d6@2 ~@10]/2", // Bm D5 Gsus2 G5 D5 G5 D5
  O: "e5 ~@5 a2@5 ~ c3@5 ~ a2@6, c5@13 ~@11, f2 ~@3, ~ f5@14 ~@9",
  P: "g2@4 a#5 ~ b2@4 d6@2 d3@6 b2@5 ~, ~ d6 ~@4, ~@5 b5@4 ~ a5 ~ [g5,d6]@10 ~@2", // G5
  Q: "c3@6 ~@2 g5 ~ e6 ~ [g3,c6]@5 ~@3 g5 ~ d6 ~, [g5,c6] ~@2, ~ e3 ~ e3", // C5
  R: "[c3,c6]@3 ~ g5 ~ g2@4 ~@2 a2@6 b2@6, ~@6 a5@3 ~ g5@11 ~@3", S: "c3@6 e3@5 ~ g3@5 ~ e3@5 ~",
  T: "c3@6 e3@6 g3@5 ~ c3@5 ~", U: "f2@5 ~ a2@6 c3@6 a2@6", V: "f2@5 ~ a2@5 ~ c3@6 a2@6",
  W: "g2@5 ~ b2@5 ~ d3@5 ~ b2@6", X: "g2@5 ~ b2@6 d3@6 g2@5 ~", Y: "c3@6 e3@5 ~ g3@5 ~ e3@6",
  Z: "c3@5 ~ e3@6 g3@6 c3@4 a2@2", AA: "f2@5 ~ a2@6 c3@5 ~ a2@6", AB: "g2@6 b2@5 ~ d3@6 b2@6",
  AC: "c3@6 e3@5 ~ g3@6 e3@5 ~", AD: "c3@6 e3@6 g3@6 c3@5 ~", AE: "f2@6 a2@5 ~ c3@6 a2@5 ~",
  AF: "g2@5 ~ b2@5 ~ d3@6 g2@5 ~", AG: "c3@6 e3@5 ~ g3@6 e3@6",
  AH: "c3@3 ~@3 c3@4 ~@2 d3@4 [e5,c6] ~ [g5,c6]@3 ~@3, ~@5 [e5,c6]@2 ~@2 e3@3", // C C5 C
  AI: "f2@5 ~ a2@5 f5 ~ a4 ~@2 [a4,f5]@2 ~@2 [c5,f5]@3 ~, [c5,f5]@8 ~@4 c3@6 a2@5 ~, ~@4 f5 ~@3", // Dm F5
  AJ: "[d5,g5]@3 ~@7 [d5,g5] ~ [d5,g5]@3 ~@5 [d5,g5]@2 ~@2, g2@6 b2@6 d3@5 b5@3 ~@4, ~@16 d5@2 g2@5 ~", // G5
  AK: "[c5,e5] ~ e3@2 [e6,g6] ~ [d6,g6] ~, c3@5 ~@7 g3@6 e3@6", // C Em G5
  AL: "[c3,c6,g6]@3 ~@3 g2@6 [g5,c6]@3 ~@3 [e5,g5]@2 d5@2 [c5,g5] ~, ~@2 c6 ~@5, ~@6 a5 ~@5 a2@5 ~ b2@6", // C5 Em C5
  AM: "[[c5,g5]@3 ~@3 e3@6 g3@6 ~@12 a2@5 ~ c3@6 ~@5 b5, c3@6 ~@12 e3@5 c6@2 a5@17 ~@4 g5@2, f#5 ~@21 a5@2 f6@16 ~@8, ~@24 f2@5 ~@13 a2@6]/2", // C5
  AN: "[~@6 b2@5 ~ d3@6 b2@6 g2@5 ~ b2@5 ~ [g2,b5]@5 ~ [b5,d6]@2 a5@2 [g5,d6] ~, g2@6 ~@36 f#2@5 ~, ~ d6@28 ~@7 d6@3 ~@9]/2", // G Bm G5
  AO: "b5 ~@5 a2@5 ~ c3@6 a2@6, g5@5 ~@7, f2 ~@3, ~ c6@10 ~@13",
  AP: "g2@5 ~ b2@4 ~@8 g2@6, ~@10 [g5,d6]@4 ~@2 [b5,d6]@5 ~@3, ~@2 d3 ~", // G5 Bm
  AQ: "b5 ~@7 g5 ~ g6@2 [g3,e6]@6 ~@2 g5@2 e6 ~, [c3,g5]@6 e3@6 ~@6 e3@5 ~, ~ c6@7 ~@16", // C C5
  AR: "[c3@4 ~@4 g5 ~ d6 ~ [a2,c6]@5 ~ g5 ~ a5 ~@3 c3@6 e3@6 g3@4 g5@2 e6 ~ d6 ~ c6@2, d6@4 ~@7 g5@4 ~@9, ~@6 g2@5 ~@7 b2@6 ~@18 e3@6]/2", // Am
  AS: "f2@5 ~ a2@5 ~ c3@6 a2@5 ~, [a5,f6]@2 ~", // Dm
  AT: "[g2@5 ~ b2@5 ~ d3@4 [b5,c#6,d6] ~ [a5,d6] ~@5 g2@4 ~@2 b2@5 ~ [a5,d6]@3 ~ [g5,d6]@2 ~@2 [a5,d6]@3 ~, ~@18 b2@6 ~@12 g2@4 ~@2 f#2@5 ~, ~@22 [g5,d6]@4 ~@2 [a5,d6]@7 ~@13]/2", // Bm D5 G5 D5 G5 D5
  AU: "e5 ~@5 a2@5 ~ c3@6 a2@6, c5@13 ~@11, f2 ~@3, ~ f5@14 ~@9",
  AV: "g2@4 a#5 ~ b2@4 d6@2 d3@6 g2@5 ~, ~ d6 ~@4, ~@5 b5@4 ~ a5 ~ [g5,d6]@10 ~@2", // G5
  AW: "c3@6 ~@2 g5 ~ e6 ~ [g3,c6]@5 ~@3 g5 ~ d6 ~, [g5,c6] ~@2, ~@6 e3@5 ~@7 e3@6", // C5
  AX: "[c3,c6]@4 g5 ~ g2@4 ~@2 a2@5 ~ b2@6, ~@6 a5@3 ~ g5@11 ~@3", AY: "c3@6 e3@6 g3@5 ~ e3@6",
  AZ: "c3@5 ~ e3@6 c3@5 ~ a2@6", BA: "f2@5 ~ a2@5 ~ c3@5 ~ a2@6", BB: "f2@5 ~ a2@6 c3@6 f2@3 ~ c3@2",
  BC: "g2@6 g2@5 ~ a2@5 ~ b2@6", BD: "c3@5 ~ e3@5 ~ g3@6 c3@4 a2@2", BE: "f2@6 a2@5 ~ c3@6 f2@6",
  BF: "g2@5 ~ b2@5 ~ d3@6 b2@5 ~", BG: "c3@5 ~ e3@6 g3@5 ~ e3@6", BH: "g2@6 b2@5 ~ d3@6 g2@5 ~",
  BI: "c3@5 ~ e3@5 ~ g3@6 e3@6", BJ: "c3@3 ~@3 c3@5 ~ d3@5 ~ e3@6", BK: "f2@6 a2@5 ~ c3@6 a2@6",
  BL: "g2@6 b2@5 ~ d3@6 b2@5 ~",
  BM: "[e6,g6]@2 ~@2 d6 g6 [c6,g6]@3 ~@3 [a5,c6]@2 ~@2 [g5,c6] ~ [e5,c6]@3 ~@3, c3@6 e3@5 ~ g3@4 ~@2 e3@6, ~@12 g#5 ~@11", // Em C5 Am C5 C
  BN: "c5 f#5 ~@4 [g2,b4]@6 [g4,c5]@4 ~@8, [c3,g5] ~@2 g4@2 ~ c3@6", // G C5
})).s("gm_piano").gain(0.17).pan(0.8)

// bass · fretless bass · "FRETLESS"
const bass = note(`<
  A B C D E D F G H I J D K L M N O P Q R S T U V W G J L X Y Z AA U F AB L AC I AD AA AE R F AF AG F AH AA AI AJ I G AG
  F AB T AK AJ AL AM AN AO AP L AQ AR Q AJ AS AR AT D AU F Z T AV ~@2
>`.pickRestart({
  A: "~@6 c2@5 ~ d2@6 e2@6", B: "f1@5 ~ a1@6 c2@6 a1@5 ~", C: "g1@5 ~ b1@6 d2@6 b1@5 ~", D: "c2@5 ~ e2@5 ~ g2@6 e2@6",
  E: "c2@3 ~@3 g1@5 ~ a1@5 ~ b1@6", F: "f1@6 a1@5 ~ c2@6 a1@6", G: "g1@5 ~ b1@5 ~ d2@5 ~ b1@6",
  H: "g1@5 ~ b1@5 ~ g1@5 ~ f#1@6", I: "f1@5 ~ a1@5 ~ c2@6 a1@5 ~", J: "g1@5 ~ b1@6 d2@6 g1@5 ~",
  K: "c2@2 ~@4 g1@5 ~ a1@6 b1@5 ~", L: "c2@6 e2@5 ~ g2@6 e2@6", M: "f1@6 a1@6 c2@6 a1@5 ~",
  N: "g1@5 ~ b1@5 ~ d2@5 ~ b1@5 ~", O: "g1@6 b1@6 g1@4 ~@2 f#1@5 ~", P: "f1@6 a1@5 ~ c2@5 ~ a1@6",
  Q: "g1@5 ~ b1@5 ~ d2@6 b1@5 ~", R: "c2 e2 g2 e2", S: "c2@3 ~@3 g1@5 ~ a1@6 b1@6", T: "c2@6 e2@5 ~ g2@5 ~ e2@6",
  U: "c2@6 e2@6 g2@6 c2@5 ~", V: "f1@5 ~ a1@6 c2@6 a1@6", W: "f1@5 ~ a1@5 ~ c2@6 a1@6", X: "c2@5 ~ e2@6 g2@6 c2@4 a1@2",
  Y: "f1@5 ~ a1@6 c2@5 ~ a1@6", Z: "g1@6 b1@5 ~ d2@6 b1@5 ~", AA: "c2@6 e2@6 g2@6 e2@5 ~",
  AB: "g1@5 ~ b1@5 ~ d2@6 g1@5 ~", AC: "c2@3 ~@3 c2@5 ~ d2@6 e2@6", AD: "g1@6 b1@6 d2@6 g1@5 ~",
  AE: "c2@3 ~@3 g1@6 a1@5 ~ b1@6", AF: "g1@6 b1@5 ~ d2@6 b1@6", AG: "g1@5 ~ b1@5 ~ g1@5 ~ f#1@5 ~", AH: "g1 b1 d2 g1",
  AI: "c2@4 ~@2 g1@5 ~ a1@5 ~ b1@6", AJ: "c2@6 e2@6 g2@5 ~ e2@6", AK: "c2@4 ~@2 g1@6 a1@5 ~ b1@6",
  AL: "c2@5 ~ e2@6 c2@6 a1@6", AM: "f1@5 ~ a1@5 ~ c2@5 ~ a1@6", AN: "f1@5 ~ a1@6 c2@6 f1@3 ~ c2@2",
  AO: "g1@6 b1@6 d2@5 ~ b1@6", AP: "g1@5 ~ g1@5 ~ a1@5 ~ b1@6", AQ: "c2@5 ~ e2@5 ~ g2@6 c2@4 a1@2",
  AR: "f1@6 a1@5 ~ c2@6 f1@6", AS: "c2@3 e2@3 g2@3 c2@2 a1", AT: "g1@6 b1@5 ~ d2@6 g1@5 ~",
  AU: "c2@3 ~@3 c2@6 d2@5 ~ e2@6", AV: "c2 ~ g1@2 c2@4",
})).s("gm_fretless_bass").gain(0.29)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  A B C D@3 B E@2 B C D@3 B E@2 B C F@2 G H I@2 E@2 G H B C J@2 B C G H B C D@3 B E@2 B C D@3 B E@2 B C F@2 G H I@2 E@2
  F@2 B C J@2 B C G H B K L@2 ~@2
>`.pickRestart({
  A: "~@6 [g3,c4,e4]@17 ~", B: "[a3,c4,f4]@23 ~", C: "[f3,g3,b3,d4]@23 ~", D: "[[g3,c4,e4]@71 ~]/3",
  E: "[[f3,g3,b3,d4]@47 ~]/2", F: "[[g3,c4,e4]@47 ~]/2", G: "[g3,c4,e4]@23 ~", H: "[g3,a#3,c4,e4]@23 ~",
  I: "[[a3,c4,f4]@47 ~]/2", J: "[[g3,c4,e4]@35 ~ [g3,a#3,c4,e4]@11 ~]/2", K: "[g3,b3,d4]@23 ~",
  L: "[[g3,c4,e4]@29 ~ [f3,g3,b3,d4]@5 ~ [g3,c4,e4]@12]/2", // C G7 C
})).s("gm_synth_strings_1").gain(0.07)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~ A@2 ~@34 B@2 C@2 ~@38>".pickRestart({
  A: "[g5@17 ~ g5@17 ~@13]/2", B: "[g5@16 ~@2 g5@17 ~@13]/2", C: "[~@22 a4@7 ~@19]/2",
})).s("gm_electric_guitar_jazz").gain(0.26).pan(0.4)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C D@2 E F G C B H I D J B G K L C D@3 M N B G O D P Q K R J B S E T Q C I D U V W K Q K X D Y Z W K Q K AA AB D P
  N AC G C R AD Q K D P Q K D AE Q AF X AG@3
>`.pickRestart({
  A: "~@6 [e3,g3,a#3,c4,e4]@5 ~ [e3,g3,a#3,c4,e4]@4 ~@2 [e3,g3,a#3,c4,e4]@4 ~@2", // C7
  B: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 ~@2 [f3,a3,c4,f4] ~", // F
  C: "[d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4] ~", // G7
  D: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2", // C
  E: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 ~@2 [e3,g3,c4,e4] ~", // C
  F: "[f3,a3,c4,f4]@6 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 ~@2 [f3,a3,c4,f4] ~", // F
  G: "[d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4]@2", // G7
  H: "[d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@2 ~@2 [d3,g3,b3,f4,g4] ~", // G7
  I: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 ~@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2", // C
  J: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4] ~", // C
  K: "[d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4] ~", // G7
  L: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@3 ~ [f3,a3,c4,f4] ~", // F
  M: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4] ~ [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4] ~", // C C7
  N: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@2", // F
  O: "[d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@3 ~ [d3,g3,b3,f4,g4] ~", // G7
  P: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4] ~ [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4] ~", // C C7
  Q: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4] ~", // F
  R: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]!2 ~ [e3,g3,c4,e4] [e3,g3,c4,e4]@2 [e3,g3,c4,e4]!2 ~ [e3,g3,c4,e4]", // C
  S: "[d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@2 ~@2 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4] ~", // G7
  T: "[e3,g3,a#3,c4,e4]@6 [e3,g3,a#3,c4,e4]@2 ~@2 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4] ~", // C7
  U: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~", // C
  V: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@3 ~ [f3,a3,c4,f4]@2", // F
  W: "[d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@2 ~@2 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4]@2", // G7
  X: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 ~@2 [e3,g3,c4,e4]@2", // C
  Y: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@3 ~ [e3,g3,c4,e4] ~", // C
  Z: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 ~@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 ~@2 [f3,a3,c4,f4] ~", // F
  AA: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@3 ~ [e3,g3,c4,e4]@2", // C
  AB: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4] ~ [e3,g3,c4,e4]@4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2", // C
  AC: "[f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@4 [f3,a3,c4,f4]@2 [f3,a3,c4,f4] ~@3 [f3,a3,c4,f4] ~", // F
  AD: "[e3,g3,c4,e4]@6 [e3,g3,c4,e4] ~@3 [e3,g3,c4,e4]@2 [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@2 ~@2 [e3,g3,a#3,c4,e4] ~", // C C7
  AE: "[e3,g3,c4,e4]@4 [e3,g3,c4,e4] ~ [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4]@2 [e3,g3,a#3,c4,e4]@4 [e3,g3,a#3,c4,e4] ~", // C C7
  AF: "[d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4] ~@3 [d3,g3,b3,f4,g4]@2 [d3,g3,b3,f4,g4]@6 [d3,g3,b3,f4,g4]@4 [d3,g3,b3,f4,g4] ~", // G7
  AG: "[[e3,g3,c4,e4] ~ [d3,g3,b3,f4,g4] ~ [e3,g3,c4,e4]@16 ~@4]/3", // C G7 C
})).s("gm_acoustic_guitar_steel").gain(0.09).pan(0.3)

// drums · kick
const kick = s("bd").struct("<[~ x!3] [x!2]!76 ~@2>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<~ A@19 B A@15 B A@3 C A@31 D A@3 E ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~@4 x!2 ~@2", C: "~@3 x ~@4 x!4", D: "~@3 x ~@5 x ~ x", E: "~ x ~@2",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@3 B C A@2 B A@7 D C A@2 E C A@14 F C A@2 G C A@2 D A@11 E C A@14 B H A@2 F ~@2
>`.pickRestart({
  A: "x ~ x!2 ~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~ x!2 ~ x!2 ~@2", C: "~@2 x!2 ~ x!2 ~ x!2 ~ x",
  D: "x ~ x!2 ~ x!2 ~ x ~@2 x", E: "x ~ x!2 ~ x!2 ~ x ~@3", F: "x!2 ~@4", G: "x ~ x ~@2 x!2 ~ x ~@3",
  H: "x ~ x ~@2 x!2 ~ x!2 ~ x",
})).gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<A ~@3 B ~@3 B ~@7 C ~@3 C ~@15 A ~@3 D ~@3 C ~@11 C ~@15 B ~@3 E ~@2>".pickRestart({
  A: "~ x!3", B: "~@11 x", C: "~@3 x", D: "~ x ~ x", E: "~ x ~@2",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@56 [~@11 x] ~@22>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~ A ~@3 A ~@11 A ~@3 A ~@15 A ~@3 A ~@15 A ~@15 B ~@2 C ~@2>".pickRestart({
  A: "x", B: "~ x ~@2", C: "~ x",
})).gain(0.25)

stack(
  piano, bass, synth_strings_1, electric_guitar_jazz, acoustic_guitar_steel, kick, snare, hihat, open_hat, mid_tom,
  crash
)

More by Patsy Cline