Strudelify
This Must Be Love cover art

Fortune Fairytales

This Must Be Love

Lois Lane

KeyC minorTempo126 bpm
0:00/0:00
// This Must Be Love — Lois Lane
// 126 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 134 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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, A@4 for four bars: edit a riff to change every repeat.

// bass · slap bass 1 · "SLAPBASS 1"
const bass = note(`<
  A B C D A B E@8 F@8 G@2 H@4 I@5 J@8 K L@8 M@7 N@8 O@8 P@5 Q@4 R@8 S T U@2 S T V@2 S T W@2 S T X@2 Y T Z AA@2 T X@2 S T
  AB@2 S T X@2 S T AC@8 AD@2
>`.pickRestart({
  A: "bb1@2 c2 ~ c2 ~@11", B: "c2@2 bb1@2 bb1 ~@11", C: "g1@2 ab1 ~ ab1 ~@11", D: "f1@2 g1 ~ g1@2 ~@4 f1@2 g1 ~ bb1@2",
  E: "[g1@2 ab1 ~ ab1 ~@13 g1 ~@13 bb1@2 c2@2 c2 ~@9 c2@4 d2 ~ d2@2 ~@10 bb1@2 c2 ~ c2@2 ~@8 d2@4 g1 ~ g1 ~@5 f1@2 g1 ~ bb1 ~ bb1@2 c2 ~ c2 ~@9 c2@4 d2 ~ d2@2 ~@10, ~@3 ab1@29]/8",
  F: "[~@14 f1 ~ f1@2 g1 ~ g1@2 ~@4 f1@2 g1@2 bb1 ~ bb1@2 c2@2 c2@10 ~@4 d2 ~ d2 ~@11 bb1@2 c2@2 ~@10 d2@4 g1@2 g1 ~@5 f1@2 g1@2 bb1 ~ bb1@2 c2@2 c2@10 ~@4 d2 ~ d2@2 ~@10, c2@17 ~@6 c2@10 ~ c2@15 ~@6 c2@9, ~@3 ab1@61]/8",
  G: "[~@14 f1 ~ f1@2 g1 ~ g1 ~@5 f1@2 g1@2 bb1@2, c2, ~@3 ab1@13]/2",
  H: "[c2 c2@2 c2@2 c2@2 ~@2 ab1@2 ab1@2 ab1@2 ~@2 bb1 ~ bb1 ~ bb1 ~ bb1 ~ f1 ~ f1 ~ g1 ~ c2, ~@7 c2@24 ~, ~@15 ab1@17]/4",
  I: "[~@2 c2@4 c2@4 c2@4 ~@4 ab1@4 ab1@4 ab1@4 ~@4 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 f1@3 ~ f1@3 ~ g1@2 ~@2 g1@2 bb1@2 c2@2 c2@12, ~@7 c2@26 ~@7, ~@3 ab1@5]/5",
  J: "[~@2 bb1 ~ bb1 ~@11 g1@2 ab1@2 ~@12 f1@2 g1 ~ g1@9 ~ c1@7 ~ bb1@2 c2@6 ~@4 d2 ~ d2@2 ~@8 bb1@4 c2@2 c2@10 ~@6 g1@2 ~@4 f1@2 g1 ~ bb1 ~ bb1@2 c2@2 c2@10 c2@2, c2@28 ~@3 c2@10 ~@6 c2@10 ~@7, ~@5 ab1@27]/8",
  K: "~@2 d2 ~ d2@2 ~@10",
  L: "[~@14 f1 ~ f1@2 g1 ~ g1@2 ~@4 f1@2 g1@2 bb1 ~ bb1@2 c2@2 c2@10 ~@4 d2 ~ d2@2 ~@8 bb1@4 c2@2 ~@10 d2@4 g1 ~ g1 ~@5 f1@2 g1@2 bb1 ~ bb1@2 c2@2 c2@10 ~@4 d2 ~ d2@2 ~@10, c2@17 ~@6 c2@10 ~ c2@15 ~@6 c2@9, ~@3 ab1@61]/8",
  M: "[~@14 g1@15 ~ g1@5 ~ g1 ~@13 c2@4 c2@4 c2@4 ~@4 ab1@4 ab1@4 ab1@4 ~@4 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 f1@2 ~@2 f1@3 ~ g1@3 ~ c2@2, c2@25 ~@6 c2@24 ~, ~@3 ab1@30 ~@6 ab1@17]/7",
  N: "[~@2 c2@4 c2@4 c2@4 ~@4 ab1@4 ab1@4 ab1@4 ~@4 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 f1@2 ~@2 f1@2 ~@2 g1@4 c2@4 c2@4 c2@4 c2@4 ~@4 ab1@4 ab1@4 ab1@4 ~@4 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 f1@3 ~ f1@2 ~@2 g1@4 c2@2, ~@7 c2@24 ~@8 c2@24 ~, ~@15 ab1@26 ~@6 ab1@17]/8",
  O: "[~@2 c2@4 c2@4 c2@4 ~@4 ab1@4 ab1@4 ab1@4 ~@4 bb1@2 ~@2 bb1@4 bb1@4 ~@4 f1@2 ~@2 f1@2 ~@2 g1@4 g1 ~ c2@2 ~@14 bb1@2 ~@14 ab1@2 ~@14 g1 ~ g1@13 [c3,db3,d3], ~@7 c2@25 ~ c2@31, ~@15 ab1@33 ~ ab1@15, ~@23 bb1@17 ~ bb1@23]/8",
  P: "[eb3@16 d3@16 c3@16 g1 ~ g1@11 ~@5 c2@2 c2@12, c2@33 ~@7, ~ bb1@3 bb1, ~@2 ab1@3]/5",
  Q: "[~@2 bb1@2 ~@12 g1@2 ab1@2 ~@12 f1@2 g1 ~ g1 ~@5 f1@2 g1@2 bb1@2 ~@2 c2@2 c2@12, c2@25 ~@7, ~@2 bb1@21 ~ bb1@8, ~@5 ab1@11]/4",
  R: "[~ bb1 ~@6 g1 ab1 ~@5 g1@8 ~@2 f1 ~ g1 ~@5 c2@2 c2@2 c2@2 ~@2 ab1@2 ab1@2 ab1@2 ~@2 bb1@2 bb1!2 bb1@2 ~@2 f1 ~ f1 ~ g1@2 c2, c2@33 ~@6 c2@24 ~, ~@2 bb1@27 bb1@20 ~@6 bb1@9, ~@10 ab1@31 ~@6 ab1@17]/8",
  S: "~ c2@2 c2@2 c2@2 c2", T: "~ ab1@2 ab1@2 ab1@2 ab1",
  U: "[~@2 bb1@4 bb1@4 bb1@4 ~@4 f1@2 ~@2 f1@2 ~@2 g1@3 ~ c2@2, ~@7 bb1@9]/2",
  V: "[~@2 bb1@4 bb1@2 bb1@2 bb1@4 ~@4 f1@2 ~@2 f1@2 ~@2 g1@2 g1 ~ c2@2, ~@7 bb1@9]/2",
  W: "[~ bb1@2 bb1@2 bb1@2 ~@2 f1 ~ f1 ~ g1 ~ c2, ~@7 bb1@9]/2",
  X: "[~ bb1@2 bb1@2 bb1@2 ~@2 f1 ~ f1 ~ g1@2 c2, ~@7 bb1@9]/2", Y: "~@2 bb2 g2 f2 eb2 c2@2",
  Z: "~ bb1@2 bb1!2 bb1@2 bb1", AA: "[~@2 f1@2 ~@2 f1@2 ~@2 g1@2 ~@6 c1@4 d1@3 ~ eb1@3 ~ ab1@2, ~@7 c2@9]/2",
  AB: "[~@2 bb1@4 bb1@3 bb1 bb1@4 ~@4 f1@2 ~@2 f1@2 ~@2 g1@4 c2@2, ~@7 bb1@9]/2",
  AC: "[~ bb1@2 bb1@2 bb1@2 ~@2 f1 ~ f1 ~ g1@2 c2@2 c2@2 c2@2 c2@2 ~@2 ab1@2 ab1@2 ab1@2 ~@2 bb1@2 bb1@2 bb1@2 ~@2 f1 ~ f1 ~ g1@2 c2@2 c2@2 ~@6 ab1@2 ab1@2 ab1@3, ~@7 bb1@26 ~@6 bb1@25, ~@23 c2@24 ~@4 c2@13, ~@31 ab1@26 ~@7]/8",
  AD: "[~ bb1@2 ~@5 g1 ~@4 eb2 ~@2, ~@3 bb1@7 ~@6]/2",
})).s("gm_slap_bass_1").gain(0.53)

