Strudelify

Rhythm of My Heart

Rod Stewart

KeyD♭ majorTempo99 bpm
0:00/0:00
// Rhythm of My Heart — Rod Stewart
// 99 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 14 "Bass" named as a bass, played on electric bass finger (its acoustic guitar nylon patch is not one)
// note: Full arrangement: all 107 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/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 · accordion · "Akkordeo"
const accordion = note("<A B C D E F G H I@5 ~@94>".pickRestart({
  A: "~@10 f5 ab5", B: "bb5@2 ab5@3 [ab3,db4,f4,f5]@7, [ab3,db4,f4]@3 ~@5",
  C: "eb5@4 f5@2 eb5@3 [bb3,db4]@15, [bb3,db4,gb4]@8 ~ [gb4,db5]@13 ~@2", // Bbm Gb Gb5
  D: "bb5@4 ab5@5 [f4,f5]@11 eb5@2 db5@2, [db4,f4]@3 db4@5, ab3@7 ~@2 ab3@7 ~@8", E: "eb5@10 f5 ab5, [ab3,c4,eb4]@23 ~",
  F: "bb5@4 ab5@5 bb5@2 [db4,f4,f5]@11 ab5@2, [ab3,f4]@11 ab3@13, db4@3 ~@5", // Db
  G: "gb5@4 f5@2 eb5@3 db5@9 bb4@6, [bb3,db4]@23 ~, gb4@7 ~", H: "db5@5 eb5 f5@2 ab5 gb5@2 f5, [ab3,db4,f4]",
  I: "[[ab3,c4,eb4,eb5]@11 [ab3,db4,f4]@13 [ab3,db4,f4]@75 ~@21, ~@11 db5@91 ~@18]/5", // Ab Db
})).s("gm_accordion").gain(0.2)

// chords · pad new age · "Fills"
const pad_new_age = note("<~@14 A ~ B C D ~@3 E ~ F ~@12 G H I ~ J K L ~@63>".pickRestart({
  A: "[f4,bb4] ~ [eb4,ab4] ~ [db4,f4] ~ [bb3,eb4] ~ [ab3,db4] ~ [db4,f4] ~@5 [ab3,db4] ~ [bb3,eb4] ~ [ab3,db4] ~ [bb3,eb4] ~", // Bb5 Ab5 Db Eb5 Db5 Db Db5 Eb5 …
  B: "f4 ~ bb4 ~ db5 ~ eb5 ~ db5 ~ ab4 ~@9 [ab3,db4] ~ [bb3,eb4] ~", C: "[f4,ab4] ~@23",
  D: "[ab3,db4] ~ [db4,f4] ~ [f4,bb4] ~ [bb4,eb5] ~ [ab4,db5] ~ [bb4,eb5] ~@13", // Db5 Db Bb5 Eb5 Db5 Eb5
  E: "[f4,bb4] ~ [eb4,ab4] ~ [f4,bb4] ~ [eb4,ab4] ~ [f4,bb4] ~ [eb4,ab4] ~ [f4,bb4] ~@11", // Bb5 Ab5 Bb5 Ab5 Bb5 Ab5 Bb5
  F: "[db4,f4] ~ [f4,ab4] ~ [ab4,db5] ~ [bb4,eb5] ~ [ab4,db5] ~ [f4,bb4]@3 ~@11", G: "~@20 [db4,f4] ~ [f4,bb4] ~",
  H: "[ab4,db5] ~@23", // Db5
  I: "[f5,bb5] ~ [eb5,ab5] ~ [db5,f5] ~ [bb4,eb5] ~ [ab4,db5] ~ [db5,f5] ~@5 [ab4,db5] ~ [bb4,eb5] ~ [ab4,db5] ~ [bb4,eb5] ~", // Bb5 Ab5 Db Eb5 Db5 Db Db5 Eb5 …
  J: "ab4@2 f5@2 ab5@2 bb5@2 ab5@2 [f5,bb5]@3 ~@7 [ab4,db5] ~ [bb4,eb5] ~, f5 ~ bb5 ~ db6 ~ eb6 ~ db6 ~@15", // Bb5 Db5 Eb5
  K: "[f5,ab5] ~@7", L: "[ab4,db5] ~ [db5,f5] ~ [f5,bb5] ~ [bb5,eb6] ~ [ab5,db6] ~ [bb5,eb6]@3 ~@11",
})).s("gm_pad_new_age").gain(0.26)

