Strudelify

Life Is a Flower

Ace of Base

KeyD majorTempo105 bpm
0:00/0:00
// Life Is a Flower — Ace of Base
// 105.2 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 82 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105.2/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 · "MIDI"
const bass = note(`<
  ~@6 A B C D E@2 F@2 G H I J K@2 L@3 M@3 N O@2 P Q R S@2 T U@2 V@2 W X Y Z@2 AA@2 ~@8 AB@2 AC@2 AD@3 AE AF AG AH AI@2
  AJ@2 AK@3 AL@2 AM X Y AN@2 AO@2 ~
>`.pickRestart({
  A: "~@10 a1@8 ~ a1@6 ~ b1@4 b1 ~", B: "b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@3",
  C: "~ d2 ~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 a1@8 ~ a1@5 ~@2", D: "b1@4 b1 ~ b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 g1@7 ~@2 g1@4",
  E: "[~@3 d2@4 d2 ~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@3 a1@8 a1@6 ~ b1@4 b1 ~ b1@2 ~@3 b1@2 ~@2 b1@2 ~@3 g1@6]/2",
  F: "[~@2 g1@5 ~@2 d2@4 d2 ~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@3 a1@8 a1@5 ~@2 b1@4 ~ b1 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@3]/2",
  G: "g1@7 ~ g1@5 ~@2 d2@4 ~ d2 ~ d2@2 ~@2 d2@2 ~@2 d2@2", H: "~@3 b1@4 ~@5 b1@8 a1@7 ~@2 a1@3",
  I: "~ a1@3 ~@2 g1@4 ~@5 g1@8 d2@8 ~", J: "c#2@3 ~@2 c#2@3 ~ b1@4 ~@5 b1@8 a1@6",
  K: "[~@3 a1@3 ~@2 a1@3 ~ g1@4 ~@5 g1@8 ~ d2@7 ~ c#2@3 ~@2 c#2@3 ~ b1@4 ~@5 b1@8]/2",
  L: "[~ a1@7 ~ a1@3 ~@2 a1@3 ~ g1@4 ~@5 g1@8 ~ d2@8 d2@3 ~@6 a1@8 ~ a1@6 b1@4 ~ b1 ~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 g1@7 ~]/3",
  M: "[~ g1@5 ~@2 d2@4 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 a1@8 ~ a1@5 ~@2 b1@4 b1 ~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@4 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@2 ~]/3",
  N: "~ a1@8 ~ a1@6 ~ b1@4 b1 ~ b1@2 ~@3 b1@2 ~@2",
  O: "[b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@4 d2 ~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 a1@8 ~ a1@5 ~@2 b1@4 b1 ~ b1@2 ~]/2",
  P: "~@2 b1@2 ~@2 b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@4 d2 ~", Q: "d2@2 ~@3 d2@2 ~@7 b1@4 ~@5 b1@8 ~",
  R: "a1@7 ~@2 a1@3 ~ a1@3 ~ g1@4 ~@5 g1@6",
  S: "[~@3 d2@8 ~ c#2@3 ~ c#2@3 ~@2 b1@4 ~@4 b1@8 ~ a1@7 ~@2 a1@3 ~ a1@3 ~@2 g1@4 ~@4]/2",
  T: "g1@8 ~ d2@7 ~@2 c#2@3 ~ c#2@3 ~@2 b1@4 ~",
  U: "[~@3 b1@8 ~ a1@7 ~@2 a1@3 ~ a1@3 ~@2 g1@4 ~@4 g1@8 ~ d2@8 ~ d2@3 ~@5]/2",
  V: "[~ a1@8 a1@6 ~ b1@4 ~ b1 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 g1@7 ~ g1@5 ~@2 d2@4 ~ d2 ~ d2@2 ~@2 d2@2]/2",
  W: "~@2 d2@2 ~@3 a1@8 ~ a1@5 ~ b1@4 ~ b1 ~ b1@2 ~", X: "~ b1@2 ~@2 b1@2 ~@3 g1@7 ~@2 g1@5 ~ d2@4 ~ d2 ~",
  Y: "d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 a1@8 ~ a1@6 b1@4",
  Z: "[~ b1 ~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 g1@7 ~@2 g1@5 ~ d2@4 ~ d2 ~ d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 a1@8 ~ a1@4]/2",
  AA: "[~@3 b1@4 b1 ~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@4 d2 ~ d2@2 ~@2 d2@2 ~@14]/2",
  AB: "[~@16 a1@8 ~ a1@6 b1@4 ~ b1 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 g1@7 ~@2 g1@4]/2",
  AC: "[~@2 d2@4 ~ d2 ~ d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 a1@8 ~ a1@5 ~ b1@4 ~ b1 ~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 g1@7]/2",
  AD: "[~@2 g1@5 ~ d2@4 ~ d2 ~ d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 a1@8 ~ a1@6 ~ b1@4 b1 ~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@4 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@2]/3",
  AE: "~@2 a1@8 ~ a1@5 ~@2 b1@4 b1 ~ b1@2 ~@2 b1@2 ~@2", AF: "~ b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@4 d2 ~ d2@2 ~@3",
  AG: "d2@3 ~@5 a1@8 ~ a1@6 ~ b1@4 b1 ~ b1@2", AH: "~@3 b1@2 ~@2 b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@4 d2",
  AI: "[~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@2 a1@8 ~ a1@5 ~@2 b1@4 b1 ~ b1@2 ~@3 b1@2 ~@2 b1@2 ~@3 g1@7 ~ g1@5 ~]/2",
  AJ: "[~ d2@4 d2 ~ d2@2 ~@3 d2@2 ~@2 d2@2 ~@3 a1@8 a1@6 ~ b1@4 ~ b1 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 g1@7 ~]/2",
  AK: "[g1@5 ~@2 d2@4 ~ d2 ~ d2@2 ~@2 d2@2 ~@2 d2@2 ~@3 a1@8 ~ a1@5 ~ b1@4 ~ b1 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@3 g1@7 ~@2 g1@5 ~ d2@4 ~ d2 ~ d2@2 ~@2 d2@2 ~@6]/3",
  AL: "[~ a1@8 a1@6 ~ b1@4 b1 ~ b1@2 ~@3 b1 ~@3 b1@2 ~@3 g1@7 ~ g1@5 ~@2 d2@4 ~ d2 ~ d2@2 ~@2 d2@2]/2",
  AM: "~@2 d2@2 ~@3 a1@8 a1@5 ~@2 b1@4 ~ b1 ~ b1@2 ~",
  AN: "[~ b1 ~ b1@2 ~@2 b1@2 ~@3 b1 ~@3 g1@7 ~@2 g1@5 ~ d2@4 ~ d2 ~ d2@2 ~@2 d2@2 ~@3 d2@2 ~@2 a1@8 ~ a1@4]/2",
  AO: "[~@2 b1@4 ~ b1 ~ b1@2 ~@2 b1@2 ~@3 b1@2 ~@2 g1@7 ~@2 g1@5 ~@2 d2@4 d2 ~ d2@2 ~@18]/2",
})).s("gm_electric_bass_finger").gain(0.5)