// bass · electric bass pick · "SLAPBASS 1" · Bmaj7
const bass_2 = note("<~@6 [~@14 g1 gb1] ~@7 [~@4 [bb1,b1] a1 ~@10] ~@27 [~@5 [a1,bb1,b1] ~@10] ~@91>")
  .s("gm_electric_bass_pick").gain(0.15)

// bass · slap bass 2 · "SLAPBASS 1"
const bass_3 = note("<~@39 [~@2 d3 ~@13] ~@94>").s("gm_slap_bass_2").gain(0.59)

// other · alto sax
const alto_sax = note(`<
  A ~ B ~ A ~ B C ~@17 D@2 E@2 F G H I ~ I J@2 ~@13 K@3 ~ L@2 E@2 F G H M@3 E@2 F N O ~@8 P ~ P ~ P ~ P ~@50
>`.pickRestart({
  A: "~@2 g3 ~ g3 ~@3 c4@4 bb3 ~@3", B: "~@2 f3@2 g3 ~@3 c4@4 bb3 ~@3", C: "f3 g3 ~@6", D: "[c4@15 ~]/2",
  E: "[c4 eb4 ~ f4 ~ g4 ~ c4@9]/2", F: "ab3", G: "~ bb3@12 ~@3", H: "c4@2 eb4 ~@3 f4@2 ~@2 g4@2 ~@4",
  I: "~ bb3 c4 ~ eb4@2 d4 ~", J: "[~@8 c4 ~ eb4@2 d4@2 c4@4 [a3,b3] g3 ~@12]/2",
  K: "[c5@6 eb5@8 g5@14 ~@2 bb4@7 ~@11]/3", L: "[c4@7 ~]/2", M: "[c4@11 ~]/3", N: "bb3@3 ~",
  O: "c4 eb4 ~ f4 ~ g4 bb4 c5", P: "~@2 eb4 ~@5 eb4@4 ~@4",
})).s("gm_alto_sax").gain(0.21).pan(0.6)

