Strudelify

Hard to Say

Sawyer Brown

KeyD majorTempo142 bpm
0:00/0:00
// Hard to Say — Sawyer Brown
// 142 bpm, 4/4, key D 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: duplicate parts dropped: ch 2 "Midi C1," electric guitar jazz (copy of ch 1 "Midi C1," electric guitar jazz); ch 4 "Midi C1," electric bass finger (copy of ch 3 "Midi C1," acoustic bass)
// note: Full arrangement: all 129 bars on a 16-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): Midi C1,.
setcpm(142/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 · electric guitar jazz · "Midi C1,"
const electric_guitar_jazz = note(`<
  A@4 B@5 ~@13 C@3 D E F G H@2 I J K@2 L M N O P Q R A@4 B@5 ~@13 C@3 D E F G H@2 I J K@2 L M N O P Q R A@4 S@8 B@5 T@2
  U@2 V@2 H@2 I J K@2 L M N O P Q R A@4 W@5
>`.pickRestart({
  A: "[~@7 [c4,e4,g4]@7 ~ [g3,b3,d4]@7 ~ [d4,f#4,a4]@9]/4", // C G D
  B: "[[a3,d4]@6 ~ [c4,e4,g4]@7 ~ [g3,b3,d4]@7 ~@9 d5@8 ~, ~@23 [d4,f#4,a4]@16 ~, ~@27 d5@4 ~@9, ~@29 f#5@10 ~]/5", // D5 C G D
  C: "[~@8 d5@24 ~@12 [g5,a5]@3 ~, ~ g4@4 ~, ~@8 b4@30 b4@9 ~, ~@32 d5@15 ~]/3", D: "[d5,f#5]",
  E: "~@3 d5, a5, ~@3 f#5@5", F: "[a4,c#5,e5]@15 ~", G: "[a4,c#5,e5]@7 ~",
  H: "[[g4,b4,d5]@12 ~@16 g4@3 ~, ~@12 d5@19 ~, ~@16 b4@8 b4@7 ~, ~@20 a4@11 ~]/2", // G
  I: "~@8 a4@7 ~, d4@15 ~, ~@4 f#4@11 ~", J: "[d4,f#4,a4]@15 ~", K: "[~ a5, a4, c#5@3 c#5@5, ~@3 e5@13]/2", L: "e4@7 ~",
  M: "d4@15 ~", N: "~@3 d5, f#4", O: "~ f#5@13 ~@2", P: "e4@15 ~", Q: "~ d4@14 ~", R: "[d5,f#5,a5]",
  S: "[[a3,d4]@6 ~ [c4,e4,g4]@7 ~ [g3,b3,d4]@7 ~@9 d5@8 [c4,e4,g4]@7 ~ [g3,b3,d4]@7 ~ [d4,f#4,a4]@9, ~@23 [d4,f#4,a4]@16 ~@25, ~@27 d5@4 ~@33, ~@29 f#5@10 ~@25]/8", // D5 C G C G D
  T: "[g1,g3,b3,d4]/2", U: "[[d2,d3,f#3,a3]@31 ~]/2", V: "[~@8 [a4,c#5,e5]@7 ~, [a1,a3,c#4]@15 ~, ~ e4@29 ~@2]/2",
  W: "[[a3,d4]@6 ~ [c4,e4,g4]@7 ~ [g3,b3,d4]@7 ~ [d4,f#4,a4]@16 ~]/5", // D5 C G D
})).s("gm_electric_guitar_jazz").gain(0.22).pan(0.6)

// bass · acoustic bass · "Midi C1,"
const bass = note(`<
  A B C D E F G H I J K L@2 M L@2 J N O P Q L R S T U V W X S T U Y W Z AA T AB AC AD AE AF AG B C D E F G H I J K L@2 M
  L@2 J N O P Q L R S T U V W X S T U Y W Z AA T AB AC AD AE AF AG B C D E B C D E B C AH AI AJ AK AL AM AN@2 AO@2 AP AQ
  S T U Y W Z AA T AB AC AD AE AF AG B C D AR AS AT@3
>`.pickRestart({
  A: "~@7 c2", B: "~@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 g1@2", C: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ d2@2",
  D: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2", E: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ c2@2",
  F: "~@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ g1@2", G: "~@2 g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ d2 ~",
  H: "~@2 d2@2 a1@3 ~ c2 ~ c2@2 a1@3 ~", I: "b1@3 ~ a1@3 ~ c2@3 ~ c#2@2 ~@2", J: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 d2@3 ~",
  K: "a1 ~ a1 ~ d2 ~ d2 ~", L: "d2 ~ d2 ~ d2 ~ d2 ~", M: "d2@2 ~@2 d2@3 ~ a1@2 ~@2 a1@3 ~", N: "a1 ~ a1 ~ b1 ~ b1 ~",
  O: "b1 ~ b1 ~ b1 ~ b1 ~", P: "b1 ~ b1 ~ d2 ~ d2 ~", Q: "d2@2 ~@2 d2@3 ~ a1@2 ~@2 a1@4",
  R: "d2 ~ d2@2 f#1@4 g1 ~ g1@2 g#1@3 ~", S: "g1@4 ~@2 g1 ~ g1@5 ~@3", T: "g1@4 ~@2 g1 ~ g1 ~ g1@3 ~@3",
  U: "d2@4 ~@2 d2 ~ d2@5 ~@3", V: "d2@5 ~ d2 ~ d2 ~ d2@3 ~@3", W: "a1@4 ~@2 a1 ~ a1@5 ~@3",
  X: "a1@4 ~@2 a1 ~ a1 ~ a1@3 ~@3", Y: "d2@4 ~@2 d2 ~ d2 ~ d2@3 ~@3", Z: "a1@4 ~@2 a1 ~ a1 ~ a1@4 ~@2",
  AA: "c2@4 ~@2 c2 ~ c2 ~ c2@6", AB: "d2@4 ~@2 d2 ~ d2 ~ d2@4 ~@2", AC: "d2@4 ~@4 d2 ~ d2@5 ~", AD: "c2@15 ~",
  AE: "g1@7 ~", AF: "d2 ~ d2 ~ d2@2 a1@2 d2 ~ d2 ~ d2@2 a1@2", AG: "d2 ~ d2 ~ d2 ~ d2 ~ d2@2 a1@2 b1@2 c2@2",
  AH: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", AI: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  AJ: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2", AK: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ d2@2",
  AL: "~@2 d2@2 a1@3 ~ c2@4 a1@2 ~@2", AM: "b1@4 a1@3 ~ c2 ~ c2@2 c#2@3 ~", AN: "[g1@31 ~]/2", AO: "d2/2",
  AP: "a1@7 b2", AQ: "c#3 a2 b2 f#2 a2 e2 f2 f#2", AR: "~@2 d2 ~ d2 ~ d2 ~ d2 ~ a1@2 b1@2 c2@2",
  AS: "~@2 c2 ~ c2 ~ c2 ~ c2@2 b1@2 a1@2 g1@2", AT: "[~@2 g1 ~ g1 ~ g1 ~ g1@2 b1@2 c2 ~ d2@30 ~@4]/3",
})).s("gm_acoustic_bass").gain(0.73)

// chords · acoustic guitar nylon · "Midi C1,"
const acoustic_guitar_nylon = note(`<
  ~@11 A@2 ~ B@2 C D@3 ~ E F ~@12 G H I@2 J K L@2 ~@10 A@2 ~ B@2 C D@3 ~ E F ~@50 M@2 ~@2 N@3 ~@4 O@3
>`.pickRestart({
  A: "[[d5,f#5]@3 ~ [f#4,a4]@2 [d5,f#5]@5 ~ [f#4,a4]@2 [d5,f#5]@4 a4@2 f#4@2 e5@4 ~@2 d5@2 ~@2]/2", // D F#m D F#m D
  B: "[~@4 [d5,f#5] a4 f#4 [d5,f#5]@2 a4 f#4 [d5,f#5]@2 ~ f#4 ~, ~@13 a4@2 ~]/2", C: "e5 ~ d5 ~@5",
  D: "[~@4 [b4,d5,f#5] d4 a3 [b4,d5,f#5]@2 d4 a3 [b4,d5,f#5]@2 d4 a3 ~@2 d4 a3 ~@5, ~@5 [b4,d5,f#5] ~@2]/3", // Bm
  E: "~@2 a5@2 f#5@2 d5@2 a4@2 f#4@2 ~@2 f#5 ~, ~@3 d5", F: "a5 f#5 d5 f#4 a4 ~ f#5 a5, ~@5 d5@2 ~",
  G: "g5@4 ~@6 c5@5 ~, c5@5 ~@3, e5@6 e5@9 ~, ~@4 g5@11 ~", H: "~@6 b4@9 ~, d5@15 ~, ~ b4@2 ~@5, ~@4 g4@11 ~",
  I: "[~@2 d5@2 a5@2 f#5@4 d5 ~ [d5,f#5] ~ a5 ~@11 f#5@5 ~, ~@7 f#5@3 f#5@3 ~@3, ~@16 [c5,e5]@15 ~, ~@16 g5@6 g5@9 ~, ~@18 d5@13 ~]/2", // D C
  J: "[g4,b4,d5]", K: "[g4,b4,d5]@3 ~", L: "[~@2 d4@2 a4@2 d5@4 f#5 ~ d5@2 d4@4 a4@2 d5@2 g5@3 ~ f#5@2 d5@4]/2",
  M: "[~@5 a4@2 ~@5 f#5@3 ~, f#5@14 ~@2 a4@11 ~@5, ~@6 d5@8 f#4@13 ~@5, ~@18 d5@9 ~@5, ~@20 f#5@2 a5@5 ~@5]/2",
  N: "[~@5 a4@2 ~@7 d6@8 ~@2, ~ f#5@6 f#4@5 a5@10 ~@2, ~@6 d5@9 ~ a4@28 ~@4, ~@9 d5@13 ~@2, ~@5 f#5@6 ~]/3",
  O: "[~@7 [d4,a4,d5,f#5,a5]@15 ~@2]/3", // D
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.4)

// chords · acoustic guitar steel · "Midi C1,"
const acoustic_guitar_steel = note(`<
  A@7 B@2 C D@4 E F E G@4 E H@3 I J K L M N O P@2 Q@2 R S T U V W@5 X@5 C D@4 E F E G@4 E H@3 I J K L M N O P@2 Q@2 R S
  T U V W@5 Y@7 Z@2 AA AB AC@2 AD@2 AE@2 AF@2 AG@2 AH@2 AI@2 AJ AK AL@2 AM AN AO@7 AP@3
>`.pickRestart({
  A: "[~@14 [c4,e4,g4]@4 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4] ~ [c4,e4,g4]@2 [c4,e4,g4]@4 [g3,b3,d4]@4 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@3 ~ [d4,f#4,a4]@4 [d4,f#4,a4]@2 [d4,f#4,a4]@2 a3@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@4 [d4,f#4,a4]@2 [d4,f#4,a4]@2 a3 ~ [d4,f#4,a4]@2 [d4,f#4,a4]@4 [c4,e4,g4]@4 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@4 [g3,b3,d4]@4 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@3 ~ [d4,f#4,a4]@2]/7", // C G D C G D
  B: "[~ [d4,f#4,a4]!5 ~@2 [d4,f#4,a4]!7 ~, ~@3 [d4,f#4,a4] ~@4, ~@7 a3@8 ~]/2", C: "~ d3 a3 d4@2 a3 d3 ~",
  D: "[a2 a3 d4@2 d3 a3@2 d4@2 a3 d3 ~ d3 a3@2 d4@2 a3 d3 ~ d3 a3@2 d4@2 ~ d3 ~ a2 a3 d4@2, ~@25 a3@2 ~@5]/4",
  E: "d3 a3@2 d4@2 a3 d3 ~", F: "d3@2 a3@4 d4@3 ~ a3@2 d3@2 ~@2",
  G: "[~@2 a3@2 d4@3 ~ b2@2 b3@4 f#4@6 b3@2 ~@2 b2@2 b3@4 f#4@4 b3@4 ~@2 d3@2 a3@4 d4@4 a3@2 d3@3 ~@3 a2@2 a3@2 d4 ~, a2 ~@15]/4",
  H: "[d3@2 ~@4 d4@4 f#4@2 ~@8 [g3,b3]@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@3 ~, ~@2 a3@6 ~@4 d4@6 ~@6 d3@7 ~@7 d3@9 ~, ~@16 g2@9 ~@5 g2@9 ~@9]/3", // G
  I: "~@2 [d4,f#4] [d4,f#4,a4] ~@2 [d4,f#4,a4]!2, d3 a3", // D
  J: "~@2 [d4,f#4,a4] ~@5 [d4,f#4,a4]@2 [d4,f#4,a4]@2 [d4,f#4,a4]@4, d3, ~ [d4,f#4,a4] ~@2, ~@3 a3@5", // D
  K: "~@2 [a3,c#4,e4]!2 ~@2 [a3,c#4,e4]@2, a2 e3", L: "~ [a3,c#4,e4] [a3,c#4,e4]@2 ~ [a3,c#4,e4]!3, a2 e3",
  M: "~@2 [g3,b3,d4] [b3,d4] ~@2 [g3,b3,d4]@2, g2 d3, ~@3 g3@3 ~@2", N: "~ [g3,b3,d4]!2 ~ [g3,b3,d4]!4, g2@3 d3@5",
  O: "~@2 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4]!2, d3 a3", // D
  P: "[~ [d4,f#4,a4] [d4,f#4,a4]@2 ~ [d4,f#4,a4]!2 ~@2 [a3,c#4] [a3,c#4,e4]!2 ~@2 [a3,c#4,e4]!2, d3@4 a3@5 ~@3 e3@4, ~@7 [d4,f#4,a4]@5 ~@4, ~@2 a2 ~]/2", // D A D
  Q: "[~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] e4 [c4,e4,g4]@3 [c4,e4,g4]!2 [c4,e4,g4]@3, a2, ~@3 [a3,c#4,e4]@3 ~ [a3,c#4]@9, ~ e3@3, ~ c3]/2", // A C A
  R: "[g3,b3,d4]@4 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@5 ~, g2@15 ~", // G
  S: "[d4,f#4,a4]@2 [d4,f#4,a4]!2 ~ [d4,f#4,a4]!3, d3 a3", T: "~@2 [d4,f#4,a4]!2 ~ [d4,f#4,a4]!3, d3 a3",
  U: "[c3,g3,c4,e4,g4]", V: "[g2,d3,g3,b3,d4]",
  W: "[~@4 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~@16 [c4,e4,g4]@4 [c4,e4,g4]@2 [c4,e4,g4]@2 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@10 [g3,b3,d4]@2 [g3,b3,d4]@3 ~@5 [d4,f#4]@2 [d4,f#4,a4]@2 ~@4 [d4,f#4,a4]@2 [d4,f#4,a4]@2 d3@2, d3@8 a3@32 [c4,e4,g4]@4 ~@8 d3@9 ~ d3@10 ~@8, ~@7 [d4,f#4,a4]@16 ~@12 [d4,f#4,a4]@2 ~@3, ~@30 c3@16 ~@4 g2@4 g2@7 ~@19, ~@21 g3@2 [g3,b3,d4]@5 ~@8 a3@3 ~]/5", // D C G D C D G
  X: "[~@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 a3 ~ [d4,f#4,a4]@2 [d4,f#4,a4]@3 ~@7 [c4,e4,g4]@2 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@6 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 ~@6 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@2 ~@6 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~@4 [d4,f#4,a4]@2 [d4,f#4,a4]@4, ~@7 c3@5 ~ c3@2 ~@2 g2@6 ~@8 d3@9, ~@7 [c4,e4,g4]@3 ~@2 [c4,e4,g4]@2 ~@7 d3@2 ~@2 d3@3 ~@2 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@2 ~@3, ~@9 g3@3 ~@3 [g3,b3,d4]@3 ~@2 [g3,b3,d4]@2 ~ [d4,f#4,a4]@3 ~@2 a3@3 ~@5 a3@4]/5", // D C G D C D G D
  Y: "[~@2 [d4,f#4,a4]@2 [d4,f#4,a4]@2 a3 ~ [d4,f#4,a4]@2 [d4,f#4,a4]@3 ~@7 [c4,e4,g4]@2 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 ~@6 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 ~@6 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~@2 [d4,f#4,a4]@2 ~@6 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~@4 [d4,f#4,a4]@2 ~@2 [c3,c4,e4,g4]@4 g3@2 [c4,e4,g4] ~ [c4,e4,g4] ~@5 [c4,e4,g4]@2 ~@6 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 [d4,f#4,a4]@2, ~@7 c3@5 ~ c3@2 ~@2 g2@6 ~@8 d3@9 ~@5 c3@2 ~@2 g2@6 ~, ~@7 [c4,e4,g4]@3 ~@2 [c4,e4,g4]@2 ~@7 d3@2 ~@2 d3@3 ~@2 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@2 ~ [d4,f#4,a4]@2 ~@4 [c4,e4,g4]@2 ~@7 d3@2 ~, ~@9 g3@3 ~@3 [g3,b3,d4]@3 ~@2 [g3,b3,d4]@2 ~ [d4,f#4,a4]@3 ~@2 a3@3 ~@5 a3@4 ~@7 [g3,b3,d4]@3 ~@2 [g3,b3,d4]@2 ~@2]/7", // D C G D C G D C …
  Z: "[~@2 [d4,f#4,a4]!2 ~ [d4,f#4,a4] ~@3 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4] [d4,f#4,a4]@2, ~ d3@3 a3@3 d3@9, ~@6 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@2 ~@3, ~@3 a3]/2", // D
  AA: "~@3 [c4,e4,g4]!2 ~@2 [c4,e4,g4], c3@5 ~ c3@2, [c4,e4,g4]@3 ~@2 [c4,e4,g4]@2 ~, ~@2 g3@3 ~@3", // C
  AB: "~@3 [g3,b3,d4]!2 ~@2 [g3,b3,d4], [g3,b3,d4]@3 ~@2 [g3,b3,d4]@2 ~, ~ g2@3, ~@3 d3", // G
  AC: "[~@3 [d4,f#4,a4]!2 ~ [d4,f#4,a4] ~@3 [d4,f#4,a4]!2 ~@2 [d4,f#4,a4]!2, [d4,f#4,a4]@3 ~@2 a3@3 d3@7 ~, ~@2 d3@3 ~@2 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@2 ~@2, ~@13 a3@2 ~]/2", // D
  AD: "[g2,g3,b3]/2", AE: "[[d3,a3,d4,f#4,a4]@31 ~]/2", AF: "[~ e4@27 ~@4, [a2,a3,c#4]@7 ~]/2",
  AG: "[~@4 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 ~@2 d3@2 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4]@3 ~, g2@4 d3@3 g2@5 ~@4, ~@5 [g3,b3,d4] ~@2]/2", // G
  AH: "[~ [d4,f#4,a4]!3 ~ [d4,f#4,a4]!2 ~@2 [d4,f#4,a4]!2 a4 ~ [d4,f#4,a4] [d4,f#4,a4]@2, d3@4 a3@3 d3@4 [d4,f#4]@2 ~@3, ~@3 a3]/2", // D
  AI: "[~ [a3,c#4] [a3,c#4,e4]!2 ~ [a3,c#4,e4]@2 ~@2 [a3,c#4,e4]!2 ~@2 [a3,c#4,e4] [a3,c#4,e4]@2, a2@4 e3@3 a2@9, ~@11 [a3,c#4,e4]@2 ~@3, ~@3 e3]/2", // A
  AJ: "~@5 [c4,e4,g4]@3, c3, [c4,e4,g4]@5 ~@3, ~@3 g3@5", // C
  AK: "~@10 g3@2 [g3,b3]@3 ~, g2@15 ~, g3@6 d3@9 ~, ~ d4@14 ~, ~ b3@11 ~@4", // G
  AL: "[~@2 [d4,f#4,a4] ~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4] [d4,a4] [d4,g4,a4] [d4,f#4,a4]@2 ~@2, d3@7 d3@6 ~@3, ~@3 [d4,f#4,a4]@2 ~ [d4,f#4,a4]@3 ~ f#4@2 ~@4, ~@4 a3@3 ~@9]/2", // D D5 Dsus4 D
  AM: "[c3,c4,e4,g4]", AN: "[g2,d3,g3,b3,d4]@15 ~",
  AO: "[~@4 [d4,f#4,a4]@2 [d4,f#4,a4]@4 ~@2 [d4,f#4,a4]@2 d3 ~@5 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~@4 [d4,f#4,a4]@2 ~@6 [c4,e4,g4]@2 ~@6 [c4,e4,g4]@2 ~@4 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 [g3,b3,d4]@3 ~@7 [d4,f#4,a4]@2 ~@4 [d4,f#4]@2 ~@14 [d4,f#4,a4]@2 [d4,f#4,a4]@2 ~@6 [c4,e4,g4]@2 ~@4 [c4,e4,g4]@2 [c4,e4,g4]@2 g2@2, d3@5 a3@2 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@2 ~ [c4,e4,g4]@3 ~ [c4,e4,g4]@3 ~@9 [d4,f#4,a4]@3 ~ a4@3 ~@3 f#3@6 ~@4 g3@4 ~, ~@18 d3@12 c3@12 c3@4 g2@9 ~@15 [d4,f#4]@4 ~@2 [d4,f#4,a4]@14 ~@4 [c4,e4,g4]@6 ~@12, ~@26 a3@4 ~@4 g3@12 ~@8 d3@7 ~@5 d3@12 d3@16 ~@4 c3@5 ~@9, ~@36 a3@7 a3@4 ~@9]/7", // D C G D C D C D …
  AP: "[~@2 [g3,b3,d4]@4 ~@4 [g3,b3,d4]@4 ~ [d4,f#4,a4]@30 ~@3, ~@3 d3@4 d3@15 ~@2]/3", // G D
})).s("gm_acoustic_guitar_steel").gain(0.32).pan(0.4)

// bass · electric bass pick · "Midi C1,"
const bass_2 = note(`<
  A@4 B@5 ~@26 C D E F G H I J@4 K@5 ~@17 L@3 ~@3 M@3 C H N@2 G H O@5 P@7 Q R S T U V W@2 X@2 Y@2 Z@2 AA@2 AB@2 AC AD
  AE@2 C AF AG@5 AH@5
>`.pickRestart({
  A: "[~@10 a2@2 b2 ~ c3@12 b2@2 a2@2 g2@12 f2@2 e2@2 d2@18]/4",
  B: "[~@10 a2@2 b2@2 c3@12 b2@2 a2@2 g2@12 f2@2 e2 ~ d2@25 ~@9]/5", C: "[c3,e3,g3]@15 ~", D: "[g2,b2,d3]@12 e2@3 ~",
  E: "d2 e2 f#2 d2@2 e2 f#2@2", F: "d2@2 e2@2 f#2@2 d2@7 ~@3", G: "[c3,e3,g3]", H: "[g2,b2,d3]", I: "d2",
  J: "[~@5 a2 b2 c3@6 b2 a2 g2@6 f2 e2 d2@9]/4", K: "[~@10 a2@2 b2@2 c3@12 b2@2 a2@2 g2@12 f2@2 e2@2 d2@31 ~@3]/5",
  L: "[~ f#2 ~ g2@2 g#2@2 a2@14 ~@3]/3", M: "[~@2 f#2@3 ~ g2@4 g#2@3 ~ a2@28 ~@6]/3", N: "d2/2",
  O: "[d2@23 ~@3 a2@2 b2@2 c3@12 b2@2 a2@2 g2@12 f2@2 e2@2 d2@18]/5",
  P: "[~@10 a2@2 b2@2 c3@12 b2@2 a2@2 g2@12 f2@2 e2@2 ~@16 c3@4 e3 ~ g3 ~@5 c4 ~@3 c4@9 ~@3 f4@2 e4 ~ d4@14 ~@4, ~@46 d2@25 ~@41]/7",
  Q: "e4@8 d4@7 ~", R: "a3@2 b3 ~ d4@2 ~@2 d4@4 ~@2 a3@2", S: "~@2 a3 ~ a3@2 ~@2 f3@2 d3 ~@3 a3@2",
  T: "~@2 a3 ~@3 f3@4 d3@2 ~@4", U: "a2@2 c3 ~ d3@2 ~@2 d3@2 a2 ~ e3@3 ~", V: "d3@2 a2 ~ d3@2 ~@2 d3@8",
  W: "[[g2,b2]@31 ~]/2", X: "[~@7 d5@7 ~@2, [a2,d3,f#3,a3]@7 ~, ~@3 f#5@4 ~]/2", Y: "[[a2,c#3,e3]@3 b5@4 ~]/2",
  Z: "[~@8 g4@7 ~, [g2,b2,d3]@15 ~, ~@6 g3@9 ~]/2", // G
  AA: "[~@22 d3@9 ~, a3@31 ~, f#3@20 f#3@11 ~, d3@9 d3@2 ~@5, ~@14 a2@17 ~]/2", AB: "[~ a3, [a2,c#3,e3]]/2",
  AC: "[c3,e3,g3]@7 ~", AD: "~@6 g3@9 ~, [g2,b2,d3]@15 ~", AE: "[~@6 d4@23 ~@3, [d3,f#3,a3]@29 ~@3]/2",
  AF: "[g2,b2,d3]@15 ~", // G
  AG: "[~@13 a2 b2 c3@6 b2 a2 g2@6 f2 e2 d2@9, [d3,f#3,a3]@29 ~@51, ~@4 a2@9 ~@27, ~@12 d4@17 ~@51]/5", // D
  AH: "[~@10 a2@2 b2@2 c3@12 b2@2 a2@2 g2@12 f2@2 e2 ~ d2@30 ~@4]/5",
})).s("gm_electric_bass_pick").gain(0.59).pan(0.6)

// other · overdriven guitar · "Midi C1,"
const overdriven_guitar = note("<~@18 A@2 ~@71 B@4 C D E F G H ~@28>".pickRestart({
  A: "[f#3 a3 b3 d4 b3@7 ~@5]/2", B: "[~@14 c3@4 e3 ~ g3 ~@5 c4 ~@3 c4@9 ~@3 f4@2 e4 ~ d4@14 ~@4]/4", C: "e4@8 d4@7 ~",
  D: "a3@2 b3 ~ d4@2 ~@2 d4@4 ~@2 a3@2", E: "~@2 a3 ~ a3@2 ~@2 f3@2 d3 ~@3 a3@2", F: "~@2 a3 ~@3 f3@4 d3@2 ~@4",
  G: "a2@2 c3 ~ d3@2 ~@2 d3@2 a2 ~ e3@3 ~", H: "d3@2 a2 ~ d3@2 ~@2 d3@8",
})).s("gm_overdriven_guitar").gain(0.36).pan(0.4)

// chords · distortion guitar · "Midi C1,"
const distortion_guitar = note("<~@105 A@2 ~@22>".pickRestart({
  A: "[e4@29 ~@3]/2",
})).s("gm_distortion_guitar").gain(0.14)

// drums · kick
const kick = s("bd").struct(`<
  A B@2 C D B@2 C E@14 F@2 G F G F E F G F G F E G@2 H@2 I@2 E J B@2 C D B@2 C E@13 K F@2 G F G F E F G F G F E G@2 H@2
  I@2 E J B@2 C D B@2 C D B@2 C E@2 G@3 I L I@3 ~ F G F G F E G@2 H@2 I@2 E J B@2 C D B@2 ~@2
>`.pickRestart({
  A: "~@5 x ~ x", B: "~ x ~@3 x ~ x", C: "~ x ~@2 x ~@3", D: "x ~@3 x!2 ~ x", E: "x!2", F: "x ~@2 x!2 ~@3",
  G: "x ~@3 x!2 ~@2", H: "x!2 ~@2 x!2 ~@2", I: "x", J: "x ~@10 x ~@2 x ~", K: "x!4", L: "x ~@6 x",
})).gain(0.71)

// drums · rim
const rim = s("rim").struct("<~@9 [~ x ~ x]!14 ~@28 [~ x ~ x]!14 ~@64>").gain(0.71)

// drums · snare
const snare = s("sd").struct(`<
  A B@7 C ~@13 D B@5 C B@10 E F B G B@7 C ~@12 H D B@5 C B@10 E F B G B@14 I J ~@5 A B@10 E F B G B@5 K ~@2
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@2 x ~@2 x!2 ~", D: "~ x!2 ~ x!2 ~@2", E: "~ x", F: "~@5 x!3", G: "~@2 x ~ x!3 ~",
  H: "~ x ~@3 x ~@2", I: "~@2 x!2 ~@4", J: "~@2 x!2 ~@2 x ~", K: "~@4 x ~@3 x ~ x!3 ~@3",
})).gain(0.71)

// drums · low tom
const low_tom = s("lt").struct("<~@22 A ~@41 A ~@34 B C ~@5 D ~@19 B ~@2>".pickRestart({
  A: "~@6 x!2", B: "~@3 x", C: "~@5 x ~ x", D: "~@2 x!4 ~@2",
})).gain(0.71)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@34 A ~@3 A ~@37 A ~@3 A ~@19 B C@4 D E ~@5 A ~@3 A ~@12>".pickRestart({
  A: "~@5 x ~@2", B: "~@7 x", C: "~ x", D: "~@2 x ~ x!2 ~ x", E: "x",
})).gain(0.71)

// drums · crash
const crash = s("cr").struct(`<
  A@3 ~ A@3 ~@16 B ~@5 B ~@5 B@2 ~@2 B@3 A@3 ~ A@3 ~@16 B ~@5 B ~@5 B@2 ~@2 B@3 A@3 ~ A@3 ~ A@3 ~@2 B@2 ~@7 C ~@6 B@2
  ~@2 B@3 A@3 ~ A@3 ~@2
>`.pickRestart({
  A: "~@7 x", B: "x", C: "~@3 x",
})).gain(0.64)

stack(
  electric_guitar_jazz, bass, acoustic_guitar_nylon, acoustic_guitar_steel, bass_2, overdriven_guitar,
  distortion_guitar, kick, rim, snare, low_tom, hihat, mid_tom, crash
)

More by Sawyer Brown