Strudelify

Here in My Heart

Rene Froger

KeyC minorTempo70 bpm
0:00/0:00
// Here in My Heart — Rene Froger
// 70 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 6 "#SYNMALLET" Syn Mallet -> marimba
// note: Full arrangement: all 87 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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(`<
  ~@4 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 F G H I J K L M N O P Q R S T U V W X Y AA AB AC AD AE AF AG
  AH AI AJ AK AL AM AN AF AO AP AQ AR AK AL AS AN AT AU AV AW AX@4 AY@4 ~@2
>`.pickRestart({
  A: "bb4 ~@3 c5@2 bb4@2, [bb2,bb3]@31 ~, d5@8 bb4@15 ~@9, ~@4 f4@27 ~, ~@12 d5@19 ~", // Bb
  B: "~@12 bb4@4 [eb4,g4,eb5]@7 ~ [d4,f4,d5]@7 ~, eb2@31 ~, [eb3,eb4]@15 ~ eb3@15 ~, g4@7 ~ g4@7 ~@17, ~ bb3@3 ~@4", // Eb Dm Eb
  C: "f4@4 ~@4 f4@4 f4@7 ~ f4@4 bb4@3 ~ a4@4, d2@31 ~, d3@19 ~ f3@11 ~, [c4,c5]@3 ~@5, ~@4 d4@8 [c5,f5]@19 ~", // C F5
  D: "~@24 eb4@3 ~ bb4@3 ~, [c2,c3,g3]@31 ~, f4@3 ~, bb3@2 g4@3 bb3@3, ~ eb4@2 f5@5", E: "[f2,f3,c4,eb4,g4,bb4]",
  F: "~@8 ab3@23 ~, [ab2,c4,ab4]@31 ~, ~@4 eb3@27 ~", // Ab
  G: "~@8 db4@23 ~, [db3,ab4]@31 ~, db4@7 ~ db5@8 ~@16, ~@4 ab3@27 ~", // Db5
  H: "~@7 eb4, ab2@31 ~, ab4@7 ~, ~@4 [eb3,c4]@27 ~, ~@8 [ab3,c5]@23 ~", // Cm Ab
  I: "~@8 [db4,eb4]@23 ~, [db3,ab4]@31 ~, db4@7 ~@25, ~@4 ab3@27 ~", // Dbsus2 Db5
  J: "~@12 f4@19 ~, [bb2,ab4], f4@3 ~@5, ~@4 [f3,db4]@27 ~, ~ [bb3,db5]@3", K: "[gb2,ab3,bb3,db4,gb4]",
  L: "~ b4@3, [eb2,gb3,b3,gb4], ~@4 eb4@27 ~", // B
  M: "~@8 e5@7 ~ eb5@7 ~ db5@7 ~, [ab2,e3,e4,gb4]@31 ~, ab4@7 ~ ab4@23 ~, ~@4 b3@27 ~", // Dbm
  N: "ab4 ~@2 db5 ~ e4 ~ e4, [bb2,bb3], db4 ~, db5@8 ab4@23 ~, ~@4 e4@12 c5@8 bb4@7 ~", // Bb
  O: "g4 ~@2 bb4 ~ eb4 ~ eb4, [c3,c4], bb3@2 [ab3,ab4] [g3,g4], eb4@3 ~ eb4@12 ~@16, ~ g4 ~@2", // C Ab G
  P: "~@7 db5, db3, ab4@16 db5@4 eb4@4 ab4@7 ~, ~ ab3@7, ~@4 f4@4 eb4@4 [db4,f4]@19 ~", // Db
  Q: "[f4,bb4]@15 ~ [f4,bb4]@7 ~ [f4,bb4]@8, [f2,f3,c4]", // Bb5 F5
  R: "[f4,bb4] ~@6 f4, [bb2,d5], ~ d4@3 bb3@4, ~@2 bb4@3 d4@3, ~@3 f4@3 bb4@2", // Bb5 Bb
  S: "eb4@4 ~@4 eb4@3 ~ [bb3,eb4,g4]@3 ~@13 bb3@4, [eb2,eb3]@31 ~, g4@8 ~@8 bb3@11 ~@5, ~@4 bb3@7 ~@5 [d4,f4]@16, ~@24 eb4@7 ~", // Eb Dm
  T: "eb4@4 ~@4 eb4@3 ~ [eb4,g4]@4 bb3@3 ~ bb3@4 ~@4 bb3@3 ~, [eb2,eb3]@31 ~, g4@8 g3@7 ~@17, ~@4 bb3@11 ~ eb4@8 [eb4,g4]@8", // Eb
  U: "[c4,f4]@4 ~@4 f4@3 ~ [c4,f4,a4]@11 ~ [eb4,g4,bb4]@3 ~ [f4,a4,c5]@4, [f2,f3]@31 ~, bb4@11 ~@21, ~@4 c4@7 ~@21", // F5 F Eb F
  V: "[f4,bb4] ~@6 d4, [bb2,d5], ~ d4@3 c5@4, ~@8 f4@12 d4@7 ~@5, ~@6 bb4@5 ~ bb4@4", // Bb5 Bb
  W: "eb4@4 ~@4 eb4@4 d4 ~ eb4@2 [eb4,g4,eb5]@7 ~ [d4,f4,d5]@8, [eb2,eb3]@31 ~, g4@15 ~@17, ~@4 bb3@7 ~@21", // Eb Dm Eb
  X: "[f4,a4]@4 ~@16 d4@4 bb4@3 ~ a4@3 ~, [d2,d3]@31 ~, c5@8 f4@15 ~@9, ~@4 d4@15 ~@13, ~@12 [a4,c5]@11 ~@9", // F D Am
  Y: "[c4,eb4]@8 ~@4 c4@7 ~@9 eb4@4, [c2,c3]@31 ~, [g4,bb4]@24 g4@7 ~, ~ eb4@2 ~, ~@5 c4@3", Z: "[f2,f3,bb3,eb4,g4]",
  AA: "[eb4,g4]@2 [c4,eb4,bb4]!2, [f2,f3,bb3]", AB: "db5@11 ~ db5@3 ~ [g2,g3,eb4,f4,g4,bb4]@16, [db2,db3,db4,f4,ab4] ~",
  AC: "c4@3 ~@17 c4@4 eb4@3 ~ [c4,eb4,ab4]@4, [ab2,ab3]@31 ~, eb4@23 ~@9, ab4@4 bb4@11 ~, ~@4 c4@7 ~ c4@4 ab4@9 ~@7", // Ab
  AD: "c4@3 ~@5 [f4,bb4]@7 ~ [c4,f4,bb4]@7 ~ [c4,f4,a4]@8, [f2,f3]@31 ~, [f4,bb4]@7 ~@25, ~@4 c4@11 ~@17", // Bb5 Fsus4 F Bb5
  AE: "d4@4 d4@4 d4@3 ~ d4@3 ~ [d4,g4,b4]@7 ~ [d4,g4]@8, [g2,g3]@31 ~, [g4,b4]!2 ~@2", // G G5 G
  AF: "[g4,c5] ~@6 g4, [c3,e5], ~ e4@3 c4@4, ~@2 c5@3 e4@3, ~@3 g4@3 c5@2", // C5 C
  AG: "[c4,f4,a4,c5]@15 ~ [c4,f4,a4]@11 ~ [a2,a3,c4]@2 [g2,g3,e4,g4]@2, [a2,a3]@27 ~ [f4,a4] ~ c4 ~", // F Am C A F
  AH: "c4@3 ~@5 f4@3 ~ [f4,a4]@4 c4@3 ~ c4@4 ~@4 c4@3 ~, [f2,f3]@31 ~, [f4,a4]@8 a3@7 ~@17, ~@4 c4@11 ~ f4@8 [f4,a4]@8", // F
  AI: "[f2,f3,c4,f4,a4]@15 ~ [c4,f4,a4,c5]@7 ~ [d4,g4,b4,d5]@8, ~@16 [g2,g3]@15 ~", // F G
  AJ: "[g4,c5] ~@6 e4, [c3,e5], ~ e4@3 d5@4, ~@8 g4@12 e4@7 ~@5, ~@6 c5@5 ~ c5@4", // C5 C
  AK: "f4@4 ~@4 f4@4 e4 ~ f4@2 [f4,a4,f5]@7 ~ [e4,g4,e5]@8, [f2,f3]@31 ~, a4@15 ~@17, ~@4 c4@7 ~@21", // F Em F
  AL: "[g4,b4]@4 ~@16 e4@4 c5@3 ~ b4@3 ~, [e2,e3]@31 ~, d5@8 g4@15 ~@9, ~@4 e4@15 ~@13, ~@3 [b4,d5,g5]@3 ~@2", // G E G
  AM: "[d4,f4]@8 ~@4 d4@7 ~@9 f4@4, [d2,d3]@31 ~, [a4,c5]@24 a4@7 ~, ~ f4@2 ~, ~@5 d4@3", // Dm D Am
  AN: "[f4,a4]@2 [d4,f4,c5]!2, [g2,g3,c4]", // F Dm7 C5
  AO: "f4@4 ~@4 f4@3 ~ [c4,f4,a4]@3 ~@13 c4@4, [f2,f3]@31 ~, a4@8 ~@8 c4@11 ~@5, ~@4 c4@7 ~@5 [e4,g4]@16, ~@24 f4@7 ~", // F Em
  AP: "f4@4 ~@4 f4@3 ~ [f4,a4]@4 c4@3 ~ c4@4 ~@4 c4@3 ~, [f2,f3]@31 ~, a4@8 a3@7 ~@17, ~@4 c4@11 ~ f4@8 [f4,a4]@8", // F
  AQ: "[d4,g4]@4 ~@8 d4@3 ~ g4@4 d4@4 [d4,g4,c5]@7 ~, [g2,g3]@31 ~, c5@7 ~ c5@4 ~@4, ~@4 d4@7 ~@5 d4@3 ~@13, ~@8 g4@7 ~@17", // G5 Csus2 G
  AR: "~@12 e4@3 ~ [d2,d3,d4,f4,c5]@7 ~ [e2,e3,e4,g4,c5]@8, [c2,c3,c5] ~, e4@5 ~@11, g4@7 ~ g4@7 ~@17, ~@4 c4@11 ~@17", // Dm7 C
  AS: "[d4,f4]@2 ~@5 e5, [d2,d3]@31 ~, a4@4 e5 c5@3, c5@3 f5@3 ~@2, ~ f4@2 g4", AT: "[c2,c3,c4,e4,g4]@31 ~",
  AU: "[c2,c3,d4,gb4,a4]@31 ~", AV: "[c2,c3,c4,f4,a4,c5]@31 ~", AW: "[c2,c3,d4,f4,ab4,c5]@31 ~",
  AX: "[[c2,c3,c4,e4]@30 [f4,a4,c5,d5] ~, g4@117 ~@11]/4", AY: "[[c2,c3,e4,g4,c5]@63 ~]/4",
})).s("gm_piano").gain(0.46)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@4 A B C D E F G H I J K L M A D G E N O@2 P N O Q R P F G H I J K S F T U V W N X@2 Y N X Q R P Z AA AB AC AD AE P
  AF AD P AG Q AH AD P@2 AH AI P AJ Q AK AL@4 AM@4 AN@6
>`.pickRestart({
  A: "bb1@31 ~", B: "eb2@31 ~", C: "d2", D: "c2@31 ~", E: "f1@31 ~", F: "ab1@31 ~", G: "db2@31 ~", H: "ab1",
  I: "db2@13 ~ db2 c2", J: "bb1@13 ~ bb1 ab1", K: "gb1@13 ~ gb1 e1", L: "eb1@31 ~", M: "ab1@13 ~ ab1 a1",
  N: "bb1@12 ~@2 bb1@2 bb1@15 ~", O: "eb2@12 ~@2 eb2@2 eb2@15 ~", P: "f1@12 ~@2 f1@2 f1@15 ~",
  Q: "d2@12 ~@2 d2@2 d2@15 ~", R: "c2@12 ~@2 c2@2 c2@15 ~", S: "eb1@25 ~@3 gb1@4", T: "bb1@13 ~ bb1 ~ bb1@15 ~",
  U: "c2@13 ~ c2 ~ c2@11 ~ c2@3 ~", V: "db2@13 ~ db2 ~ db2@15 ~", W: "f1@13 ~ f1 ~ f1@15 ~",
  X: "eb1@12 ~@2 eb1@2 eb1@15 ~", Y: "f1@12 ~@2 f1@2 f1@7 ~ g1@3 ~ a1@3 ~", Z: "db1@12 ~@2 db1@2 g1@15 ~",
  AA: "ab1@13 ~ ab1@2 ab1@15 ~", AB: "f1@12 ~@2 f1@2 f1@6 ~@2 f1@3 ~ a1@3 ~", AC: "b1@12 ~@2 b1@2 b1@15 ~",
  AD: "c1@12 ~@2 c1@2 c1@15 ~", AE: "a1@12 ~@2 a1@2 a1@9 ~@3 a1 ~ g1@2", AF: "f1@12 ~@2 f1@2 g1@7 ~ g1@7 ~",
  AG: "e2@12 ~@2 e2@2 e2@15 ~", AH: "g1@12 ~@2 g1@2 g1@7 ~ g1@7 ~", AI: "c1@11 ~ c1 ~ c1@2 d1@7 ~ e1@7 ~",
  AJ: "e2@12 ~@2 e2@2 e1@15 ~", AK: "g1@12 ~@2 g1@2 g1@15 ~", AL: "c1@31 ~", AM: "[c1@127 ~]/4", AN: "[c1@191 ~]/6",
})).s("gm_electric_bass_finger").gain(0.59)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@5 A B@2 ~@10 C D E ~@5 F G@2 ~@5 H I J K L M N O ~ P Q R S T G@2 ~ U V W X Y Z AA AB AC AD AE@2 AF AG AH AI AJ AK AL
  AE@2 ~ AG AM@3 AN@4 ~@6