// other · string ensemble 1 · "MIDI"
const string_ensemble_1 = note("<~@15 A ~ B ~ C ~@10 D ~ E@2 F@2 ~@46>".pickRestart({
  A: "~@2 d5@2 ~@3 b4@2 ~@2 d5@2 ~ b4@2 ~@16", B: "~@9 d5@2 ~@2 b4@2 ~@2 d5@2 ~ b4@2 ~@10",
  C: "~@15 d5@2 ~@2 b4@2 ~@2 d5@2 ~ b4@2 ~@4", D: "~@14 d5@2 ~@2 b4@2 ~@3 d5@2 b4@2 ~@5",
  E: "[~@20 d5@2 ~@3 b4@2 ~@2 d5@2 b4@2 ~@31]/2", F: "[~@26 d5@2 ~@3 b4@2 ~@2 d5@2 b4@2 ~@25]/2",
})).s("gm_string_ensemble_1").gain(0.39).pan(0.4)

// chords · synth strings 1 · "MIDI"
const synth_strings_1 = note(`<
  ~ A@3 B@2 C@3 D@6 E@5 F G@5 H@6 I@5 J K@5 L@6 M N@5 O@6 P@6 Q@5 J R@5 S@3 ~
>`.pickRestart({
  A: "[~@23 [a3,c#4,e4]@18 [b3,d4,f#4]@18 [g3,a3,d4]@18 ~ g4@9 f#4@9, ~@13 [a3,d4]@3]/3", // A Bm Gsus2 D5
  B: "[[a3,c#4,e4]@18 [b3,d4,f#4]@18 ~ [g3,a3,d4]@20 ~@7]/2", // A Bm Gsus2
  C: "[~@9 [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@16, ~@62 [a3,d4]@17 ~@17]/3", // A Bm G A D5
  D: "[~ [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 g4@8 ~ f#4@7, ~@36 [a3,d4]@17 ~@53 [a3,d4]@17 ~@53 [a3,d4]@16]/6", // Bm G A Bm G A Bm G …
  E: "[~@2 [b3,d4,f#4]@17 ~ [a3,c#4,e4]@17 [g3,b3,d4]@17 ~ [a3,d4,f#4]@8 [a3,c#4,e4]@8 ~ [b3,d4,f#4]@17 ~ [a3,c#4,e4]@17 [g3,b3,d4]@17 ~ [a3,d4,f#4]@8 [a3,c#4,e4]@8 ~ [b3,d4,f#4]@17 ~]/5", // Bm A G D A Bm A G …
  F: "[a3,c#4,e4]@17 [g3,b3,d4]@15", // A G
  G: "[~@3 [a3,d4,f#4]@15 ~@2 [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ g4@8 ~ f#4@8 [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ g4@8 ~ f#4@8, ~@73 [a3,d4]@17 ~@53 [a3,d4]@17]/5", // D A Bm G A Bm G D5
  H: "[[a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 g4@8 ~ f#4@8 ~@2 [b3,d4,f#4]@17 [a3,c#4,e4]@17 ~ [g3,b3,d4]@15, ~@53 [a3,d4]@17 ~@53 [a3,d4]@17 ~@52]/6", // A Bm G A Bm G Bm A …
  I: "[~@2 [a3,d4,f#4]@8 ~ [a3,c#4,e4]@8 ~ [b3,d4,f#4]@17 [a3,c#4,e4]@17 ~ [g3,b3,d4]@17 [a3,d4,f#4]@8 ~ [a3,c#4,e4]@8 ~ [b3,d4,f#4]@17 [a3,c#4,e4]@17 ~ [g3,b3,d4]@17 ~ [a3,d4,f#4]@15 ~@2]/5", // D A Bm A G D A Bm …
  J: "[a3,c#4,e4]@17 [b3,d4,f#4]@15", // A Bm
  K: "[~@3 [g3,b3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ g4@8 f#4@8 ~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17, ~@20 [a3,d4]@17 ~@54 [a3,d4]@17 ~@52]/5", // G A Bm G A Bm G D5
  L: "[~ g4@8 f#4@8 ~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,a3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@16, ~ [a3,d4]@17 ~@53 [a3,d4]@17 ~@53 [a3,d4]@17 ~@34]/6", // A Bm G A Bm Gsus2 A Bm …
  M: "~@2 [g3,a3,d4]@19 ~@11", // Gsus2
  N: "[~@3 [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,a3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,a3,d4]@18 [a3,d4]@17 [a3,c#4,e4]@17, ~@55 [a3,d4]@17 ~@54 g4@8 ~@26]/5", // A Bm Gsus2 A Bm Gsus2 D5 A …
  O: "[~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ g4@8 f#4@8 ~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ g4@8 f#4@8 ~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ g4@8 ~ f#4@7, ~@36 [a3,d4]@17 ~@53 [a3,d4]@17 ~@53 [a3,d4]@16]/6", // Bm G A Bm G A Bm G …
  P: "[~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ [f#4,g4]@9 f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,b3,d4]@15, ~@54 [a3,d4]@17 ~@53 [a3,d4]@17 ~@51]/6", // A Bm G Gmaj7 A Bm G A …
  Q: "[~@2 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 ~ g4@8 ~ f#4@8, ~@2 [a3,d4]@17 ~@53 [a3,d4]@17 ~@54 [a3,d4]@17]/5", // A Bm G A Bm G D5
  R: "[~@3 [g3,b3,d4]@17 g4@8 ~ f#4@8 ~ [a3,c#4,e4]@17 [b3,d4,f#4]@17 ~ [g3,b3,d4]@17 ~ g4@8 f#4@8 ~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17, ~@20 [a3,d4]@17 ~@54 [a3,d4]@17 ~@52]/5", // G A Bm G A Bm G D5
  S: "[~ g4@8 f#4@8 ~ [a3,c#4,e4]@17 ~ [b3,d4,f#4]@17 [g3,b3,d4]@17 ~ [f#4,g4]@10 f#4@8 ~@7, ~ [a3,d4]@17 ~@53 [a3,d4]@17 ~@8]/3", // A Bm G Gmaj7 D5
})).s("gm_synth_strings_1").gain(0.12)