// other · french horn · "ALTO SAX"
const french_horn = note("<~@41 [~@2 g4 ~@3 f4 ~@3 eb4@6] [c4@3 eb4@4 ~] [eb4@6 d4@9 ~] ~@90>")
  .s("gm_french_horn").gain(0.16).pan(0.6)

// other · tenor sax
const tenor_sax = note(`<
  A ~ B ~ A ~ C D ~@17 E@2 F@3 G H@2 ~ I J ~@14 K@3 ~ L@2 F@3 G M ~ N@2 O@2 P G Q ~@8 R ~ R ~ R ~ R ~@2 S@3 T@3 U V S@3
  W@3 U X S@3 Y@3 U V S@3 Z@4 V S@3 Z@4 V S@3 Z@4 V
>`.pickRestart({
  A: "~@2 c4 ~ c4 ~@3 eb4@4 d4 ~@3", B: "~@2 bb3@2 c4 ~@3 eb4@4 d4 ~@3", C: "~@2 bb3@2 c4 ~@3 eb4@4 d4@2 ~@2",
  D: "c4 d4 ~@6", E: "[g3@15 ~]/2", F: "[g3 bb3 ~ c4 ~ eb4 ~ c4@9 g4@8]/3", G: "bb4@3 ~",
  H: "[g4@2 bb4@2 ~@2 c5 ~@3 eb5@2 ~@2 c5@4 f3@2 g3@2 ~@2 c4@4 bb3@2 ~@2]/2", I: "~ f3 g3 ~ c4@2 bb3 ~",
  J: "f4 g4 bb4 ~ bb4 c5 eb5 ~ eb5 ~ f5@2 gb5@2 g5@2", K: "[c5@6 ab4@8 g4@14 ~@2 bb3@7 ~@11]/3", L: "[g3@7 ~]/2",
  M: "g3 bb3 ~ c4 ~ eb4 ~@2", N: "[g4@29 ~@3]/2", O: "[g3 bb3 ~ c4 ~ eb4 ~ c4@9]/2", P: "g4",
  Q: "g3 bb3 ~ c4 ~ eb3 f3 g3", R: "~@2 c4 ~@5 c4@4 ~@4", S: "c3/3", T: "[~@4 eb3 f3 g3 ~ bb3@2 g3 ~@4 c3@33]/3",
  U: "f3@13 ~@3", V: "f3@2 g3 ~@3 bb3 ~@3 c4 ~@5", W: "[~@4 eb3 f3 g3 ~ bb3@2 g3 ~@3 c3@34]/3",
  X: "f3@2 g3 ~@3 bb3@2 ~@2 c4@2 ~@4", Y: "[~@4 eb3 f3 g3 ~ bb3 ~ g3 ~ eb3 ~@2 c3@33]/3",
  Z: "[~@4 eb3 f3 g3 ~ bb3@2 g3 ~ eb3 ~@2 c3@46 ~@3]/4",
})).s("gm_tenor_sax").gain(0.25).pan(0.4)

