Strudelify
Liebe total cover art

Bleib bei mir heut' Nacht

Liebe total

Borg Andy

KeyD♭ majorTempo128 bpm
0:00/0:00
// Liebe total — Borg Andy
// 128 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 5 "E.PIANO" epiano2 (copy of ch 6 "FANTASIA" pad new age)
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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.

// bass · electric bass finger · "FINGERDBA"
const bass = note(`<
  ~@7 A B C D E F G H I J K L E M N O I P Q R S T U V W X Y Z AA U AB AC AD AE AF AG C D E F G H I J K L E M N O I P Q R
  S T U V W X AH Z AA U AB AC AI AE AF AG AJ AK AL AM AN AO AP AQ Q R S T U V W X AH Z AA U AB AC AD AE AF AG Q R S T U
  V W X AH Z AA U AB AC AI AE AF AR
>`.pickRestart({
  A: "db2 ~ db2@2 ab1 ~ db2@2 ~@2 db2 ~ ab1@2 bb1@2", B: "db2 ~ db2 ~ ab1@2 db2@2 ~@2 db2@2 bb2@2 ab2@2",
  C: "db2 ~ db2@2 ab1@2 db2@2 ~@2 db2@2 ab1@2 bb1@2", D: "db2 ~ db2@2 ab1 ~ db2@2 ~@2 db2@2 ab1@2 db2@2",
  E: "gb2 ~ gb2@2 db2@2 gb2@2 ~@2 gb2@2 db2@2 eb2@2", F: "db2 ~ db2@2 ab1 ~ db2@2 ~@2 db2@2 ab1@2 bb1@2",
  G: "db2 ~ db2@2 ab1@2 db2@2 ~@2 ab1@2 db2@2 c2 ~", H: "bb1 ~ bb1@2 f1@2 bb1@2 ~@2 bb1@2 f1@2 bb1@2",
  I: "ab1 ~ ab1@2 eb1@2 ab1@2 ~@2 ab1@2 eb1@2 f1@2", J: "ab1 ~ ab1@2 eb1@2 ab1@2 ~@2 ab1@2 bb1@2 ab1@2",
  K: "db2 ~ db2 ~ ab1@2 db2@2 ~@2 db2@2 ab1@2 bb1@2", L: "db2 ~ db2@2 ab1@2 db2@2 ~@2 db2@2 eb2@2 db2@2",
  M: "gb2 ~ gb2@2 db2 ~ gb2@2 ~@2 db2@2 gb2@2 f2@2", N: "eb2 ~ eb2@2 bb1 ~ eb2@2 ~@2 eb2@2 bb1@2 c2@2",
  O: "eb2 ~ eb2@2 bb1 ~ eb2@2 ~@2 eb2@2 c2@2 bb1 ~", P: "ab1 ~ ab1 ~ ab1 ~ ab1 ~@3 ab1 ~ f2@2 eb2 ~",
  Q: "db2 ~ db2@2 ab1@2 db2@2 ~@2 db2 ~ ab1 ~ bb1 ~", R: "db2 ~ db2 ~ ab1@2 db2@2 ~@2 db2@2 ab1@2 db2@2",
  S: "gb2 ~ gb2 ~ db2 ~ gb2@2 ~@2 gb2@2 db2 ~ eb2 ~", T: "gb2 ~ gb2 ~ db2@2 gb2 ~@3 gb2@2 db2@2 eb2@2",
  U: "ab2 ~ ab2@2 eb2@2 ab2 ~@3 ab2@2 eb2@2 f2@2", V: "ab2 ~ ab2@2 eb2 ~ ab2@2 ~@2 ab2@2 eb2@2 f2@2",
  W: "gb2 ~ gb2@2 db2 ~ gb2@2 ~@2 gb2@2 f2@2 eb2@2", X: "db2 ~ db2 ~ ab1@2 db2 ~@3 db2 ~ ab1@2 bb1@2",
  Y: "db2 ~ db2 ~ ab1 ~ db2@2 ~@2 db2 ~ ab1 ~ bb1@2", Z: "db2 ~ db2 ~ ab1 ~ db2@2 ~@2 db2@2 ab1@2 db2@2",
  AA: "gb2 ~ gb2@2 db2@2 gb2@2 ~@2 gb2 ~ db2@2 gb2@2", AB: "eb2 ~ eb2 ~ bb1 ~ eb2@2 ~@2 eb2 ~ bb1 ~ db2@2",
  AC: "eb2 ~ eb2 ~ bb1 ~ eb2@2 ~@2 eb2@2 c2@2 bb1@2", AD: "ab1 ~ ab1 ~ eb1@2 ab1@2 ~@2 ab1@2 eb1@2 gb1@2",
  AE: "ab1 ~ ab1 ~ eb1@2 ab1 ~@3 ab1@2 bb1@2 ab1@2", AF: "db2 ~ db2@2 ab1 ~ db2@2 ~@2 db2 ~ gb1@2 ab1@2",
  AG: "db2 ~ db2@2 ab1 ~ db2 ~@3 db2@2 ab1 ~ bb1 ~", AH: "db2 ~ db2 ~ ab1 ~ db2@2 ~@2 db2 ~ ab1@2 bb1@2",
  AI: "ab1 ~ ab1@2 eb1@2 ab1@2 ~@2 ab1@2 eb1@2 gb1@2", AJ: "bb1 ~ bb1@2 f1@2 bb1@2 ~@2 bb1@2 f1@2 ab1@2",
  AK: "bb1 ~ bb1@2 f1@2 bb1 ~@3 bb1@2 f1@2 bb1@2", AL: "f2 ~ f2@2 c2@2 f2 ~@3 f2@2 c2 ~ eb2@2",
  AM: "f2 ~ f2 ~ c2 ~ f2@2 ~@2 f2@2 c2@2 f2@2", AN: "gb2 ~ gb2@2 db2 ~ gb2@2 ~@2 gb2@2 db2@2 eb2@2",
  AO: "gb2 ~ gb2 ~ db2 ~ gb2@2 ~@2 gb2@2 ~@2 gb2@2", AP: "ab2 ~ ab2@2 eb2@2 ab2@2 ~@2 ab2@2 eb2@2 f2@2",
  AQ: "ab1 ~ ab1@2 ~@2 ab1 ~ ab1 ~ ab1@2 ~@2 ab1 ~", AR: "db2@7 ~@9",
})).s("gm_electric_bass_finger").gain(0.6)