>`.pickRestart({
  A: "~@2 eb4 d4", B: "[c4@3 f4@13]/2", C: "~@3 bb4 ab4@2 g4@2", D: "f4@31 ~", E: "[f3,c4]", F: "~@2 eb5 d5",
  G: "[c5@12 f5@45 ~@7]/2", H: "~@8 db4@8 c4@8 bb3@7 ~", I: "bb3@2 ab3 gb3", J: "eb3", K: "~@8 e4@7 ~ eb4@8 db4@8",
  L: "db5@16 c5@8 bb4@6 ~ [g4,ab4], ~@15 a4", M: "eb4@11 ~ bb4@4 ab4@8 g4@8", N: "f4@12 eb5@19 ~", O: "f5@31 ~",
  P: "[bb3,eb4]@11 ~ [bb3,eb4,g4]@4 [bb3,d4,f4]@16", Q: "[bb3,eb4]@31 ~", R: "ab4@11 ~ a4@12 bb4@3 ~ c5@4", S: "d5",
  T: "[bb3,eb4]@15 ~ eb5@8 d5@8", U: "[ab3,db4]@15 ~ [g3,bb3,eb4]@16", V: "[eb3,ab3]@16 c5@4 bb4@4 c5@3 ~ eb5@4",
  W: "f5@22 ~@2 eb5@4 c5 ~@3",
  X: "g5@17 gb5 [e5,f5] [c5,db5,d5,eb5] [g4,bb4,b4,d5]@2 ~@2 d4@2 [g4,d5]@2 d4@3 ~, ~@11 [g4,d5]@2 ~@3", Y: "c6",
  Z: "~@16 d5@3 ~ f5@2 ~@2 d5@3 c5 d5@2 a4@2", AA: "c5@15 ~", AB: "c5@15 ~ c5@7 ~ d5@7 ~", AC: "c5 g5@15",
  AD: "[c4,f4]@15 ~ f5@8 e5@8", AE: "[d5@12 g5@45 ~@7]/2", AF: "~@20 e5@2 g5 ~ d5@4 c5@2 a4@2", AG: "c5@31 ~",
  AH: "[c3,f3,c4] d6", AI: "c6@27 b5 bb5 [gb5,g5,a5] [e5,f5] eb5", AJ: "[d3,g3]@8 d5@2 g4 a4 c5@2 d5 f5",
  AK: "g5@24 c5@2 ~ c5@2 ~ g4@2, ~@13 g4 ~@2", AL: "a4@15 ~ f5@8 e5@8", AM: "[a4@15 ~ d5@38 ~@2 c5@31 ~ f4@8]/3",
  AN: "[e4@127 ~]/4",
})).s("gm_distortion_guitar").gain(0.31).pan(0.7)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note("<A@4 ~@83>".pickRestart({
  A: "[c4@31 ~@49 c4@31 ~@17, [bb1,bb2,bb3], f3@6 eb3@3 f3@7, ~@31 eb4@29 d4@68]/4", // Bb
})).s("gm_pad_sweep").gain(0.24)

// chords · electric guitar clean · "SWEEP PAD"
const electric_guitar_clean = note("<~@9 A B A B C D E F G H I J ~@9 A B A B C D E F G H I J ~@45>".pickRestart({
  A: "~ ab4@30 ~, [ab3,bb3,c4,eb4]@31 ~", B: "~ ab4@30 ~, [db3,ab3,eb4]@31 ~", C: "~ [db4,eb4,ab4]@30 ~, [bb2,f3]@31 ~",
  D: "~ gb4@30 ~, [gb3,ab3,db4]@31 ~", E: "~ b4@30 ~, [eb3,b3,eb4,gb4]@31 ~", F: "~ gb4@30 ~, [ab3,b3,e4]@31 ~",
  G: "~ ab4@30 ~, [bb3,db4,e4]@31 ~", H: "~ g4@30 ~, [c3,bb3,eb4]@31 ~", I: "~ ab4@30 ~, [db3,ab3,db4,eb4]@31 ~",
  J: "~ f4@30 ~, [f3,bb3,c4]@31 ~", // Fsus4
})).s("gm_electric_guitar_clean").gain(0.42).pan(0.7)

// other · marimba · "#SYNMALLET"
const marimba = note(`<
  ~@5 A B C ~@8 D E F G H I ~@2 J I K L G ~@8 D E F G H I ~@2 J I K L G ~ M N O P Q R G S G T U V W Q ~ G S X Y U Z AA
  ~@14