// chords · string ensemble 2 · "MIDI"
const string_ensemble_2 = note(`<
  ~ A@3 B@2 C@3 D E@5 ~@6 F@5 G@4 ~@7 H@4 I@4 J@5 K@4 L M@6 N@2 O@4 P@5 Q R@3 S@5 ~
>`.pickRestart({
  A: "[~@23 [c#4,e4]@18 [d4,f#4]@18 ~ a3@18 g4@9 f#4@9, ~@5 d4@3]/3", // C#m D
  B: "[[c#4,e4]@18 f#4@18 ~ a3@13 ~@14, ~@9 d4@16 ~@7]/2", // C#m
  C: "[~@9 [c#4,e4]@18 [d4,f#4]@17 ~ a3@17 g4@9 f#4@9 [c#4,e4]@16, ~@45 d4@34 ~@17]/3", D: "~ f#4@18 a3@12 ~, ~ d4@31",
  E: "[~@22 [c#4,e4]@17 [d4,f#4]@17 ~ a3@17 ~ g4@8 f#4@9 [c#4,e4]@18 f#4@17 a3@12 ~@21, ~@57 d4@34 ~@19 d4@31 ~@19]/5", // C#m D C#m
  F: "[~@20 [c#4,e4]@18 [d4,f#4]@17 a3@17 ~ g4@9 f#4@9 [c#4,e4]@17 f#4@18 a3@12 ~@22, ~@55 d4@34 ~@19 d4@31 ~@21]/5", // C#m D C#m
  G: "[~ [c#4,e4]@17 [d4,f#4]@17 ~ a3@17 g4@9 f#4@9 [c#4,e4]@17 f#4@18 a3@12 ~@10, ~@36 d4@34 ~@18 d4@31 ~@9]/4", // C#m D C#m
  H: "[[c#4,e4]@18 [d4,f#4]@17 a3@17 ~ g4@8 f#4@9 [c#4,e4]@18 f#4@17 a3@12 ~@11, ~@35 d4@34 ~@19 d4@31 ~@9]/4", // C#m D C#m
  I: "[~@12 [c#4,e4]@18 [d4,f#4]@17 a3@17 ~ g4@9 f#4@8 [c#4,e4]@18 f#4@17 a3@11, ~@47 d4@34 ~@19 d4@28]/4", // C#m D C#m
  J: "[~@25 [c#4,e4]@17 [d4,f#4]@17 ~ a3@17 g4@9 f#4@9 [c#4,e4]@17 f#4@18 a3@12 ~@18, ~@60 d4@34 ~@18 d4@31 ~@17]/5", // C#m D C#m
  K: "[~@3 [c#4,e4]@18 [d4,f#4]@17 a3@17 ~ g4@8 f#4@9 [c#4,e4]@18 f#4@17 a3@12 ~@8, ~@38 d4@34 ~@19 d4@31 ~@6]/4", // C#m D C#m
  L: "~@15 [c#4,e4]@17", // C#m
  M: "[~ [d4,f#4]@17 a3@17 ~ g4@9 f#4@8 [c#4,e4]@18 f#4@17 a3@12 ~@23 [c#4,e4]@18 [d4,f#4]@17 a3@17 ~ g4@9 f#4@7, ~@18 d4@34 ~@19 d4@31 ~@56 d4@34]/6", // D C#m D
  N: "[~@2 [c#4,e4]@17 f#4@18 a3@12 ~@15, ~@19 d4@31 ~@14]/2", // C#m
  O: "[~@8 [c#4,e4]@17 [d4,f#4]@17 ~ a3@17 g4@9 f#4@9 [c#4,e4]@17 f#4@18 a3@12 ~@3, ~@43 d4@34 ~@18 d4@31 ~@2]/4", // C#m D C#m
  P: "[~@20 [c#4,e4]@18 [d4,f#4]@17 a3@17 ~ g4@8 f#4@9 [c#4,e4]@18 f#4@17 a3@12 ~@23, ~@55 d4@34 ~@19 d4@31 ~@21]/5", // C#m D C#m
  Q: "[c#4,e4]@17 [d4,f#4]@15", // C#m D
  R: "[~@3 a3@17 ~ g4@8 f#4@9 [c#4,e4]@17 ~ f#4@17 a3@12 ~@11, ~@3 d4@34 ~@19 d4@31 ~@9]/3", // C#m
  S: "[~@12 [c#4,e4]@18 [d4,f#4]@17 a3@17 ~ g4@9 f#4@8 [c#4,e4]@17 ~ f#4@17 a3@12 ~@31, ~@47 d4@34 ~@19 d4@31 ~@29]/5", // C#m D C#m
})).s("gm_string_ensemble_2").gain(0.19)

