Strudelify

Back to You

Bryan Adams

KeyC majorTempo123 bpm
0:00/0:00
// Back to You — Bryan Adams
// 123 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 16 "Channel 16" piano (copy of ch 5 "Channel 5" choir aahs)
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Channel 13.
setcpm(123/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
const bass = note(`<
  A@20 B@3 C D@2 E F G H E I J K L M N O P Q A@16 B@3 C D@2 R F G H E S J K L M T@2 U Q A@12 V@2 W X Y Z D@2 E AA G H E
  I J K L M N O P Q AB AC AD AE AB AC AD AE AF AC AG@2 D@2 E F D@2 E F AH AI AJ@2
>`.pickRestart({
  A: "[c2@3 ~ c2@6 g2@3 ~ a2@6 a2@6 g2@4 f2@6 f2@6 e2@2 f2@2 g2@5 ~ g2@6 g1@2 g2@2 g1@2]/4",
  B: "[f1@4 f2@6 f1@3 ~ f1@8 f2@3 ~ f1@4 e1@6 e2@6 e1@2 e2@4]/3", C: "e3!5 e2 e1@2",
  D: "[a1@4 a2@4 a1 ~ g1@4 f1@6 f2@3 ~ f2@2 f1@2 f2@2 f1@2]/2", E: "g1@2 g1!6",
  F: "g1 ~ g1@2 g1 ~ g1@2 g1@2 e1@2 g1@2 e1@2", G: "a1@3 ~ a1@4 ~@2 a1@2 g1@2 f1 ~", H: "f1@3 ~ f1@6 f2@2 f1@2 f2@2",
  I: "g1@2 g1@2 g1 ~ g1@2 d2@2 g2@2 d2@2 g1@2", J: "e1@2 e2@3 e1 e2 e1", K: "a1@5 ~@3 a1@2 b1@2 d2@2 d#2@2",
  L: "e2@2 e1@2 e2 e1 e2@2", M: "a1@6 a2@2 a1 ~ a1@2 a2@2 a1@2", N: "d2@2 d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  O: "d2@2 d2 ~ d2 ~ d2 ~ d2@2 d2 ~ d2 ~ d2@2", P: "g2@2 g2 ~ g2 ~ g2 ~ g2@2 d2@2 g1@3 ~",
  Q: "g1@4 g2 ~ g2@2 g1@2 g2@2 g1@4", R: "g1@4 g1@2 g1@2 g1@2 g1@2 g1@3 ~", S: "g1!4 d2 g2 d2 g1", T: "d2!8",
  U: "g2 ~ g2 ~ g2 ~ g2 ~ g2@2 d2@2 g1@3 ~", V: "[f1@4 f2@6 f1@3 ~ f1@8 f2@3 ~ f1@4 e1@2]/2",
  W: "e1@3 ~ e1@3 ~ e1@2 g#1@2 b1@2 e2@2", X: "e1@3 ~ e1@2 ~@2 e1@2 b1@2 e2@2 b1@2",
  Y: "e1@4 e1@3 ~ e1@2 g#1@2 b1@2 e2@2", Z: "e3!5 e2 e1 e2", AA: "g1!5 e1 g1 e1", AB: "a2@3 ~ a2@4 a1@2 a2@2 g1@2 g2@2",
  AC: "f1@4 f2@3 ~ f2@2 e2@2 f2@2 f#2@2", AD: "g2@4 g2@3 ~ g2@4 d2@2 g1 ~", AE: "g1@2 g2 g1@2 g2 g1 g2",
  AF: "a1@2 a2@3 a1 g2 g1", AG: "[g2@3 ~ g2@4 g2@2 d2@2 g1 ~ g1@10 g1 ~ g1@2 d2@2 g1@2]/2", AH: "a1", AI: "f1@7 g1",
  AJ: "c2/2",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@2 B C A@2 B C ~@16 D E F@2 G@2 H@2 I J I J K L H@2 A@2 M N O@2 P Q R S T U V@2 W X ~@4 D E F@2 G@2 H@2 I J I J K L
  Y@2 Z AA AB AC AD@3 AE ~@10 AF AG AH@2 AI@2 AJ@2 AK AL AK AL K L Y@2 AM@2 AN@2 AO@2 AP@2 AQ AR AP@2 AQ AR AP@2 AM@2
  AS@2 AT@2 AU@2
>`.pickRestart({
  A: "[e5,e6]/2", B: "[f5,f6]@5 [e5,e6]@3", C: "[d5,d6]@15 ~", D: "g5", E: "a5", F: "[g5@31 ~]/2",
  G: "[[d5,d6] [c5,c6]@3]/2", H: "[c6@16 b5@15 ~, g5@31 ~]/2", I: "[b4,b5]", J: "[a4,a5]", K: "[f5,d6,f6] [e5,c6,e6]",
  L: "[d5,b5,d6]@8 [c5,a5,c6]@7 ~", M: "[f5,f6]", N: "[a5,a6] [g5,g6]@3", O: "[c4 a3, e4]/2", P: "[f3,c4]@15 ~",
  Q: "[g4,e5]", R: "d5 c5, g4", S: "[a3,c4]@15 ~", T: "[a4,e5]", U: "[g4,d5]", V: "[c4,e4]/2", W: "[c4,f4]",
  X: "[d4,g4]@13 ~@3", Y: "[c6@8 b5@7 ~, g5@31 ~]/2", Z: "[c5,e5]", AA: "g5@3 e5, c5@15 ~", AB: "[c5,a5]@15 ~",
  AC: "a5 g5@3, [c5,d5]", AD: "[g5@26 b5@3 a5@18 ~, c5]/3", AE: "[d5,g5]", AF: "[c5,g5,c6]", AG: "[b4,b5] [a4,a5]",
  AH: "[~@3 d6@5, [g4,g5]]/2", AI: "[[d5,b5,d6] [e5,c6,e6]@3]/2", AJ: "[d5,d6,g6]/2", AK: "[g5,b5]", AL: "[a5,c6]",
  AM: "[c5,c6]/2", AN: "[[d5,d6]@31 ~]/2", AO: "[g5@9 ~@5 e6@2 f6@12 c6@2 f6@2, e6@3 c6@4 ~, ~@10 g5@6 a5@15 ~]/2",
  AP: "[[d6,g6]@31 ~]/2", AQ: "[c6,e6]@15 ~", AR: "f6@2 e6 c6, a5", AS: "[d5,d6]/2",
  AT: "[[e5,c6]@16 [c5,f5]@15 ~, a5@31 ~]/2", AU: "[c5,e5,g5]/2",
})).s("gm_string_ensemble_2").gain(0.23).pan(0.6)

// chords · percussive organ · "Channel 6"
const percussive_organ = note("<~@90 A@2 B@2 ~@36 C@2 D@2>".pickRestart({
  A: "[[b4,e5]@29 ~@3]/2", B: "[[e5,b5,e6]@31 ~]/2", C: "[a4,c5]/2", D: "[g4,c5]/2",
})).s("gm_percussive_organ").gain(0.27).pan(0.7)

// chords · distortion guitar · "Channel 7"
const distortion_guitar = note(`<
  ~@16 A@3 B C@2 D@2 E F G H E F G H I J K J ~@16 A@3 L C@2 D@2 E F G H E F G H I J K J ~@12 A@3 B C@2 M N O@2 E F G H E
  F G H I J K J ~@4 E F G H E F G H E F G H E F G H E F G H ~@2 P@2
>`.pickRestart({
  A: "[~@4 [c4,g4]@8 ~@4 [a2,g4]@3 ~ g4@10 ~@2 f2@2 c4 ~ g4@8 c4@2 g4 ~, c3@11 ~ c3@4 ~@4 a2@12 ~@4 f2@12, ~@14 c4@5 ~ c4@8 ~@2 c4@4 ~@2 c4@7 ~@5]/3", // C5 A7
  B: "[d4,g4]@6 c4 ~ b3@4 g2@2 b3 ~, g2@5 ~@3, c4@5 ~@3 [d4,g4]@7 ~", // G5
  C: "[~@4 [f3,c4]@7 ~@9 [f3,c4]@6 ~@2 f3 ~ f3@2, [f2,c3]@7 [f3,c4]@2 ~@5 c4@2, ~@16 [f2,c3]@9 ~ [f2,c3]@4 ~@2]/2", // F5
  D: "[~@4 [e3,b3]@9 ~@5 b2@2 e3@2 ~@2 e3 ~ e3@2 [e2,b2]@2 e3 ~, [e2,b2]@14 [e3,b3]@5 ~ b3@5 ~ b3@5 ~, ~@16 e2@5 ~ [e2,b2]@5 ~@5]/2", // E5
  E: "[a2,g3,c4]@15 ~", F: "[f2,f3,c4]@15 ~", G: "[g2,g3,c4]@15 ~", H: "[g2,g3,b3]@15 ~", I: "~@8 g3@7 ~, [e3,b3]@15 ~",
  J: "[e3,a3]@15 ~", K: "[e3,b3]", L: "[d4,g4]@6 c4@2 b3@4 g2@2 b3 ~, g2@5 ~@3, c4@5 ~@3 [d4,g4]@7 ~",
  M: "~@6 b2@9 ~, [e2,e3]", N: "[e2,b2,e3,b3]@7 ~",
  O: "[[e2,b2]@3 ~ e3@14 [e2,e3]@2 [e2,e3]@2 [e2,e3]@2 [e2,e3]@2 [e2,e3]@2 e3 ~ e3@2, ~ e2@3 ~@3 e2, ~@2 b2@5 ~@9]/2", // E5 E
  P: "[c3,g3]/2", // C5
})).s("gm_distortion_guitar").gain(0.29).pan(0.4)

// other · electric guitar muted · "Channel 8"
const electric_guitar_muted = note("<~@3 A B@3 C ~@31 D B@3 C ~@31 D E F G@2 H@2 I J ~@50>".pickRestart({
  A: "~@5 g4@3", B: "[c5@9 ~ b4@2 e4@2 a4@10 ~@2 a4@2 g4@2 e4@5 ~ f4@3 ~ f4@2 e4 ~@3 c5@2]/3",
  C: "c5@2 b4@5 ~ b4@2 a4@4 ~@2", D: "~@7 g4", E: "c5@3 ~ c5@5 ~ c5@2 b4@2 e4 ~", F: "a4@9 ~ a4@2 g4@2 e4@2",
  G: "[f4@2 f4@2 f4@2 f4@2 f4@2 e4@4 d4@4 d4@5 ~ e4@3 f4@2 g4@2 ~]/2", H: "[c5@2 d5@2 e5@2 c5 d5@3 g4 a4@4 c5]/2",
  I: "c5 b4!2 a4!2 g4!2 f4", J: "f4@2 e4@2 c4@9 ~@3",
})).s("gm_electric_guitar_muted").gain(0.37).pan(0.7)

// chords · piano · "Channel 11"
const piano = note(`<
  ~@8 A@4 B@2 C@2 D@3 E F@2 G@2 H I J@2 H I K@2 L M N@2 O P Q R A@8 B@2 S@2 D@3 E F@2 G@2 H I J@2 H I T@2 L M N@2 O P Q
  R A@8 D@3 E F@2 G@2 U V H I J@2 H I T@2 L M N@2 O P Q R W X Y@2 W Z AA@2 W AB AC@2 W Z AD@2 W AE AD@2 AF AG AH@2
>`.pickRestart({
  A: "[~@4 [c4,e4]@4 g3 ~ c3@2 [g3,c4,e4] ~ a3@2 ~@2 a3 ~ [a3,c4,e4]@4 a2@2 [a3,c4,e4]@2 a2@2 a3@2 ~@4 [a3,c4,f4]@4 f2@2 [a3,c4,f4]@2 f2@2 ~@6 [b3,d4,g4]@4 ~@2 [b3,d4,g4]@2 g2@2 [b3,d4,g4]@2, c2@13 ~@3 a2@6 ~@10 f2@7 ~@9 g2@9 ~@7, ~@4 g3@3 ~@7 [c4,e4]@5 ~@11 [c4,f4]@5 ~@11 [b3,d4,g4]@5 ~@5 g1@6 ~@2]/4", // C Am F G C F5 G
  B: "[~@4 [c4,e4]@4 g3 ~ [g3,c4,e4]@2 c3@2 ~@6 [a3,c4,e4]@4 a3 ~ a3@2 a2@2 a3@2, c2@13 ~@3 a2@10 ~@6, ~@4 g3@2 ~@8 [a3,c4,e4]@5 ~@7 [c4,e4]@4 ~@2]/2", // C Am C
  C: "[~@4 [c4,f4]@4 a3 ~ [a3,c4,f4]@2 f2 ~@3 g2@4 [b3,d4,g4]@2 ~@2 b3 ~ [c4,d4,g4]@2 [g1,g2] ~@3, f2@10 ~@12 [g1,g2]@5 ~@5, ~@4 a3@2 ~@8 [b3,d4,g4]@5 ~@13]/2", // F5 F G Csus2 G
  D: "[g3@3 ~ [g3,c4,e4]@4 g3 ~ [g3,c4,e4]@2 c3@2 ~@6 [c4,e4]@4 a3 ~ [a3,c4,e4]@2 a2@2 ~@6 [c4,f4]@5 ~@3 f2@4, c2@11 ~@5 a2@10 ~@6 f2@10 ~@6, ~@4 c3@7 ~@3 [a3,c4,e4]@5 ~ a3@3 ~@7 [a3,c4,f4]@5 ~ a3@3 ~@3 [a3,c4,f4]@5 ~]/3", // C Am F5 Am F
  E: "[g2,d4,g4]@4 c4@2 ~@2 b3 ~ b3@2 g2@2 b3@2, c4@3 ~ [d4,g4]@4 ~@2 [d4,g4]@5 ~, ~@3 g2@2 ~@3", // G5
  F: "~@4 [c4,f4]@5 ~@3 f2@4, f2@5 ~@3, ~@4 a3@3 ~@3 [a3,c4,f4]@5 ~", // F5 F
  G: "~@4 [b3,e4]@5 ~@3 e2@4, e2@5 ~@3, ~@4 g#3@3 ~@3 [g#3,b3,e4]@5 ~", // E5 E
  H: "~@4 [c4,e4]@4 g3 ~ [g3,c4,e4]@2 [a1,a2]@2 [g3,c4,e4]@2, [a1,a2]@11 ~@5, ~@2 g3 ~@5", // C A C A
  I: "[f1,f2]@2 [f3,a3] ~ [a3,d4,f4] ~ [a3,c4,f4]@4 [f1,f2]@2 [a3,c4,f4]@2 [f1,f2] ~, ~@3 [f1,f2]@6 ~@7", // F Dm F
  J: "[[g1,g2]@2 [g3,c4] ~ c4@2 [g3,d4]@3 ~ [g3,e4]@3 ~ [g1,g2,g3,d4]@4 [d3,g3] ~ [g3,b3] ~ g3@4 ~@2 g3@2 ~@2, ~@3 [g1,g2]@10 ~@6 g1@11 ~@2, ~@4 g3 ~@14 g2@6 ~ g2@4 ~@2, ~@11 b3@4 ~]/2", // G C5 G5 C G5 G
  K: "[~@4 [g3,c4]@2 [g3,d4]@3 ~ [g3,e4]@3 ~@15 g2@2 g3 ~, g1@14 [g3,d4]@6 g2@5 ~@7, ~@2 g2@13 ~@3 g1@6 ~@2 g1@5 ~, ~@22 b3@9 ~, ~@22 g3@7 ~@3]/2", // C5 G5 C G5
  L: "~@4 [b3,e4]@5 ~ [g3,b3,e4]@2 e2@2 [a1,a3,c4,e4]@2, e2@11 ~@5, ~@4 g3@3 ~@9", // E5 Em Am
  M: "~@2 [a1,a3,c4,e4]@3 ~ [a3,c4,e4]@4 a2@2 [c4,e4]@2 [a2,a3] ~, ~@6 a1@9 ~, ~@12 a3 ~@3", // Am C A
  N: "[~@4 [g3,b3,e4]@5 ~ [g3,b3,e4]@2 e2@2 [a1,a3,c4,e4]@4 [a1,a3,c4,e4]@3 ~ [a3,c4,e4]@4 ~@2 [a3,c4,e4]@3 ~, e2@10 ~@12 a1@3 ~ a1@4 ~@2]/2", // Em Am
  O: "[a3,d4,f4]@3 ~ [a3,d4]@2 d3@2 a3@2 ~@2 a3@3 ~, d2@7 ~, ~@4 f4 ~@3 [c4,e4]@6 ~@2, ~@5 d3@3", // Dm D5 C
  P: "[a3,d4,f4]@3 ~@7 [d4,f4]@2 d3@2 ~@2, d2@15 ~, ~ [a3,d4,f4] a3 ~, ~@6 d3@5 ~@5", // Dm
  Q: "[d4,g4]@4 c4 ~ [c4,d4,g4]@2 ~@2 c4@2 g2@2 b3 ~, g2@9 ~ [d4,g4]@5 ~, c4@2 ~@6 g1@7 ~", // G5 Csus2 G5
  R: "[d4,g4]@4 b3 ~ [b3,d4,g4]@2 g2@4 [b3,d4,g4]@2 [g1,g2] ~, g1@13 ~@3, b3@3 ~@13", // G5 G
  S: "[~@4 [c4,f4]@4 a3 ~ [a3,c4,f4]@2 f2 ~@3 g2@4 [b3,d4,g4]@2 ~@2 b3 ~ [c4,d4,g4]@2 [g1,g2]@4, f2@10 ~@12 [g1,g2]@5 ~@5, ~@4 a3@2 ~@8 [b3,d4,g4]@5 ~@13]/2", // F5 F G Csus2 G
  T: "[~@4 [g3,c4]@2 [g3,d4]@3 ~ [g3,e4]@3 ~@15 g2@2 g3@2, g1@14 [g3,d4]@6 g2@5 ~@7, ~@2 g2@13 ~@3 g1@6 ~@2 g1@5 ~, ~@22 b3@9 ~, ~@22 g3@7 ~@3]/2", // C5 G5 C G5
  U: "~@4 [e3,b3]@6 [e1,e2]@2 e3@2 [e1,e2] ~, [e1,e2]@9 ~@3 b3 ~@3", // E5 E
  V: "[e1,e2,e3,b3,e4] ~ [e1,e2,e3,b3,e4] ~ [e1,e2,e3,b3,e4] ~ [e1,e2,e3,b3,e4] ~ [e1,e2,e3,b3,e4] ~ [e1,e2,e3,b3,e4] ~ [e1,e2,e3,b3,e4] ~ [e1,e2,e3,b3,e4] ~", // E5
  W: "[e5,c6]@2 ~ [e5,c6]@2 ~ [e5,c6]@2 ~ [d5,b5]@2 ~ [d5,b5]@3 ~, [a2,a3]@7 ~ [a2,a3]@7 ~", // C G A
  X: "[c5,a5]@2 ~ [c5,a5]@2 ~ [c5,a5]@2 ~ [c5,g5]@2 ~ [c5,g5]@3 ~, f2@15 ~, ~@8 f3@7 ~", // F C5
  Y: "[d5 e5 ~ [d5,g5]@3 [g2,g3,c5,g5] ~@2 e5 ~@2 e5 ~ [g2,g3] ~ [g2,g3]@3 [g4,b4]@2 ~ [g4,b4]@2 [g4,b4]@2 ~ [g4,b4]@3 ~@2, [g2,g3]@6 ~@2 [g2,g3,d5,g5]@2 ~ [g2,g3,d5,g5]@3 ~@7 [g2,g3]@10 ~, g5 ~@6 [d5,g5]@2 ~@7]/2", // G5 C5 G G5 G G5
  Z: "[c5,a5]@2 ~ [c5,a5]@2 ~ [c5,a5]@2 ~ [c5,g5]@2 ~ [c5,g5]@3 ~, f2@15 ~, ~ f3", // F C5
  AA: "[d5 e5 ~ [d5,g5]@3 [g2,g3,c5,g5] ~@2 e5@2 ~ e5 ~ [g2,g3] ~ [g2,g3]@3 [g4,b4]@2 ~ [g4,b4]@2 [g4,b4]@2 ~ [g4,b4]@3 ~@2, [g2,g3]@6 ~@2 [g2,g3,d5,g5]@2 ~ [g2,g3,d5,g5]@3 ~@7 [g2,g3]@10 ~, g5 ~@6 [d5,g5]@2 ~@7]/2", // G5 C5 G G5 G G5
  AB: "[c5,a5]@3 [c5,a5]@2 ~ [c5,a5]@2 ~ [c5,g5]@2 ~ [c5,g5]@2 f3@2, f2@15 ~, ~@8 f3@5 ~@3", // F C5
  AC: "[d5 e5 ~ [d5,g5]@3 [g2,g3,c5,g5] ~@2 e5@2 ~ e5 ~ [g2,g3,g5]@5 [g4,b4]@2 ~ [g4,b4]@2 [g4,b4]@2 ~ [g4,b4]@3 ~@2, [g2,g3]@6 ~@2 [g2,g3,d5,g5]@2 ~ [g2,g3,d5,g5]@3 ~@7 [g2,g3]@10 ~, g5@2 ~@12 d5@3 ~@15]/2", // G5 C5 G G5 G
  AD: "[d5 e5 ~ [d5,g5]@3 [g2,g3,c5,g5] ~@2 e5 ~@2 e5 ~ [g2,g3,g5]@5 [g4,b4]@2 ~ [g4,b4]@2 [g4,b4]@2 ~ [g4,b4]@3 ~@2, [g2,g3]@6 ~@2 [g2,g3,d5,g5]@2 ~ [g2,g3,d5,g5]@3 ~@7 [g2,g3]@10 ~, g5@2 ~@12 d5@3 ~@15]/2", // G5 C5 G G5 G
  AE: "[c5,a5]@2 ~ [c5,a5]@2 ~ [c5,a5]@2 ~ [c5,g5]@3 [c5,g5]@3 ~, f2@7 ~, ~@8 f3@7 ~", // F C5
  AF: "[e5,c6]@2 ~ [e5,c6]@2 ~ [e5,c6]@3 [d5,b5]@2 ~ [d5,b5]@3 ~, [a1,a2]@15 ~", // C G A
  AG: "[c5,f5,a5]@2 ~ [c5,f5,a5]@2 ~ [f5,a5]@3 [e5,g5]@2 ~ [c5,e5,g5]@2 ~@2, [f1,f2]@15 ~, ~@6 c5@5 ~@5", // F Em C F
  AH: "[c1,c2,g3,c4,e4]/2", // C
})).s("gm_piano").gain(0.43).pan(0.4)

// chords · acoustic guitar steel · "Channel 12"
const acoustic_guitar_steel = note(`<
  A B C@2 A B C@2 A B C@2 A B C@2 A B C@2 D@2 E@2 F G H I F G H I J K L M N@2 O P A B C@2 A B C@2 A B C@2 A B C@2 D@2
  Q@2 F G H I F G H I J K L M N@2 O P A B C@2 A B C@2 A B C@2 D@2 Q@4 F G H I F G H I J K L M N@2 O P F G H I F G H I F
  G H I F G H I F G H I R S ~@2
>`.pickRestart({
  A: "~@4 g3@3 ~ g3@2 ~@2 g3 ~ g3@2, [g2,c3,e3]@9 ~ [g2,c3,e3]@5 ~, ~@2 [c4,e4]@3 ~ [c4,e4]@2", // C
  B: "~@4 a3@2 ~@2 a3@2 ~@2 [a3,c4] ~ [a3,c4]@2, [a2,e3]@9 ~ [a2,e3]@4 ~@2, ~@2 [c4,e4]@3 ~ e4@2", // Am A5 C
  C: "[~@4 a3@2 ~@2 a3@2 ~@2 a3 ~ a3@2 ~@2 a3 ~ [d4,g4]@4 b3@2 [g2,d3]@2 [b3,d4,g4]@2 [g2,d3] ~, [f2,c3]@9 ~ [f2,c3]@5 ~ [g2,d3]@9 ~@7, ~@4 [c4,f4]@6 ~@2 [c4,f4]@6 ~@2 b3@3 ~@9]/2", // G5 G G5 F5 G5 F5
  D: "[~@4 [a3,c4,f4]@2 ~@2 [f2,c3]@2 [a3,c4,f4]@2 [f2,c3,f3]@2 ~@6 a3@3 ~ a3@2 [f2,c3]@2 [a3,c4,f4]@2 [f2,c3] ~, [f2,c3]@7 [a3,c4,f4]@2 ~@5 [a3,c4,f4]@5 ~ [c4,f4]@6 ~@6, ~@16 [f2,c3]@9 ~@7]/2", // F F5 F F5 F F5 F F5
  E: "[[e2,g#3,b3,e4]@3 ~ [g#3,b3,e4]@4 [e2,e3]@2 ~@2 [e2,e3]@2 ~@2 [e2,e3]@3 ~ [e2,e3] ~@3 g#3 ~@3 [e2,e3]@2 g#3 ~, ~@4 e2@3 ~@3 [g#3,b3,e4]@4 [g#3,b3,e4]@5 ~ [g#3,b3,e4]@4 ~@2 [g#3,b3,e4]@4 ~@2, ~@22 [e2,b2,e3]@5 ~@5]/2", // E E5
  F: "[a2,e3,g3,e4]@3 ~ [g3,c4,e4]@4 g3 ~ [g3,c4,e4]@2 [a2,e3]@2 [g3,c4,e4]@2, ~@2 [a2,e3]@3 ~@3", // A7 C A5 C A5
  G: "[f2,c3]@3 ~ [c4,f4]@5 a3 [a3,c4,f4]@2 [f2,c3]@2 [a3,c4,f4]@2, ~@4 [f2,c3]@7 ~@5, ~@4 a3@3 ~@9", // F5 F F5 F F5
  H: "[g2,d3]@3 ~ [d4,g4]@4 c4 ~ c4@2 [g2,d3]@2 c4 ~, ~@4 [g2,d3]@7 ~@5, ~@4 c4@3 ~@3 [d4,g4]@5 ~", // G5
  I: "[b3,d4,g4]@3 ~ b3@2 ~@2 b3 ~ b3@2 [g2,d3]@2 [b3,d4] ~, [g2,d3]@4 [d4,g4]@5 ~ [d4,g4]@4 ~@2, ~@3 [g2,d3]@2 ~@3", // G G5 Bm G5
  J: "~@4 [b3,e4]@4 g3 ~ [g3,b3,e4]@2 [e2,e3]@2 [g3,b3,e4]@2, [e2,e3]@5 ~@3, ~@2 g3 ~@5", // E5 Em E Em E
  K: "~@4 [c4,e4]@4 a3 ~ [a3,c4,e4]@2 [a2,e3]@2 [a3,c4,e4]@2, [a2,e3]@5 ~@3, ~@4 a3@3 ~@9", // C Am A5 Am A5
  L: "~@4 g3@2 ~@2 g3@2 ~@2 g3 ~ g3@2, [e2,e3]@9 ~ [e2,e3]@6, ~@2 [b3,e4]@3 ~ [b3,e4]@2", // E E5
  M: "~@4 a3@3 ~ a3@2 [a2,e3]@2 [a3,c4,e4]@2 [a2,e3] ~, [a2,e3]@9 ~@7, ~@2 [c4,e4]@3 ~@3", // A5 Am A5 C
  N: "[~@4 [d4,f4]@4 a3@2 d3@2 d4@2 d3@2 a3@2 ~@2 [d4,f4]@4 a3 ~@3 a3 ~ a3@2, [d2,d3]@9 ~ d2@7 ~ [d2,d3]@7 ~ [d2,d3]@6, ~@2 a3 ~@3 f4@3 ~@5 [d4,f4]@2, ~@12 a3 ~@7 a3@2 ~@10]/2", // Dm D Dm
  O: "~@4 [d4,g4]@4 c4 ~ c4@2 g2@2 c4 ~, g2@11 ~@5, ~@4 c4@2 ~@4 [d4,g4]@5 ~", // G5
  P: "[g2,d4,g4]@4 ~@4 b3 ~ b3@2 g2@2 b3 ~, b3@3 ~ [b3,d4,g4]@4 ~@2 [d4,g4]@5 ~, ~@3 g2@2 ~@3", // G5 G G5
  Q: "[[e2,g#3,b3,e4]@3 ~ [g#3,b3,e4]@4 [e2,e3]@2 [g#3,b3,e4]@2 [e2,e3]@2 ~@2 [e2,e3]@3 ~ [e2,e3] ~@3 g#3 ~@3 [e2,e3]@2 g#3 ~, ~@4 e2@3 ~@7 [g#3,b3,e4]@5 ~ [g#3,b3,e4]@4 ~@2 [g#3,b3,e4]@4 ~@2, ~@22 [e2,b2,e3]@5 ~@5]/2", // E E5
  R: "[a2,e3,a3,c4,e4]@2 ~ [a3,c4,e4] [a2,e3]@2 [a2,e3,a3,c4,e4]@2 ~ [a3,c4,e4] [a2,e3]@2 [a3,c4,e4]@2 [a2,e3] ~", // Am A5 Am A5 Am A5
  S: "[f2,c3,f3,a3,c4]@2 ~@2 c3@2 [f2,c3,f3,a3,c4]@2 ~ [f3,a3,c4] ~@2 [f3,a3,c4]@2 ~@2, ~@3 [f2,f3,a3,c4]@3 ~@4 [f2,c3]@4 ~@2", // F F5
})).s("gm_acoustic_guitar_steel").gain(0.26).pan(0.6)

// chords · electric guitar clean · "Channel 13"
const electric_guitar_clean = note(`<
  ~ A B C ~ A B C ~ A B C ~ A B C ~ A B C ~@2 D E ~@8 F ~ G ~@6 A B C ~ A B C ~ A B C ~ A B C ~@2 D E ~@8 F ~ G ~@6 A B
  C ~ A B C ~ A B C ~@2 D E D E ~@8 F ~ G ~@26 H I@2
>`.pickRestart({
  A: "~@10 c4 ~@5", B: "~@10 a3 ~@5", C: "~@9 b3@2 ~@5", D: "~@6 [e3,g#3,b3]@5 ~ b3@3 ~",
  E: "b3@5 ~ g#3@3 e2@2 ~@3 e3 ~", F: "~@12 b3@3 ~", G: "~@14 b3 ~", H: "~@7 g2", I: "[c2,c3]/2",
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C D A B A B A B A B A B A B A B A C A B A B A B A B
  A B A B A B A B A B A B E F E ~
>`.pickRestart({
  A: "x!2", B: "x ~@3 x!2 ~@2", C: "x ~@3 x!2 ~ x", D: "x!8", E: "x", F: "x ~@6 x",
})).gain(0.5)

// drums · snare
const snare = s("sd").struct("<A@39 B A@19 C A@15 D A@17 E A@15 F A@7 G A@7 G A@3 G ~@4>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@5 x!3 ~ x ~", C: "~ x!3", D: "~@4 x ~@5 x!3 ~@3", E: "x!8", F: "~@4 x ~@5 x!3 ~@2 x",
  G: "~@4 x ~@5 x!6",
})).gain(0.5)

// drums · low tom
const low_tom = s("lt").struct("<~@59 A ~@15 B ~@33 B ~@13 C ~@3 C D ~@5>".pickRestart({
  A: "~@6 x!2", B: "~@7 x", C: "~@3 x", D: "~ x ~ x",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A B A B A B A B A B A B A C A B A B A B A C A B A B A B A
  C A B A B A B A B A B A B A B A B A B A C A B A B A B A B A B A B ~@2 A B A B A B A B A B A B A B A B A B A B A B A B
  A B A B A B A B A B A B ~@4
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!3 ~@5",
})).gain(0.37)

// drums · mid tom
const mid_tom = s("mt").struct("<~@59 [~@5 x!2 ~] ~@63 [~@3 x] ~@3 [~@3 x] [~ x ~ x] ~@5>").gain(0.5)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ C ~ A ~ C ~ A ~ C ~ A ~@3 A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B
  ~ A ~ C ~ A ~ C ~ A ~ C ~ A ~@3 A ~ B ~ A ~ A ~ A ~ A ~ A ~ A D E ~ A ~ C ~ A ~ C ~ A ~ C ~ A ~ F ~ A ~ C ~ A ~ C ~ A
  ~ C ~ A ~ C ~ A ~ C ~@3 G
>`.pickRestart({
  A: "~@7 x", B: "~@2 x ~ x ~ x!2", C: "~@6 x!2", D: "~ x!3", E: "x!8", F: "~@3 x", G: "x ~@10 x ~@2 x ~",
})).gain(0.44)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@132 [~@5 x!2 ~ x ~ x!2 ~ x!2 ~] [~@2 x!2 ~ x ~ x!2 ~ x ~@2 x ~@2]>").gain(0.25)
// … 20 more lines

More by Bryan Adams