>`.pickRestart({
  A: "~@16 [g6,eb7]@3 ~@5 [f6,d7]@2 ~@6", B: "[f6,c7]@3 ~@9 f7@2 ~@10 bb6@2 ~@2 a6@2 ~@2", C: "eb6 ~@5 f7 ~@9",
  D: "~@8 e6@6 ~@2 eb6@7 ~ db6@7 ~", E: "db6@7 ~@9", F: "~@12 bb6 ~@3 ab6 ~@7 g6 ~@7", G: "f6 ~@31", H: "bb6 ~@15",
  I: "d6 ~@31", J: "~@24 bb5 ~@3 c6 ~@3", K: "~@16 [g6,eb7] ~@7 [f6,d7] ~@7",
  L: "[f6,c7] ~@11 f7 ~@7 f6 ~@3 bb6 ~@3 a6 ~@3", M: "db7 ~@11 db7 ~@3 bb6 ~@11 bb6 ~@3",
  N: "eb6 ~@3 ab6 ~@3 eb7 ~@19 eb7 ~@3", O: "f7 ~@27 f6 ~@3",
  P: "g6 ~@3 d6 ~@3 d7 ~@3 d6 ~@3 g6 ~@3 d6 ~@3 d7 ~@3 d6 ~@3", Q: "e6 ~@31", R: "~@28 a6 ~ g6 ~",
  S: "~@16 c6@2 ~@6 d6 ~@7", T: "~@16 [a6,f7] ~@7 [g6,e7] ~@7", U: "[g6,d7] ~@11 g7 ~@7 g6 ~@3 c7 ~@3 b6 ~@3",
  V: "g6 ~@3 g6 ~@3 c7 ~@3 g7 ~@19", W: "~@4 g6 ~@3 c7 ~@3 g7 ~@19", X: "f6 ~@15 d6 ~@7 e6 ~@7",
  Y: "f6 ~@15 [a6,f7] ~@7 [g6,e7] ~@7", Z: "g6 ~@3 g6 ~@3 c7 ~@3 f6 ~@3 e6 ~@3 c6 ~@3 g5 ~@3 e6 ~@3", AA: "c6 ~@31",
})).s("gm_marimba").gain(0.24)

// chords · pad warm · "WARM PAD"
const pad_warm = note("<~@3 A@4 B@5 C@8 D@2 E@2 F@4 B@5 C@8 D@2 G@8 H@7 I@7 J@3 K@6 L@6 M@7>".pickRestart({
  A: "[~@31 [bb2,f4,bb4,c5,d5]@32 [eb3,eb4,f4,g4,bb4]@32 [d3,d4,f4,a4,c5]@32 [c3,c4,eb4,f4,bb4]]/4", // Bb Eb Dm7 Cm7
  B: "[~@31 [f2,c4,eb4,f4,bb4]@32 [ab3,eb4,ab4,bb4,c5]@32 [db3,eb4,f4,ab4,db5]@32 [ab3,eb4,ab4,bb4,c5]@32 [db3,eb4,f4,ab4,db5]]/5", // Fsus4 Ab Db Ab Db
  C: "[~@31 [bb2,eb4,f4,ab4,db5]@32 [gb3,db4,gb4,ab4,bb4]@32 [eb3,db4,eb4,gb4,b4]@32 [ab2,ab3,b3,e4,gb4]@32 [bb2,e4,ab4,bb4,db5]@32 [c3,c4,eb4,g4,bb4]@32 [db3,eb4,f4,ab4,db5]@32 [f2,bb3,c4,f4,bb4]]/8", // Bbm7 Gb B E Bbm7b5 Cm7 Db Fsus4
  D: "[~@31 [bb2,f4,bb4,c5,d5]@32 [eb3,f4,g4,bb4,eb5]]/2", // Bb Eb
  E: "[~@15 [f4,bb4,d5]@16 [eb3,f4,g4,bb4,eb5]@32 [f2,c4,f4,bb4]]/2", // Bb Eb Fsus4
  F: "[~@11 a4@13 bb4@4 c5@3 [bb2,f4,bb4,c5,d5]@32 [eb3,eb4,f4,g4,bb4]@32 [d3,d4,f4,a4,c5]@32 [c3,c4,eb4,f4,bb4]]/4", // Bb Eb Dm7 Cm7
  G: "[~@15 [f4,bb4,d5]@16 [eb3,f4,g4,bb4,eb5]@32 bb4@12 a4@13 bb4@4 c5@3 [bb2,f4,bb4,c5,d5]@32 [eb3,eb4,f4,g4,bb4]@32 [d3,d4,f4,a4,c5]@32 [c3,c4,eb4,f4,bb4]@32 [f2,c4,eb4,f4,bb4]@32 [db3,db4,f4,ab4], ~@63 [f2,c4,f4]@33 ~@160]/8", // Bb Eb Bb Eb Dm7 Cm7 Fsus4 Db …
  H: "[~@15 [g3,eb4,g4,bb4]@16 [ab2,c4,eb4,ab4]@32 bb4@23 a4@9 [b2,d4,g4,b4]@32 [c3,g4,c5,d5,e5]@32 [a3,f4,a4,c5]@31 ~ [f3,g4,a4,c5,f5]@33, ~@63 [f2,c4,f4]@33 ~@128]/7", // Eb Ab G C F F5
  I: "[~@15 c5@8 b4@7 ~ [c3,g4,c5,d5,e5]@32 [f3,f4,g4,a4,c5]@32 [e3,e4,g4,b4,d5]@32 [d3,d4,f4,g4,c5]@32 [g2,d4,f4,g4,c5]@32 [c3,g4,c5,d5,e5]@32 [f3,g4,a4,c5,f5], ~@15 [g2,g4,d5,g5]@17 ~@192]/7", // C F Em7 Dm7 Gsus4 C F G5
  J: "[~@15 [g4,c5,e5]@16 [f3,g4,a4,c5,f5]@32 c5@12 b4@13 c5@4 d5@3 [c3,e4,g4,c5], ~@21 [g2,d4,g4]@11]/3", // C F C G5
  K: "[~@16 f4@7 ~ e3@7 [f3,g4,a4,c5,f5]@32 [e3,e4,g4,b4,d5]@32 [d3,d4,f4,g4,c5]@32 [g2,d4,f4,g4,c5]@32 [c3,e4,g4,c5]@32 [c3,d4,gb4,a4], ~@15 [d3,d5]@8 [g4,e5]@9 ~@160]/6", // F Em7 Dm7 Gsus4 C D7 D C
  L: "[~@31 [c3,a4,c5]@31 ~ [c3,d4,ab4,c5]@32 ~@64 g5@33, ~@31 f4@64 [c3,e4,g4,c5]@97]/6", // F Dm7b5 C
  M: "[~@31 [c3,e4,g4,c5]@192 ~]/7", // C
})).s("gm_pad_warm").gain(0.12)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  ~@4 A B C D E ~@8 A D F G A H I J K L C M N ~@8 A D F G A H I J O L C M P Q R S T D U V W X Y Z AA AB D V@2 AC AD AE Z
  AA AF ~@3 AG@8 ~@3
>`.pickRestart({
  A: "bb2", B: "eb2", C: "d3", D: "c3", E: "f2", F: "db3",
  G: "[f2,c3]@26 [f3,c4,f4]@2 ~@2 [db3,d3,ab3,c4,db4] [c3,g3], f3@25 ~@3 [e3,b3]@2 ~@2, ~@29 [eb3,a3,bb3,d4,eb4,e4]@2 ~", // F5 Dbmaj7 C5 E5
  H: "eb3@27 ~ [bb2,eb3] ~ [bb2,eb3] ~", I: "eb3@30 [db3,d3] [b2,c3]",
  J: "~@26 [d3,eb3,g3,ab3,a3] [e3,bb3,b3] ~ e3 [d3,eb3,bb3,b3] [db3,ab3,a3], f2@25 db3@2 ~@5, c3@6 [bb3,eb4] ~, ~ f3@26 ~ [f3,c4,f4]@3 ~", // Dsus4 E Ebmaj7 Amaj7 Eb5 F5
  K: "[c3,g3] ~@31, bb2", L: "eb3@31 ~", M: "[c3,bb3,eb4]@30 [bb2,b2] [ab2,a2]", N: "[f2,c3,f3,bb3,eb4]@31 ~",
  O: "[c3,g3] ~@30 [c3,db3,d3], bb2@31 ~", // C5
  P: "[f2,c3,f3,bb3,eb4]@19 ~ [f3,bb3,eb4] ~ [f3,bb3,eb4] ~ [f3,bb3,eb4]@2 ~ [gb3,g3,c4,db4] [f3,bb3,b3] [eb3,e3,ab3,a3] [d3,g3] db3, ~@13 [ab3,a3,d4] ~@2", // Fsus4 Ebsus2 Bb Emaj7 G5 D
  Q: "db3 ~@14 [ab2,a2,bb2] g2@16", R: "ab2@27 ~ ab2@4", S: "f2@23 ~ f2@3 ~ a2@3 bb2",
  T: "b2@24 b3@2 ~@4 [f3,gb3,b3,c4] [eb3,e3,a3,bb3], ~@26 [d4,g4]@3 [g3,ab3,db4]@2 ~, ~@14 b3 ~", // G5 Db
  U: "a2@27 ~ a2@2 g2@2", V: "f2@31 ~",
  W: "f2@15 ~ g2@8 [d3,g3,d4]@2 ~ [eb3,e3,b3,c4] [d3,a3,bb3] [c3,db3,g3,ab3] [b2,gb3] bb2, ~@13 [f3,gb3,db4] ~@2", // G5 Cmaj7 Bbmaj7 Dbmaj7 B5 Gbmaj7
  X: "c3@31 [gb2,g2,ab2]", Y: "f2@15 ~ [f2,f3]@15 ~", Z: "[e2,e3]", AA: "[d3,c4,f4]@30 [c3,db3] [bb2,b2]",
  AB: "[g2,d3,g3,c4,f4]@19 ~@3 [ab3,a3,d4] db4 [g3,c4,f4]@2 ~ [ab3,a3,d4,eb4] [g3,c4,db4] [f3,gb3,bb3,b3] [e3,a3] eb3, ~@10 [g3,c4,f4] ~@5, ~@21 [bb3,b3,eb4,e4]@2 ~@3 [bb3,b3,e4]@2 ~@4", // Gsus4 D Csus4 C Gbmaj7 A5 Csus4 Emaj7 …
  AC: "g2@12 [d3,g3] ~ [d3,g3] ~ g2@8 [d3,g3,d4]@2 ~ [eb3,e3,b3,c4] [d3,a3,bb3] [c3,db3,g3,ab3] [b2,gb3] bb2, ~@13 [f3,gb3,db4] ~@2", // G5 Cmaj7 Bbmaj7 Dbmaj7 B5 Gbmaj7
  AD: "c3@15 ~ d3@7 ~ e3@8", AE: "~@16 f3@15 ~, f2@31 ~", AF: "[g2,d3,g3]@31 ~",
  AG: "[~@31 [c3,g3,c4]@128 [c3,g3,c4]@97]/8", // C5
})).s("gm_distortion_guitar").gain(0.4).pan(0.3)