// chords · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note("<~@15 A B C ~@5 D E ~@24 A B C ~@5 D E ~@20 F G ~@2 H@2 ~@36>".pickRestart({
  A: "~@2 [c5,ab5] ~@5 [c5,ab5]@6 ~@2", B: "~@2 [c5,eb5]@2 [bb4,db5]@2 [ab4,c5] ~ [bb4,db5]@2 [c5,eb5]@5 ~",
  C: "[c5,eb5]@2 [db5,f5]@11 ~@3", D: "~@6 [c5,eb5] ~ [c5,eb5]@2 [db5,f5] ~ [db5,f5]@2 [eb5,gb5] ~",
  E: "[eb5,gb5]@5 ~@11", F: "~@3 f5@4 ~, ~ ab4@6 ~, ~@2 c5@5 ~", G: "[ab5,f6]@3 ~",
  H: "[~@6 [c5,eb5]@3 ~ [db5,f5]@3 ~ [eb5,gb5]@7 ~@11, ~@10 eb5 ~@21]/2", // Cm Db Ebm
})).s("gm_acoustic_guitar_nylon").gain(0.45)

// chords · synth strings 1 · "SYN STRIN"
const synth_strings_1 = note(`<
  ~ A@2 B@2 C@2 D@4 E@4 F@2 G@2 H@2 I@2 J@2 K L M@2 N@2 O@3 L P Q R@2 S@2 T U@3 P G@2 V F@2 G@2 H@2 I@2 W@2 X L Y@2 N@2
  Z@3 L AA Q R@2 F@2 T AB AC@2 AD@2 AE@2 AF@2 AG AH M@2 N@2 AI@3 L AA AJ AK@2 S@2 AL AM AN L H@2 AO@2 AP@3 L AQ AR AS@2
  F@2 AT AU
>`.pickRestart({
  A: "[[bb3,gb4]@7 ~ [ab3,f4]@24, db4@31 ~]/2", B: "[[bb3,db4,gb4]@15 ~]/2", C: "[[eb4,ab4], c4@15 ~]/2",
  D: "[[ab3,db4,f4]@63 ~]/4", E: "[[bb3,gb4]@15 ~ ab3@31 ~ bb3@14 ~@2, db4, ~@16 f4@47 ~]/4",
  F: "[[ab3,c4,eb4,ab4]@31 ~]/2", G: "[[ab3,db4,f4]@31 ~]/2", H: "[[bb3,db4,gb4]@31 ~]/2", I: "[[bb3,eb4,g4]@31 ~]/2",
  J: "[[ab3,c4,eb4,ab4]@5 ab3 [f3,db4] [gb3,eb4]]/2", K: "[ab3,db4,f4]@8 [g3,e4]@4 [ab3,db4,f4]@3 ~, ~@12 eb4 ~@3",
  L: "[bb3,db4,gb4]@5 ~ [ab3,db4,f4]@9 ~", M: "[[bb3,gb4], db4@15 ~]/2", N: "[eb4@22 gb4@9 ~, [ab3,c4]@31 ~]/2",
  O: "[[bb3,db4,gb4]@3 [ab3,f4]@7 [g3,e4] [ab3,f4], ~ db4@3]/3", P: "[bb3,db4,gb4]@15 ~", Q: "[c4,eb4,ab4]@15 ~",
  R: "[eb4@28 db4@3 ~, [bb3,gb4]@31 ~]/2", S: "[[ab3,eb4,ab4]@31 ~, c4@29 ~@3]/2",
  T: "[ab3,db4,f4]@11 ~ [bb3,db4,gb4]@3 ~", U: "[[ab3,db4,f4]@47 ~]/3", V: "[db4,f4], bb3@7 ~",
  W: "[[ab3,c4,eb4,ab4]@20 ab3@4 [f3,db4]@4 [gb3,eb4]@3 ~]/2", X: "[ab3,f4]@8 [g3,e4]@4 [ab3,db4,f4]@3 ~, db4@3 ~",
  Y: "[bb3,db4,gb4]/2", Z: "[[bb3,db4,gb4]@11 ~ [ab3,db4,f4]@23 ~ [ab3,db4,f4]@3 ~ [g3,e4]@4 [ab3,db4,f4]@3 ~]/3",
  AA: "[bb3,db4,gb4]", AB: "[ab3,db4,f4]@15 ~", AC: "[[bb3,db4,f4]@31 ~]/2", AD: "[[c4,f4], ab3@15 ~]/2",
  AE: "[[gb3,db4,gb4], bb3@15 ~]/2", AF: "[[ab3,c4,eb4,ab4]@23 ~ [f3,db4]@4 [gb3,eb4]@3 ~]/2",
  AG: "[ab3,db4,f4]@8 [g3,db4,e4]@4 [ab3,db4,f4]@3 ~", AH: "[bb3,db4,gb4]@5 ~ [db4,f4]@10, ~@3 ab3@4 ~",
  AI: "[[gb3,bb3,db4,gb4]@11 ~ [ab3,db4,f4]@28 [g3,db4,e4]@4 [ab3,db4,f4]@3 ~, ~@12 f3@7 ~@29]/3", AJ: "[c4,eb4,ab4]",
  AK: "[eb4@28 db4@3 ~, [bb3,gb4,bb4]]/2", AL: "[f3,ab3,db4,f4]@11 ~ [gb3,bb3,db4,gb4]@3 ~",
  AM: "[f3,ab3,db4]@11 ~ [gb3,eb4]@4, f4 ~", AN: "[ab3,db4,f4]@2 [g3,db4,e4] [ab3,db4,f4]",
  AO: "[~@22 gb4@9 ~, [ab3,c4,eb4]@31 ~]/2", // Ab
  AP: "[[bb3,db4,gb4]@11 ~ [ab3,f4]@28 [g3,e4]@4 [ab3,db4,f4]@3 ~, ~@3 db4@8 ~]/3", AQ: "[db4,gb4], bb3@7 ~",
  AR: "[ab3,eb4,ab4], c4@7 ~", AS: "[eb4@27 ~ db4@4, [bb3,gb4,bb4]]/2", AT: "[f3,ab3,db4,f4]@10 ~@2 [bb3,db4,gb4]@3 ~",
  AU: "[ab3,db4,f4]@7 ~, f3@11 ~@5", // Db
})).s("gm_synth_strings_1").gain(0.4)

