Strudelify

Melodie d'Amour

Kaoma

KeyB♭ minorTempo122 bpm
0:00/0:00
// Melodie d'Amour — Kaoma
// 122 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 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(122/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@3 A B C D A B E F G H A B C A@2 I C J K L A B C M N O P Q A R S T U O V W X Y C J K L A Y C N Z P Q A AA C AB AC B
  AD D A B E AE G AF AG O V A@2 AH AD J K L AI Y C N Z P Q A AJ AK H AG O P Q A AL AM N Z P Q A AA C H N Z P AN A AO C H
  AP Z P Q A AA C H N Z P Q A AO C H AG Z AQ ~
>`.pickRestart({
  A: "bb2@2 f2@2 bb2@2 f2 bb2", B: "eb2@2 bb2@2 eb2@2 bb2 eb2", C: "f2@2 c2@2 f2@2 c2 f2", D: "bb2@4 f2@4 bb2@3 bb2@5",
  E: "f2@2 c2@2 f2@2 f2!2", F: "db3@4 ab3@4 db3@3 ~ db3@2 db3@2", G: "eb3 gb3 f3 a3", H: "bb2 f2 bb2!2",
  I: "eb2@4 bb2@4 eb2@4 bb2@2 eb2 ~", J: "bb2@2 f2@2 bb2@2 f2!2", K: "ab2 eb2 ab2 eb2", L: "db2!2 c2!2",
  M: "bb2@4 bb2@2 bb2@2 db3@3 ~ bb2@4", N: "bb2@4 f2@4 bb2@4 bb2@3 bb2", O: "eb3@2 bb2@2 eb3@2 bb2 eb3",
  P: "f3 c3 f3 c3", Q: "bb2@2 f2@2 bb2 db3 c3 bb2", R: "eb3@3 ~ bb2@4 eb3@4 bb2@2 bb2 eb3", S: "f3@4 c3@4 f3@3 ~ c3@4",
  T: "bb2 f3 bb2!2", U: "bb2@3 ~ f3@4 bb2@4 f3@2 bb2 ~", V: "f3@2 c2@2 f3@2 c2 f3", W: "bb2@3 ~ f2@4 bb2@4 f2@2 bb2 ~",
  X: "bb2@4 f2@4 bb2@3 ~ f2@2 bb2@2", Y: "eb3@2 bb2@2 eb2@2 bb2 eb2", Z: "eb3@4 bb2@4 eb3@4 bb2@2 bb2 eb3",
  AA: "eb2@4 bb2@4 eb2@3 bb2 bb2@2 eb2 bb2", AB: "bb2@4 f2@3 ~ bb2@4 bb2@4", AC: "bb2@3 ~ f2@4 bb2@4 f2@2 bb2@2",
  AD: "f2@4 c2@4 f2@3 ~ c2@2 f2@2", AE: "db3@2 ab3@2 db3@2 db3!2", AF: "bb2@3 ~ f2@4 bb2@4 bb2@4", AG: "bb2 ~@7",
  AH: "eb3@3 ~ bb2@4 eb2@4 bb2@2 eb2 ~", AI: "bb2@4 f2@4 bb2@4 f2 ~ bb2@2", AJ: "eb2@3 ~ bb2@4 eb2@3 bb2 bb2@2 eb2 bb2",
  AK: "f2@4 c2@4 f2@4 c2@2 f2 ~", AL: "eb2@4 bb2@4 eb2@4 bb2@2 bb2 eb2", AM: "f2 c2 f2 c2",
  AN: "bb2@4 f2@4 bb2 ~ db3@2 c3@2 bb2@2", AO: "eb2@4 bb2@4 eb2@2 ~ bb2 bb2@2 eb2 bb2",
  AP: "bb2@4 f2@4 bb2@3 ~ bb2@3 bb2", AQ: "f3 ~@6 bb2",
})).s("gm_acoustic_bass").gain(0.56)

// other · piano · "A.PIANO 1"
const piano = note(`<
  ~ A B A C A ~ D A ~ A E A F A ~ A F A ~ G A ~ A F ~@2 A ~ A F A ~ D A F A ~ A F A ~ G A ~ A F A@2 ~ A F A ~ G A@2 F A
  ~ D ~@2 A F A ~ A ~ A F A ~ G A ~ A F ~@4 F ~@2 H A ~ A ~ A F A ~@4 F ~@2 H A ~@3 F ~@2 H A ~@11 F ~@2 H A ~ A ~@2