// chords · piano
const piano = note(`<
  ~@5 A B@2 C@2 ~@3 D E F G F H I J F K L M F N O P Q R S T U V W X ~ D E F G F H I Y@2 Q R S T U V W X Z AA AB AC AD AE
  AF AG AH@2 AI@2 AJ AK Q R S T U V W X Q R S T U V W X AD AL AM AN AO AP AQ@2 AR@3 AS AT AU@8 ~
>`.pickRestart({
  A: "db4@4 ~ db4@3 ~ db4 eb4 f4, [ab3,f4]@8 ~ bb4@2 ~", // Db
  B: "[[bb3,db4,gb4]@9 ~ [db4,gb4]@6 bb3 ~ [gb3,bb3,db4]@5 ~ [f3,ab3]@23 ~, ~@10 bb3@3 ~@10 db4@23 ~@2]/2", // Gb Gb5 Gb Fm
  C: "[[ab3,c4,eb4]@11 ~ [f3,ab3,db4]@14 ~@22]/2", D: "[ab3,db4,f4]@5 ~", E: "[bb3,db4,f4]@19 ~ db4 ~ eb4@2",
  F: "[ab3,db4,f4]@11 ~", G: "[bb3,db4,f4]@18 bb4@2 ab4 ~ eb4 ~", H: "[bb3,db4,f4]@20 db4@2 eb4 ~",
  I: "[bb3,db4,gb4]@23 ~", J: "[db4,eb4,gb4]@5 ~ [c4,eb4,gb4]@5 ~", K: "[bb3,db4,f4]@7 ~", L: "[ab3,db4,f4]@7 ~",
  M: "db4@14 ~ [ab4,db5]@3 ~@6, [bb3,f4]@5 ~, ~@7 db4@5", N: "[bb3,db4,f4]@10 bb3 db4", O: "[bb3,db4,gb4]",
  P: "[db4,eb4,gb4]@10 ~@2 [ab3,c4,eb4,gb4]@11 ~", Q: "[ab3,db4,f4]@9 ~@2 db4, db3@16 ~@2 db3@5 ~, ~@5 ab3",
  R: "[bb3,gb4]@16 ~@2 eb4@2 db4@2 bb3 ~, gb2@7 ~, db4 ~@17 gb4@5 ~, ~@18 db4 ~@5", // Ebm
  S: "[ab3,db4]@18 [ab3,db4]@4 ~ ab3, [db3,f4]@23 ~", T: "~ db3 ~@10 c4@9 ~@3, db4@23 ~, [ab3,eb4]@5 ~",
  U: "db3@6 ~@2 ab3 db4 ab4 ab3, [db4,f4]@17 ~@3 f4@4, ab3@7 ~@5, ~@6 db3@5 ~", // Db
  V: "gb2@11 ~@7 db4@2 ~@2 bb3 ~, gb4@9 ~ gb4@2, bb3@15 ~ bb3@4 ~@4, ~@12 gb2@11 ~",
  W: "db4@9 ~@9 db4@3 ~ ab3@2, [db3,f4]@12 db3@11 ~, ab3@6 ~@4 ab3@6 f4@7 ~, ~@2 db4 ~", // Db
  X: "db4@4 ab3 ~ ab3@2 c4 ~ ab3@2 [db3,ab3,db4,f4]@12, ab2@11 ~@13, eb4@9 ~ eb4 ~@13, ab3 ~@7", // Db
  Y: "[[db4,eb4,ab4]@10 ~@11 [ab2,gb3,db4,eb4,ab4]@24 ~@3]/2", // Dbsus2 Absus4
  Z: "[db2,db3,ab3] ~ [db3,ab3] ~ [db3,ab3] ~ db2@2 [db3,ab3] ~ [db3,ab3] ~ db2 ~ [db3,ab3] ~ db2 ~ [db3,ab3] ~ db2 ~ [db3,ab3] ~, ~@6 db3 ~@17", // Db5
  AA: "[db2,b2,gb3] ~ [b2,gb3] ~ [b2,gb3] ~ db2 ~ [b2,gb3] ~ db2 ~ [b2,gb3] ~ db2 ~ [b2,gb3] ~ db2 ~ [b2,gb3] ~ [b2,gb3] ~", // Gbsus4 B5
  AB: "[db2,db3,ab3] ~ [db3,ab3] ~ [db3,ab3] ~ db2 ~ [db3,ab3] ~ [db3,ab3] ~ [db2,db3,ab3] ~ [db3,ab3] ~ [db3,ab3] ~ db2 ~ [db3,ab3] ~ db2 ~", // Db5
  AC: "[b2,gb3] ~ [b2,gb3] ~ db2 ~ [b2,gb3] ~ [b2,gb3] ~ db2 ~ [b2,gb3] ~ db2 ~ [b2,gb3] ~ db2 ~ [b2,gb3] ~ [b2,gb3] ~", // B5
  AD: "[db2,db3,ab3] ~ db3 ~ [db3,ab3] ~ [db2,db3,ab3] ~ [db3,ab3] ~ [db3,ab3] ~ [db2,db3,ab3] ~ [db3,ab3] ~ [db3,ab3] ~ db2 ~ [db3,ab3] ~ db2 ~", // Db5
  AE: "[b2,gb3] ~ [b2,gb3] ~ [b2,gb3] ~ [db2,b2,gb3] ~ [b2,gb3] ~ [b2,gb3] ~ [db2,b2,gb3] ~ [b2,gb3] ~ [b2,gb3] ~ [db2,b2,d3,gb3] ~ [b2,d3,gb3] ~ [b2,gb3] ~", // B5 Gbsus4 B5 Gbsus4 B5 Bm B5
  AF: "[gb2,db4]@4 [bb3,db4,gb4]@2 ~@2 bb3@2 [db4,gb4]@2 [f2,db4]@4 [ab3,db4]@2 ~@4 db4 ~, [bb3,gb4]@2 ~@4 gb2@4 ~@2 [ab3,f4]@2 ~@2 f4@7 ~, ~@18 f2@5 ~, ~@5 ab3", // Gb5 Gb Gb5 Db Db5 Ebm Db
  AG: "[eb2,gb3,bb3,eb4]@2 [gb3,bb3,eb4] eb2 [gb3,bb3,eb4] eb2 [db2,f3,ab3,db4]@2 [f3,ab3,db4] db2 [f3,ab3,db4] db2", // Ebm Db
  AH: "[~@2 c4 ~ [bb3,db4,f4]@2 bb2@2 [bb3,db4,f4]@2 ~@2 [bb3,db4,f4]@4 ~@2 [ab4,b4] ~ ab4@2 ~@2 f4@2 eb4@2 ~@6 db4@2 ~@2 eb4@2 ~@4 bb3@2 db4@2, bb2@5 ~@5 bb2@4 ~@2 bb2@4 ~@2 bb2@5 ~ bb2@7 ~ bb2@5 ~ bb2@5 ~, ~@9 db5@2 ~@5 bb3@3 ~ db4@2 ~@2, ~@18 bb4@2 ~@4 bb4@4 ~@2 f4@7 ~ f4@8 ~@2]/2", // Bbm Abm
  AI: "[[bb3,db4,gb4]@2 ~@2 [bb3,db4,gb4]@2 gb2@2 [bb3,gb4]@2 gb3@2 [ab3,db4,f4]@3 ~ [ab3,db4,f4]@2 f3@2 [ab3,db4,f4]@2 ~@2 [bb3,eb4]@3 ~ [gb3,bb3,eb4]@2 ~@2 bb3 ~ bb3 ~ [ab3,db4,f4]@3 ~ [ab3,db4,f4]@2 db3@2 ~@2 db3@2, gb2@6 ~@2 db4 ~ e3 ~ f3@4 ~@6 f3@5 ~@17 [ab3,db4,f4]@4, ~@12 eb3@2 ~ eb3@3 db3@2 ~@4, ~@24 gb3 ~@7 [eb4,gb4]@4 ~@12]/2", // Gb Ebm Db Eb5 Ebm Db Ebm
  AJ: "eb3@3 ~ [bb3,eb4,gb4]@3 ~ [bb3,eb4,gb4]@2 ~@2 [bb3,eb4,gb4]@3 ~ [eb3,bb3,eb4,gb4]@4 [bb3,eb4,gb4]@2 eb3@2, ~@4 eb3@4 ~@2 eb3@5 ~@9", // Ebm
  AK: "[gb3,ab3,eb4]@3 ~ [ab2,gb3,ab3,eb4]@3 ~ [ab2,gb3,ab3,eb4]@3 ~ [ab2,gb3,ab3,eb4]@3 ~ [gb3,ab3,eb4]@2 ~@2 [gb3,ab3,eb4]@2 ~@2, ~@9 ab2@2 ~", // Ab7
  AL: "[b2,gb3] ~ [b2,gb3] ~ [b2,gb3] ~ [db2,b2,gb3] ~ [b2,gb3] ~ [b2,gb3] ~ [db2,b2,gb3] ~ [b2,gb3] ~ [b2,gb3] ~ [db2,b2,gb3] ~ [b2,gb3] ~ [b2,gb3] ~", // B5 Gbsus4 B5 Gbsus4 B5 Gbsus4 B5
  AM: "[db4,f4]@9 ~@7 [ab3,f4] ~ [ab3,f4]@2 eb4@2 db4 ~, db3@5 ~ db3@3 ~@3, ab3@7 ~@3 [ab3,f4]@4 ~@10", // Db
  AN: "bb3@10 gb3@4 ~@2 db4 ~ bb4@2 ab4@2 f4 ~, db4@2 ~ db4, gb3@7 ~@17",
  AO: "f4@4 ~ db4@3 ~@2 eb4 f4, ~@5 f4@5 ~@2, ~@5 ab3@2 ~ ab3@3 ~, ~@18 db4@5 ~",
  AP: "[db4,eb4]@6 ~@12 [eb4,ab4]@4 c4 ~, ab4@2 eb4 c4@2 ~, ~@3 db4@2 ab4@4 ~@3", // Dbsus2 Ab5
  AQ: "[db4@9 ~@3 db4 ~ db4 ~ db4@2 eb4@2 db4 ~ [bb3,db4]@6 ~@12 gb4@2 [bb3,gb4]@4 db4@2, f4@7 ~@3 f4@6 ~ db4@4 ~@3, ab3@6 ~@4 ab3@4 ~@2 ab3@5 ~ gb4 ~@7 bb3@10 ~@8]/2", // Bbm Ebm
  AR: "[[ab3,db4]@5 ~@5 eb4@2 [ab3,db4]@3 ~ eb4@4 db4@2 ~@2 eb4@5 ~ eb4@4 ab3 ~ db4@9 ~@5 eb4@2 ~@2 ab3 ~@5 db4@3 ~ db4@4 f4@3 ~, f4@4 db4@2 f4@5 ~@13 db4@2 f4@6 ~@4, ~@6 ab3@5 ~@11 ab3@6 ~@2 ab3@3 ~@13 ab3@6 db4@5 ~ ab3@11 ~@3]/3", // Db5
  AS: "[db4,f4,ab4]@10 eb4 ~@3 eb4@2 ~@2 f4@6, ~@5 [f4,ab4]@3 db4@4", // Db Fm
  AT: "ab3@5 ~ eb4 ~@13 eb4@3 ~, ~@6 f4@13 ~@5, ~@3 db4@3 db4@2 db4@4, ~@5 eb4@2 ab3@4 ~",
  AU: "[ab3@3 ~@9 eb4@3 ~@3 f4@40 ~@134, f4@5 db4@3 db4@88, ~@6 ab3@9 ~ ab3@42 ~@134, ~@18 eb4 ~@173]/8",
})).s("gm_piano").gain(0.35).pan(0.4)