// chords · pad new age · "FANTASIA"
const pad_new_age = note(`<
  A B@2 C@2 D@2 E@2 ~@15 F G H I J K L M@2 N O P Q R S T@4 ~@15 F G H I J K L M@2 N O P Q R S T@4 ~@7 F G H I J K L M@2
  N O P Q R S U@4 V W X Y Z L AA AB AC AD AE AF AG S AH@3 AI
>`.pickRestart({
  A: "~@4 ab4@4 db5@4 eb5@3 ~", B: "[[bb4,gb5]@8 [ab4,f5]@15 ~ [f4,db5]@8]/2", C: "[[gb4,bb4]@26 ~@2 [db5,bb5]@3 ~]/2",
  D: "[[db5,bb5]@5 ~ [c5,ab5] ~ [c5,ab5]@11 ~ [gb4,eb5]@4 [bb4,gb5]@5 ~ [ab4,f5]@2]/2", E: "[[f4,db5]@7 ~]/2",
  F: "~ [c4,ab4] [f4,db5] [gb4,eb5]", G: "[ab4,f5]@8 [g4,e5]@4 [ab4,f5]@3 ~",
  H: "[bb4,gb5]@5 ~ [ab4,f5]@2 [gb4,eb5]@4 [f4,db5]@4", I: "~@4 [bb4,db5,bb5]@9 ~ [bb4,db5,bb5] ~",
  J: "[bb4,db5,bb5]@3 ~ [ab4,c5] ~ [gb4,bb4,gb5]@9 ~, ~@2 ab5 ~@5", K: "[c4,ab4]@3 [ab4,c5]@5",
  L: "[c5,eb5]@5 ~ [c5,gb5]@9 ~", M: "[[bb4,gb5]@12 [ab4,f5]@19 ~]/2", N: "[ab4,f5]@2 [g4,e5] [ab4,f5]",
  O: "[bb4,gb5]@3 [ab4,f5] [gb4,eb5]@2 [f4,db5]@2", P: "~ [bb4,gb5]@3",
  Q: "[c5,ab5]@4 [bb4,gb5]@2 [ab4,f5]@4 [gb4,eb5]@5 ~", // Fm Ebm Db Ebm
  R: "~@4 gb5@2 [bb4,gb5] ~ [bb4,gb5]@3 ~ [bb4,gb5]@3 ~, ~@4 bb4 ~@11", // Ebm
  S: "[bb4,gb5]@3 ~ [ab4,f5]@3 ~ [gb4,eb5]@3 ~ [bb4,db5]@3 ~", // Ebm Db Ebm Bbm
  T: "[[eb4,c5]@4 ~@2 [eb4,c5] ~ [eb4,c5]@3 ~ [f4,db5] ~ [gb4,eb5]@5 ~ [gb4,eb5]@3 ~ [f4,db5] ~ [eb4,c5]@2 ~@2 f4@13 ~ [gb4,bb4]@3 ~ f4@11 ~@5, ~@15 db5@14 ~@3]/4", // Cm Db Ebm Db Cm Gb
  U: "[[eb4,c5]@4 ~@2 [eb4,c5] ~ [eb4,c5]@3 ~ [f4,db5] ~ [gb4,eb5]@5 ~ [gb4,eb5]@3 ~ [f4,db5] ~ [eb4,c5]@2 ~@2 f4@13 ~ [gb4,bb4]@3 ~@5 ab4@3 ~@5 [gb4,eb5]@3 ~, ~@15 db5@14 ~@3, ~@48 f4@11 ~@5]/4", // Cm Db Ebm Db Cm Gb Ebm
  V: "[ab4,f5]@5 ~ [ab4,f5]@2 [g4,e5]@4 [ab4,f5]@4", W: "[bb4,gb5]@6 [ab4,f5]@2 [gb4,eb5]@4 [f4,db5]@3 ~",
  X: "~@4 [bb4,db5,bb5] ~ [bb4,db5,bb5] ~ [bb4,db5,bb5]@5 ~ [bb4,db5,bb5] ~", // Bbm
  Y: "[bb4,db5,bb5]@4 [ab4,c5] ~ [gb4,bb4,gb5]@8 ~@2, ~@2 ab5 ~@5", Z: "ab4@5 ~ [ab4,c5]@9 ~",
  AA: "[bb4,gb5]@11 ~ [ab4,f5]@3 ~", AB: "[ab4,f5]@13 ~@3",
  AC: "[ab4,f5]@5 ~ f5@2 [g4,e5]@3 ~ [ab4,f5]@3 ~, ~@6 ab4 ~@9", // Db C Db
  AD: "[bb4,gb5]@5 ~ f5@2 [gb4,eb5]@3 ~ [f4,db5]@4, ~@6 ab4 ~@9", // Ebm Db
  AE: "~@4 [bb4,gb5] ~ [bb4,gb5] ~ [bb4,gb5]@5 ~ [bb4,gb5] ~", // Ebm
  AF: "[c5,ab5]@3 ~ [bb4,gb5] ~ [ab4,f5]@3 ~ [gb4,eb5]@5 ~", // Fm Ebm Db Ebm
  AG: "~@4 [bb4,gb5] ~ [bb4,gb5] ~ [bb4,gb5]@3 ~ [bb4,gb5]@3 ~", // Ebm
  AH: "[[eb4,c5]@4 ~@2 [eb4,c5] ~ [eb4,c5]@3 ~ [f4,db5] ~ [gb4,eb5]@5 ~ [gb4,eb5]@2 ~@2 [f4,db5] ~ [eb4,c5]@2 ~@2 f4@12 ~@2 [gb4,bb4]@3 ~, ~@15 db5@8 ~]/3", // Cm Db Ebm Db Cm Gb
  AI: "[f4,db5] ~", // Db
})).s("gm_pad_new_age").gain(0.35).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~ A@2 B@2 C@2 D E F G H I J K L M N@2 O P Q R S T U V W@2 X Y Z AA AB AC AD AE AF AG AH@2 AI AJ F G H I J K L M G AK O
  P Q R S T U V W@2 X Y Z AA AB AC AD AE AF AG AH@2 AI AJ AL@2 AM@2 AN AO AP AQ U V W@2 X Y AR AA AB AC AD AE AF AG AH@2
  AI AJ AS V W@2 X Y AR AA AB AC AD AE AF AG AH@2 AI AT