// bass · synth bass 1 · "MIDI"
const bass_2 = note(`<
  ~@6 A@2 B C D@2 E@2 F G@2 H I J K L@2 M N O P@3 Q R S T U V@2 W X Y Z AA AB@2 AC@3 ~@8 AD AE AF@2 AG@3 AH@2 AI AJ AK
  AL AM@2 AN AO AP X AQ Z AA AR@5 ~
>`.pickRestart({
  A: "[~@10 a2@7 ~@2 a2@7 ~@2 b2@7 ~@2 b2@7 ~ g2@2 ~@3 g2@2 ~@2 g2@3 ~@2 g2 ~ g2@2 ~]/2",
  B: "~ d2 ~ d2@2 ~@3 d2@2 ~@2 d2@3 ~ a2@7 ~@2 a2@7", C: "~@2 b2@7 ~@2 b2@7 ~@2 g2@2 ~@2 g2@2 ~@2 g2@3 ~",
  D: "[~ g2 ~ g2@2 ~@2 d2 ~ d2@2 ~@3 d2@2 ~@2 d2@3 ~@2 a2@7 ~ a2@7 ~@2 b2@7 ~@2 b2@7 ~@2 g2@2 ~@2 g2@2]/2",
  E: "[~@2 g2@3 ~@2 g2 ~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2 ~@2 d2@3 ~@2 a2@7 ~ a2@7 ~@2 b2@7 ~@2 b2@7 ~@2]/2",
  F: "g2@2 ~@2 g2@2 ~@3 g2@3 ~ g2 ~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2 ~@2 d2@2",
  G: "[~@7 b2@3 ~@4 b2@6 a2@3 ~@6 a2@6 ~@7 g2@3 ~@4 g2@4 ~@2 d2@2 ~@3 d2@3 ~]/2",
  H: "d2@3 ~@2 c#2@3 ~@5 b2@3 ~@4 b2@6 a2@3 ~@3", I: "~@3 a2@6 ~@7 g2@3 ~@4 g2@4 ~@3 d2@2",
  J: "~@2 d2@3 ~ d2@3 ~@2 c#2@3 ~@5 b2@3 ~@4 b2@6", K: "~ a2@3 ~@5 a2@6 ~@8 g2@3 ~@3 g2@3",
  L: "[~@4 d2@2 ~@2 d2@3 ~ d2@3 ~@6 a2@7 ~@2 a2@7 ~@2 b2@7 ~ b2@7 ~@2 g2@2 ~@2 g2@2 ~@2]/2",
  M: "~ g2@3 ~ g2 ~@2 g2@2 ~@2 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@3 ~ a2@5", N: "~@4 a2@7 ~@2 b2@7 ~ b2@7 ~@2 g2@2",
  O: "~@3 g2@2 ~@2 g2@3 ~ g2 ~@2 g2@2 ~@2 d2 ~ d2@2 ~@3 d2@2 ~@2 d2@3",
  P: "[~ a2@7 ~@2 a2@7 ~@2 b2@7 ~@2 b2@7 ~ g2@2 ~@3 g2@2 ~@2 g2@3 ~@2 g2 ~ g2@2 ~@2 d2 ~ d2@2 ~@3 d2@2 ~@2 d2@3 ~ a2@7 ~@2 a2@7 ~@2 b2@7]/3",
  Q: "~@2 b2@7 ~ g2@2 ~@3 g2@2 ~@2 g2@3 ~@2 g2 ~ g2@2 ~@2 d2 ~", R: "d2@2 ~@3 d2@2 ~@12 b2@3 ~@4 b2@6",
  S: "a2@3 ~@6 a2@6 ~@7 g2@3 ~@4 g2@3", T: "~@3 d2@2 ~@2 d2@3 ~@2 d2@3 ~ c#2@3 ~@6 b2@3 ~@4",
  U: "b2@6 a2@3 ~@6 a2@6 ~@7 g2@3 ~",
  V: "[~@3 g2@4 ~@2 d2@2 ~@3 d2@3 ~ d2@3 ~ c#2@3 ~@6 b2@3 ~@4 b2@6 a2@3 ~@6 a2@6 ~@5]/2",
  W: "~@2 g2@3 ~@4 g2@4 ~@2 d2@2 ~@3 d2@3 ~ d2@3 ~@5", X: "~ a2@7 ~ a2@7 ~@2 b2@7 ~@2 b2@5",
  Y: "~@4 g2@2 ~@2 g2@2 ~@3 g2@3 ~ g2 ~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2", Z: "~@2 d2@3 ~@2 a2@7 ~@2 a2@7 ~ b2@7 ~",
  AA: "~ b2@7 ~@2 g2@2 ~@2 g2@2 ~@3 g2@3 ~ g2 ~ g2@2 ~@3 d2 ~",
  AB: "[d2@2 ~@2 d2@2 ~@3 d2@3 ~ a2@7 ~@2 a2@7 ~ b2@7 ~@2 b2@7 ~@2 g2@2 ~@2 g2@2 ~@3 g2@3 ~ g2 ~@2]/2",
  AC: "[g2@2 ~@2 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@3 ~ a2@7 ~@2 a2@7 ~@2 b2@7 ~ b2@7 ~@2 g2@2 ~@3 g2@2 ~@2 g2@3 ~ g2 ~@2 g2@2 ~@2 d2 ~ d2@2 ~@2 d2@3 ~@13]/3",
  AD: "~@16 a2@7 ~@2 a2@7", AE: "~ b2@7 ~@2 b2@7 ~@2 g2@2 ~@2 g2@2 ~@3 g2@3 ~",
  AF: "[g2 ~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@3 ~ a2@7 ~@2 a2@7 ~@2 b2@7 ~ b2@7 ~@2 g2@2 ~@2 g2@2 ~]/2",
  AG: "[~@2 g2@3 ~ g2 ~@2 g2@2 ~@2 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@3 ~ a2@7 ~@2 a2@7 ~@2 b2@7 ~ b2@7 ~@2 g2@2 ~@3 g2@2 ~@2 g2@3 ~ g2 ~@2 g2@2 ~@2 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@2]/3",
  AH: "[~@2 a2@7 ~@2 a2@7 ~@2 b2@7 ~@2 b2@7 ~ g2@2 ~@3 g2@2 ~@2 g2@3 ~ g2 ~@2 g2@2 ~@2 d2 ~ d2@2 ~@3]/2",
  AI: "d2@3 ~@5 a2@7 ~@2 a2@7 ~@2 b2@6", AJ: "~@3 b2@7 ~ g2@2 ~@3 g2@2 ~@2 g2@3 ~@2 g2 ~ g2@2 ~@2 d2",
  AK: "~ d2@2 ~@3 d2@2 ~@2 d2@3 ~@2 a2@7 ~ a2@7 ~@2", AL: "b2@7 ~@2 b2@7 ~@2 g2@2 ~@2 g2@2 ~@2 g2@3 ~@2 g2",
  AM: "[~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2 ~@2 d2@3 ~@2 a2@7 ~ a2@7 ~@2 b2@7 ~@2 b2@7 ~@2 g2@2 ~@2 g2@2 ~@2]/2",
  AN: "~ g2@3 ~ g2 ~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2 ~@2 d2@3 ~@2 a2@5", AO: "~@4 a2@7 ~ b2@7 ~@2 b2@7 ~@2 g2@2",
  AP: "~@2 g2@2 ~@3 g2@3 ~ g2 ~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2 ~@6",
  AQ: "~@4 g2@2 ~@2 g2@2 ~@2 g2@3 ~@2 g2 ~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2",
  AR: "[d2@2 ~@2 d2@2 ~@3 d2@3 ~ a2@7 ~@2 a2@7 ~ b2@7 ~@2 b2@7 ~@2 g2@2 ~@2 g2@2 ~@3 g2@3 ~ g2 ~ g2@2 ~@3 d2 ~ d2@2 ~@2 d2@2 ~@3 d2@3 ~ a2@7 ~@2 a2@7 ~@2 b2@7 ~ b2@7 ~@2 g2@2 ~@2 g2@2 ~@3 g2@3 ~ g2 ~@2 g2@2 ~@2 d2 ~ d2@2 ~@2 d2 d2@3 ~@12]/5",
})).s("gm_synth_bass_1").gain(0.24).pan(0.7)

