Strudelify

Hallelujah

Deep Purple

KeyA minorTempo92 bpm
0:00/0:00
// Hallelujah — Deep Purple
// 92 bpm, 4/4, key A minor. 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 87 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · "bass"
const bass = note(`<
  A B C D E ~ F G H I J K L M N O P Q R S T U V W X Y P Z AA AB AC AD AE AF AG AH F G H I J K AI AJ AK AL AM AN AO AP AQ
  AR@2 AQ AS AT AU AV AW AT AU AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP B BQ D BR@2 ~@2
>`.pickRestart({
  A: "a1@2 ~@10 a1 a1@3", B: "d2@2 ~@10 d2 d2@3", C: "f2@2 ~@10 f2 f2@3", D: "g2 ~@3 g2 ~ g2 ~", E: "e2",
  F: "a1@3 ~ a1@4 g1@3 ~ g1@3 ~", G: "f1@3 ~ f1@3 ~ e1!2 ~ e1 e1@2 g1@2", H: "a1@3 ~ a1@3 ~ g1@4 g1@3 ~",
  I: "f1@4 f1@3 ~ e1 e2 ~ e1 e1@2 g1@2", J: "a1@3 ~ a1@4 g1@3 ~ g1@4", K: "f1@4 f1 ~ f1@2 e1@3 ~ e1@2 g1@2",
  L: "a1@3 ~ a1@4 g1@4 g1@4", M: "f1!2 ~ f1 f1@4 e1@3 ~ e1@2 g#1 ~", N: "a1@3 ~ a1@3 g1!2 ~ g1 ~ g1@3 ~",
  O: "f1@3 ~ f1@2 ~ e1!2 ~ e1 ~ e1@4", P: "a1@3 ~ a1@2 ~ a1 g1 ~ g1 ~ g1@4", Q: "f1@3 ~ f1@3 f1 e1!3 ~ e1@2 e1@2",
  R: "a1@4 a1@3 a1!2 ~ a1 ~ a1 ~ a1@2", S: "g1@3 ~ g1@3 g1 g1@2 g1 ~ g1 ~ g1@2", T: "c2@3 ~ c2@3 c2!2 ~ c2 ~ c2@2 c2@2",
  U: "e1@3 ~ e1@3 e1!2 ~ e1 ~ e1 ~ e1@2", V: "d2@3 ~ d2@3 d2!2 ~ d2 ~ d2@4", W: "e2@3 ~ e2@3 e2 e2@2 e2@2 d2@2 c2 ~",
  X: "a1@4 a1@2 ~ a1 g1 ~ g1 ~ g1@4", Y: "f1@4 f1@2 ~ f1 e1 ~ e1 ~ e1@2 g1 ~", Z: "f1@4 f1@3 ~ e1!2 ~ e1!2 ~ g1 ~",
  AA: "a1 ~ a1 ~ a1 ~ a1!2 a1@2 a1 ~ a1 ~ a1@2", AB: "g1 ~ g1 ~ g1@2 g1!5 ~ g1 ~ g1@2",
  AC: "c2@2 c2 ~ c2@2 c2!5 ~ c2 ~ c2@2", AD: "e2@2 e2 ~ e2@2 e2!5 ~ e2 ~ e2@2",
  AE: "d2@2 d2 ~ d2 ~ d2!2 c2 d2!2 ~ d2 ~ d2!2", AF: "c2 d2 d2@2 d2 ~ d2!2 c2 d2 d2@2 d2@2 d2!2",
  AG: "d2 e2!2 ~ e2@2 e2@2 [d2,e2] e2!2 ~ e2 ~ e2!2", AH: "d2 e2!2 ~ e2 ~ e2!2 d2 e2!2 ~ e2@2 e1 ~",
  AI: "a2@4 a2@3 a2 g2@2 g2 ~ g2@3 ~", AJ: "f2@4 f2@3 e2!2 ~ e2 ~ e2@2 g2@2", AK: "a2@3 ~ a2@3 g2!2 ~ g2 ~ g2@4",
  AL: "f2@4 f2@3 e2!2 ~ e2 ~ e2@2 e2@2", AM: "a1@4 a2@2 ~ [g2,a2] g1@2 g1@2 g2@4", AN: "f1@4 f2@2 ~ e2 e1 ~ e1@2 e2@4",
  AO: "a1@2 a1 ~ a1@2 a1 a1@2 a1 a1@2 a1 ~ a1@2", AP: "a2 ~ a2 ~ a2 ~ a2!2 ~ a2!4 d2 d#2 ~",
  AQ: "a1 ~ a1!2 a1@2 c2 d2 ~ d2@2 c2 d2@2 c2 ~", AR: "a1 ~ a1!2 a1@2 c2 d2 ~ d2@2 c2 d2@2 c2@2",
  AS: "a1@2 ~ a1 a1@2 ~ c#2 ~ c#2 ~ c#2 d2@2 e2@2", AT: "d2@2 ~ d2 d2@2 ~ f#2 ~ f#2 ~ f#2 g2@2 a2 ~",
  AU: "b1@2 ~ b1 b1@2 ~ d#2 ~ d#2 ~ d#2 e2@2 f#2 ~", AV: "e2@3 e2 e2@2 ~ g#2 ~ g#2 ~ g#2 a2@2 b2 ~",
  AW: "a1@2 ~ a1 a1@2 a1 c#2 ~ c#2 ~ c#2 d2@2 e2@2", AX: "e2@2 ~ e2 e2@2 ~ [g1,g#1] ~ g#1 ~ g#1 a1 ~ b1 ~",
  AY: "a2@3 ~ a2@4 g2@3 ~ g2@3 ~, ~@8 a2 ~@7", AZ: "f2@3 ~ f2@3 ~ e2@3 ~ e2@4", BA: "f2@3 ~ f2@4 e2@3 ~ e2@4",
  BB: "f2@3 ~ f2@4 a1@3 ~ a1@4, e2 ~@15", BC: "d2@4 d2@3 d2!2 ~ d2 ~ d2 ~ d2 ~", BD: "e2@4 e2@3 e2!2 ~ e2 ~ e2 ~ e2@2",
  BE: "e1@3 ~ e1@2 ~ e1 e1@2 b1@2 e2 b1 e1 b1", BF: "a2@3 ~ a2@2 ~ a2 g2!3 ~ g2@4",
  BG: "f2@3 ~ f2@3 f2 e2!3 ~ e2@2 e2@2", BH: "a2@3 ~ a2@3 g2!3 ~@2 g2@2 g2@2",
  BI: "f2@3 ~ f2@3 f2 e2!3 ~ e2 ~ e2@2, e2 ~@15", BJ: "a1@4 a1@3 a1!4 ~ a1 ~ a1 ~",
  BK: "g1@4 g1@3 ~ g1!2 g1@2 g1 ~ g1@2", BL: "c2@4 c2@3 c2!4 ~ c2@2 c2 ~", BM: "e2@3 ~ e2@3 e2!4 ~ e2 ~ e2 ~",
  BN: "d2@3 ~ d2@3 d2!2 ~ d2 ~ d2 ~ d2 ~", BO: "e2@2 e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", BP: "a2@2 ~@10 a2 a2@3",
  BQ: "f2@2 ~@10 f2 f2@2 ~", BR: "[a2@29 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · rock organ · "orgsolo"
const rock_organ = note(`<
  A B C D E@2 F G H I J K L@2 M N O P Q R@2 S T U V W X Y Z AA AB AC AD@2 AE@2 AF AG AF AG AH AG AI@4 AJ@2 AK@2 AL AM AN
  AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC@2 BD BE BF@2 BG BH BI BJ BK BL BM BN BO BP BQ@4
>`.pickRestart({
  A: "[c5,e5,a5,c6,e6]", B: "[d5,f#5,a5,d6,f#6]@15 ~", C: "[c5,f5,c6,f6]",
  D: "[b4,d5,g5,b5,d6]@14 ~ [d#4,f4,g#4,a4,b4]", // G Fm7b5
  E: "[[c5,c#5,d5,d#5,e5,f5,f#5,g#5,a5,a#5,b5,c6,c#6,d6,d#6] [c5,d5,d#5,e5,f5,f#5,g#5,a#5] [f4,f#4,g4,g#4,a4,a#4,b4,c#5] [a3,a#3,b3,c4,c#4,d4,d#4,e4] [d#3,e3,f3,f#3,g3,g#3] [a2,a#2,b2,c3,c#3,d3] [c#2,d#2,e2] [d2,a2] ~@2 [f#3,g#3] [a#3,c4,c#4,d4,e4] [d#4,f4,f#4,g4,g#4,a4] [a#4,b4,c5] [c#5,d#5,f5] [e3,e4]@16 ~, ~@5 g#2@2 [a#2,b2]@2 [d#3,f3,g3]@2 ~@4 f#5 ~@16, ~@3 [f2,f#2,g2] [c3,c#3,d3,e3] [a3,b3] ~ [d5,e5] ~@8]/2", // C#m D5 F#sus2 A#dim C# E Bmaj7 D# …
  F: "~ [a4,c5,e5] g3 [g4,b4,d5,e5], a3@3 ~@5", G: "f3@4 [f4,a4,c5,e5]@4 e3 [g#4,a#4,b4,d5,e5] ~@2 [g#4,b4,d5,e5]@4",
  H: "a3 [a4,c5,e5] g3 [g4,b4,d5,e5]", I: "f3@4 ~@2 f3 ~ e3 [g#4,b4,d5,f5] ~@2 [g#4,b4,d5,e5]@4, ~ [f4,a4,c5,e5] ~@2",
  J: "a3@4 [a4,c5]@4 [g3,b4]@4 ~@2 g3 ~, ~ e5@2 ~, ~@8 d5@3 ~ [g4,b4,d5,e5]@4", // Am G Em7
  K: "f3@4 [f4,a4,c5,e5]@4 e3 [g#4,b4,d5,e5] ~ e3 [g#4,b4,d5,e5]@2 g#3@2", // Fmaj7 E7
  L: "[[a3,c6]@8 [g3,b5,d6]@8 [f3,f5,c6]@8 [e3,e5,g#5,b5]@7 ~, a5@23 ~ c6 ~@7]/2", // Am G F5 E
  M: "a3 ~@3 [a4,c5,e5]@2 a3 [a4,c5,e5] g3 [g4,b4,e5] g3 ~ [g4,b4,d5,e5] ~ g3 [g4,b4]", // Am Em Em7 G
  N: "f3 ~ f3 ~ [f4,a4,c5,e5]@2 f3 [f4,a4,e5] e3 [g#4,b4,e5] e3 ~ [e4,g#4,b4,e5] ~ [e4,g#4,b4] ~", // Fmaj7 E
  O: "a3 ~@3 [a4,b4,c5,e5] ~ a3 [a4,c5] g3 [g4,b4,d5,e5] g3!2 [g4,b4,d5,e5]@2 g3 d5", // Am Em7
  P: "f3 ~ f3 ~ [f4,a4,e5] ~ f3 [f4,a4,c5,e5] e3 [e4,g#4,b4,e5] e3 ~ [e4,g#4,b4,e5]@2 ~@2, ~@2 c5 ~@5", Q: "[a3,c6,e6]",
  R: "[[g4,b5,d6] [c4,e5,c6], g5@31 ~]/2", S: "[e4,g#5,b5,e6]", T: "[d4,f#5,d6]", U: "[e4,b5,e6,g#6]",
  V: "a3@4 [a4,c5,e5]@2 ~ [a4,c5] g3 [g4,b4,d5,e5] ~ g3 ~@2 g3 ~, ~@3 [g4,b4,d5,e5]", // Am Em7
  W: "f3@4 [f4,a4,c5,e5]@2 f3!2 [d3,e3] [e4,f4,g#4,b4,e5] ~ e3 [g#4,b4,e5]@2 g#3@2", // Fmaj7 Dsus2 E
  X: "a3@4 [a4,c5,e5]@4 g3 [g4,b4,d5,e5] ~ g3 ~@2 g3 ~, ~@3 [g4,b4,d5,e5]", // Am Em7
  Y: "f3@4 ~@2 f3@2 e3 [g#4,a#4,b4,c#5,d5,f#5] ~ e3 [g#4,b4,d5]@3 ~, ~@4 [a4,c5,f5]@4 ~ g5@6 ~", Z: "[a3,a4,c5,e5]",
  AA: "[g3,g4,b4,d5]", AB: "[c4,c5,e5]", AC: "[e4,b4,e5,g#5]", AD: "[d4,d5,f#5,d6]/2", AE: "[[e4,e5,g#5,b5,e6]@31 ~]/2",
  AF: "[a4,c6,e6] [g4,b5,d6,e6]", AG: "[f4,c6,f6] [e4,g#5,b5,e6]", AH: "[a4,c6] [g4,b5,d6], e6",
  AI: "[[a4,c5]@7 ~ [g4,b4,d5]@7 ~ [f4,a4,c5]@7 ~ [e4,g#4,b4]@7 ~ [a4,c5]@7 ~ [g4,b4,d5]@7 ~ [f4,a4,c5]@7 ~ [e4,g#4,b4]@7 ~, e5@63 ~]/4", // Am G F E Am G F E
  AJ: "[[a4,c5]@7 ~ [g4,b4,d5]@7 [f4,a4,c5]@8 ~ [e4,g#4]@8, e5@31 ~, ~@12 b4@3 ~]/2", // Am G F E
  AK: "[c6@2 c6 ~@5 c#6@7 ~ [a5,c#6,e6] ~ [a5,c#6,e6] ~ [a5,c#6,e6] [a5,d6,f#6] ~ [a5,e6,g6] ~ [a5,e6,g6] ~ [a5,e6,g6] [a5,d6,f#6] ~ [a5,c#6,e6] ~, a4, [a5,e6] ~]/2", // A D A7 D A A5
  AL: "[a5,d#6,e6,a6] ~ [a5,e6,a6]!2 [a5,a6] ~ [a4,c5,e5,f5,b5,c6] [a4,d5,f#5] ~ [d5,f#5] ~ [c5,e5] [d5,f#5] ~ [a4,c5,e5] ~, ~@2 e6 ~@5", // A A5 A Fmaj7 D C D Am
  AM: "[d#6,e6,a6] ~ [a5,e6,a6]!2 [a5,a6] ~ [a4,c5,e5,f5,b5,c6] [a4,d5,f#5] ~ f#5 ~@2 f#5@2 [c5,e5] ~, a5@2 ~@2 e6@2 ~@6 d5 ~@3", // A A5 A Fmaj7 D C
  AN: "[d#6,g6,a6] e6 [a5,e6,a6]!2 [a5,e6]@2 [a4,c5,e5,f5,b5,c6] [a4,f#5] ~ a4@2 ~ [a4,f#5]@2 [a4,c5] ~, a5@2 ~@2 a6 ~@4 f#5 ~@6", // Am7b5 A5 Fmaj7 D Am
  AO: "[d#6,e6,f#6] ~ [a5,d#6,e6,g6]!2 [a5,e6,g6]@2 [a4,c5,b5,c6,d6] f#5 ~ [a4,f#5] ~ c5 f#5 ~ [a4,c5] ~, [a5,g6] ~@6 e5", // D#m A7 D7 D Am A7
  AP: "[a4,c#5,e5]@2 ~ [a4,c#5,e5] [a4,c#5,e5]@2 ~ [a4,c#5,e5] ~ [a4,c#5,e5] ~ [a4,c#5,e5] [a4,d5,f#5] ~ [a4,c#5,e5] ~", // A D A
  AQ: "[d5,f#5,a5]@2 ~ [d5,f#5,a5] [d5,f#5,a5]@2 f#5 [d5,f#5,a5] ~ [d5,f#5,a5] ~ [d5,f#5,a5] [d5,e5,g5]@2 [d5,f#5,a5] ~", // D Em7 D
  AR: "[b4,d#5,f#5]@2 d#5 [b4,d#5,f#5] [d#5,f#5]@2 [d#5,f#5] [b4,d#5,f#5] ~ [b4,d#5,f#5] ~ [b4,d#5] [b4,e5,g#5] ~ [b4,d#5,f#5] ~, ~@4 b4 ~@11", // B D#m B E B
  AS: "[e5,g#5,b5]@2 g#5 [e5,g#5,b5] [g#5,b5]@2 e5 [e5,b5,d6]@2 [e5,b5,d6] ~ [e5,b5,d6] [e5,a5,c#6] ~ [e5,g#5,b5] ~, ~@4 e5 ~@2 a#5 ~@8", // E G#m E7 A E
  AT: "[a4,c#5,e5] ~ [a4,c#5,e5,g5]!3 ~ [c#5,e5] [a4,c#5,e5,g5] ~ [a4,c#5,e5,g5] ~ [a4,c#5,e5,g5] [a4,d5,f#5] ~ [a4,c#5,e5] ~, g5 ~@7", // A A7 C#m A7 D A
  AU: "[a4,d5,f#5] ~ [d5,f#5] [a4,d5,f#5] [d5,f#5]@2 ~ [d5,g#5,a5,c6] ~ [d5,a5,c6] ~ [d5,a5,c6] [d5,g5] ~ [d5,f#5,a5] ~, ~@4 a4 ~@7 b5@2 ~@2", // D D7 G5 D
  AV: "[b4,d#5,f#5]@2 [b4,d#5] [b4,d#5,f#5] [d#5,f#5]@2 b4 [b4,f#5,a5] ~ [b4,f#5,a5] ~ [b4,f#5,a5] [b4,e5,g#5] ~ [b4,d#5,f#5] ~, ~@4 b4 ~@11", // B D#m B7 E B
  AW: "[e5,g#5,b5]@3 [e5,g#5,b5] [g#5,b5]@2 e5 [e5,b5,d6] ~ [e5,b5,d6] ~ [e5,b5,d6] [e5,a5,c#6] ~ [e5,g#5,b5] ~, ~@4 e5 ~@11", // E G#m E7 A E
  AX: "[e5,a5,c6]@7 ~ [d5,g5,b5]@8, b5 ~@15", AY: "[c5,f5,a5]@7 ~ [b4,e5,g#5]@8",
  AZ: "[c5,f5,a5]@8 [b4,e5,g#5]@7 ~, g5 ~@15", BA: "[a4,c5,f5]@7 ~ [a4,c5,e5]@8", BB: "[a4,d5,f#5]",
  BC: "[[b4,e5,g#5]@15 ~]/2", BD: "~ a5@7 [g5,b5,d6]@8, e6, c6 ~", BE: "[f5,a5,c6] [e5,g#5,b5,e6], [d6,e6] ~@15",
  BF: "[[a5,c6]@7 ~ [g5,b5,d6]@7 ~ [f5,a5,c6]@7 ~ [e5,g#5,b5]@7 ~, e6@31 ~, ~@16 d6 ~@15]/2", // Am G F E
  BG: "[a4,c5,e5]@11 ~ [a4,c5,e5]@3 ~", BH: "[g4,b4,d5]@10 [g4,b4,d5]@3 [g4,b4,e5]@2 ~", BI: "[g4,c5,e5]@15 ~",
  BJ: "[b4,e5,g#5]@10 [b4,e5,g#5]@3 [b4,e5,g#5]@3", // E
  BK: "[d5,f#5,a5]@4 [f#5,a5,c6]@2 d5!2 ~ f#5 [f#5,g#5,a5,c6] ~ [d5,g5] ~ [f#5,a5]@2, ~@8 d5@2 d5@2 b5@2 d5 ~", // D F#dim G5 F#m
  BL: "[g#5,b5]@4 [b5,d6]@4 [b1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2] [f2,g2,g#2,a2,a#2,b2,c3,c#3] [d3,d#3,e3,f3,f#3,g3,g#3] [a3,a#3,b3,c4,c#4,d4,d#4,e4] [f4,f#4,g4,g#4,a4,b4] [a#4,c5,c#5,d5,d#5,e5,f5] [f#5,g5,g#5,a5,a#5,b5,c6] [c#6,d6,d#6,e6,f6], e5@9 ~@7, ~@4 a#5 ~@11", // G#m Bm A#
  BM: "[a4,c5,e5,a5]@15 ~, [f5,g5] ~@15", BN: "[a4,d5,f#5,a5]@15 ~", BO: "[c5,f5,a5,c6]",
  BP: "~@8 [g#1,a1,a#1,b1,c2,c#2,d2,d#2,e2,f2,g#2] [f#2,g#2] ~ d#3 [f#3,g#3,a#3] [c#4,d#4] [f#4,g#4,b4] [a#4,c5,c#5,d5,e5], [d5,g5,b5,d6]@13 ~ [g4,a4]@2, ~@9 [g2,a2,b2,c3]@2 [f3,g3]@2 [d4,e4,f4]@2 ~, ~@5 [a#2,c#3,d3,e3] [a3,b3,c4] ~", // F#sus2 F# C#sus2 G#m7 A#dim G Gsus2 Cmaj7 …
  BQ: "[[d#5,f5,f#5,g5,b5] ~@63, [e5,a5,c6,e6]@31 ~]/4", // B Am
})).s("gm_rock_organ").gain(0.37).pan(0.8)

// chords · rock organ · "orgsolo" · soft notes
const rock_organ_soft = note(`<
  ~@2 A B ~@3 C ~ D E F ~@2 G H I J ~@6 K ~@25 L M N O ~ P Q R S T ~@9 U ~ V ~@15
>`.pickRestart({
  A: "a5@15 ~", B: "~@15 [c#4,e4,f#4,g4,a#4]", C: "~@11 e3 ~@2 e3 ~", D: "~@7 f3 ~@3 e3 ~@4", E: "~@6 a3 ~ g4@3 ~@5",
  F: "~@3 f3 ~@3 e3, ~@14 f#3 ~", G: "~@2 a3@2 ~@5 d5 ~@5 [d5,e5]", H: "~@7 c5 ~@6 [e3,e5] [f#3,g#3]",
  I: "~@2 a3 ~@4 e5 ~@7 b4", J: "~@7 e3", K: "~@6 a3 e5 ~@8", L: "~@5 d6 ~@3 a4 ~ a4!2 ~@3",
  M: "~@5 d6 ~@3 [a4,d5] ~ [a4,c5,e5] a4 ~ a4 ~", N: "~@2 b5 ~@3 d6 d5 ~@3 [a4,c5] ~@4",
  O: "~@6 f6 [a4,f5] ~@3 a4!2 ~@3", P: "~@6 [d5,a5] ~@9", Q: "~@2 f#5 ~@3 b4 ~@4 f#5 ~@4", R: "~@2 e5 ~@13",
  S: "~@6 [a4,g5] ~@9", T: "~@2 a4 ~@3 [a4,d5] ~@9", U: "d6 ~@15", V: "~@8 a5 ~@7",
})).s("gm_rock_organ").gain(0.21).pan(0.8)

// chords · electric guitar clean · "guitar1"
const electric_guitar_clean = note(`<
  A B C D E ~ F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH@2 AI AJ AI AJ AK AL AM AN AO AP AM AQ AR
  AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL X Y Z AA AB AC AD AE AF BM ~@8
>`.pickRestart({
  A: "[c4,e4,g#4,a4]@2 ~@10 [c4,e4,a4] [c4,e4,a4]@2 ~", B: "[d4,f#4,g4,a4]@2 ~@10 [d4,f#4,a4] [d4,f#4,a4]@2 ~",
  C: "[c4,f4,a4]@2 ~@10 [c4,f4,g#4,a4] [c4,f4,a4]@2 ~", D: "[b3,d4,g4] ~@3 [b3,d4,g4] ~ [b3,d4,g4] ~", E: "[g#3,b3,e4]",
  F: "a3@2 c4@2 [a3,e4]@4 g3@2 b3 ~ [g3,b3,d4]@3 ~, ~@4 d4 ~@11", // A5 G
  G: "f3@2 a3@2 [f3,a3,c4]@3 ~ e3@2 g#3@2 [g#3,b3,e4]@3 ~", H: "a3@3 ~ [a3,e4]@4 g3@2 b3 ~ [g3,b3,d4]@3 ~",
  I: "f3@2 a3@2 [f3,a3,c4]@3 ~@3 g#3@2 [g#3,b3,e4]@3 ~", J: "a3@3 ~ [a3,c4,e4]@4 g3@3 ~ [g3,b3,d4]@3 ~",
  K: "f3@3 ~ [f3,a3,c4]@3 ~@3 g#3@2 [g#3,b3,e4]@3 ~", L: "a3@2 c4@2 [a3,c4,e4]@4 g3@2 b3 ~ [g3,b3,d4]@3 ~",
  M: "~@2 a3@2 [f3,a3,c4]@4 ~ g#3 ~@2 [g#3,b3,e4]@3 ~, ~@4 e3 ~@3", N: "a3 c4 [a3,e4]@2 g3 b3 [g3,d4]@2, ~@12 c#4 ~@3",
  O: "~@2 a3@2 [f3,c4]@4 ~ g#3 ~ g#3 [g#3,b3,e4]@3 ~, f3 ~ e3 ~", P: "a3@2 c4@2 [a3,e4]@4 g3@2 b3 ~ [g3,b3,d4]@3 ~",
  Q: "f3@3 ~ [f3,c4]@4 e3@2 g#3 ~ [g#3,b3,e4]@3 ~", R: "a3@2 c4@2 a3@2 c4@2 a3@3 ~ a3@2 c4@2, ~@2 e4@3 ~ e4@2",
  S: "~@2 b3 ~@3 b3 ~@3 b3 ~ d4@2 b3@2, g3@3 ~ g3@3 ~, ~ d4 ~@2",
  T: "~@2 c4@2 ~@4 c4@2 g3@2 ~@2 g3 ~, e4 g3 ~ c4, ~@3 e4@5", U: "~ g#3 b3 d4 ~ d4 ~ g#3, e3@4 ~@4 e4@7 ~, ~@3 b3",
  V: "f#4@2 ~ f#4 a3 ~@2 a3, ~@4 d4@4 ~@2 d4@5 ~, ~@3 f#3",
  W: "~@2 g#3@2 ~@2 g#3@2 ~@2 g#3 ~ c4@2 b3 ~, e4@2 d4 ~, ~ b3 ~@2",
  X: "a3 c4 [a3,e4]@2 g3 b3 [g3,d4]@2, ~@4 c4 ~@7 b3 ~@3", // A5 G5
  Y: "~@2 a3@2 [f3,a3,c4]@4 ~ [g#3,e4]@2 ~ [g#3,b3,e4]@2 [g#3,b3,d4]@2, f3@2 ~@2 e3 ~@3", // F C#m E G#dim
  Z: "a3@3 ~ [a3,e4]@4 ~@2 b3@2 [g3,b3,d4]@4, ~@2 g3 ~", // A5 G
  AA: "~@4 [a3,c4]@4 ~ [g#3,b3,e4]@2 ~ [g#3,b3,e4]@3 ~, f3@3 ~@5", // Am E
  AB: "a3@2 c4@2 e4@3 c4 a3@2 c4@2 a3@2 c4@2, ~@2 a3 ~@3 e4@2",
  AC: "g3@2 b3@2 [g3,d4]@3 b3 g3@2 b3 ~ g3@2 b3@2, ~@3 d4", AD: "g3@2 c4@2 [g3,e4]@3 c4 g3@2 c4 ~@3 c4@2, ~@3 [g3,e4]",
  AE: "e3 g#3 b3 e4 b4 d4 b3 g#3", AF: "~ d4 a3 ~@2 a3 d4@2, f#4@2 ~ d4@2 ~@3, ~@4 f#3@2 a3 ~",
  AG: "f#3@3 ~ a3@3 f#3 f#3@2 a3@2 f#3 ~ f#3 ~, ~@2 d4@3 ~@3, ~@4 f#3 ~@7 [a3,d4]@4", // D5
  AH: "[~@2 g#3 ~ [g#3,e4]@3 b3 g#3 ~ g#3 ~ [g#3,b3]@3 e3 f3 ~ g#3 ~ [g#3,d4]@3 ~ g#3@2 b3@2 [g#3,b3,e4]@3 ~, e3@4 b3@2 ~@3 e3@3 c4 ~@3 e3@4 ~@3 e3@3 ~@6, ~@4 c4 ~@7 e4@6 ~@2 [b3,e4] ~@11]/2", // C#m G#m G#dim E E5
  AI: "[e3,a3]@4 [c4,e4,a4]@3 [e3,a3] [d3,g3] ~ [d3,g3] ~ [d3,g3,b3,d4,g4]@3 ~", // A5 Am A5 G5 G
  AJ: "[f3,a3]@4 [c4,f4,a4]@3 [f3,a3] [e3,g#3] ~ [e3,g#3] ~ [e3,g#3,b3,e4,g#4]@3 ~, ~@4 g4 ~@11", // F E
  AK: "[e3,a3]@4 [c4,e4,a4]@3 [e3,a3] [d3,g3] ~ [d3,g3] ~ [d3,g3,b3,d4,g4]@4", // A5 Am A5 G5 G
  AL: "[f3,a3]@4 [c4,f4]@3 [f3,a3] [e3,g#3] ~ [e3,g#3] ~ [e3,g#3,b3,e4,g#4]@3 ~, ~@4 a3 ~@11", // F F5 F E
  AM: "e3@2 a3 ~ [e3,a3,c4]@4 e3@2 g3 ~ [e3,g3,b3]@3 ~", // Am Em
  AN: "f3@2 a3 ~ [f3,a3,c4,f4]@4 ~@2 g#3 ~ [g#3,b3,e4]@3 ~, ~@2 e3 ~", // F E
  AO: "~@2 a3@2 [e3,a3,c4]@4 e3@2 g3 ~ [e3,g3,b3]@3 ~, e3 ~@3", AP: "f3@2 a3 ~ [a3,c4,f4]@4 e3@2 g#3@2 [g#3,b3,e4]@4",
  AQ: "f3@2 a3 ~ [a3,c4,f4]@4 ~@2 g#3@2 [e3,g#3,b3,e4]@4, ~@2 e3 ~", AR: "a3@9 ~@3 a3@2 a3!2", AS: "a3 ~ a3 a3@2 a3!11",
  AT: "[c#4,e4,a4] ~ [c#4,e4,a4]!3 ~ [a3,c4,e4] [a3,d4,f#4] ~ [a3,d4,f#4] ~ c4 [a3,d4,f#4] ~ [a3,c4,e4] ~", // A Am D Am
  AU: "[c#4,e4,a4] ~ [c#4,e4,a4]!3 ~ [a3,c4,e4] [a3,d4,f#4] ~ [a3,d4,f#4] ~ [c4,e4] [a3,d4,f#4]@2 [a3,c4,e4]@2", // A Am D C D Am
  AV: "[c#4,e4,a4] ~ [c#4,e4,a4]!3 ~ [a3,c4,e4] [a3,d4,f#4] ~ [a3,d4,f#4] ~ [c4,e4] [a3,d4,f#4]@2 [a3,d4,e4] ~", // A Am D C D Asus4
  AW: "[c#4,e4,a4] ~ [c#4,e4,a4]!3 ~ [a3,c4,e4] [a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,e4] [a3,d4,f#4] ~ [a3,c4,e4] ~", // A Am D Asus4 D Am
  AX: "[a3,c#4,e4,a4]@3 ~ a2 ~@2 a2!3 ~@4 a3 ~, a2 ~@2 [a3,c#4,e4,a4]@2 ~@11", // A
  AY: "[d3,a3,d4,f#4,a4]@2 ~@2 d3 ~ a3 ~ d3 [d3,d4] d3 ~@5, ~@3 [a3,d4,f#4,a4]@2 ~@11", // D
  AZ: "[b2,b3,d#4,f#4,b4]@2 ~@2 b2 ~@2 [d#4,f#4] ~@4 b3 ~@3, ~@3 [b3,d#4,f#4,a4,b4]@2 ~@11", // B D#m B7
  BA: "[e3,b3,e4,g#4,b4]@2 ~ [e3,b3,e4,g#4,b4] ~@2 [b3,e4] ~@2 [e3,b3,e4,g#4,b4] ~ e3 [b3,e4,f#4,g#4,b4] ~ [e3,b3,e4,g#4,b4] ~", // E E5 E
  BB: "[a2,a3,c#4,e4,f4,g4]@2 a2 ~ a2 ~ [a2,a3]!2 ~@4 [a2,a3] ~ a3 ~, ~@3 [a3,c#4,e4,g4]@3 ~@10", // A7 A A7
  BC: "[d3,a3,d4,f#4,g4,a4]@2 ~@2 d3 ~ d3 ~ d3 [a3,d4,f#4,a4] d3 ~ [a3,d4,f#4,a4]@2 [d3,d4,f#4,a4] ~, ~@3 [a3,d4,f#4,a4]@2 ~@11", // D
  BD: "[b2,b3,d#4,f#4,b4]@2 b2 ~ b2 ~ [b2,b3] b2!2 [b2,b3] b2 ~ [b2,b3] ~ b3 ~, ~@3 [b3,d#4,f#4,a4]@2 ~@11", // B B7
  BE: "[b3,e4,g#4,b4]@3 [b3,e4,g#4,b4] e3 ~ [e3,b3] b3 e3 b3 e3 ~ [b3,e4,g#4,b4] e3 [b3,e4,g#4,b4] ~, e3 ~@15", // E E5 E
  BF: "~ c4 [a3,c4,e4]@2 g3 b3 [g3,b3,e4]@2, a3 ~@3", BG: "~@2 a3@2 [f3,a3,c4]@4 e3@2 g#3 ~ [e3,g#3,b3,e4]@4, f3 ~@3",
  BH: "~@2 a3@2 [f3,a3,c4]@3 [a3,c4] ~@2 g#3@2 [e3,g#3,b3,e4]@4, f3 ~ e3 ~", // F Am E
  BI: "~@2 f3 ~ [d3,f3,a3]@4 ~@4 a3@4, d3 ~ c3@2, ~@5 e3@3", // Dm
  BJ: "~@5 f#3 ~ f#3, d3@6 d3@5 ~ d3@4, ~ f#3@3 a3@4, ~ d4@3",
  BK: "~@8 g#3@2 ~@2 g#3@2 ~ g#3, e3@3 e4@5, ~ g#3@3 ~@3 e3, ~@4 b3@4 ~@2 b3@5 ~",
  BL: "~@2 g#3@2 [g#3,b3]@2 ~ [g#3,b3,e4] ~@2 [e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]!2 ~, e3@3 e3 ~@4, e4 ~@3", // G#m E
  BM: "f3 ~ g#3 ~ [g#3,d4]@3 ~ g#3@2 b3@2 [g#3,b3,e4]@3 ~, e3@4 [b3,e4] ~@2 e3@3 ~@6", // G#dim E E5
})).s("gm_electric_guitar_clean").gain(0.6).pan(0.4)

// chords · electric guitar clean · "guitar1" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@8 A B C D ~ E ~@2 F G H I ~@2 J ~ K L M N ~@4 O P Q R ~ S ~@10 T ~ U V W ~ X Y Z AA AB AC AD AE AF AG AH AI ~ AJ AK
  K L M N ~@4 O R ~@8
>`.pickRestart({
  A: "~@2 c4@2 d4 c4@2 ~@9", B: "~@4 e3 ~@3", C: "~@2 c4@2 ~@6 b3 ~@5", D: "~@2 a3 ~@5 e3@3 ~@5", E: "f3 ~@3",
  F: "~@4 c4 ~@11", G: "~ a3 ~@6", H: "~@7 a3 ~@2 c4@2 ~@3 a3", I: "~@7 g3 b3 ~@6 g3", J: "~ a3@2 ~@5",
  K: "~@4 d4 ~@11", L: "~@11 e3 ~ e3 ~ b3, ~@6 e3 ~", M: "~ c4 ~@6", N: "~@6 f3 ~ e3 ~@2 e3 c4 ~@3", O: "~@14 f#3 a3",
  P: "~@2 a3@2 ~@11 f#3", Q: "~@4 e3 ~@4 d3 ~@6", R: "~@6 e3 ~@9", S: "~@7 g3 ~@8", T: "e3@9 a3!3 ~@4",
  U: "~@11 [a3,e4] ~@4", V: "~@11 a3 ~@4", W: "~@11 [a3,d4] ~@4", X: "f4 ~ a2 ~@3 a2 [a3,c#4] ~ a3!2 [a2,a3]!3 a2!2",
  Y: "~@2 d3 ~@3 [d3,d4,f#4] [d3,a3,d4] ~ a3 [a3,d4] [d3,a3,d4]!4 d3", // D D5
  Z: "~@2 b2 ~@2 b2!2 [b2,b3,b4] b2 [b2,b3]!3 b2 [b2,b3]!2 b2", AA: "~@2 e3 ~ e3!3 [e3,b3] e3 ~ e3 ~@5",
  AB: "~@9 [a2,a3] a3 [a2,a3] ~ [a2,a3] a2!2", AC: "~@2 d3 ~@4 [d3,a3] ~@3 d3 ~@2 a3 d3",
  AD: "~@7 b3 ~@3 [b2,b3] ~ b2!3", AE: "~@2 e3!2 ~ e3 ~ e3 b3 e3 ~ e3 ~@4", AF: "~@8 b3 ~@7", AG: "~@7 a3 ~@8",
  AH: "~@7 f3 ~@8", AI: "~@7 e3 ~@8", AJ: "~@7 e3@7 ~ b3", AK: "~@4 e4@2 e4@2 e3 e4 ~@6",
})).s("gm_electric_guitar_clean").gain(0.33).pan(0.4)

// chords · distortion guitar · "gitsolo"
const distortion_guitar = note(`<
  A B C@2 D ~ E F G H I J K L M N O P Q@2 R S T U V W X Y ~ Z AA AB AC AD AE@2 E F G AF I J AG@2 AH AI AJ@2 AK AL AM AN
  AO AP AQ AR AS AT AU AV AW AX AY AZ@2 ~@4 BA@2 BB BC BD@2 BE BF BG BH BI A BJ@2 ~@4
>`.pickRestart({
  A: "~@4 a4@11 ~", B: "~@3 a4@11 ~@2", C: "[~@4 a4@8 a4@10 ~@4 e4 ~ e4@2 d4@2]/2", D: "e4", E: "~@4 a4@7 ~ a4@2 g4 ~",
  F: "e4 d#4 d4 ~ c4 ~ d4 ~ e4@7 ~", G: "~@4 e5@8 d5 ~ c5 ~", H: "[d5,d#5] c5 ~ a4 ~@2 g4 ~ [g#4,a4]@2 e4@5 ~",
  I: "a5@3 ~ a5@4 a5@4 a5@4, b5 ~@15", J: "a5@4 d5 ~ c5 ~ [d5,d#5] [a4,c5]@2 ~ c5@2 a4@2",
  K: "e5 [c5,d5] ~@2 d5 ~ e5@2 c5@2 a4@6", L: "~@2 e4 [g4,a4] ~@2 d5 ~ e5@6 ~@2", M: "~@4 a3 ~@4 a3 ~@6",
  N: "~@4 a3 ~@7 c4 ~@3", O: "~@11 a3!2 ~@3", P: "c4 ~@3 c4 ~ d4 ~@2 b3 ~@2 b3 ~ b3 ~", Q: "[~@12 a4@14 ~@2 a4 ~@3]/2",
  R: "c5@3 ~", S: "~@14 e4 ~", T: "f#4@3 ~ f#4 ~ f#4 ~ d4@5 ~ e4 ~, ~@8 e4 ~@7",
  U: "g#4@2 e5 ~ g#4@2 d5 ~ f#4 e4@3 b4@2 g#4@2", V: "~@4 a4@7 ~ a4 ~ g4 ~",
  W: "d#4 c4@3 d4@2 e4@9 ~, ~ d4 ~@4 d#4 ~@9", X: "~@4 e5@10 d5 ~", Y: "[d5,d#5] c5@4 ~ a4@4 e4@5 ~", Z: "~@3 g3",
  AA: "c3@7 ~ e3@2 g3@2 a3@2 g3@2", AB: "e3@13 ~ e4 ~", AC: "f#4@3 ~ f#4@3 ~ f#4@2 [e4,f#4] e4 d4@4",
  AD: "e4@2 f#4 ~ d5@2 f#4@2 ~ b4@5 ~@2, ~@4 c5 ~@3",
  AE: "[g#4@2 a4@2 e5@4 d5@4 [e4,f4]@2 c5@4 d4@2 ~ a4@2 ~ a4@2 a4 a4@2 a4 ~@2, ~@14 e4 ~@5 b4@2 ~@10]/2", // Fmaj7
  AF: "[d5,d#5] c5@2 a4 ~@2 g4 ~ [g#4,a4]@2 e4@5 ~", AG: "[~@4 c5@11 c5@2 a4 ~ g4 ~@2 c5@4 a4 ~ g4 ~ a4 ~]/2",
  AH: "~@4 c5 a4 e4 ~ g5@4 e5 ~ d5 ~", AI: "d5@2 c5 ~ d5 ~ [d5,e5] d5@4 ~ c5@2 d5 ~",
// … 110 more lines

More by Deep Purple