// other · bagpipe · "Dudelsak"
const bagpipe = note(`<
  ~@10 A@3 B@2 ~@13 C D E F G H I@2 J K ~@9 D E F G H I@2 J L M N O P Q ~@8 D E F G H I@2 J D E F G H I@2 J P Q ~@20
>`.pickRestart({
  A: "[~@36 [db4,db5]@11 ~ b4@6 [eb4,eb5]@6 [gb4,gb5]@8 [f4,f5]@2 [gb4,gb5]@2, ~@11 g3 db3@12 db3@12, ~@23 [ab3,db4,db5]@11 ~@13 b3@6 ~@19]/3", // Db Eb Gb F Gb Db5
  B: "[[ab3,db4,ab4,ab5]@11 ~]/2", C: "~@10 f5 ab5, ~@20 f4 ~ ab4 ~",
  D: "[bb4,bb5]@4 [ab4,ab5]@2 [ab4,ab5]@3 ~ [bb4,bb5]@2 [f4,f5]@6 [eb4,eb5]@4 [db4,db5]@2", // Bb Ab Bb F Eb Db
  E: "[eb4,eb5]@2 [f4,f5] [eb4,eb5]@2 [db4,db5] [db4,db5]@3 [f4,f5]@2 [ab4,ab5]", // Eb F Eb Db F Ab
  F: "[bb4,bb5]@4 [ab4,ab5]@2 [ab4,ab5]@3 [f4,f5]@2 ~ [f4,f5]@6 [eb4,eb5]@4 [db4,db5]@2", // Bb Ab F Eb Db
  G: "[eb4,eb5]@17 [f4,f5]@5 [ab4,ab5]@2", // Eb F Ab
  H: "[bb4,bb5]@4 [ab4,ab5]@2 [ab4,ab5]@4 [bb4,bb5]@2 [f4,f5]@5 [f4,f5]@4 ~ [ab4,ab5]@2", // Bb Ab Bb F Ab
  I: "[~@4 [f4,f5] ~ [eb4,eb5]@3 ~ [db4,db5]@2 [db4,db5]@6 [db4,db5]@16 [eb4,eb5]@2 [f4,f5]@3 ~ [ab4,ab5]@6 [f4,f5]@2, [gb4,gb5] ~@7]/2", // F Eb Db Eb F Ab F Gb
  J: "[eb4,eb5] [db4,db5]", K: "[db4,db5] ~, g4@23 ~, ab4 ~@23", L: "[db4,db5] ~",
  M: "[b3,b4]@6 [eb4,eb5]@6 [gb4,gb5]@9 [ab4,ab5]@2 [bb4,bb5]", N: "~ [ab4,ab5]@23",
  O: "[b3,b4]@6 [eb4,eb5]@6 [gb4,gb5]@10 [ab4,ab5] [bb4,bb5]", P: "ab4 bb4@2 ab4@21, ab5",
  Q: "[b3,b4]@3 [eb4,eb5]@3 [gb4,gb5]@4 ~@2", // B Eb Gb
})).s("gm_bagpipe").gain(0.18)