// other · clavinet · "MIDI"
const clavinet = note("<~@6 A ~@14 B ~@14 C@2 ~@25 D ~@16 E ~>".pickRestart({
  A: "~@5 a2@2 ~ a2@2 ~@22", B: "~@17 a2@2 a2@2 ~@11", C: "[~@28 a2@2 ~ a2@2 ~@31]/2", D: "~@4 a2@2 a2 a2@2 ~@23",
  E: "~@21 [d2,d3] ~ [d2,d3]@2 ~@7", // D
})).s("gm_clavinet").gain(0.29).pan(0.4)

// chords · epiano1 · "MIDI"
const epiano1 = note("<~@15 A B C D E F G ~@8 H I J K L@2 M ~@25 N ~@17 O ~>".pickRestart({
  A: "~@7 [f#5,b5,d6]@2 ~@5 [f#5,b5,d6]@2 ~@4 [e5,a5,c#6]@2 ~@5 [e5,a5,c#6]@2 ~@3", // Bm A
  B: "~@2 [e5,a5,c#6]@2 ~@6 [d5,g5,b5]@2 ~@5 [d5,g5,b5]@2 ~@4 [d5,f#5,a5]@2 ~@5 [d5,f#5,a5]@2", // A G D
  C: "~@5 [d5,f#5,a5]@2 ~@6 [f#5,b5,d6]@2 ~@5 [f#5,b5,d6]@2 ~@4 [e5,a5,c#6]@2 ~@4", // D Bm A
  D: "~ [e5,a5,c#6]@2 ~@5 [e5,a5,c#6]@2 ~@6 [d5,g5,b5]@2 ~@5 [d5,g5,b5]@2 ~@5 [d5,f#5,a5]@2", // A G D
  E: "~@4 [d5,f#5,a5]@2 ~@5 [d5,f#5,a5]@2 ~@6 [f#5,b5,d6]@2 ~@5 [f#5,b5,d6]@2 ~@4", // D Bm
  F: "~ [e5,a5,c#6]@2 ~@4 [e5,a5,c#6]@2 ~@5 [e5,a5,c#6]@2 ~@7 [d5,g5,b5]@2 ~@4 [d5,g5,b5]@2 ~", // A G
  G: "~@2 [d5,f#5,a5] ~@2 [d5,f#5,a5] ~@10", H: "~@19 [f#5,b5,d6]@2 ~@5 [f#5,b5,d6]@2 ~@4",
  I: "[e5,a5,c#6]@2 ~@5 [e5,a5,c#6]@2 ~@4 [e5,a5,c#6]@2 ~@7 [d5,g5,b5]@2 ~@5 [d5,g5,b5]@2 ~", // A G
  J: "~@3 [d5,f#5,a5]@2 ~@5 [d5,f#5,a5]@2 ~@4 [d5,f#5,a5]@2 ~@7 [f#5,b5,d6]@2 ~@5", // D Bm
  K: "[f#5,b5,d6]@2 ~@4 [e5,a5,c#6]@2 ~@5 [e5,a5,c#6]@2 ~@4 [e5,a5,c#6]@2 ~@7 [d5,g5,b5]@2 ~@2", // Bm A G
  L: "[~@3 [d5,g5,b5]@2 ~@4 [d5,f#5,a5]@2 ~@5 [d5,f#5,a5]@2 ~@4 [d5,f#5,a5]@2 ~@7 [f#5,b5,d6]@2 ~@5 [f#5,b5,d6]@2 ~@4 [e5,a5,c#6]@2 ~@5 [e5,a5,c#6]@2 ~@4 [e5,a5,c#6]@2 ~@5]/2", // G D Bm A
  M: "~@2 [d5,g5,b5]@2 ~@5 [d5,g5,b5]@2 ~@4 [d5,f#5,a5]@2 ~@5 [d5,f#5,a5]@2 ~@8", N: "~@15 [d5,f#5,a5]",
  O: "~@7 [d5,f#5,a5] ~@8", // D
})).s("gm_epiano1").gain(0.24).pan(0.9)

