Strudelify

Thunder in My Heart

Rene Froger

KeyG♯ minorTempo128 bpm
0:00/0:00
// Thunder in My Heart — Rene Froger
// 128 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 120 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): #Muted Gt.
setcpm(128/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.

// other · string ensemble 1 · "#St.Strin"
const string_ensemble_1 = note(`<
  ~@7 A B C@2 B ~@8 D@2 E F@3 G H I@3 J K@2 L M ~@8 N@2 O P N@2 Q P R@2 S T@3 U@2 V@2 W X Y@2 L M ~@8 Z AA AB AC AD AE
  AB AF N@2 AG P AH@2 Q P R@2 S T@3 U@2 V@2 W X K@2 L M AI@2 U@2 V@2 W X K@2 L AJ
>`.pickRestart({
  A: "b4 ~ [g#4,g#5] [f#4,f#5] [d#4,d#5] [f#4,f#5] [g#4,g#5] [b4,b5] [d#5,d#6] ~ [d#5,d#6] ~@5", // G# F# D# F# G# B D#
  B: "~@2 [g#5,g#6] [f#5,f#6] [d#5,d#6] [f#5,f#6] [g#5,g#6] [b5,b6] [d#6,d#7] ~@7", // G# F# D# F# G# B D#
  C: "~@2 [g#5,g#6] [f#5,f#6] [d#5,d#6] [f#5,f#6] [g#5,g#6] [b5,b6] [d#6,d#7] ~ [d#6,d#7] ~@5", // G# F# D# F# G# B D#
  D: "[[b3,b4,b5]@15 ~ [c#4,c#6]@8 [f#4,f#5,f#6]@4 [e4,e5,e6]@4, ~@15 c#5@8 ~@9]/2", E: "[d#4,d#5,d#6]",
  F: "[[b4,b5] [c#5,c#6] [d#5,d#6] [f5,f6] [c#5,c#6] [d#5,d#6] f5 [g5,g6] [d#5,d#6] [f5,f6] g5 [g#5,g#6] [g5,g6] [g#5,g#6] [a#5,a#6] [b5,b6] c#7@7 ~ [b5,b6]@5 ~ [g#5,g#6]@4 [f#5,f#6]@2 [b4,b5]@7 ~ [c#6,c#7] [b5,b6] [a#5,a#6] [b5,b6], ~@6 f6@2 ~@2 g6@2 ~@3 c#6@8 ~@25]/3", // B C# D# F C# D# G D# …
  G: "[a#5,a#6]@15 ~", H: "[b5,b6] ~ [a#5,a#6] ~ [g#5,g#6] ~ [f#5,f#6] ~ [g#5,g#6] ~ [f#5,f#6] ~ [e5,e6] ~ [d#5,d#6] ~",
  I: "[[c#6,c#7]@7 ~ [b5,b6]@4 [g#5,g#6]@2 [f#5,f#6]@10 [b5,b6]@2 [g#5,g#6]@2 [a5,a6]@2 [a#5,a#6]@18]/3", // C# B G# F# B G# A A#
  J: "[c#6,c#7]@2 [b5,b6] ~@3 [c#6,c#7]@2 [b5,b6] ~@7", // C# B C# B
  K: "[[a#5,a#6]@7 ~ [g#5,g#6]@5 ~ [g#5,g#6]@4 [f#5,f#6]@2 [b4,b5]@5 ~ [b5,b6] ~ [c#6,c#7] ~ [d6,d7] ~]/2", // A# G# F# B C# D
  L: "[d#6,d#7]@4 ~ [d#6,d#7]@3", M: "~@2 [d#6,d#7]@7 ~ [d#6,d#7] ~ [d#6,d#7] ~ [d#6,d#7] ~",
  N: "[[d#5,d#6]@6 [g#5,g#6] [d#5,d#6]]/2", O: "[c#5,c#6]", P: "[e5,e6]@3 [d#5,d#6]@3 [c#5,c#6]@2",
  Q: "[c#5,c#6]@11 ~ [c#5,c#6]@2 [d#5,d#6]@2", R: "[[e5,e6]@15 ~ f#6@7 ~ [f#5,f#6]@4 [e5,e6]@4, ~@15 f#5@8 ~@9]/2",
  S: "[d#5,d#6]", // D#
  T: "[[b4,b5] [c#5,c#6] [d#5,d#6] [f5,f6] [c#5,c#6] [d#5,d#6] f5 [g5,g6] [d#5,d#6] [f5,f6] g5 [g#5,g#6] [g5,g6] [g#5,g#6] [a#5,a#6] [b5,b6] c#7@7 ~ [b5,b6]@5 ~ [g#5,g#6]@4 [f#5,f#6]@2 [b4,b5]@7 ~ [d#6,d#7]@4, ~@6 f6@2 ~@2 g6@2 ~@3 c#6@8 ~@25]/3", // B C# D# F C# D# G D# …
  U: "[[b5,b6]@4 [a#5,a#6]@2 [c#6,c#7]@14 [b5,b6]@2 [d#6,d#7]@4 [c#6,c#7] ~ [b5,b6] ~ [a#5,a#6] ~]/2", // B A# C# B D# C# B A#
  V: "[[c#6,c#7]@7 ~ [b5,b6]@4 ~@2 [g#5,g#6]@4 [f#5,f#6]@2 [b4,b5]@7 ~ [c#6,c#7] [b5,b6] [a#5,a#6] [b5,b6]]/2", // C# B G# F# B C# B A# …
  W: "[a#5,a#6]", X: "[g#5,g#6]@6 [a#5,a#6] ~ [b5,b6] ~ [a#5,a#6] ~ [g#5,g#6] ~ [f#5,f#6] ~",
  Y: "[[c#6,c#7]@7 ~ [b5,b6]@5 ~ [g#5,g#6]@4 [f#5,f#6]@2 [b4,b5]@5 ~ [b5,b6] ~ [c#6,c#7] ~ [d6,d7] ~]/2", // C# B G# F# B C# D
  Z: "[d#6,d#7] ~ [c#6,c#7] ~ [b5,b6] ~ [a#5,a#6] ~ [b5,b6] ~ [a#5,a#6] ~ [g#5,g#6] ~ [f#5,f#6] ~", // D# C# B A# B A# G# F#
  AA: "[g#5,g#6] ~ [f#5,f#6] ~ [e5,e6] ~ [d#5,d#6] ~ [e5,e6] ~ [d#5,d#6] ~ [c#5,c#6] ~ [b4,b5] ~", // G# F# E D# E D# C# B
  AB: "[c#5,c#6] ~ [c#6,c#7] ~ [c#6,c#7]@2 [b5,b6] ~ [c#6,c#7] ~ [b5,b6] ~ [a#5,a#6] ~ [g#5,g#6] ~", // C# B C# B A# G#
  AC: "[b5,b6] ~ [a#5,a#6] ~ [g#5,g#6] ~ [f#5,f#6] ~ [g#5,g#6] [f#5,f#6] [e5,e6] [d#5,d#6] [f#5,f#6] [e5,e6] [d#5,d#6] [c#5,c#6]", // B A# G# F# G# F# E D# …
  AD: "[d#5,d#6] ~ [b5,b6] ~ [b5,b6] ~ [a#5,a#6] ~ [b5,b6] ~ [a#5,a#6] ~ [g#5,g#6] ~ [f#5,f#6] ~", // D# B A# B A# G# F#
  AE: "[g#5,g#6] ~ [f#5,f#6] ~ [e5,e6] ~ [d#5,d#6] ~ [f#5,f#6] [e5,e6] [d#5,d#6] [c#5,c#6] [e5,e6] [d#5,d#6] [c#5,c#6] [b4,b5]", // G# F# E D# F# E D# C# …
  AF: "[d#6,d#7] [c#6,c#7] [b5,b6] [a#5,a#6] [c#6,c#7] [b5,b6] [a#5,a#6] [g#5,g#6] [b5,b6] [a#5,a#6] [g#5,g#6] [f#5,f#6] [a#5,a#6] [g#5,g#6] [f#5,f#6] [e5,e6]", // D# C# B A# C# B A# G# …
  AG: "[c#5,c#6]@6 [c#5,c#6] [d#5,d#6]", AH: "[[d#5,d#6]@13 [g#5,g#6]@2 [d#5,d#6]]/2",
  AI: "[[c#6,c#7]@8 [b5,b6]@5 ~ [g#5,g#6]@4 [f#5,f#6]@2 [b4,b5]@7 ~ [d#6,d#7]@4]/2", AJ: "~@2 [d#6,d#7]@7 ~@7",
})).s("gm_string_ensemble_1").gain(0.39).pan(0.3)

// bass · electric bass finger · "#Fing.Bas"
const bass = note(`<
  ~@3 A B@7 C D E F G D H F G I J K L M N O P Q N K P Q R K@2 S B@3 S B@2 T D H F G D H F G I J K U Q N K P Q N K P Q R
  K@2 S B@3 S B@2 T S B@3 S B@2 T D H F G D H F V I J K U Q N K P Q N K P Q R K@2 Q N K P Q N K P Q R K@2
>`.pickRestart({
  A: "~@7 g#1", B: "~@2 g#1 ~ g#1@2 ~ g#1!2 ~ g#1@2 ~@2 g#1@2", C: "~@2 g#1 ~ g#1@2 ~ g#1!2 ~ f#1 ~ f#1!2 g#1 ~",
  D: "g#1@2 ~@2 g#1@2 ~ g#1!2 ~ g1@2 f#1@2 e1@2", E: "~@2 e1 ~ e1@2 ~ e1!2 ~ e2@2 c#2@2 b1@2",
  F: "a#1@2 ~@2 a#1@2 ~ a#1!2 ~ a#1@2 a#1@2 d#1@2", G: "d#1@4 ~@2 d#1@4 ~@2 d#1@3 ~",
  H: "~@2 e1 ~ e1@2 ~ e1!2 ~ e1@2 c#2@2 b1@2", I: "c#2@2 ~@2 c#2@2 ~ c#2!2 ~ c#2@3 ~ e1@2",
  J: "f#1@2 ~@2 f#1@2 ~ f#1!2 ~ f#1@3 ~ e1@2", K: "d#1@2 ~@2 d#1@2 ~ d#1!2 ~ d#1@3 ~ d#1@2",
  L: "d#1 ~ d#1 ~ d#1 ~ d#1 ~", M: "e1@2 ~@2 e1@2 e1 ~ e1@4 e1 ~ b1@2", N: "~@2 b1 ~ b1@2 ~ b1!2 ~ b1@2 b1@2 b1@2",
  O: "d#1@2 ~@2 d#1@2 ~ d#1!2 ~ d#1@2 d#1@2 d#1@2", P: "g#1@2 d#1 ~ g#1@2 a#1@2 b1 ~ a#1@2 g#1@2 f#1@2",
  Q: "e1@2 ~@2 e1@2 ~ e1!2 ~ e1@3 ~ b1@2", R: "~@2 b1 ~ b1@2 ~ b1!2 ~ b1@2 c#2@2 d2@2",
  S: "g#1@2 ~@2 g#1@2 ~ g#1!2 ~ g#1@2 ~@2 g#1@2", T: "~@2 g#1 ~ g#1@2 ~ g#1!2 ~ g#1 ~ g#1@3 ~",
  U: "d#1@2 ~@2 d#1@2 ~@2 d#1 ~ d#1 ~ d#1 ~ d#1@2", V: "d#1@4 ~@2 d#1@3 ~ d#1 ~ d#1@3 ~",
})).s("gm_electric_bass_finger").gain(0.57)

// chords · brass section · "Brass Sec"
const brass_section = note(`<
  ~@11 A B ~@2 C D ~@2 C E ~@4 F ~@3 F ~@3 F ~ G H@7 A B ~@2 C D ~@2 C E ~@2 I ~ F ~@3 F ~@3 F J K H@7 L B ~@6 M B ~@2 N
  D ~@2 N E ~@2 O ~ F ~@3 F ~@3 F J P ~ F ~@3 F ~@3 F ~ G
>`.pickRestart({
  A: "~@10 [b3,b4]!3 [c#4,c#5] [b3,b4] ~", B: "[g#3,g#4]@2 [f#3,g3,f#4,g4] [f3,f4] ~@12",
  C: "e4@6 d#4@6 c#4@3 [c#4,d#4]", D: "b3@7 ~", E: "b3", F: "~@8 [b3,f#4,b4] ~@2 [b3,f#4,b4] ~@2 [b3,f#4,b4] ~",
  G: "~@10 [c#4,d#4,g4,a#4] ~ [c#4,d#4,g4,a#4] ~ [c#4,d#4,g4,a#4] ~", H: "~@10 [g#4,g#5] ~@5",
  I: "~@8 [d#4,g4,d#5]!3 [d#4,g4,c#5] [d#4,g4,b4] [c#4,g4,a#4]@3", J: "~@8 [d#4,d#5]@2 ~ [c#4,c#5]@2 ~ [b3,b4]@2",
  K: "[a#3,a#4]@13 ~@3", L: "~@10 [g#3,g#4]!2 [b3,b4]!2 [g#3,g#4] ~",
  M: "~@10 [g#3,g#4]!2 [b3,b4]!2 [g#3,g#4] [f#3,f#4]", N: "e4@6 d#4@5 [d#4,e4] c#4@4",
  O: "~@8 [d#4,g4,d#5] [d#4,g4,c#5] [d#4,g4,b4] [d#4,g4,a#4] [c#4,d#4,g#4] [c#4,d#4,g4]@3", // D# D#7 D#aug D# C#sus2 D#7
  P: "[a#3,a#4]@6 ~@3 b3 [c#4,b4,c#5] ~ [b3,b4] ~ [g4,g5] [a#4,a#5], ~@4 [a#3,a#4] ~@3", // A# C#7 B G A#
})).s("gm_brass_section").gain(0.56).pan(0.7)

// chords · brass section · "Brass Sec"
const brass_section_2 = note(`<
  ~@3 A@8 ~@13 B@2 C D B@2 E D F@2 G H ~@20 B@2 I D B@2 E D F@2 J K ~@8 L@4 M@4 ~@12 B@2 I D B@2 E D F@2 J K B@2 C D B@2
  E D F@2 N@2
>`.pickRestart({
  A: "[~@14 [g#3,b3,d#4,g#4,b4]@15 ~ [g#3,b3,e4,g#4,b4]@15 ~ [g#3,c#4,f#4,g#4,a#4]@15 ~ [g#3,b3,d#4,g#4,b4]@15 ~ [g#3,d#4,g#4,b4,d#5]@15 ~ [g#3,e4,g#4,b4,e5]@15 ~ [g#3,f#4,a#4,c#5,g#5]@15 ~ [g#3,d#4,g#4,b4,d#5]@2]/8", // G#m E F# G#m E F# G#m
  B: "[[c#4,f#4,a#4,c#5]@6 ~@2 [b3,e4,g#4,b4]@5 ~ [b3,f#4,b4,d#5]@10 ~@8]/2", // F# E B
  C: "b4@4 a#4@4 [d#3,d#4,g4,a#4,c#5]@7 ~, [d#3,d#4,g#4,d#5]@7 ~@9", D: "[g#3,d#4,g#4,b4,d#5]@3 ~",
  E: "[d#3,d#4,g#4,a#4,d#5]@7 ~ [d#3,d#4,g4,a#4,c#5]@7 ~", // D#sus4 D#7
  F: "[[c#4,f#4,a#4,c#5]@6 ~@2 [b3,e4,g#4,b4]@5 ~ [b3,d#4,f#4,b4]@10 ~@8]/2", // F# E B
  G: "[d#3,b3,d#4,g#4,b4]@4 ~ [d#3,b3,d#4,g#4,b4]@2 ~", H: "~ [a#3,c#4,g4,a#4]@3 ~@4, d#3 ~",
  I: "b4@4 a#4@3 ~ [d#3,d#4,g4,a#4,c#5]@7 ~, [d#3,d#4,g#4,d#5]@7 ~@9", J: "[d#3,b3,d#4,g#4,b4]@3 ~@5",
  K: "[d#3,c#4,g4]@13 ~@3", // D#7
  L: "[[g#3,b3,d#4,g#4,b4]@13 ~ [g#3,b3,e4,g#4,b4]@15 ~ [g#3,c#4,f#4,g#4,a#4]@15 ~ [g#3,b3,d#4,g#4,b4]@15 ~@3]/4", // G#m E F# G#m
  M: "[[g#3,d#4,g#4,b4,d#5]@12 ~@2 [g#3,e4,g#4,b4,e5]@15 ~ [g#3,f#4,a#4,c#5,g#5]@15 ~ [g#3,d#4,g#4,b4,d#5]@10 ~@8]/4", // G#m E F# G#m
  N: "[[d#3,d#4,g#4,b4]@4 ~ [d#3,d#4,g#4,b4]@2 ~@2 [a#3,c#4,g4,a#4]@3 ~@4, b3@5 b3@4 ~@7, ~@2 d#3 ~]/2", // G#m Gdim
})).s("gm_brass_section").gain(0.27).pan(0.6)

// other · string ensemble 1 · "#Velo Str"
const string_ensemble_1_2 = note(`<
  ~@26 A@2 ~@2 A@2 ~@4 B@2 C D B@2 C D ~@14 A@2 ~@2 A@2 ~@4 B@2 C D B@2 C D ~@22 A@2 ~@2 A@2 ~@6 A@2 ~@2 A@2 ~@4
>`.pickRestart({
  A: "[~@17 d#2 d#3 g#2 g#3 a#2 a#3 b2 b3 a#2 a#3 g#2 g#3 f#2 f#3 ~, ~@15 g#2@2 ~@15, ~@8 g#3 ~@7]/2",
  B: "~@2 [b2,b3] ~ [b2,b3] [a#2,a#3] [g#2,g#3] ~ [g#2,g#3]@2 [b2,b3] ~@5", // B A# G# B
  C: "~@2 [c#3,c#4] ~ [c#3,c#4] [b2,b3] [a#2,a#3] ~ [a#2,a#3]@2 [c#3,c#4] ~@5", // C# B A# C#
  D: "~@2 [d#3,d#4] ~ [d#3,d#4] [c#3,c#4] [b2,b3] ~ [b2,b3]@2 [d#3,d#4] ~@5", // D# C# B D#
})).s("gm_string_ensemble_1").gain(0.64).pan(0.7)

// chords · string ensemble 1 · "#St.Strin"
const string_ensemble_1_3 = note(`<
  ~@3 A@5 B@4 ~@12 C@2 D E C@2 F E C@2 G H I@8 J@2 K L J@2 K L M N O@2 C@2 D E C@2 F E C@2 G H I@16 J@2 K L J@2 K L M N
  O@2 C@2 D E C@2 F E C@2 G H C@2 D E C@2 F E C@2 G H
>`.pickRestart({
  A: "[~@14 [b3,d#4,g#4]@14 ~@2 [b3,e4,g#4]@15 ~ [a#3,c#4,f#4,g#4]@14 ~@2 [b3,d#4,g#4]@15 ~ [b3,d#4,g#4]@2]/5", // G#m E F# G#m
  B: "[~@14 [b3,e4,g#4]@15 ~ [a#3,c#4,f#4,g#4]@14 ~@2 [b3,d#4,g#4]@16 ~@2]/4", // E F# G#m
  C: "[[f#3,c#4,a#4]@7 ~ [e3,b3,g#4]@5 ~ [b2,d#4]@18, ~@7 f#4@8 ~]/2", D: "g#4 g4, [d#3,a#3,c#5]", E: "[b3,d#4,g#4]",
  F: "[g#4,d#5] [g4,c#5], [d#3,a#3]", G: "[d#3,b3,d#4,g#4]", H: "[d#3,a#3,c#4,g4]",
  I: "[[b3,d#4,g#4]@13 ~ [b3,e4,g#4]@15 ~ [a#3,c#4,f#4,g#4]@14 ~@2 [b3,d#4,g#4]@15 ~ [b3,d#4,g#4]@14 ~@2 [b3,e4,g#4]@15 ~ [a#3,c#4,f#4,g#4]@14 ~@2 [b3,d#4,g#4]@16 ~@2]/8", // G#m E F# G#m E F# G#m
  J: "[~@7 e3@9, [g#3,b3,d#4]]/2", K: "[g#3,f4], [a#2,c#4]@7 ~",
  L: "[e3,c#4,e4,c#5]@3 [d#3,b3,d#4,b4]@3 [c#3,a#3,c#4,a#4]@2", M: "[c#3,g#3,b3,e4]", N: "[f#3,a#3,c#4,f#4]",
  O: "[[b3,d#4,g#4] [a#3,c#4,g4], d#3@31 ~]/2", // G#m Gdim
})).s("gm_string_ensemble_1").gain(0.4)

// other · distortion guitar · "Dist.Gtr."
const distortion_guitar = note(`<
  ~@3 A@3 B@6 ~@3 C D ~@2 C E ~@15 F@4 G@4 ~@3 C D ~@2 C E H ~@14 F@4 G@4 ~@11 C D ~@2 I J H ~@6 K@2 ~ L ~@7 M ~@8
>`.pickRestart({
  A: "[~@7 g#5@14 ~@3]/3", B: "[~@12 d#5@14 d5 [g4,a4,b4,c5] f4 ~ g#4@28 ~@2 f#4@15 ~ d#4@16 ~@4]/6",
  C: "e4@3 d#4@3 c#4@2", D: "b3@7 ~", E: "b3", F: "[g#5@26 ~@2 f#5@15 ~ d#5@14 d5 [g4,a4,b4,c5] f4 ~@3]/4",
  G: "[g#4@26 ~@2 f#4@15 ~ d#4@16 ~@4]/4", H: "c#4@15 ~", I: "e5@3 d#5@3 c#5@2", J: "b4",
  K: "[~@14 g#5@4 f#5@4 ~ [b3,f#4] [b3,f#4]@4 ~@4, ~@11 b4@3 ~@2]/2", L: "~@2 g#5@11 g5 [d5,e5,f5,f#5] c5",
  M: "~ d#5@12 d5 [a4,b4,c5,c#5] g4",
})).s("gm_distortion_guitar").gain(0.48)

// chords · electric guitar clean · "#Chrs.Gtr"
const electric_guitar_clean = note(`<
  ~@3 A@8 B C@2 D E C@2 D E F G H I J@3 K L@2 M K L@2 N O P@8 C@2 D E C@2 D E F G H I J@3 K L@2 M K L@2 N O P@16 C@2 D E
  C@2 D E F G H I J@3 K L@2 M K L@2 N O J@3 K L@2 M K L@2 N Q
>`.pickRestart({
  A: "[~@14 [g#3,b3,d#4,g#4]@8 ~ [d#4,g#4] [b3,d#4,g#4]@2 [d#4,g#4] b3 ~@2 [g#3,b3,e4,g#4]@8 ~ [e4,g#4] [b3,e4,g#4]@2 [e4,g#4] b3 ~@2 [f#3,a#3,c#4,g#4]@8 ~ [c#4,g#4] [a#3,c#4,g#4]@2 [c#4,g#4] a#3 ~@2 [g#3,b3,d#4,g#4]@8 ~ [d#4,g#4] [b3,d#4,g#4]@2 [d#4,g#4] b3 ~@2 [g#3,b3,d#4,g#4]@8 ~ [d#4,g#4] [b3,d#4,g#4]@2 [d#4,g#4] b3 ~@2 [g#3,b3,e4,g#4]@8 ~ [e4,g#4] [b3,e4,g#4]@2 [e4,g#4] b3 ~@2 [f#3,a#3,c#4,g#4]@8 ~ [c#4,g#4] [a#3,c#4,g#4]@2 [c#4,g#4] a#3 ~@2 [g#3,b3,d#4,g#4]@2]/8", // G#m G#5 G#m G#5 E F# C#5 A#m7 …
  B: "~@7 [d#4,g#4] [b3,d#4,g#4]@2 [d#4,g#4] b3 ~@4", // G#5 G#m G#5
  C: "[[b3,d#4] ~ d#4 [b3,d#4,g#4,b4] [b3,d#4] ~@3 [b3,d#4,g#4] ~ [d#4,g#4] b3 ~@2 [b3,d#4]@2 [b3,d#4]@2 [d#4,g#4] [b3,d#4,g#4,b4] [b3,d#4] ~@3 [b3,d#4,g#4] ~ [d#4,g#4] b3 ~@4, [g#4,b4]@3 ~@11 [g#4,b4]@5 ~@13, ~ [b3,d#4]@2 ~@29]/2", // B G#m B G#m G#5 B G#5 G#m …
  D: "[a#3,c#4] ~ c#4 [a#3,c#4,f4,g#4] [a#3,c#4] ~@3 [c#4,f4,g#4] ~ [f4,g#4] c#4 ~@4, [f4,g#4]@3 ~@13, ~ [a#3,c#4]@2 ~@13", // A#m A#m7 A#m C# Fm A#m
  E: "e4!3 [e4,g4,c#5] [e4,g4] ~ [d#4,g4,b4]@4 [c#4,g4,b4] c#4 [c#4,g4,a#4]@3 ~, [g4,c#5]@3 ~@13", // C#dim Em D#aug C#m7b5 Gdim
  F: "[c#4,e4] ~ e4 [c#4,e4,g#4,b4] [c#4,e4] ~@3 [e4,g#4,b4] ~ [g#4,b4] e4 ~@4, [g#4,b4]@3 ~@13, ~ [c#4,e4]@2 ~@13", // C#m C#m7 C#m E G#m C#m
  G: "[c#4,e4] ~ e4 [c#4,e4,f#4,a#4] [c#4,f#4] ~@3 [e4,f#4,a#4] ~ [f#4,a#4] c#4 ~@4, [f#4,a#4]@3 ~@13, ~ [c#4,e4]@2 ~@13", // C#m F#7 F#5 F#7 F# C#m
  H: "[b3,d#4] ~ d#4 [b3,d#4,g#4] [b3,d#4] ~@3 [b3,d#4,g#4] ~ [d#4,g#4] b3 ~@4, g#4@3 ~@13, ~ [b3,d#4]@2 ~@13", // B G#m B G#m G#5 B
  I: "a#3!3 [a#3,c#4,g4] [a#3,c#4] ~@3 [a#3,c#4,g4] ~ [c#4,g4] a#3 ~@4, [c#4,g4]@3 ~@13", // Gdim A#m Gdim C#dim
  J: "[[c#4,f#4] ~ f#4 [c#4,f#4,a#4,c#5] [c#4,f#4] ~@2 [c#4,f#4] [b3,e4] ~ e4 [b3,e4,g#4,b4] [b3,e4] ~ [b3,d#4]@2 [b3,d#4]@2 [d#4,f#4] [b3,d#4,f#4,b4] [b3,d#4] ~@2 [b3,d#4] [d#4,f#4,b4]@2 [f#4,b4] d#4 ~@4 [c#4,g#4]@6 ~@2 [a#3,c#4,g4]@6 ~@2, [a#4,c#5]@3 ~@5 [g#4,b4]@3 ~@3 [f#4,b4]@5 ~@29, ~ [c#4,f#4]@2 ~@6 [b3,e4]@2 ~@20 [d#3,a#3]@8 d#3@8 ~]/3", // F#5 F# F#5 E5 E E5 B D#m …
  K: "[b3,d#4,g#4]@2 d#4 ~ g#4 ~ a#4 ~ b4 ~ a#4 ~ g#4 ~ f#4 ~", // G#m
  L: "[[c#4,f#4] ~ f#4 [c#4,f#4,a#4,c#5] [c#4,f#4] ~@2 [c#4,f#4] [b3,e4] ~ e4 [b3,e4,g#4,b4] [b3,e4] ~ [b3,d#4]@2 [b3,d#4]@2 [d#4,f#4] [b3,d#4,f#4,b4] [b3,d#4] ~@2 [b3,d#4] [d#4,f#4,b4]@2 [f#4,b4] d#4 ~@4, [a#4,c#5]@3 ~@5 [g#4,b4]@3 ~@3 [f#4,b4]@5 ~@13, ~ [c#4,f#4]@2 ~@6 [b3,e4]@2 ~@21]/2", // F#5 F# F#5 E5 E E5 B D#m …
  M: "[d#4,g#4,d#5]!2 ~ [d#4,g#4,d#5] ~@2 [d#4,g#4] [g#4,d#5] [c#4,g4,c#5]!2 ~ [c#4,g4,c#5] ~@4", // G#5 C#dim
  N: "[b3,d#4,g#4,b4] [b3,d#4] d#4 [b3,d#4,g#4,b4] [b3,d#4] ~@5 [b3,d#4,g#4,b4]@4 [b3,d#4] ~", // G#m B G#m B G#m B
  O: "~@2 [a#3,c#4,g4,a#4]@5 ~@3 [a#3,c#4,g4,a#4]@4 [a#3,c#4,g4] ~", // Gdim
  P: "[[g#3,b3,d#4,g#4]@6 ~ [d#4,g#4] [b3,d#4,g#4]@2 [d#4,g#4] b3 ~@2 [g#3,b3,e4,g#4]@8 ~ [e4,g#4] [b3,e4,g#4]@2 [e4,g#4] b3 ~@2 [f#3,a#3,c#4,g#4]@8 ~ [c#4,g#4] [a#3,c#4,g#4]@2 [c#4,g#4] a#3 ~@2 [g#3,b3,d#4,g#4]@8 ~ [d#4,g#4] [b3,d#4,g#4]@2 [d#4,g#4] b3 ~@4 [g#3,b3,d#4]@7 [d#4,g#4] [b3,d#4,g#4]@2 [d#4,g#4] b3 ~@2 [g#3,b3,e4,g#4]@8 ~ [e4,g#4] [b3,e4,g#4]@2 [e4,g#4] b3 ~@2 [f#3,a#3,c#4,g#4]@8 ~ [c#4,g#4] [a#3,c#4,g#4]@2 [c#4,g#4] a#3 ~@2 [g#3,b3,d#4,g#4]@8 ~ [d#4,g#4] [b3,d#4,g#4]@2 [d#4,g#4] b3 ~@4, ~@63 g#4@8 ~@57]/8", // G#m G#5 G#m G#5 E F# C#5 A#m7 …
  Q: "~@2 [a#3,c#4,g4,a#4]@5 ~@3 [a#3,c#4,g4,a#4]@4 [a#3,c#4,g4]@2", // Gdim
})).s("gm_electric_guitar_clean").gain(0.39).pan(0.8)

// other · distortion guitar · "#Dazed Gt"
const distortion_guitar_2 = note(`<
  ~@3 A@7 B@2 ~@12 C@2 D ~ C@2 D ~ E@2 F@2 G@4 H@4 ~@12 C@2 D ~ C@2 D ~ E@2 F@2 G@4 H@4 G@4 H@4 ~@12 C@2 D ~ C@2 D ~ E@2
  F@2 C@2 D ~ C@2 D ~ E@2 F@2
>`.pickRestart({
  A: "[~@14 g#2@14 g#2 ~ g#2@14 g#2 ~ g#2@14 g#2 ~ g#2@14 g#2 ~ g#2@14 g#2 ~ g#2@14 g#2 ~ g#2@2]/7",
  B: "[~@12 g#2 ~ g#2@14 [f#2,g2] f2 e2 ~]/2", C: "[e2@8 e2@5 ~ b2@16 b2 [b2,f#3]]/2", D: "d#3",
  E: "[e2@8 e2@5 ~ b2@14 c#3@2 d3 ~]/2", F: "[d#3@18 d#3@13 ~]/2",
  G: "[g#2@12 g#2 ~ g#2@14 g#2 ~ g#2@14 g#2 ~ g#2@15 ~ f#2@2]/4",
  H: "[g#2@12 g#2 ~ g#2@14 g#2 ~ g#2@14 g#2 ~ g#2@14 [f#2,g2] f2 e2 ~]/4", // Gmaj7
})).s("gm_distortion_guitar").gain(0.42).pan(0.3)

// chords · string ensemble 1 · "#Orchestr"
const string_ensemble_1_4 = note("<A@4 ~@116>".pickRestart({
  A: "[[g#1,g#2,g#3,b3,d#4,g#4,b4,g#5]@63 ~]/4", // G#m
})).s("gm_string_ensemble_1").gain(0.1)

// drums · kick
const kick = s("bd").struct("<~@4 [x ~@6 x!2 ~@7]!116>").gain(0.56)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@4 A@7 B A@7 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@7 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B
  A@3 ~ A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B
>`.pickRestart({
  A: "~ x ~ x ~ x ~@2", B: "~ x ~ x ~@4",
})).gain(0.24)
// … 59 more lines

More by Rene Froger