// other · string ensemble 2 · "Stringsh"
const string_ensemble_2 = note(`<
  ~@20 A ~ B ~ C D ~ E F G H@6 I J ~@9 G H@6 I K@6 L M N@2 O@2 P Q G R@6 I G H@6 I K@2 S@4 T@3 U@7 ~@6
>`.pickRestart({
  A: "~@19 db4@2 eb4@2 ~",
  B: "~@6 [bb3,eb4]@2 [db4,f4]@2 ~ [db4,f4]@2 ~ eb4@2 [db4,f4]@2 ~ [db4,f4]@2 [bb3,eb4]@2 ~, ~@10 [bb3,eb4]@2 ~ bb3@2 ~@3 [bb3,eb4]@2 ~@4", // Eb5 Db Eb5
  C: "~@12 ab4@2 bb4@2 ab4@2 f4@2 eb4 ~ db4 ~", D: "[ab3,db4,f4] ~@11", E: "[gb3,bb3,db4]",
  F: "[ab3,db4,eb4,ab4]@11 ~ [ab3,c4,eb4,ab4]@8 f5@2 ab5@2, ~@20 f4 ~ ab4 ~", // Absus4 Ab
  G: "[bb4,bb5]@3 [ab4,ab5]@2 ~ [ab4,ab5]@3 [bb4,bb5]@2 [f4,f5]@6 [eb4,eb5]@4 [db4,db5]@2 ~", // Bb Ab Bb F Eb Db
  H: "[[eb4,eb5]@3 [f4,f5]@2 ~ [eb4,eb5]@3 [db4,db5]@2 ~ [db4,db5]@5 [f4,f5]@4 [ab4,ab5]@2 [bb4,bb5]@4 [ab4,ab5]@2 [ab4,ab5]@4 [f4,f5]@2 [f4,f5]@6 [eb4,eb5]@4 [db4,db5]@2 [eb4,eb5]@17 ~ [f4,f5]@4 [ab4,ab5]@2 [bb4,bb5]@4 [ab4,ab5]@2 [ab4,ab5]@4 [bb4,bb5]@2 [f4,f5]@5 ~ [f4,f5]@4 [ab4,ab5]@2 ~@4 [f4,f5] ~ [eb4,eb5]@3 ~ [db4,db5]@2 ~ [db4,db5]@6 [db4,db5]@15 [eb4,eb5]@2 ~ [f4,f5]@3 [ab4,ab5]@7 [f4,f5]@2, ~@95 [gb4,gb5]@6 ~@43]/6", // Eb F Eb Db F Ab Bb Ab …
  I: "[eb4,eb5] [db4,db5]", J: "[db4,db5]@7 ~, ab4@23 ~", K: "[db2,ab2,db3,ab3,db4]/2", L: "[bb3,gb4] [ab3,f4]",
  M: "[gb3,eb4] [f3,db4]", N: "[[bb3,db4]@47 ~]/2",
  O: "[[bb3,db4,bb4] [ab3,ab4] [gb3,eb4] [f3,db4,f4], ~ f4@2 ~, ~@24 gb4 ~@23]/2", P: "[gb3,eb4,gb4]",
  Q: "[ab3,eb4,ab4]", // Ab5
  R: "[[eb4,eb5]@3 [f4,f5]@2 ~ [eb4,eb5]@3 [db4,db5]@2 ~ [db4,db5]@5 [f4,f5]@4 [ab4,ab5]@2 [bb4,bb5]@4 [ab4,ab5]@2 [ab4,ab5]@4 [f4,f5]@2 [f4,f5]@6 [eb4,eb5]@4 [db4,db5]@2 [eb4,eb5]@17 ~ [f4,f5]@4 [ab4,ab5]@2 [bb4,bb5]@4 [ab4,ab5]@2 [ab4,ab5]@4 [bb4,bb5]@2 [f4,f5]@5 ~ [f4,f5]@4 [ab4,ab5]@2 [gb4,gb5]@3 ~ [f4,f5]@2 [eb4,eb5]@3 ~ [db4,db5]@2 ~ [db4,db5]@6 [db4,db5]@13 ~@2 [eb4,eb5]@2 ~ [f4,f5]@3 [ab4,ab5]@7 [f4,f5]@2]/6", // Eb F Eb Db F Ab Bb Ab …
  S: "[ab3@23 ~ bb3@23 [ab3,db4]@24 [gb3,ab3,eb4]@24 ~, db4@15 ~@17, f3@21 ~@2 gb3@22 ~@2 f3@20 ~@29]/4", // Db5 Ab7
  T: "[[f3,ab3,db4]@22 ~ [gb3,bb3,db4]@23 ~ [f3,ab3,db4]@23 ~ [gb3,c4,eb4]]/3", // Db Gb Db Cdim
  U: "[~@12 [f3,ab3,db4]@11 db4@144 ~, ~@23 ab3@120 ~@25, ~@23 f3@73 ~@72]/7", // Db
})).s("gm_string_ensemble_2").gain(0.31).pan(0.6)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2_2 = note(`<
  ~@6 A B C D@2 E F ~@7 G ~@8 H I J K J L J M ~ H N H N H N I O P J I J Q J L J M R S T U V W X Y Z@2 ~@3 AA J I J Q J L
  J M J I J Q J L J M V W ~@2 AB@2 AC@3 AD@7 ~@6
>`.pickRestart({
  A: "bb3, gb4@11 ~", B: "[ab3,db4,f4]@23 ~", C: "eb4@4 [db4,f4]@3 ~, [ab3,c4]@7 ~",
  D: "[[db2,ab2] [db2,ab2], [ab3,db4,ab4]@47 ~]/2", E: "[db2,ab2,ab3,db4,ab4]", F: "[db2,gb2,gb3,b3,eb4]", G: "~ c5",
  H: "[ab4,db5,f5]", I: "[bb4,db5,gb5]@23 ~", J: "[ab4,db5,f5]@23 ~", K: "db5@11 ~ c5@11 ~, [ab4,eb5]@23 ~",
  L: "[bb4,db5,gb5]", M: "db5@5 c5@5 ~@2 [ab4,db5,f5]@11 ~, [ab4,eb5]@11 ~@13", N: "[bb4,db5,f5]",
  O: "[ab4,db5,eb5,ab5]", P: "db5@12 c5@11 ~, [ab3,ab4,eb5,ab5]", Q: "db5@11 ~ c5@12, [ab4,eb5]@23 ~", R: "[db5,db6]",
  S: "[b4,b5]@6 [eb5,eb6]@5 [gb5,gb6]@10 ~ [bb5,bb6]@2, ~@21 [ab5,ab6]@2 ~", T: "[ab5,ab6]@23 ~",
  U: "[b4,b5]@6 [eb5,eb6]@6 [gb5,gb6]@10 [ab5,ab6] [bb5,bb6]", V: "ab5 bb5@2 ab5@21, ab6",
  W: "[b4,b5]@6 [eb5,eb6]@6 [gb5,gb6]@8 ~@2 [gb5,gb6] ~, ~@7 [f5,f6]", X: "bb6 ab6", Y: "gb6@11 ~ f6@12",
  Z: "[db6@23 ~]/2", AA: "ab6@11 ~ eb6@11 ~", AB: "[~@21 bb3 ab3 f3, ~@23 [eb5,ab5]@25]/2",
  AC: "[ab5@12 f6@6 ~@30 ab5@23 ab2, db3@71 ~, f5@9 ~@14 db6@48 ~]/3", AD: "[~@47 [ab6,db7]@121, ~@6 db3@73 ~@5]/7",
})).s("gm_string_ensemble_2").gain(0.2).pan(0.4)