// other · tenor sax · soft notes · C
const tenor_sax_soft = note("<~@36 [~ f5 [c5,d5,e5] b4 ~@12] ~@32 [gb3 [eb3,e3,f3] ~@14] ~@64>")
  .s("gm_tenor_sax").gain(0.09).pan(0.4)

// other · french horn · "TENOR SAX"
const french_horn_2 = note("<~@41 A B@2 ~@90>".pickRestart({
  A: "~@2 g4 ~@3 f4 ~@3 eb4@6", B: "[c4@11 b3@4 ~]/2",
})).s("gm_french_horn").gain(0.21).pan(0.4)

// other · brass section · "BRASS 1"
const brass_section = note(`<
  ~@25 A@2 B@2 C D E@2 ~@2 F ~@14 G@3 ~ H@2 B@2 I D J K@2 L B@2 I D M N ~@8 O P O Q R S@2 T U@3 V@2 W X Y U@3 V@2 W X Y
  U@3 V@2 W X Z U@3 V@2 AA X Z U@3 V@2 AA X Z U@3 V@2 AA X Z
>`.pickRestart({
  A: "[c4@15 ~]/2", B: "[c4@2 eb4 ~@3 f4@2 ~@2 g4@2 ~@2 c4@18]/2", C: "g4, gb4 ~@15", D: "f4@3 ~",
  E: "[g4@2 bb4 ~@3 c5@2 ~@2 eb5@2 ~@2 c5@4 ~@14]/2", F: "c4 eb4 f4 ~ f4 g4 bb4 ~ eb5 ~ f5@2 gb5@2 g5@2",
  G: "[~@6 eb5@8 g5@14 ~@2 g5@7 ~@11]/3", H: "[c4@7 ~]/2", I: "g4", J: "c4@2 eb4 ~@3 f4@2 ~@2 g4@2 ~@4", K: "c4/2",
  L: "bb4@3 ~", M: "c4@2 eb4 ~@3 f4 ~@3 g4@2 bb4@2 c5@2", N: "~ b4 bb4 ~@13", O: "f4@7 ~", P: "f4 ~@15", Q: "bb4 ~@15",
  R: "[bb4,d5]@7 ~", S: "[[d5,g5] ~@13 [bb4,d5]@15 ~@3]/2", T: "~@2 f5 ~@3 g5 ~@3 bb5 ~@5", U: "c4/3",
  V: "[~@4 g4 bb4 c5 ~ eb5@2 c5 ~ f5@2 c5@18]/2", W: "g5, gb5 ~@15", X: "f5@3 ~", Y: "c5@2 eb5 ~@3 f5 ~@3 g5@2 ~@4",
  Z: "c5@2 eb5 ~@3 f5 ~@3 g5 ~@5", AA: "g5",
})).s("gm_brass_section").gain(0.36).pan(0.6)