>`.pickRestart({
  A: "~@3 bb5@2 ~@11", B: "~@7 bb5@2 ~@7", C: "~@6 b5 ~ b5!2 ~@6", D: "~@3 bb5@2 ~@4 b5 ~ b5!2 bb5@2 ~",
  E: "~@9 b5 ~@2 b5 ~@3", F: "~@9 b5 ~@6", G: "~@3 bb5@2 ~@4 b5 ~@3 bb5@2 ~", H: "~@9 b5 ~@3 bb5@2 ~",
})).s("gm_piano").gain(0.16)

// other · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@16 A ~@8 B ~@52 B@2 ~ B ~ B ~ B ~@8 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@9 B ~ B ~ B ~ B ~@5
>`.pickRestart({
  A: "~@13 bb5@2 ~", B: "~@3 bb5@2 ~@11",
})).s("gm_piano").gain(0.08)

// other · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note("<~@36 A B@2 C@3 ~ D@2 E F G ~@9 H ~ I@2 J@2 ~@67>".pickRestart({
  A: "~@10 f4@3 gb4@3", B: "[ab4@3 f4@2 f4!3 ~@14 db5 c5@2 bb4@2 ab4@2 bb4 gb4@2, ~@4 f4@11 ~]/2",
  C: "[f4@21 ~@2 eb5 eb5@3 ~ eb5 c5@2 ~ c5@4 ab4@4 f4@8, ~@31 db5@2 ~@15]/3",
  D: "[~@2 f4@6 eb4@2 f4@11 eb4@3 eb4@3 db4@3 eb4@2]/2", E: "~ f4@11 f4@4", F: "eb4@13 ~ bb3 c4",
  G: "db4 f4 gb4 ~ gb4@4 f4@8", H: "~@2 gb4 bb4 db5@2 gb4 bb4 eb5@7 ~", I: "[~@6 db5 c5 bb4 ab4 ab4@2 ~@2 f4@14 ~@4]/2",
  J: "[~@3 db5!2 db5@2 db5!2 db5@2 db5!2 c5 ~ c5@16 ~]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.44)

// other · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_2 = note("<~@42 A ~@16 B ~ C ~@48 D ~ D E D ~ F D ~@12>".pickRestart({
  A: "c5", B: "~@6 gb4 ~", C: "~@3 bb4!2 ~@11", D: "~@3 bb5@2 ~@11", E: "~@9 b5 ~@6", F: "~@3 bb5@2 ~@4 b5 ~@3 bb5@2 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.15)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@3 A B C D A B C E F G ~@22 G B H I G B J I K L A M N O B N I O B N I A B C D A B C E F G ~@64
>`.pickRestart({
  A: "[bb4,db5,f5]", B: "[eb5,gb5,bb5]", C: "[c5,f5,a5]", D: "[c5,db5,f5,ab5]", E: "[db5,f5,ab5]",
  F: "[eb5,gb5,bb5] [c5,f5,a5]", G: "[db5,f5,bb5]", H: "[a4,eb5,a5]", I: "[db5,f5,c6]", J: "[eb5,f5,a5,c6]",
  K: "[ab4,bb4,c5,eb5,f5]", L: "~ c5, [ab4,db5,eb5,f5]", M: "[bb4,eb5,gb5,bb5]", N: "[c5,eb5,f5,a5]",
  O: "[db5,f5,c6] [d5,f5,ab5,c6]", // Dbmaj7 Dm7b5
})).s("gm_epiano2").gain(0.52)

// chords · accordion
const accordion = note(`<
  ~@2 A B C D E F G H I J K ~ L@2 M@2 N@2 O P Q R S T U V W X Y Z AA AB AC ~@13 AD AE AF AG AH AI AJ AK B C D AL AM@2
  AN@4 ~@7 AO AP@2 AQ@2 AR AD AE AF AG AS AI AJ AT AU AV AW AX AY AZ BA BB AE AF AG AS AI AJ AT AD AE AF AG AS AI AJ AT
  AD AE AF AG AH AI BC AT AD AE AF AG AS AI AJ AT AU AV BD ~