// chords · string ensemble 2 · "Strings" · soft notes
const string_ensemble_2_soft = note(`<
  ~@4 A@2 ~@7 B C B C B C D E F C F C B C G H ~@35 I@2 J K ~@23 L ~ M@8 ~@6
>`.pickRestart({
  A: "[~@3 [db4,f4]@13, ~@9 ab3@37 ~@2]/2", B: "[ab4,db5,f5]", C: "[bb4,db5,f5]", D: "[bb4,db5,gb5]@23 ~",
  E: "[ab4,eb5,gb5], db5 ~", F: "[ab4,db5,f5]@23 ~", G: "[bb4,db5,gb5]", H: "db5@11 ~ c5@11 ~, [ab4,eb5,gb5]",
  I: "[~@23 bb6@12 ~ ab6@12]/2", J: "gb6 f6", K: "gb6@23 ~", L: "~@18 eb6@5 ~",
  M: "[~@24 c6@12 [ab5,db6]@155 ~, ~@23 gb5@12 ~@157]/8", // Db5
})).s("gm_string_ensemble_2").gain(0.1).pan(0.4)

// other · distortion guitar · "HeavyGit"
const distortion_guitar = note(`<
  ~@28 A@3 ~ B@2 ~@3 C ~@12 B@2 ~@9 D E F@2 ~ G@2 H ~@3 I@2 ~@6 I@2 ~@3 J K L@2 ~@18
>`.pickRestart({
  A: "[~@14 ab2@2 bb2 ~ db3@2 bb2 ~ db3@29 ~@21]/3", B: "[~@7 ab3 bb3 db4 bb3 db4@12 ~]/2", C: "[ab3,db4]@5 ~@19",
  D: "ab5@11 ~ gb5@12", E: "e5@12 eb5@11 ~", F: "[~@7 f5 ab5@9 ~@7]/2",
  G: "[~@9 f5@2 ab5@4 ~@5 f5 eb5@2 f5, ~@5 gb5@2 ~]/2", H: "c5 bb4@2 ~", I: "[~@7 ab2 bb2 db3 bb2 db3@12 ~]/2",
  J: "db5@10 ~@2 db5@11 ~", K: "b4@4 eb5@3 gb5@3 ~ bb5@6 ~ bb5@6", L: "[ab5@9 ~@7]/2",
})).s("gm_distortion_guitar").gain(0.45)