// other · distortion guitar · "+STR SLAP"
const distortion_guitar_3 = note(`<
  ~@73
  [~@4 g3 ~ g3 ~ c4 ~ c4 ~ g3 ~ g3 ~@5 g3 ~ g3 ~ c4 ~ c4 ~ g3 ~ g3 ~]
  [~@4 a3 ~ a3 ~ d4 ~ d4 ~ a3 ~ a3 ~@5 a3 ~ a3 ~ d4 ~ d4 ~ a3 ~ a3 ~]
  [~@4 c4 ~ c4 ~ f4 ~ f4 ~ c4 ~ c4 ~@5 c4 ~ c4 ~ f4 ~ f4 ~ c4 ~ c4 ~]!2
  [~@4 g3 ~ g3 ~ c4 ~ c4 ~ g3 ~ g3 ~@5 g3 ~ g3 ~ c4 ~ c4 ~ g3 ~ g3 ~]!9
  [~@4 g3 ~ g3 ~ c4 ~ c4 ~ g3 ~ g3 ~@5 g3 ~ g3 ~ c4 ~ c4 ~ g3 ~@3]
>`).s("gm_distortion_guitar").gain(0.18).pan(0.6)

// other · french horn · "FR.HORN"
const french_horn = note("<~@73 A B C D E@4 F@6>".pickRestart({
  A: "e3@28 d3 ~ e3@2", B: "gb3@27 ~ e3 ~ gb3@2", C: "a3@7 f3", D: "c4", E: "[c4@30 g3 f3]/4", F: "[e3@191 ~]/6",
})).s("gm_french_horn").gain(0.32).pan(0.4)