// other · brass section · "BRASS 1" · soft notes
const brass_section_soft = note("<~@28 A ~@3 B ~@17 C ~@18 D ~@45 E ~@15 E ~@2>".pickRestart({
  A: "~@15 [e4,f4]", B: "~@2 b4 [g4,a4] [e4,f4] d4 ~@10", C: "c5@3 ~@5", D: "~@2 [ab4,a4] g4 ~@12", E: "gb5 ~@15",
})).s("gm_brass_section").gain(0.18).pan(0.6)

// other · brass section · "BRASS 1"
const brass_section_2 = note(`<
  ~@27 A@2 B C D ~@3 E ~@14 F@3 ~@3 A@2 B C ~ G@3 H I J K L@2 ~@8 M N M O P Q@2 R S@5 I T U@4 V@2 I T W S@5 I X W Y@3
  V@2 I T W Y@3 V@2 I T W Y@3 V@2 I T W
>`.pickRestart({
  A: "[~@7 c5@9]/2", B: "g5", C: "f5@13 ~@3", D: "g4@2 bb4 ~@3 c5@2 ~@2 eb5@2 ~@2 c6@2",
  E: "c4 eb4 f4 ~ f4 g4 bb4 ~ g4 ~ bb4@2 b4@2 c5@2", F: "[c5@6 ab4@8 g4@15 ~ g4@7 ~@11]/3", G: "[c5@11 ~]/3",
  H: "~@7 c5", I: "c5", J: "g5, c5 ~@15", K: "f5@3 ~, g5 ~@15", L: "[g3@2 bb3 ~@3 c4@2 ~@2 eb4@2 f4@2 g4@4 ~@14]/2",
  M: "c4@13 ~@3", N: "c4 ~@15", O: "f4 ~@15", P: "c4@15 ~", Q: "[c4 ~@13 g4@16 ~@2]/2", R: "~@2 f4 ~@3 g4 ~@3 bb4 ~@5",
  S: "[g4@49 ~@3 eb4 f4 g4 ~ bb4@2 g4 ~ c5@2 g4@18]/5", T: "bb4@3 ~", U: "[g4@2 bb4 ~@3 c5 ~@3 eb5@2 ~@3 g4@49]/4",
  V: "[~@4 eb4 f4 g4 ~ bb4@2 g4 ~ c5@2 g4@18]/2", W: "g4@2 bb4 ~@3 c5 ~@3 eb5 ~@5", X: "bb4", Y: "[g4@47 ~]/3",
})).s("gm_brass_section").gain(0.31)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@3 A B C D E ~@6 F G ~@6 F H ~@18 I J ~@25 K L@2 ~ M N O P ~@57>".pickRestart({
  A: "~@6 g4 ~ c5 ~@2 d5 ~@2 eb5@2", B: "f5@8 ~@4 g5@2 gb5 e5", C: "d5@13 ~ eb5 d5", D: "c5@9 ~@3 bb4 ~ [g4,ab4,a4] ~",
  E: "f4@2 g4 ~@13", F: "[c5,eb5,g5]@4 gb5 ~ [c5,eb5]@6 ~@4", G: "[c5,eb5]@6 [b4,d5]@7 ~@3",
  H: "[g4,c5,eb5]@6 ~ g4@6 ~@3, ~@6 [b4,d5]@7 ~@3", I: "[c5,g5]@3 gb5 ~@2 c5@6 ~@4", J: "c5@2 ~ [b4,d5]@3 ~@2",
  K: "~ g4 eb5 g4 d5 g4 c5@2", L: "[bb4@31 ~]/2", M: "~ bb4 [b4,c5] ~ eb5 ~ f5 ~ g5@4 f5 c5 ~ eb5",
  N: "g5 ~ g5@4 f5 eb5 d5@5 ~ d5 ~", O: "c5@12 ~ c5 eb5 f5", P: "g5@3 ~@3 g5@9 ~, ~@4 bb5@11 ~",
})).s("gm_electric_guitar_jazz").gain(0.32)