>`.pickRestart({
  A: "~@10 f4@2 ~ a4 bb4 c5, ~@6 ab4 ~", B: "db5@2 c5 ~ c5@2 bb4 ~ bb4@2 ab4@2 ab4@2 gb4 ~", C: "gb4@6 db4 eb4",
  D: "c5@2 bb4 ~ bb4@2 a4@2 a4@2 f4 ~ f4@2 eb4 ~", E: "eb4@2 f4@11 ~ f4@2",
  F: "db5@2 c5 ~ c5 bb4 ~ bb4@2 ~ [c5,db5] ~ ab4@2 gb4@2, ~@5 ab4 ~@2", G: "gb4@6 d4 eb4",
  H: "c5@2 bb4 ~ bb4@2 a4 ~ a4@2 f4@2 f4@2 eb4@2", I: "eb4@2 db4@8 gb3 ab3 bb3 c4 db4 eb4",
  J: "ab4@2 gb4 ~ gb4@2 f4@2 f4@2 eb4 ~ eb4@2 f4@2", K: "bb3@11 ~@5",
  L: "[~@4 c5 db5 eb5 f5@6 ~@3, ~@3 eb5 ~@12, ~@7 db5@2 ~@23]/2",
  M: "[~@4 db5 c5 ~ a4 f4 gb4 eb4@2 e4@2 f4@6 ~@4 f4@4 f5@4, ~@3 bb4 ~@12]/2",
  N: "[eb5@6 db5 db5@2 c5@2 eb5 eb5@12 ~@8]/2", O: "~@10 ab4 a4 bb4 b4 c5 db5", P: "ab5 ~@5 bb5 ~@5 b5 ~@3",
  Q: "c6 ~@5 db6 ~@5 ab4@2 gb4@2", R: "f4@3 c5 ~@2 db5 ~", S: "d5@2 ~@4 eb5@2 ~@4 bb4 b4 c5 db5", T: "gb5 ~ f5@7 ~@7",
  U: "~@6 bb3 b3 c4 db4 eb4 e4 f4!2 bb4!2", V: "bb4 f5 db5 bb4 gb5 f5 db5 bb4 f4 f5 ~ f5 gb5 ~ gb5 f5",
  W: "eb5!2 f5@7 ~ a4 ~@2 db5 c5 bb4, ~@11 bb4@2 ~@3, ~@6 eb5 ~",
  X: "a4 c5 ~ eb5@2 db5 [bb4,c5] ~ a4 c5 gb4 f4 eb4@2 f4 ~", // Bbsus2
  Y: "[g4,ab4,db5] [g4,ab4,db5]@2 f4 [g4,ab4,db5]@2 f4 [g4,ab4,db5]@2 f4 [g4,ab4,db5]@6", // Db
  Z: "bb4 ~@2 bb4 gb5 f5 db5 bb4 f4 f5 ~ f5 gb5@3 f5, ~ f5@2 ~@13, ~ db5 ~@6",
  AA: "eb5 ~ eb5@6 ~ f5 eb5 db5 c5 bb4 [a4,c5] ~", AB: "a4@3 gb4@3 f4@4 c5@4 bb4@2, ~@5 eb6 ~@2",
  AC: "c5@3 bb4 c5@11 ~",
  AD: "~@2 [bb4,db5,f5]!3 ~ [bb4,db5,f5] ~ [bb4,d5,f5,ab5]@2 ~ [bb4,d5,f5,ab5]@2 ~ [bb4,d5,ab5] ~, ~@7 f5", // Bbm Bb7
  AE: "[bb4,eb5,gb5] ~@3", AF: "~@2 [f4,a4,c5,eb5]!3 ~ [f4,a4,c5,eb5] ~ [f4,a4,c5,eb5]@2 ~ [f4,a4,c5,eb5]@2 ~ f5 ~",
  AG: "[bb4,eb5,gb5]@2 ~ f5@2 ~ eb5@2 [bb4,db5,f5]@4 ~@4", // Ebm Bbm
  AH: "~@2 [bb4,db5,f5]!3 ~ [bb4,db5,f5] ~ [bb4,d5,f5,ab5]@3 [bb4,d5,f5,ab5]@2 ~ [bb4,d5,f5,ab5] ~", // Bbm Bb7
  AI: "[bb4,eb5,gb5]@3 ~@13", // Ebm
  AJ: "~@2 [f4,a4,c5,eb5]!3 ~ [a4,c5]@2 [f4,a4,c5,eb5]@2 ~ [f4,a4,c5,eb5]@2 ~ [a4,c5,eb5] ~, ~@6 [f4,eb5] ~@6 f4@2 ~", // F7 Am F7 Adim F7
  AK: "[f4,bb4,db5,f5]@8 ~@2 f4@2 ~ a4 bb4 c5, ~@6 ab4 ~", AL: "eb4@4 f4@10 f4 ~",
  AM: "[db5@3 ~ db5 ~ c5@2 bb4 bb4@2 ab4 ~ ab4@2 gb4@2 gb4@11 d4@2 eb4@2, ~@3 c5@3 ~@26]/2",
  AN: "[c5@2 bb4@2 ~ bb4 a4 ~ a4@2 f4@3 f4@2 eb4@2 eb4@2 ~ db4@6 gb4 [ab4,a4] bb4 c5 ~@2 ab5@2 gb5@2 ~ gb5 f5 ~@2 gb5 ~ eb5 ~ eb5@2 f5@2 bb4@10 ~@5, ~@31 db5@2 ~@7 f5@3 ~@21]/4", // Amaj7
  AO: "~@10 gb4 g4 ab4 bb4 b4 c5", AP: "[ab5 ~@2 bb5 ~@2 b5 c6@2 db6 ~ db6 ~ ab4 ~ gb4]/2",
  AQ: "[f4@4 ~@2 c5 ~ c5@4 db5@2 d5@8 eb5 ~@3 eb5@2 bb4 b4 c5 db5]/2", AR: "gb5 ~ gb5@4 f5@8 ~@2",
  AS: "~@2 [bb4,db5,f5]!3 ~ [bb4,db5,f5] ~ [bb4,d5,f5,ab5]@3 [bb4,d5,f5,ab5]@2 ~ [bb4,d5,ab5] ~, ~@7 f5", // Bbm Bb7
  AT: "[f4,bb4,db5,f5] ~", AU: "bb4 f5 db5 bb4 gb5 f5 bb4 db5 f4 f5 ~ f5 gb5@3 f5", AV: "eb5 [eb5,eb6]@8 ~@7",
  AW: "a4 bb4@2 eb5@2 db5 c5 bb4 a4 c5 gb4 eb4@2 ~ f4@2, ~@11 f4 ~@4",
  AX: "[g4,ab4,db5] [g4,ab4,db5]@2 f4 [g4,ab4,db5]@2 f4 [g4,ab4,db5]@2 f4 [g4,ab4,db5]@5 ~", // Db
  AY: "bb4 ~ db5 bb4 gb5 f5 bb4 db5 f4 f5@2 f5 gb5@3 f5, ~ f5@2 ~@13", AZ: "[eb5,eb6]@5 ~ [db5,db6]@5 ~ [c5,c6]@3 ~",
  BA: "[g4,ab4] gb4 f4@2 b4 bb4 a4 ~ eb5 db5 c5 ~ [ab4,ab5] ~ [gb4,gb5] ~, ~@2 c5 ~ d5 ~@3", // Abmaj7 Ab Gb
  BB: "f5@2 [bb4,db5,f5]!3 ~ [bb4,db5,f5] ~ [bb4,d5,ab5]@2 ~ [bb4,d5,f5,ab5]@2 ~ [bb4,d5,ab5] ~, f4@8 f5 ~@5 f5@2", // Bbm Bb7
  BC: "~@2 [f4,a4,c5,eb5]!3 ~ [a4,c5,eb5]@2 [f4,a4,c5,eb5]@2 ~ [f4,a4,c5,eb5]@2 ~ [a4,c5,eb5] ~, ~@6 f4 ~@6 f4@2 ~", // F7 Adim F7 Adim
  BD: "a4 bb4@2 eb5@2 db5 c5 bb4 a4 c5 gb4 a4@2 ~ [bb4,db5,f5,g5,bb5]@2, ~@11 f4 ~@4", // Gm7b5
})).s("gm_accordion").gain(0.52)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  ~@3 A B C A@2 B C D E A@2 B C A@2 B C F G H I J C K L J M N O J P Q R B S A@2 B C F G H I J C L J M N O J P T A B C
  A@2 B C D E A ~ B C A@2 B C F G H I B U L J M V W J X Y ~ J P V W Z P L J M AA W J P Y L J M AB W J P Y L J M AB W J P
  Y L J M AB W J P Y AC J AD ~
>`.pickRestart({
  A: "~@2 [f4,bb4,db5]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@2", // Bbm
  B: "~@2 [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4]@2 f4@2 [eb4,gb4,bb4]@2", // Ebm
  C: "~@2 [c4,f4,a4]@3 ~ [c4,f4,a4]@3 ~ [c4,f4,a4]@3 ~ [c4,f4,a4]@2", // F
  D: "~@2 [db4,f4,ab4]@3 ~ [db4,f4,ab4]@3 ~ [db4,f4,ab4]@3 ~ [db4,f4,ab4]@2", // Db
  E: "~@2 [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4]@3 ~ [c4,f4,a4]@3 ~ [c4,f4,a4]@2", // Ebm F
  F: "~@2 [f4,bb4,db5]@3 ~ [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~ [db4,f4,bb4]@2", // Bbm
  G: "~@2 [eb4,ab4,c5]@3 ~ [eb4,ab4,c5]@3 ~ [eb4,ab4,c5]@3 ~ [eb4,ab4,c5]@2", // Ab
  H: "~@2 [f4,ab4,db5]@3 ~ [db4,f4,ab4]@3 ~ [db4,f4,ab4]@3 ~ [db4,f4,ab4]@2", // Db
  I: "~@2 [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~ [db4,f4,bb4]@2", // Bbm
  J: "~@2 [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4]@2", // Ebm
  K: "~@2 [f4,bb4,db5]@3 ~ [db4,f4,bb4]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@2", // Bbm
  L: "~@2 [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~ [d4,f4,bb4]@3 ~ [d4,f4,bb4]@2", // Bbm Bb
  M: "~@2 [c4,f4,a4]@3 ~ [c4,f4,a4]@3 ~ [f4,a4,db5]@3 ~ [f4,a4,db5]@2", // F Faug
  N: "~@2 [db4,f4,bb4]@3 ~ [f4,bb4,db5]@3 ~ db4 ~ c4 ~ bb3 ~", // Bbm
  O: "bb3 ~ [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~ [d4,f4,bb4]@3 ~ [d4,f4,bb4]@2", // Bbm Bb
  P: "~@2 [f4,a4,c5]@3 ~ [f4,a4,c5]@3 ~ [f4,a4,db5]@3 ~ [f4,a4,db5]@2", // F Faug
  Q: "~@2 [db4,f4,bb4]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@2 db4 ~ c4 ~", // Bbm
  R: "bb3@2 [f4,bb4,db5]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@2", // Bbm
  S: "~@2 [c4,f4,a4]@3 ~ [c4,f4,a4]@2 ~@2 [c4,f4,a4]@3 ~ [c4,f4,a4]@2", // F
  T: "~@2 [db4,f4,bb4]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@3 ~@3", U: "~@2 [c4,f4,a4]@3 ~ [c4,f4,a4]@5 ~ [c4,f4,bb4]@3 ~",
  V: "~@2 [db4,f4,bb4]@3 ~ [f4,bb4,db5]@3 ~ db4@2 c4@2 bb3@2", // Bbm
  W: "bb3@2 [db4,f4,bb4]@3 ~ [db4,f4,bb4]@3 ~ [d4,f4,bb4]@3 ~ [d4,f4,bb4]@2", // Bbm Bb
  X: "~@2 [f4,a4,c5]@2 ~@2 [f4,a4,c5]@3 ~ [f4,a4,db5]@3 ~ [f4,a4,db5]@2", // F Faug
  Y: "~@2 [db4,f4,bb4]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@3 ~ [f4,bb4,db5]@2", // Bbm
  Z: "~@2 [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4]@2 ~@2 [eb4,gb4,bb4]@3 ~ [eb4,gb4,bb4]@2", // Ebm
  AA: "~@2 [db4,f4,bb4]@3 ~ [f4,bb4,db5]@2 ~@2 [db4,f4,bb4,db5]@2 c4@2 [bb3,f4,bb4,db5]@2", // Bbm
  AB: "~@2 [db4,f4,bb4]@3 ~ [f4,bb4,db5]@3 ~ [db4,f4,bb4,db5]@2 c4@2 [bb3,f4,bb4,db5]@2", AC: "[f4,bb4,db5] ~@15",
  AD: "[c4,f4,a4]@3 ~@11 [g4,bb4,db5,f5]@2", // F Gm7b5
})).s("gm_pad_warm").gain(0.23)