// chords · rock organ · "Orgel"
const rock_organ = note("<~@55 A B C B D E F G H@2 I J K L ~@38>".pickRestart({
  A: "db4@23 ~", B: "b3", C: "db4", D: "[db4,f4]@23 ~", E: "[b3,gb4]@23 ~", F: "[bb4,gb5] ab4, ~@6 f5 ~@5",
  G: "[gb4,bb4,eb5]@11 ~ [f4,ab4,db5]@12", // Ebm Db
  H: "[bb4@14 ~ bb4@4 bb4@4 ab4 bb4@22 ~@2, db5@23 ~, ~@15 ab4 ~@3 ab4 ~@28]/2", I: "[bb4,db5] [ab4,db5]",
  J: "[gb4,eb5]@11 ~ [ab4,db5,f5]@12", K: "[bb4,eb5,gb5]@11 ~", L: "[ab4,db5,eb5]",
})).s("gm_rock_organ").gain(0.3)

// other · taiko drum · "Pauke"
const taiko_drum = note("<~@85 [c4 ~@5 c4 ~@5] [c4 ~@11] ~@20>").s("gm_taiko_drum").gain(0.51)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@5 A B A C D E D@2 F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC A AD G H I J K AE AF@2 V W X Y Z AA AB AC AG@2
  AH@2 AI@2 AJ AK AL@2 AM AN AO AP V W X Y Z AA AB AC V W X Y Z AA AB AC AI@2 AQ AR AS AT AS AU AS AV@7 ~@6