// other · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note("<~@4 A ~ B ~@7 C ~@7 D ~@19 E F ~@30 G@2 ~@58>".pickRestart({
  A: "~@15 [eb5,f5]", B: "~@15 [f4,gb4]", C: "~@4 f5 e5 ~@10", D: "~@4 f5 e5 ab4@6 ~@4",
  E: "eb5@3 ~ f5 e5 [ab4,eb5]@6 ~@4", F: "[g4,eb5]@2 ~ g4@3 ~@2", G: "[~@15 eb5@2 ~@15]/2",
})).s("gm_electric_guitar_jazz").gain(0.21)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note("<A B C D E F C G ~@61 H I J K L I M N O@2 ~ P O@2 ~@51>".pickRestart({
  A: "~ c5@15, [c3,g3,bb3,eb4,g4]", B: "[f3,bb3,d4,f4,bb4]", C: "[eb3,g3,c4,eb4,ab4]", D: "[d3,f3,bb3,d4,g4]",
  E: "~ c5@15, [c3,g3,eb4]", F: "[f3,bb3,d4,f4,bb4], c4 ~@15", G: "[f3,bb3,d4] ~ [g3,bb3,d4] ~@13",
  H: "[g3,bb3,eb4]@13 ~@3, c4@11 ~@5", I: "[f3,bb3,d4]@13 ~@3", J: "[g3,ab3,c4,eb4]@7 ~",
  K: "~ d4@13 ~@2, [f3,g3,bb3]@13 ~@3", L: "[g3,bb3,c4,eb4]@7 ~", M: "[g3,c4,eb4]@7 ~, ab3@3 ~",
  N: "[f3,g3,bb3,d4]@13 ~@3", O: "[~@7 [d4,f4,g4,bb4,d5]@8 ~]/2", P: "[d4,f4,bb4]",
})).s("gm_electric_guitar_clean").gain(0.32).pan(0.6)

// other · pad new age · "FANTASIA"
const pad_new_age = note("<~ A ~@3 A ~@27 A ~@11 A ~@32 A ~ A ~ A ~@51>".pickRestart({
  A: "~@6 g5 ~ f5 ~ g5 ~ ab5 ~ g5 ~",
})).s("gm_pad_new_age").gain(0.17)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D A E C ~ F G F H F G ~@2 F I F H J G ~@2 K E L M L E K N O E P Q F G F R F G ~@2 F G F S J G ~@27 T U V W X U T
  ~@2 E Y Z AA E AB Z AC AD@2 AE@2 AD@2 AE@2 AD@2 AF@2 AD@2 AG@2 AH@2 AE@2 AD@2 AE@2 AD@2 AE@2 AD@2 Z AC Z AI AE@2 AD@2
  Z ~