// other · accordion
const accordion_2 = note(`<
  ~@49 A@2 B C D ~@32 E ~@8 F G ~@2 F G ~ H I J ~ H K L@2 H I J ~ H K L@2 ~ F G ~@2 M G ~@5
>`.pickRestart({
  A: "[~@3 bb4 c5 bb4 c5 ~ c5@3 bb4 c5 ~ c5@4 ~@14]/2", B: "~@10 a4 bb4 c5 gb4 f4@2", C: "f5@9 ~@7",
  D: "~@2 d5 eb5 e5 f5 a4 bb4 b4 c5 gb4 g4 ~ a4 ~@2, ~@6 ab4 ~", E: "~@10 db4 eb4 e4 f4 ab4 bb4",
  F: "~@9 f4 a4 bb4 c5 gb4 f4@2", G: "f5 ~", H: "c5@3 bb4@3 c5 bb4 c5@3 bb4@3 c5 bb4",
  I: "db5@3 c5@3 ~ c5 db5@3 c5@3 db5 c5, ~@3 db5 ~@4", J: "db5@3 c5@3 [c5,db5] ~ [bb4,db5]@3 c5@2 [bb4,db5]@2 c5",
  K: "db5@3 c5@3 db5 c5 db5@2 c5 ~@2 d5@2 db5, ~@6 eb5 ~", L: "[~@2 c5@2 eb5@2 c5 bb4 c5@3 bb4@3 ~ c5@11 ~@6]/2",
  M: "~@9 f4 ~ bb4 c5 gb4 f4@2, ~@5 a4 ~@2",
})).s("gm_accordion").gain(0.52)

// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
  ~@67 A B C D E F G H I J K L M N O P Q R O S ~ T O U V W O X N O Y Q R O S X N O Y Q R O S X N O Y Q R O S X N O Y Q R
  O S Z AA AB ~
>`.pickRestart({
  A: "[bb4,eb5,gb5,bb5]@3 [bb4,eb5,gb5,bb5] [bb4,eb5,gb5,bb5]@2 [bb4,eb5,gb5,bb5]@2, [eb3,eb4]", // Ebm Eb
  B: "[f3,a4,db5,eb5,ab5]", // Db
  C: "[f5,bb5,db6,f6]@3 [f5,bb5,db6,f6] [f5,db6,f6]@2 [f5,g5,c6,db6,f6]@2, [bb3,bb4], ~ [ab5,bb5]", // Bbm Db Fsus2 Bb Absus2
  D: "[db5,f5,bb5], [bb3,bb4] ~@15", E: "[bb4,eb5,gb5,bb5]@3 [bb4,eb5,gb5,bb5]!3 [bb4,eb5,gb5,bb5]@2, [eb3,eb4]",
  F: "[c5,eb5,f5,a5]@3 [c5,eb5,f5,a5], [f3,f4]", // F7 F
  G: "[c5,db5,f5,ab5]@3 [c5,db5,f5,ab5] [db5,f5]@2 [ab4,db5,f5]@2, [bb3,f4], ~ [c5,ab5]", H: "[ab3,ab4,c5,eb5]",
  I: "[db4,ab4,db5,f5]@3 [db4,ab4,db5,f5] [c4,ab4,c5,eb5]@4", J: "[bb3,bb4,db5,f5]",
  K: "[eb4,bb4,eb5,gb5,bb5]@3 [eb4,bb4,eb5,gb5,bb5] [eb4,bb4,eb5,gb5,bb5]@2 [eb4,bb4,eb5,gb5,bb5]@2, eb3", // Ebm
  L: "[f4,c5,eb5,f5,a5]@3 [f4,c5,eb5,f5,a5] [c5,eb5,f5,a5]@2 [c5,eb5,f5,bb5]@2, f3, ~ f4", // F7 Cm7
  M: "f4 ~ [bb4,db5,f5,bb5]!2 [bb4,db5,f5,bb5]@2 [bb4,db5,f5,bb5]@2 [bb4,d5,f5,ab5]@3 [bb4,d5,f5,ab5]@3 [bb4,d5,f5,ab5]@2, bb3 [d3,d4]", // Bbm Bb7 D
  N: "[bb4,eb5,gb5,bb5]@6 [bb4,eb5,gb5,bb5]@2 [bb4,eb5,f5,bb5]@3 [bb4,eb5,bb5]@3 [bb4,eb5,gb5,bb5]@2, [eb3,eb4], ~@11 f5@5", // Ebm Bbsus4 Eb5 Ebm Eb
  O: "[f3,f4,c5,eb5,f5,a5]", P: "~@7 bb3, [bb3,gb5,eb6]@11 c4@5, ~@3 [f5,db6]@8 ~@5, ~@6 [eb5,c6]@5 ~@5, ~ [db5,bb5]",
  Q: "[bb3,f4,bb4,db5,f5,bb5] [d3,d4,bb4,d5,f5,ab5,bb5]", // Bbm Bb7
  R: "[bb4,eb5,gb5,bb5]@6 [bb4,eb5,gb5,bb5]@2 [bb4,eb5,f5,bb5]@3 [bb4,eb5,gb5,bb5]@3 [bb4,eb5,gb5,bb5]@2, [eb3,eb4]", // Ebm Bbsus4 Ebm Eb
  S: "~@2 [c4,c5]!2 [c4,c5]@2 [c4,c5]@2 [c4,c5]@3 [c4,c5]@3 [c4,c5]@2, [bb4,db5,f5]", // C Bbm
  T: "~@2 eb5 f5@3 eb5 ~ [bb4,f5,bb5]@3 [bb4,eb5,gb5,bb5]@3 [bb4,eb5,gb5,bb5]@2, ~ [eb3,eb4]@7, ~@2 [bb4,bb5]@5 ~@9", // Bb5 Ebm Eb Bb
  U: "bb4@3 c5@3 bb4 ~ [db4,eb4,f4,ab4,c5]@3 [db4,eb4,f4,ab4,c5]@3 [db4,eb4,f4,ab4,c5]@2, [bb3,db4,f4,ab4] ~", // Dbmaj7 Bbm7
  V: "[bb3,f4,bb4] [bb3,d4,f4,ab4,bb4], db4 ~@15", // Bb5 Bb7
  W: "~@2 [bb4,f5,bb5]@4 eb5 ~ [bb4,eb5,f5,bb5]@3 [bb4,eb5,gb5,bb5]@2 ~ [bb4,f5,bb5] ~, eb4, eb3@7 ~, ~@2 eb5 ~@11 eb5@2", // Bb5 Bbsus4 Ebm Bb5
  X: "~@2 [bb4,db5,f5,bb5]!2 [bb4,db5,f5,bb5]@2 [bb4,db5,f5,bb5]@2 [bb4,d5,f5,ab5]@3 [bb4,d5,f5,ab5]@3 [bb4,d5,f5,ab5]@2, [bb3,f4] [d3,d4]", // Bbm Bb7 Bb5 D
  Y: "~@14 bb3 ~, [bb3,gb5,eb6]@11 c4@5, ~@3 [f5,db6]@8 ~@5, ~@6 [eb5,c6]@5 ~@5, ~ [db5,bb5]", // Ebm Db Cm Gb
  Z: "[bb3,bb4,db5,f5,bb5] ~@7", // Bbm
  AA: "[eb4,bb4,eb5,gb5,bb5]@6 [bb4,eb5,bb5]@2 [bb4,eb5,f5,bb5]@3 [bb4,eb5,bb5]@3 [bb4,eb5,gb5,bb5]@2, eb3, ~@3 eb4@5, ~@3 gb5@4 ~, ~@11 f5@5", // Ebm Eb5 Bbsus4 Eb5 Ebm
  AB: "[f3,f4,c5,eb5,f5,a5] ~@6 [bb3,bb4,db5,f5,g5,bb5]", // F7 Gm7b5
})).s("gm_piano").gain(0.54)

// drums · kick
const kick = s("bd").struct("<A B@11 C B@35 D E@17 F B@12 E@8 F G E@37 F G H ~>".pickRestart({
  A: "~@3 x", B: "x ~@2 x!2 ~@2 x", C: "x ~@2 x!2 ~ x ~", D: "~@3 x ~@2 x ~@3 x ~@3 x ~",
  E: "~@3 x ~@2 x ~@4 x ~@2 x ~", F: "x", G: "x ~@2 x ~@2 x ~@4 x ~@2 x ~", H: "x ~@6 x",
})).gain(0.72)
// … 129 more lines

More by Kaoma