>`.pickRestart({
  A: "[[gb3,bb3,db4,gb4]@6 ~@2 [f3,ab3,db4,f4]@21 ~@3]/2", B: "[[bb3,db4,gb4]@23 ~@9, gb3@7 ~]/2",
  C: "[[db4,bb4]@5 ~ [c4,ab4] ~ [c4,ab4]@19 ~@5, ab3@27 ~@5]/2", // Gb Fm
  D: "[ab3,db4,f4]@4 ~@6 db4@2 ab3@2 db4 ~, f3@3 f4@4 ~, ~@2 ab3@3 ~@3", // Db
  E: "~@2 ab3 ~ db4 ~ f4@4 db4@2 ab3@2 db4 ~, f3@3 ~@5", F: "~@2 ab3@2 db4@2 f4@4 db4@2 ab3@2 db4 ~, f3 ~@3",
  G: "f3 ab3 db4 ~@2 db4 ab3 db4, ~@3 f4@4 ~", H: "~@2 bb3@2 db4@2 gb4@4 db4@2 bb3@2 gb3 ~, gb3 ~@3",
  I: "f3 ab3 db4 f4@2 db4 ab3 db4", J: "f3@2 ab3@2 db4@2 f4@4 ~@2 ab3@2 db4 ~, ~@5 db4 ~@2, ~@11 f4@3 ~@2",
  K: "f3@2 bb3@2 db4@2 f4@4 ~@2 bb3@2 f3 ~, ~@5 db4 ~@2, ~@11 f4@2 ~@3",
  L: "~ c4 eb4 ~@2 eb4 c4 eb4, ab3@4 ~@2 ab4@9 ~", M: "~@2 c4@2 eb4@2 ~@4 eb4@2 c4@2 ab3 ~, ab3@5 ~ ab4@7 ~@3",
  N: "[f3@2 ab3@2 db4@2 ~@4 db4@2 ab3@2 ~@2 f3@2 ab3@2 ~@6 db4@2 ab3@2 f3 ~, ~@3 f4@4 db4@4 f4@3 ~@2]/2",
  O: "~ bb3 db4 gb4@2 db4 bb3@2, gb3 ~@3", P: "gb3 bb3 db4 gb4@2 db4 bb3 gb3",
  Q: "g3@2 bb3@2 eb4@2 ~@4 eb4@2 bb3@2 g3 ~, ~@6 g4@7 ~@3", R: "g3 ~ eb4 ~@2 eb4 bb3 g3, ~ bb3@4 ~@3, ~@3 g4@3 ~@2",
  S: "[ab3,c4,ab4] ~ c4@2 eb4@2 c4 ~ [ab3,c4,ab4]@3 ~ [bb3,db4,bb4]@2 ~@2, ~ [ab3,ab4]@2 ~@5", // Ab Bbm Ab
  T: "[eb4,c5]@3 c4@3 ~@2, c4@5 ~@11", U: "[ab3,db4,f4]@7 ~ [g3,e4]@3 ~ [ab3,f4]@2 ~@2",
  V: "[bb3,gb4]@5 ~ [ab3,f4]@2 [gb3,eb4]@4 [f3,db4]@2 ~@2", // Ebm Db Ebm Db
  W: "[[bb3,db4,gb4]@4 ~@6 db4@2 bb3@2 db4@2 ~@2 bb3@2 db4 ~@7 bb3@2 gb3@2, gb3@3 ~ gb3@3 ~, ~@2 bb3@3 ~@8 db4@2 ~, ~@3 gb4@6 ~@2 gb4@4 ~]/2", // Gb
  X: "~ c4 eb4 ~@2 eb4 c4 eb4, ab3@3 ab4@4 ~", Y: "~@4 eb4@2 ~@4 eb4@2 c4@2 ab3 ~, ab3@3 ~, ~ c4@4 ~@3, ~@6 ab4@7 ~@3",
  Z: "~@2 bb3@2 db4 ~ [bb3,db4,gb4]@4 ~@2 [ab3,db4,f4]@4, gb3@9 ~@7", // Gb Db
  AA: "~@2 ab3@2 db4@2 ab3@4 db4@2 ab3@2 db4 ~, f3@2 ~ f4@4 ~",
  AB: "~@2 ab3@2 db4 ~ [ab3,f4] ~ [g3,e4]@3 ~ [ab3,f4]@3 ~", AC: "[bb3,gb4]@5 ~ [ab3,f4]@2 [gb3,eb4]@4 [f3,db4]@3 ~",
  AD: "~@2 db4 ~@3 bb3 gb3, gb3@3 ~, ~ bb3@4 db4@2 ~, ~@3 gb4@4 ~",
  AE: "~@4 eb4@2 ~@4 eb4@2 c4@2 ab3 ~, ab3@3 ~, ~ c4@4 ~@3, ~@3 ab4@4 ~",
  AF: "~@2 eb4 ~@2 eb4 bb3 eb4, gb3@5 ~ gb4@8 ~@2, ~ bb3@4 ~@3",
  AG: "~@4 eb4@2 ~@4 eb4@2 bb3 ~ gb3@2, gb3@2 ~ gb4@4 ~, ~ bb3@4 ~@3",
  AH: "[~@4 eb4@2 ~@4 eb4@2 ~@2 eb4@2 ~@4 eb4@2 ~@4 eb4@2 c4 ~@3, ab3@2 ~ ab4@6 c4@4 ~@3, ~@2 c4@7 ~@3 c4@4 ab3@12 ~@4, ~@11 ab4@3 ~@2]/2",
  AI: "~@2 db4@2 ~@4 db4@2 ab3 ~ [gb3,bb3,db4,gb4]@3 ~, [f3,f4] ab3 ~@2, ~@6 [f3,f4]@5 ~@5", // Gb F
  AJ: "[f3,ab3] db4 ~@3 ab3 ~@2, f4 ab3 db4 ~, ~@3 f4@3 ~@2", AK: "f3@2 ab3@2 db4@2 ~@4 db4@2 ab3@2 f3 ~, ~@3 f4@3 ~@2",
  AL: "[~@2 bb3@2 ~@4 bb3@2 f3@2 ~@2 bb3@3 ~ db4@2 bb3@2 ~@2 db4@2 ~@2 f3@4, bb2@6 db4@6 ~@14 bb3@5 ~, db4@2 f3@2 ~@2 f3@3 ~@2 f3@2 ~@3]/2",
  AM: "[~@2 c4@2 ab3@2 f3@4 ~@2 c4@2 ~@14 c4@2 ab3 ~, f4@6 ~@4 f4@4 ab3@4 c4@4 f3@7 ~@3, ~@16 f4@4 ab3@5 ~ f4@5 ~]/2",
  AN: "~@2 bb3 ~@3 db4 bb3, gb4@7 ~@3 gb4@4 ~@2, ~@2 db4@4 gb3@7 ~@3",
  AO: "~ db4 ~@3 db4 bb3 gb3, gb3@3 ~, gb4@2 bb3@3 ~@3, ~@3 gb4@4 ~",
  AP: "~ eb4 c4 ~ eb4 c4 eb4 c4, [ab3,ab4]@4 ~@2 ab4@7 ~@3, ~@3 ab3@2 ~@3", // Ab
  AQ: "ab3@2 eb4@2 ~@2 ab4@2 eb4@2 ab3 ~@5, ab4 ab3 ~@2",
  AR: "~@2 bb3@2 db4 ~ [bb3,db4,gb4]@4 ~@2 [ab3,db4,f4]@3 ~, gb3@9 ~@7", // Gb Db
  AS: "[ab3,f4]@7 ~ [g3,e4]@3 ~ [ab3,f4]@2 ~@2, db4@3 ~@13", AT: "[ab3,db4,f4]@13 ~@3, db3@9 ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.45).pan(0.2)

// chords · pizzicato strings · "PIZICATO"
const pizzicato_strings = note(`<
  ~@7 A B A@2 C B D E F@2 A@2 C@2 G@2 H I J K L@2 H@2 M N J K L H O@2 H@2 P Q A@2 C B D E F@2 A@2 C@2 G@2 H I J K L@2
  H@2 M N J K L H O@2 H@2 P Q R@2 S@2 C@2 H T J K L@2 H@2 M N J K L H O@2 H@2 P Q J K L@2 H@2 M N J K L H O@2 H@2 P U