>`.pickRestart({
  A: "~@2 g3 ~ bb3 ~ g3 ~ c4@2 g3 ~ bb3 ~ bb3 ~", B: "~@4 bb3 ~ g3 ~ d4@2 g3 ~ bb3 ~ c4@2",
  C: "~@2 g3 ~ bb3 ~ g3 ~ c4@2 g3 ~ bb3@2 g3 ~", D: "~@2 g3 ~ bb3 ~ g3 ~ [d4,eb4] ~ d4 ~ bb3 ~ c4@2",
  E: "~@2 g3 ~ bb3 ~ g3 ~ d4@2 g3 ~ bb3 ~ c4@2", F: "~@8 f3 ~ f3 ~ eb3 ~ d3@2", G: "~@8 f3 ~ g3 ~ ab3 ~ g3 ~",
  H: "~@6 g3@2 [bb3,d4] ~ [bb3,d4] ~ g3@2 ~@2", I: "~@8 f3 ~ g3 ~ ab3 ~ g3@2", J: "~@8 f3 ~ f3 ~ eb3 ~ d3 ~",
  K: "~@6 g3@2 bb3 ~ bb3 ~ g3@2 ~@2", L: "~@6 g3 ~ bb3 ~ bb3 ~ g3 ~@3", M: "~@2 g3 ~ bb3 ~ g3 ~ d4@2 g3@2 bb3 ~ g3@2",
  N: "~@2 g3 ~ bb3 ~ g3@2 d4@2 g3@2 bb3@2 c4@2", O: "~@6 g3@2 bb3 ~ bb3 ~ g3 ~ g3@2",
  P: "~@6 g3 ~ bb3 ~ bb3 ~ g3 ~ g3 ~", Q: "~@2 g3 ~ bb3 ~ g3 ~ [bb3,eb4]@2 g3 ~ d4@2 c4@2",
  R: "~@6 g3@2 [bb3,eb4] ~ [bb3,eb4] ~ [f3,bb3,d4] ~@3", S: "~@6 g3@2 [bb3,eb4] ~ [bb3,eb4] ~ [g3,c4] ~@3",
  T: "~@6 g3@2 bb3 ~ g3 ~ bb3 ~ bb3 ~", U: "~@6 g3 ~ d4 ~ g3 ~ bb3@2 c4@2", V: "~@6 g3 ~ d4@2 g3 ~ bb3 ~ bb3@2",
  W: "~@6 g3@2 [bb3,eb4]@2 g3 ~ d4@2 c4@2", X: "~@6 g3 ~ bb3 ~ g3 ~ bb3 ~ bb3 ~",
  Y: "~@2 g3 ~ bb3 ~ g3 ~ d4 ~ g3 ~ bb3@2 ~@2", Z: "~ g3 bb3 g3 d4 g3 bb3 c4",
  AA: "~@2 g3 ~ bb3 ~ g3@2 d4 ~ g3@2 c4@2 bb3@2", AB: "~@2 g3@2 bb3@2 g3@2 d4@2 g3@2 bb3@3 ~",
  AC: "~@2 g3@2 bb3@2 g3 ~ [bb3,eb4]@2 g3@2 d4@2 c4@2", AD: "[~ g3 bb3 g3 d4 g3 bb3 c4@2 g3 bb3 g3 d4 g3 bb3@2]/2",
  AE: "[~@2 g3@2 bb3@2 g3@2 d4@2 g3@2 bb3@2 c4@4 g3@2 bb3@2 g3 ~ [bb3,eb4]@2 g3@2 d4@2 c4@2]/2", // Eb5
  AF: "[~@2 g3@2 bb3@2 g3@2 d4@2 g3@2 bb3@2 c4@3 g3@3 bb3@2 g3@2 [bb3,eb4]@2 g3@2 d4@2 c4@2]/2", // Eb5
  AG: "[~ g3 bb3 g3 d4 g3 bb3 c4@2 g3 bb3 g3 d4 g3 bb3 c4]/2",
  AH: "[~ g3 bb3 g3 d4 g3 bb3 c4@2 g3 bb3 g3 d4 g3 c4@2]/2", AI: "~ g3 bb3 g3 d4 g3 bb3@2",
})).s("gm_electric_guitar_muted").gain(0.12).pan(0.4)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@8 A@2 B@2 C@2 D E F@2 G@2 A@2 H I J K L M N K L O ~@4 P@2 Q@2 R@2 S T P@2 Q@2 P@2 U@3 V W X Y@2 Z AA AB V Z AA AB V
  AC X AB ~@17 AD AE AF AG@2 AE AH AI@2 AE AF AJ@2 AE AH AK@2 AL AM AG@2 AE AF AN@2 AO AP AQ@2 AE AR AS@2 AT AU AV@2 AE
  AW AQ@2 AX AY AZ@2 BA AH ~
>`.pickRestart({
  A: "[[g4,bb4,c5,eb5]@6 ~ [f4,g4,b4,d5]@7 ~@2]/2", // Cm7 G7
  B: "[[g4,bb4,c5,eb5]@11 ~@3 [f4,g4,b4,d5]@6 ~@4 [c5,eb5,ab5] ~@3 [b4,d5] ~@3, ~@14 g5 ~]/2", // Cm7 G7 Ab Bm
  C: "[[g4,c5,eb5]@13 ~ [f4,g4,b4,d5]@14 ~@4]/2", D: "[g4,bb4,c5,eb5]@3 ~@3 [g4,ab4,c5,eb5]@6 ~@4",
  E: "[g4,c5,eb5]@6 [g4,b4,d5]@7 ~@3", F: "[[g4,bb4,c5,eb5]@13 ~ [g4,b4,d5]@14 ~@4]/2",
  G: "[[g4,bb4,c5,eb5]@12 ~@2 [f4,g4,bb4,d5]@5 ~@5 [c5,eb5,ab5] ~@3 [bb4,d5,g5] ~@3]/2", // Cm7 Gm7 Ab Gm
  H: "[g4,bb4,c5,eb5]@5 ~ [g4,ab4,c5,eb5]@7 ~ g4 ~", I: "[g4,c5,eb5]@5 ~ [g4,b4,d5]@9 ~", J: "[g4,c5,eb5]@3 ~",
  K: "[g4,ab4,c5,eb5]@7 ~", L: "[f4,g4,bb4,d5]@3 ~", M: "[f4,ab4,c5]@6 ~@2 [f4,g4,bb4,d5]@5 ~@3",
  N: "[g4,bb4,c5,eb5]@15 ~", O: "[f4,ab4,c5]@5 ~@3 [g4,bb4,d5]@5 ~@3", P: "[[g3,bb3,c4,eb4]@6 ~ [f3,g3,b3,d4]@7 ~@2]/2",
  Q: "[[g3,bb3,c4,eb4]@13 ~ [f3,g3,bb3,d4]@6 ~@4 [c4,eb4,ab4] ~@3 [bb3,d4,g4] ~@3]/2", // Cm7 Gm7 Ab Gm
  R: "[[g3,c4,eb4]@13 ~ [f3,g3,b3,d4]@14 ~@4]/2", S: "[g3,bb3,c4,eb4]@4 ~@2 [g3,ab3,c4,eb4]@7 ~@3",
  T: "[g3,c4,eb4]@5 ~ [g3,b3,d4]@7 ~@3", U: "[[g3,bb3,c4,eb4]@5 ~ [g3,ab3,c4,eb4]@6 ~@2 [f3,g3,b3,d4]@23 ~@11]/3",
  V: "[g3,c4,eb4]@7 ~", W: "[ab3,c4,eb4]@7 ~@4 f4@2 g4@2 ~, ~@4 [ab3,c4,eb4]@3 ~", X: "[f3,bb3,d4]@13 ~@3",
  Y: "[[f3,ab3,c4]@7 ~ [f3,g3,bb3,d4]@5 ~ [g3,c4,eb4]@17 ~]/2", // Fm Gm7 Cm
  Z: "[ab3,c4,eb4]@7 ~ eb4@3 f4@2 g4@2 ~, ~@4 [ab3,c4]@3 ~", AA: "[f3,bb3,d4]@15 ~",
  AB: "[f3,ab3,c4]@7 ~ [f3,g3,bb3,d4]@7 ~", AC: "[ab3,c4,eb4]@8 ~@3 f4@2 ~ g4 ~, ~@4 [ab3,c4,eb4]@3 ~",
  AD: "[c4,g4,c5,eb5]@5 ~ [c4,g4,c5,eb5] ~", AE: "[ab3,ab4,c5,eb5]@11 ~ [ab4,c5,eb5] ~@3, ~@12 ab3@3 ~",
  AF: "[bb3,f4,bb4,d5]@10 ~@2 [f4,bb4,d5] ~@3, ~@6 bb3 ~", // Bb
  AG: "[[f3,f4,ab4,c5]@7 ~ [g3,f4,g4,bb4,d5]@5 ~ [c4,g4,c5,eb5]@12 ~@2 [c4,g4,c5]@2 ~@2, ~@28 eb5 ~@3]/2", // Fm Gm7 Cm C5
  AH: "[bb3,f4,bb4,d5]@10 ~@2 [bb3,f4,bb4]@3 ~, ~@12 d5 ~@3", // Bb Bb5
  AI: "[[f3,f4,ab4,c5]@7 ~ [f4,g4,bb4,d5]@3 ~@3 [c4,g4,c5,eb5]@12 ~@2 [c4,g4,c5]@2 ~@2, ~@8 g3@5 ~@15 eb5 ~@3]/2", // Fm Gm7 Cm C5
// … 127 more lines

More by Lois Lane