// chords · acoustic guitar steel · "MIDI"
const acoustic_guitar_steel = note(`<
  ~ A@3 B@2 C@8 D ~@6 E@5 F@5 ~@6 G@6 H@5 I J K@5 L@6 M@5 N@6 O@6 P@3 ~
>`.pickRestart({
  A: "[~@33 e4@4 ~@14 f#4@8 ~@10 g4@8 ~@11 f#4@8, ~@24 a2@12 ~ c#4@13 ~@28 g4@10 ~@8, ~@28 e3@22 ~@15 b2@13 ~@18, ~@42 b2@17 ~ g2@17 ~ d2@18, ~@46 f#3@12 ~@25 a3@13]/3",
  B: "[~@10 e4@4 ~@14 f#4@7 ~@3 g4@25 ~, ~ a2@12 ~ c#4@13 ~@37, ~@5 e3@22 ~@8 g2@29, ~@19 b2@17 ~@28, ~@24 f#3@12 [a3,d4]@27 ~]/2", // D5
  C: "[~@19 e4@4 ~@14 f#4@8 ~@9 g4@8 ~@10 f#4@8 ~@9 e4@5 ~@13 f#4@8 ~@9 g4@8 ~@10 f#4@9 ~@8 e4@5 ~@13 f#4@8 ~@9 g4@8 ~@10 f#4@9 ~@8 e4@5 ~@13 f#4@8 ~, ~@10 a2@12 ~ c#4@13 ~@27 g4@10 ~@21 c#4@13 ~@26 g4@10 ~@21 c#4@13 ~@26 g4@10 ~@21 c#4@13 ~@9, ~@15 e3@21 ~@14 b2@12 ~@18 a2@12 ~@6 b2@17 g2@17 ~ d2@18 ~@21 f#3@12 ~@24 a3@13 ~@4 e3@21 ~@10, ~@28 b2@17 g2@17 ~ d2@18 ~@21 f#3@12 ~@23 a3@13 ~@5 e3@21 ~@14 b2@12 ~@19 a2@12 ~@5 b2@17 ~, ~@32 f#3@12 ~@23 a3@13 ~@5 e3@21 ~@14 b2@12 ~@19 a2@12 ~@5 b2@17 ~ g2@17 d2@18 ~@22 f#3@12 ~]/8",
  D: "~@9 g4@8 g4@10 ~@5, g2@17 ~@15, ~ b2@3 ~@4",
  E: "[~@30 e4@4 ~@13 f#4@8 ~@10 g4@8 ~@9 f#4@9 ~@9 e4@4 ~@13 f#4@8 ~@10 g4@8 ~@10 f#4@7, ~@21 a2@12 ~ c#4@13 ~@27 g4@10 ~@20 c#4@13 ~@27 g4@10 ~@6, ~@25 e3@21 ~@14 b2@12 ~@19 a2@12 ~@6 b2@17 g2@17 ~ d2@16, ~@39 b2@17 g2@17 ~ d2@18 ~@21 f#3@12 ~@23 a3@12, ~@43 f#3@12 ~@23 a3@13 ~@5 e3@21 ~@14 b2@12 ~@17]/5",
  F: "[~@10 e4@4 ~@14 f#4@8 ~@9 g4@8 ~@10 f#4@8 ~@9 e4@5 c#4@3 ~@10 f#4@8 ~@9 g4@8 ~@10 f#4@9 ~@18, ~ a2@12 ~ c#4@13 ~@27 g4@10 ~@60 g4@10 ~@26, ~@6 e3@21 ~@14 b2@12 ~@18 a2@12 ~@6 b2@17 g2@17 ~@37, ~@19 b2@17 g2@17 ~ d2@18 ~@52 d2@18 ~@18, ~@23 f#3@12 ~@23 a3@13 ~@5 e3@12 ~@5 f#3@12 ~@6 b2@12 ~@5 a3@13 ~@19]/5",
  G: "[~@9 e4@5 c#4@3 ~@10 f#4@8 ~@9 g4@8 ~@10 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@8 ~@10 g4@8 ~@9 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@8 ~@10 g4@7, ~ a2@12 ~@5 b2@17 ~ g2@17 d2@18 a2@12 ~@5 b2@17 ~ g2@17 d2@18 a2@12 ~@5 b2@17 ~ g2@16, ~@5 e3@12 ~@6 f#3@12 ~@5 b2@12 ~ g4@10 ~@60 g4@10 ~@59, ~@58 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12 ~@6 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12]/6",
  H: "[~@10 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@8 ~@10 g4@8 ~ d2@17 ~@9 e4@5 c#4@3 ~@10 f#4@8 ~@9 g4@8 ~@10 f#4@9, ~ d2@18 a2@12 ~@6 b2@17 g2@17 ~@18 a2@12 ~@6 b2@17 g2@17 ~ d2@18, ~ g4@10 ~@61 g4@10 ~@60 g4@10 ~@8, ~@6 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12 ~@24 e3@12 ~@5 f#3@12 ~@6 b2@12 ~@5 a3@13 ~]/5",
  I: "~@8 e4@5 c#4@3 ~@10 f#4@6, a2@12 ~@5 b2@15, ~@4 e3@12 ~@5 f#3@11",
  J: "~@3 g4@24 ~@5, g2@27 ~@5, ~ a3@26 ~@5, ~ d4@13 ~@2",
  K: "[~@12 e4@5 c#4@3 ~@10 f#4@8 ~@10 g4@8 ~@9 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@6 ~@3 g4@17 ~@5 a3@13 ~@9 e4@4 c#4@3, ~@4 a2@12 ~@5 b2@17 ~ g2@17 d2@18 a2@12 ~@5 b2@16 a3@19 g4@10 ~@24, ~@8 e3@12 ~@6 f#3@12 ~@5 b2@12 ~ g4@10 ~@40 g2@27 ~@11 a2@12 ~@4, ~@61 a3@13 ~@4 e3@12 ~@6 f#3@12 d4@26 ~@14 e3@12, ~@63 d2@9 ~@8]/5",
  L: "[~@10 f#4@8 ~@10 g4@8 ~@9 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@8 ~@10 g4@8 ~@9 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@8 ~@10 g4@8 ~@9 f#4@7, ~ b2@17 ~ g2@17 d2@18 a2@12 ~@5 b2@17 ~ g2@17 ~ d2@18 ~@3 e3@12 ~@6 f#3@12 ~@6 b2@12 ~@5 a3@11, ~@6 f#3@12 ~@5 b2@12 ~ g4@10 ~@61 g4@10 ~@60 g4@10 ~@5, ~@41 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12 ~@6 a3@13 a2@12 ~@6 b2@17 g2@17 ~ d2@15]/6",
  M: "[~@11 e4@4 c#4@3 ~@11 f#4@8 ~@9 g4@8 ~@10 f#4@8 ~@9 e4@5 c#4@3 ~@10 f#4@8 ~@9 g4@8 ~@10 f#4@9 ~@8 e4@5 c#4@3 ~, ~@2 a2@12 ~@6 b2@17 g2@17 ~ d2@18 ~@4 e3@12 ~@5 f#3@12 ~@6 b2@12 ~@5 a3@13 ~@5 e3@12 ~, ~@7 e3@12 ~@5 f#3@12 ~@6 b2@12 ~ g4@10 ~@60 g4@10 ~@25, ~@59 a3@13 a2@12 ~@6 b2@17 g2@17 ~ d2@18 a2@12 ~@5]/5",
  N: "[~@9 f#4@8 ~@9 g4@8 ~@10 f#4@9 ~@8 e4@5 c#4@3 ~@10 f#4@8 ~@9 g4@8 ~@10 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@8 ~@10 g4@8 ~@10 f#4@7, b2@17 ~ g2@17 d2@18 a2@12 ~@5 b2@17 ~ g2@17 d2@18 a2@12 ~@5 b2@17 ~ g2@17 ~ d2@16, ~@4 f#3@12 ~@6 b2@12 ~ g4@10 ~@60 g4@10 ~@60 g4@10 ~@7, ~@40 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12 ~@6 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12 ~@6 a3@12]/6",
  O: "[~@9 e4@5 c#4@3 ~@10 f#4@8 ~@9 g4@8 ~@10 f#4@9 ~@8 e4@5 c#4@3 ~@10 f#4@8 ~@10 g4@8 ~@9 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@8 ~@10 g4@7, ~ a2@12 ~@5 b2@17 ~ g2@17 d2@18 a2@12 ~@5 b2@17 ~ g2@17 d2@18 a2@12 ~@5 b2@17 ~ g2@16, ~@5 e3@12 ~@6 f#3@12 ~@5 b2@12 ~ g4@10 ~@60 g4@10 ~@59, ~@58 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12 ~@6 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12]/6",
  P: "[~@10 f#4@9 ~@9 e4@4 c#4@3 ~@10 f#4@8 ~@10 g4@8 ~@9 f#4@9 ~@7, ~ d2@18 a2@12 ~@6 b2@17 g2@17 ~ d2@18 ~@6, ~ g4@10 ~@61 g4@10 ~@14, ~@6 a3@13 ~@4 e3@12 ~@6 f#3@12 ~@5 b2@12 ~@6 a3@13 ~@7]/3",
})).s("gm_acoustic_guitar_steel").gain(0.21).pan(0.3)

// chords · acoustic guitar steel · "MIDI"
const acoustic_guitar_steel_2 = note(`<
  ~@6 A B C D E@2 F@2 G H I J K L M@3 N@3 O P@2 Q R S@6 T U@2 V W X Y Z@2 ~@7 AA AB@2 AC@2 AD@3 AE@2 AF AG@2 AH AI@2
  AJ@3 T AK@2 V W AL@2 AM@2 ~
>`.pickRestart({
  A: "~@10 [a3,c#4,e4]@9 [a3,c#4,e4]@6 ~ [b3,d4,f#4]@2 ~@2 [b3,d4,f#4]@2", // A Bm
  B: "[b3,d4,f#4] ~@4 [b3,d4,f#4]@6 [b3,d4,f#4]@2 [b3,d4,g4]@8 ~ [b3,d4,g4]@6 ~ [a3,d4,g4]@3", // Bm G Dsus4
  C: "~ [a3,d4,g4]@2 [a3,d4,g4] ~@4 [a3,d4,f#4]@7 ~ [a3,c#4,e4]@8 ~ [a3,c#4,e4]@6 ~", // Dsus4 D A
// … 278 more lines

More by Ace of Base