// chords · epiano2 · "+WINDCHIME"
const epiano2 = note("<~@9 A B A B C D E F G H I ~@10 A B A B C D E F G H I ~@46>".pickRestart({
  A: "~ eb4 ~ eb4 ~ eb4 ~ eb4, ab3@8 c5@8 bb4@8 ab4@7 ~", B: "~ f4 ~ f4 ~ f4 ~ f4, db4 db5 c5 bb4",
  C: "~ db4 ~ db4 ~ db4 ~ db4, bb3@8 db5@8 c5@8 bb4@7 ~", D: "~ db4 ~ db4 ~ db4 ~ db4, gb3 bb4 ab4 gb4",
  E: "~ eb4 ~ eb4 ~ eb4 ~ eb4, eb3 b4 bb4 gb4", F: "~ e4 ~ ab4 ~ ab4 ~ ab4, ab4 e5 eb5 db5",
  G: "~ e4 ab4 db5 ~ e4 ~ e4, db5 ~ c5 bb4", H: "~ eb4 g4 bb4 ~ eb4 ~ eb4, bb4 ~ ab4 g4",
  I: "~ eb4 ab4 db5 ~ eb4 ~ db5, db5 ~ f4 ab4",
})).s("gm_epiano2").gain(0.33).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~@4
  [x ~@6 x!2 ~@7]!52
  [x ~@6 x!2 ~@5 x!2]
  [x ~@6 x!2 ~@7]!11
  [x ~@5 x!3 ~@7]
  [x ~@6 x!2 ~@7]!18
>`).gain(0.46)

// … 59 more lines

More by Rene Froger