>`.pickRestart({
  A: "~@2 [f4,ab4,db5] ~@3 [f4,ab4,db5] ~@3 [f4,ab4,db5] ~@3 [f4,ab4,db5] ~", // Db
  B: "~@2 [f4,ab4,db5] ~@3 [f4,ab4,db5] ~@3 [f4,ab4,db5] ~ [f4,ab4,db5] ~ [f4,ab4,db5] ~", // Db
  C: "~@2 [gb4,bb4,db5] ~@3 [gb4,bb4,db5] ~@3 [gb4,bb4,db5] ~@3 [gb4,bb4,db5] ~", // Gb
  D: "~@2 [f4,db5] ~@3 [f4,ab4,db5] ~@3 [f4,ab4,db5] ~@3 [f4,ab4,db5] ~", // Db
  E: "~@2 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@3 [f4,ab4,bb4,db5] ~", // Bbm Bbm7
  F: "~@2 [eb4,ab4,c5] ~@3 [eb4,ab4,c5] ~@3 [eb4,ab4,c5] ~@3 [eb4,ab4,c5] ~", // Ab
  G: "~@2 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~", // Eb
  H: "~@2 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~", // Ab
  I: "[ab4,c5,eb5] ~ [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,eb5] ~", // Ab Ab5
  J: "~@2 [ab4,db5,f5] ~@3 [ab4,db5,f5] ~@3 [g4,db5,e5] ~@3 [ab4,db5,f5] ~", // Db Dbdim Db
  K: "~@2 [bb4,db5,gb5] ~@3 [ab4,db5,f5] ~@3 [ab4,db5,f5] ~@3 [ab4,db5,f5] ~", // Gb Db
  L: "~@2 [bb4,db5,gb5] ~@3 [bb4,db5,gb5] ~@3 [bb4,db5,gb5] ~@3 [bb4,db5,gb5] ~", // Gb
  M: "~@2 [bb4,db5,gb5] ~@3 [bb4,db5,gb5] ~@3 [bb4,db5,gb5] ~@3 [ab4,db5,f5] ~", // Gb Db
  N: "~@2 [ab4,db5,f5] ~@3 [ab4,db5,f5] ~@3 [ab4,db5,f5] ~@3 [ab4,db5,f5] ~", // Db
  O: "~@2 [gb4,bb4,eb5] ~@3 [gb4,bb4,eb5] ~@3 [gb4,bb4,eb5] ~@3 [gb4,bb4,eb5] ~", // Ebm
  P: "~@2 [ab4,db5,f5] ~ db5 ~ [ab4,db5,f5] ~@3 [ab4,db5,f5] ~@3 [bb4,db5,gb5] ~", // Db Gb
  Q: "db5 ~ [ab4,db5,f5] ~@3 [ab4,db5,f5] ~@3 [ab4,db5,f5] ~ [ab4,db5,f5] ~ [ab4,db5,f5] ~", // Db
  R: "~@2 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~@3 [f4,bb4,db5] ~", // Bbm
  S: "~@2 [f4,ab4,c5] ~@3 [f4,ab4,c5] ~@3 [f4,ab4,c5] ~@3 [f4,ab4,c5] ~", // Fm
  T: "[ab4,c5,eb5] ~ [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [ab4,eb5] ~@3 [ab4,eb5] ~", U: "[f4,ab4,db5] ~@15",
})).s("gm_pizzicato_strings").gain(0.35)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@24 A ~@7 A ~@9 B ~@15 A ~@7 A ~@9 B ~@7 A ~@7 A ~@9 B ~@7 A ~@8 A ~>".pickRestart({
  A: "~@14 x!2", B: "~@15 x",
})).gain(0.64)

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

// drums · hihat · soft notes
// … 34 more lines

More by Borg Andy