>`.pickRestart({
  A: "db2", B: "gb1", C: "ab1@11 ~ db2@12", D: "db1", E: "db1@23 ~", F: "db2@3 db2 ~@6 db2@2 db2@9 ~@3",
  G: "bb1@3 bb1 ~@6 bb1@9 ~@3 ab1@2", H: "db2@2 ~ db2@2 ~@5 db2@2 db2@7 ~@3 ab1@2",
  I: "bb1@2 ~ bb1 ~@6 bb1@2 bb1@3 ~ bb1@2 ab1@3 ~ bb1 ~", J: "db2@3 db2 ~@6 db2@2 db2@7 ~@3 ab1 ~",
  K: "bb1@3 bb1 ~@6 bb1@2 bb1@8 ~@2 ab1@2", L: "gb1@3 ~ gb1 ~@4 gb1@2 ~ gb1@9 ~@3",
  M: "ab1@3 ~ ab1 ~@5 eb2 ~ gb2@3 ~ eb2@2 ab1 ~ ab1@2 bb1 ~",
  N: "db2@3 db2 ~@5 bb1@2 ~ db2@4 ~@2 ab2 ~@2 a1 ~@2, ~@20 ab1@3 ~", O: "bb1@3 bb1 ~@4 f1@2 ab1@2 bb1@9 ~ ab1 ~",
  P: "db2@3 db2 ~@5 bb1@2 ~ db2@8 ab1@2 a1@2", Q: "bb1@3 ~ bb1 ~@7 bb1@2 ~@2 bb1@2 ab1@3 ~ bb1@2",
  R: "db2@3 ~ db2 ~@5 bb1@2 db2@7 ~@3 ab1 ~", S: "bb1@3 ~ bb1 ~@5 ab1@2 bb1@8 ~@2 bb1 ~",
  T: "gb1@3 gb1 ~@5 db2@2 ~ gb2@3 ~ db2 ~ gb1@2 ~@2 gb1 ~", U: "ab1@11 ~ ab2 ~ eb2@2 db2@2 ab1@3 ~ ab1 ~",
  V: "db2@3 ~ db2 ~@5 ab1@2 db2@3 ~ db2 ~@3 db2 ~ ab1 ~", W: "gb1@3 ~ gb1 ~@5 db1@2 gb1@3 ~ gb1 ~ bb1@4 ab1 ~",
  X: "db2@3 ~ db2 ~@3 ab1@2 bb1 ~ db2@3 ~ db2 ~ f1@3 ~ bb1@2",
  Y: "ab1@3 ~ ab1 ~@3 f2@2 bb2 ~ ab2@3 ~ eb2@2 ab1@3 ~ bb1 ~", Z: "db2@3 db2 ~@6 ab1@2 db2 ~ db2@2 ab1 ~ f1@4 ab1@2",
  AA: "gb1@3 ~ gb1 ~@5 gb1 ~ gb1@3 ~ gb1 ~@3 ab1@2 bb1 ~", AB: "db2@3 ~ db2 ~@5 ab1 ~ db2@2 ~@2 db2 ~ f1@2 ~@2 bb1 ~",
  AC: "ab1@3 ~ ab1 ~ ab1@5 ~ db2@7 ~@3 [ab1,bb1] [b1,c2]", AD: "db2@3 db2@7 db2@2 db2@12",
  AE: "gb1@3 ~ gb1 ~@4 gb1@2 ~ gb1@9 ~ gb1 ~",
  AF: "[ab1@6 ~@4 ab1@5 ~ ab1@2 eb1@2 ~@2 ab1@14 ~@2 eb2@2 f2@2 ab2@2 f2@2 eb2@2]/2", AG: "[db2@15 ~]/2",
  AH: "[[db2,db3]@23 ~]/2", AI: "[[db2,db3]@27 ~ [db2,db3]@4 ~@2 [db2,db3]@4 ~@2 [db2,db3]@2 eb2@2 db2@2 bb1@2]/2",
  AJ: "gb1@2 ~@2 gb1@4 ~@2 gb1@2 f1@2 ~@2 f1@5 ~ f1@2", AK: "eb1@2 ~@2 eb1@5 ~ eb1 ~ db1@2 ~@2 db1 ~ db1@2 f1@2 ab1 ~",
  AL: "[bb1@3 ~ bb1@5 ~ bb1 ~ bb1@2 ~@2 bb1@4 ~@2 bb1@4 ~@2 bb1@4 ~@2 bb1 ~ bb1@2 ab1@2 db2@2 bb1@2 ab1@2 f1@2]/2",
  AM: "gb1@2 ~@2 gb1@5 ~ gb1@2 f1@2 ~@2 f1 ~ f1@2 ~@2 f1 ~",
  AN: "eb1@2 ~@2 eb1 ~ eb1@2 ~@2 eb1 ~ db1@2 ~@2 db1@2 db2@2 ab1 ~ db1@2",
  AO: "eb1@2 ~@2 eb1@2 eb1@2 ~@2 eb1@2 [db2,eb2] ~@3 eb2@2 bb1@2 ~@2 bb1 ~, ~@4 d2 ~@3", // Dbsus2
  AP: "ab1@2 ~@2 ab1 ~ ab1@3 ~ ab1 ~ ab1@2 eb2@2 bb2@2 ab2@2 f2@2 eb2 ~", AQ: "db2@19 ~ bb1 ~ ab1@2",
  AR: "gb1@21 ~ gb1@2", AS: "db2@17 ~ db2@5 ~", AT: "ab1@18 ab1@2 bb1 ~ db2 ~", AU: "gb1@10 bb1 b1",
  AV: "[ab1@4 db2@49 ~@3]/7",
})).s("gm_electric_bass_finger").gain(0.5)

// chords · acoustic guitar steel · "RhytmGit"
const acoustic_guitar_steel = note(`<
  ~@9 A B C D ~@16 E F G H I J K L M ~@9 N F G H I J K L O P O Q O R ~@8 N S T H U J V L N S T H U J V W O R X ~@19
>`.pickRestart({
  A: "[ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ ab3 ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~ [ab3,db4] ~@3 [ab3,db4] ~", // Db5
// … 187 more lines

More by Rod Stewart