Strudelify
All Out Of Love cover art

The Singer & The Song

All Out Of Love

Air Supply

KeyB♭ majorTempo109 bpm
0:00/0:00
// All Out Of Love — Air Supply
// 109 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(109/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 · piano · "Ac Piano"
const piano = note(`<
  ~@4 A B@3 C D@2 E F@3 G H I@2 J K L@2 M N K O@2 P Q R@2 S@2 T C D@2 E F@3 G H I@2 J K L@2 M N K O@2 P Q U@4 V W@2 X@4
  Y@2 Z@3 AA@2 AB AC P Q R@2 P Q R@2 P Q R@2 P Q R@2 P Q R@2 P Q AD@6
>`.pickRestart({
  A: "~@7 f2, ~@5 f2@2 ~, ~@3 f3",
  B: "[~@12 f3@4 ~@4 eb3 ~@2 bb3, bb2@14 bb3@4 f3@4 c4@11 ~@3 g3@12, ~ f3@3 f3@4 bb2@8 [bb1,bb2]@8, ~@4 bb3@8 c4@8 bb3@13 ~ eb3@6 ~@2 eb3@6, ~@6 c4@4 f4@23 ~@5 bb3@6 c4@4]/3", // Bb
  C: "[g3,f4] ~@3 d4@2 bb3@4 ~@4 bb2@2, bb1, bb2@3 f3, [f3,eb4]@3 f3@2 bb3@3, ~ bb3@2 d4@5", // G7 F7
  D: "[eb3 ~@7 eb3@2 eb3@2 ~@4 f3@4 ~@10 f2@2, bb1@3 eb3 bb1@3 f3, bb2@5 c4@3 bb3@3 bb3 c4@4, bb3@4 g3@13 ~@3 f3@6 bb3@6, g3 eb3@2 bb3@4 [bb2,d4]@9]/2", // Bb
  E: "~@2 bb3 ~@4 bb2, bb1, [bb2,eb3]@2 bb2 eb3, ~ g3@3 eb3 g3@3, ~@3 bb3@5", // Eb5
  F: "[f3 ~@23 g3@2 g3@2 g3@2 ~@8 bb3@2 [eb3,g3,bb3]@4 ~@2 eb3@2, a2@8 g2@7 bb3@4 ~ f2@4, f4@6 f4@8 f4@18 ~@4 c4@5 ~@7, c4@4 c4@6 c4@6 bb3@10 eb4@6 eb2@9 ~@7, ~@2 f3@6 f3@8 g3@2 eb4@2 g3@2 d4@8 [g3,d4]@11 ~@3 a3@4]/3", // Eb G5
  G: "bb3 ~@13 c4@2, bb2, g3 g3@3, ~ bb3@2 bb3@3 bb3@2, ~@5 f3@3",
  H: "bb2 ~@3 [f3,bb3,d4]@2 bb3@4 ~@2 f3@2 [f3,a3,c4]@2, bb1, [g3,eb4]@3 f3@2 bb3@3, bb3@2 ~ d4@5, ~ bb2@7", // Bb F Cm
  I: "[eb3@2 eb3 ~@9 f3 ~@2 f3, bb1@7 d4@6 f3 c4@2, bb3@5 ~ c4@2 ~ bb1@7, bb2@4 bb2@4 [bb2,bb3]@3 bb2@5, g3@3 [eb3,g3]@2 [eb3,g3,bb3]@3 f3@2 f3 bb3@2 [bb3,d4]@3]/2", // Bb Eb Bb
  J: "~@2 [g3,bb3] ~@3 g3 [bb2,g3], bb1, bb3@2 bb2 eb3 bb2@3 ~, ~ eb3@2 bb3@5, ~@3 g3@2 eb3@3", // Gm Eb
  K: "~@7 a2, a2@7 ~, c4@2 c4@3 c4@3, ~ f3@3 f3@2 f3@2, ~@3 f4@5",
  L: "[f3 ~@7 eb3@2 [eb3,eb4]@4 ~@16 eb2@2, [g2,f4]@15 ~ eb2@12 eb3@4, ~@2 f3@13 ~ [g3,bb3]@6 c4@10, ~@2 eb4@3 ~@5 eb3 [g3,bb3] eb3 [g3,bb3]@3, ~@2 eb3 [d3,d4]@4 [d3,d4]@9]/2", // Eb G7 Gm D
  M: "f2@3 f2 f3@2 ~ f2, [eb3,g3,bb3,d4] [a3,c4], ~@4 f2@3 ~, ~@3 f3", // Ebmaj7 Am
  N: "f3@2 ~@5 [bb2,d4], bb1, d4@5 f3@3, bb3 f4, bb2@2 f3 bb2@3 bb3@2", // Bb
  O: "[~@4 bb3@2 eb3@4 ~@4 f3@2 f3@4 ~@2 bb3@2 f3 ~ f3@2 f3 ~ f3@2, g2@16 bb3@6 ~@2 [bb3,d4]@5 ~@3, bb3@4 ~@2 bb3@10 eb2@9 ~@7, ~@2 eb3@4 ~@4 eb3@7 ~@3 f3@4 f2@8, ~@14 g3@11 ~@3 [a3,c4]@4]/2", // Bb Am
  P: "f3 ~@2 f3!3 ~ [bb2,bb3], d4, bb2@5 f4@3, bb3 bb3@2 f3, ~ f3@2 c4@5", // Bb
  Q: "f3 ~ f3@2 ~@10 a2@2, a2@7 ~, c4 [f3,c4]@3, ~@3 f4@2 f4@3, ~ c5", // F5
  R: "[eb3 ~ eb3@2 [eb3,bb3]@2 ~@10 g3@4 ~@2 eb3@2 ~@2 f3@2 ~@2 f3@2, g2@8 eb3@3 ~ f2@4, bb3@4 ~@2 eb3@8 bb3@8 [bb3,d4]@7 ~@3, ~@6 bb3@6 g3@4 eb2@9 ~@7, ~@10 f3@7 ~@3 g3@5 ~@3 [a3,c4]@4]/2", // Eb5 Bb Am
  S: "[c4 ~@15 f5@15 ~, bb2@10 d4@2 f4@2 bb4@17 ~, bb3@8 bb3@23 ~, ~@2 f3@4 f3@25 ~, ~@4 d3@27 ~]/2",
  T: "~@4 eb3 ~@2 bb3, [bb1,bb2], ~ eb3@3 ~ eb3@3, ~ g3@3, ~@3 bb3@3 c4@2", // Bb
  U: "[eb3 ~ eb3@2 [eb3,bb3]@2 ~@10 g3@4 ~@2 eb3@2 ~@2 f3@2 ~@26 bb3@2 ~@6 [a2,f3]@2, g2@8 eb3@3 ~ f2@5 f2 d3 bb3@2 [f2,d3] bb3@3 f2 d3@2 a2@3 ~, bb3@4 ~@2 eb3@8 bb3@8 [bb3,d4]@7 ~ f3@27 ~ f3@4 ~@2, ~@6 bb3@6 g3@4 eb2@9 ~@7 bb1@14 [f2,d3]@2 bb1@9 ~@7, ~@10 f3@7 ~@3 g3@5 ~@3 [a3,c4]@29 ~@3 c4@4]/4", // Eb5 Dm Bb Dm Am
  V: "[g2,d3,g3,bb3]", // Gm
  W: "[~@4 [eb2,eb3]@2 [eb3,bb3,eb4,g4] [d3,bb3,d4,f4], [d2,d3,f3] ~, a3@9 ~ a3@6 ~@16, ~@3 d4@5 ~@8, ~@7 g3@5 ~@4]/2", // Eb Bb Dm
  X: "[g3@2 ~@13 g3 ~@8 [eb2,eb3]@4 [eb3,bb3,eb4,g4]@2 [d3,bb3,d4,f4]@2, [c3,c4]@8 g2@8 c4@7 g3@5 ~@4, eb4@5 eb4@3 bb3@4 g3 a3 bb3@2 a3@3 d4@5 ~@8, ~@2 g3@5 d4@9 f3@2 f3@3 [f3,a3]@3 ~@8, ~@6 f4@10 g3@6 d3@11 ~ d2@14 ~@16]/4", // Eb Bb C F
  Y: "[~@4 [eb1,eb2] [f1,f2] [g1,g2] [a1,a2], [c3,c4]@7 d4@3 ~@6, eb4@2 eb4@3 eb4@5 ~@6, ~ bb3@9 ~@6, ~@3 f4@7 ~@6]/2", // Eb F G A C
  Z: "[[eb1,eb2]@4 [f1,f2]@4 [g1,g2]@4 [a1,a2]@23 ~@11 f3@2]/3", // Eb F G A
  AA: "[~@15 a3, [bb3,f5]@8 a3@7 ~, ~ f4@3 f4@3 bb4 c5@2 c5@3 c5@3, ~@4 bb4@6 bb4@3 d5@4 ~@5 f5@10, ~@6 c5@6 c5@3 f4@2 ~ f4@6 f4@8]/2", // Bb5
  AB: "~@7 d3, g3, bb4@2 bb4@3 bb4@3, ~ eb4@5 eb4@2, ~@3 eb5@5",
  AC: "~@5 eb4 [f4,a4,c5]@2, eb3@13 ~@3, bb4@6 [bb4,d5]@7 ~@3, g4@4 g4@9 ~@3, ~@2 eb4@6 f3@7 ~", // F Bb
  AD: "[eb3 ~ eb3@2 [eb3,bb3]@2 ~@19 f2@12 [bb1,f2,d3,bb3]@54 ~@5, g2@25 [c3,f3,a3]@32 ~@39, bb3@4 ~@2 eb3@10 f3@5 eb3@32 ~@43, ~@6 bb3@6 g3@2 bb3@23 ~@59, ~@5 f3@3 [eb2,bb2,g3]@16 ~@24]/6", // Eb5 Bb F Eb
})).s("gm_piano").gain(0.56).pan(0.2)

// bass · fretless bass · "El Bass"
const bass = note(`<
  ~@7 A B C@2 D E F G H A H I C J F K L B E M N B E F N I O P B C@2 D E F G H A H I C Q F K L B E M N B E F N R S T U V
  W X Y@2 W Z AA@3 ~@3 AB B E F N B E F N B E F N B E F N B E F N B E F AC@5
>`.pickRestart({
  A: "bb1@7 f2", B: "bb1@15 ~", C: "bb1@7 ~", D: "bb1@6 ~ bb1", E: "a1@15 ~", F: "g1@7 d1", G: "eb1@8 f1@7 ~",
  H: "bb1@13 ~@3", I: "bb1@3 ~", J: "a1@13 ~ a1@2", K: "eb1@7 ~", L: "f1 f2", M: "g1@7 f1", N: "eb1 f1", O: "bb1",
  P: "~@7 f2, bb1", Q: "a1@13 ~ a1 ~", R: "bb1@13 ~ bb1 ~", S: "bb1@7 ~ a1@7 ~", T: "g1", U: "d1@13 ~ d1@2",
  V: "eb1@7 ~ eb2@4 d2@4", W: "c2", X: "g1@15 d1", Y: "[~ d1@13 ~@2 eb1@7 ~ eb2@4 d2@4, ~@15 d1@2 ~@15]/2",
  Z: "eb1 f1 g1 a1", AA: "[eb1@4 f1@4 g1@4 a1@23 ~@13]/3", AB: "~@2 bb2 f2", AC: "[eb1@9 f1@12 bb1@57 ~@2]/5",
})).s("gm_fretless_bass").gain(0.72)

// bass · fretless bass · "El Bass" · soft notes
const bass_soft = note(`<
  ~@8 A B A ~@4 C ~ C D E ~@2 F ~ G ~@7 D ~@2 A B A ~@4 C ~ C D E ~@2 F ~ G ~@13 H@2 ~@38
>`.pickRestart({
  A: "~@7 bb2", B: "~@7 f2", C: "~@14 bb1 ~", D: "~@6 bb2 f2", E: "~@14 c2 bb1", F: "~@7 g1", G: "~@14 g1 ~",
  H: "[~@15 c1@2 ~@15]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · epiano2 · "Rhodes"
const epiano2 = note(`<
  ~@7 A B C B D E F@2 G@5 H I J K L@2 M N O@2 P@2 Q@2 D R C R D E F@2 G@5 H I J K S@2 M N T@2 P@2 U@2 V W@2 X@2 Y@2 Z@3
  ~@2 AA@2 M N T@2 P@2 AB@2 P@2 T@2 P@2 T@2 P@2 T@2 AC AD@8 ~
>`.pickRestart({
  A: "[eb3,g3]", B: "[bb2,f3,bb3,c4,d4]", C: "~@7 c4, [bb2,eb3,g3,bb3]", D: "[bb2,eb3,g3,bb3]",
  E: "~@3 f4@5, [a2,f3,c4]", // F
  F: "[~@5 g3 ~@2 g3@2 ~ c4 ~@3 eb3, [g2,f4]@17 ~@7 [f2,g3,bb3]@8, [g3,bb3]@4 bb3@10 d4@11 ~@3 a3@4, ~@2 eb4@4 d4@6 g3@4 [eb2,bb3]@9 ~@7, ~@4 g3@6 eb4@7 ~@3 g3@4 eb3@6 ~@2]/2", // G7 Gm7 Gm Eb5
  G: "[~@16 f3 ~@61 bb2@2, bb2@7 bb3@3 bb3@3 bb3@2 bb3@3 bb3@3 bb3@2 bb3@2 ~ bb3@3 f3 bb3@2 bb2@7 ~, ~ g3@4 f3@3 [bb2,d4]@8 bb2@8 bb2@7 f3@2 eb3@2 eb3@3 eb3@2, ~@4 bb3@8 g3@4 ~@2 f3@10 f3@5 ~ eb3@10 eb3@5 ~ f3@6 f4@9 ~@15, ~@6 eb4@10 ~@6 c4@11 ~@5 c4@11 ~@5 c4@11 ~@3 bb3@6 bb3@6]/5", // Bb
  H: "~@2 c4 ~@4 g3, a2, ~ f3@7, ~@3 [a3,f4]@5, ~@3 c4@2 g3 c4@2", // Dm
  I: "~@7 bb3, g2, ~ f3@7, ~@2 g3@3 bb3 g3@2, ~@3 bb3 eb4@4", J: "~@7 eb2, f3, eb2@3 g3, d4@4 g3 d4@3, bb3@2 g3 bb3@5",
  K: "f3 ~@5 d4@2 a3@4 ~@2 f2@2, f2@7 ~, ~ g3@3 [f3,c4]@4, ~@4 bb3@5 ~@3 a3@4", // F5
  L: "[~@15 a2, bb2@7 c4@3 c4@4 c4@2, ~ f3@3 f3 f4@3 a2@7 ~, ~@4 bb3@13 ~@5 f4@10, ~@3 c4@3 f3@3 f3@3 f3@4]/2",
  M: "~@7 f2, g2, bb3@2 bb3@3 bb3@3, ~ eb3@3 eb3@2 eb3@2, ~@3 eb4@5",
  N: "eb3 ~@9 f3@2 ~@2 f3@2, eb2@2 d4 ~, d4@3 bb3@3 [a3,c4]@2, bb3 g3@2 ~, ~ f3@3 f2@4", // Am
  O: "[~@7 bb2 ~@7 a2, bb2@7 ~ a2@6 f3@2, c4@3 [c4,f4]@5 c4@4 f3 c4@3, bb3@2 bb3@3 [bb3,d4]@3 a3@2 a3@6, ~ f3@3 f3@2 f3@3 f3@2 f4@5]/2", // F5 Bb
  P: "[~@11 g3 eb3 ~ eb3!2, g2@15 a3@2 ~@11 a3@4, bb3@6 [bb3,eb4]@10 [eb2,bb3]@9 ~@7, ~@2 eb3@6 eb3@9 ~@3 eb3@4 [f2,bb3]@8, ~@14 g3@3 ~@15]/2", // Eb5 Bb5
  Q: "[~@16 bb2@15 ~, bb2@14 c4@17 ~, bb3@4 bb3@27 ~, ~@2 f3@6 f3@2 f4@21 ~, ~@6 c4@6 f3@19 ~]/2", R: "[bb2,f3,c4,d4]",
  S: "[~@15 a2, [bb2,d4]@7 c4@3 c4@4 c4@2, ~ f3@3 f3 f4@3 a2@7 ~, ~@4 bb3@13 ~@5 f4@10, ~@3 c4@3 f3@3 f3@3 f3@4]/2", // Bb
  T: "[[bb3,c4] ~@6 bb2 ~@7 a2, bb2@7 ~ a2@6 f3@2, ~ f3@3 f3@2 f3@3 f3@2 f4@5, ~@2 bb3@3 [bb3,d4]@3 a3@2 a3@6, ~@3 [c4,f4]@5 c4@4 f3 c4@3]/2", // Bbsus2 Bb F5
  U: "[~@20 d4@2 bb3 ~ a3@2 bb3@2 c4@2 a3 ~, bb2@14 f4@2 bb2@7 ~ a2@7 ~, [c4,f4]@2 bb3 f4@3 f3@9 ~, ~@2 f3@8 bb3@9 ~ f4@4 ~@8, ~@6 c4@17 ~@9]/2", // F5
  V: "[g2,bb3], g3@3 ~", // Gm
  W: "[~@10 a4@3 ~@3 [eb3,bb3,eb4]@8 [eb3,bb3,eb4,g4]@4 [d3,bb3,d4,f4]@4, d3@15 ~@17, [d4,f4]@13 ~@19, a4@9 ~@5 g4@10 ~@8, ~@3 d5@3 ~@10]/2", // Eb5 Eb Bb Dm
  X: "[~@6 f5@3 ~ eb5@2 ~@12 [d4,g4]@7 ~, g4@11 ~@5, [c3,bb4]@15 ~ [g3,bb4]@16, eb5@4 ~@3 d5@5 ~@4]/2", // G5 C7 Gm
  Y: "[~@6 d5@3 ~ a4@3 ~@9 f4@2 g4@4 [d3,f4]@4, d3@15 ~ eb3@11 ~@5, [c4,f4]@13 ~@5 bb3@12 ~@2, a4@9 ~@5 g4@6 eb4@7 ~ d4@2 ~@2]/2", // Dm F5
  Z: "[[g4,bb4,eb5]@3 ~ eb5 ~ f5@3 ~ eb5@4 ~@2 [eb4,g4,bb4]@24 ~@8, c3@7 ~@17, ~@2 [g4,bb4]@5 d5@13 ~@4]/3", // Eb Gm
  AA: "[~@15 a2, ~ f3@3 f3@2 f3@3 f3@3 f3@4, ~@2 bb3@6 a2@7 ~, ~@3 c4@4 c4@3 c4@4 c4@2, ~@10 f4@7 ~@5 f4@10]/2",
  AB: "[c4 ~@6 bb2 ~@7 a2, ~ f3@3 f3@2 f3@3 f3@2 f4@5, ~@2 bb3@3 [bb3,d4]@3 a2@6 f3@2, ~@3 [c4,f4]@5 c4@4 f3 c4@3, ~@4 a3 a3@3]/2", // Bb F5
  AC: "~@15 a3, g2, bb3@3 [bb3,eb4]@5, ~ eb3@3 eb3@4, ~@7 g3", // Eb5
  AD: "[~@6 g3@2 eb3@2 ~@2 eb3@2 ~@46 eb3@2 ~@11 f4@12 [d4,f4,bb4]@43, [eb2,bb3]@4 bb3@4 [bb2,d4]@13 c4@11 [bb3,eb4,g4]@16 ~@16, ~@4 eb3@4 f2@10 f3@2 bb3@2 c4@4 bb3@18 f3@29 [c4,a4]@32 ~@23, ~@6 a3@8 f3 c4 a2@8 g2@16 ~@24, ~@7 eb3@10 f3 c4 f4@6 eb3 bb3 eb4@2 bb3@2 eb3@16 ~@17]/8", // Bb Eb5 Bb Eb F
})).s("gm_epiano2").gain(0.56)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  ~@5 A@2 ~@8 B@2 C@2 D E F@2 G H I J K L M J N O@2 ~@8 P Q@2 R D S@3 T H I J U L V J W X@2 ~@2 Y Z AA AB AC Z AD AE@3
  ~@4 L AF J N L AF J N L AF J N L AF J N L AF J N L AF J AG@5
>`.pickRestart({
  A: "[[bb2,f3,bb3,d4]@3 ~]/2", B: "[[eb3,g3,bb3]@8 [bb3,d4]@7 c4, bb1, ~ f3]/2",
  C: "[g3@3 c4 [f3,d4]@4, bb1@31 ~, eb3 ~]/2", D: "[bb1,eb3,bb3]", E: "[a2,f3,c4]",
  F: "[f4@3 eb4@4 f2 [eb2,eb3,f3]@8, bb3, [eb3,f3] ~, g2@7 d4@9]/2", G: "[f2,eb3,f3,bb3] [f2,f3,a3,c4]", H: "[bb2,d4]",
  I: "[a2,c4]", J: "g2@7 d2, [eb3,bb3]", K: "eb2 [f2,f3], [eb3,bb3]", L: "[bb2,f3,d4]", M: "~@3 f4@3 ~@2, [a2,f3,c4]",
  N: "[eb2,bb2,g3] [f2,a3]", O: "[[bb1,f2,d3,bb3]@7 ~]/2", P: "[bb1,eb3,g3,bb3]",
  Q: "[[f3,d4]@7 ~@7 c4@2, bb1 [bb1,eb3], ~@7 bb3@7 ~@2]/2", R: "[bb1,f3,d4]",
  S: "[c4@7 ~@4 eb4@4 f2 [eb2,bb2,g3]@8, [a2,f3] [eb3,bb3] ~, ~@7 f4@4 ~@4 d4@9, ~@8 g2@7 ~@9]/3", // Eb Dm Eb5
  T: "[f2,f3,d4] [f2,f3,c4]", U: "[eb2,bb2,g3] [f2,f3]", V: "c4@3 f4@5, a2", W: "[eb2,bb2,g3] [f2,c3,a3]",
  X: "[[bb1,f2,d3,bb3]@3 ~]/2", Y: "~@2 [eb3,bb3,g4] [d3,bb3,f4]", Z: "[c3,g3,eb4]", AA: "[g2,bb3,d4]", AB: "d2",
  AC: "eb2@2 [eb3,bb3,g4] [d3,bb3,f4]", AD: "eb2@4 f2@4 g2@3 ~ a2@4, [bb3,eb4,g4] [eb4,g4,bb4]",
  AE: "[~@2 f2@2 [g2,bb4,eb5,g5]@2 [a2,c5,f5,c6]@13 ~@5, [eb2,g4,bb4,eb5] ~@5]/3", AF: "c4@3 f4@3 c4@2, [a2,f3]",
  AG: "[[eb2,bb2,g3]@9 [f2,a3]@12 [bb1,d3,bb3]@53 ~@6]/5", // Eb F Bb
})).s("gm_string_ensemble_1").gain(0.32)

// other · string ensemble 1 · "Str Ovdb"
const string_ensemble_1_2 = note("<~@77 A@2 B C ~ D B C E@2 F G@3 H G@3 F G@3 I@6>".pickRestart({
  A: "[d4@2 f4@4 g4 a4]/2", B: "bb4@7 a4", C: "g4 f4", D: "~@2 g4 a4", E: "[d5@2 f5@4 g5 a5]/2", F: "bb5@7 a5",
  G: "[g5@2 f5@8 g5 a5]/3", H: "bb5@15 a5", I: "[~@16 [eb5,g5]@8 ~ [f5,c6]@12 [f5,bb5,d6]@53 ~@6, bb5@25 a5@10 ~@61]/6",
})).s("gm_string_ensemble_1").gain(0.53)

// chords · acoustic guitar steel · "Ac Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F@5 G@8 H@4 I@4 J@7 K@4 G@8 H@4 I@4 L@4 M N O@7 P@6 ~@4 Q R@6 S@8 L@4 T@8 ~
>`.pickRestart({
  A: "~@7 f3, bb2, ~ d3@7, ~@2 f3@3 f3 bb3@2, ~@3 d4@5", B: "c4 ~@6 a2, a2@7 ~, ~ f3@5 f3@2, ~@2 c4@3 c4@3, ~@3 f4@5",
  C: "~@7 f2, g2!2, bb3@2 bb3@3 bb3@3, ~ eb3@2 eb3@3 eb3@2",
  D: "~@7 f2, [eb2,g3]@4 f2@3 ~, ~@2 eb3@7 ~ eb3@6, ~ bb2 ~ a3, ~@3 bb3@5", // Eb
  E: "~@7 bb3, bb2, ~ d3@3 d3@4, ~@2 f3@3 f3@3, ~@3 f2@5",
  F: "[~@39 bb3, bb2@8 bb2@3 bb3@2 f3@2 eb3@8 bb3@2 eb3 g3@11 bb3 f3@2, ~ d3@3 d3@13 f3 bb3 c4@14 f3 bb3 c4@5, ~@2 f3@7 eb3 g3@14 bb2@3 eb3@13, ~@3 f2@13 bb2@5 f3@8 bb3@3 bb2@8]/5",
  G: "[~@63 bb3, bb2@8 a2@8 g2@11 eb3 f2@12 bb2@5 bb3 f3@10 bb2@8, ~ eb3@8 f3 c4 f4@6 eb3 bb3 eb3@2 bb3 eb3 d2@8 eb3 bb2 eb3 bb3 eb3@2 g3@13 bb3 c4@7 bb3 c4@5, ~@2 g3@3 f3@2 bb3@6 f3@11 eb2@14 bb3 eb3@8 bb3 bb2@7 bb3@2 f3@4 bb3 f3@2, ~@3 bb3@3 g3@8 c4@11 eb3 bb3@3 eb3 a3@11 f3 bb3 c4@6 eb3@4 bb3 eb3@10]/8",
  H: "[~@31 bb3, bb2@9 f3 c4 f4@6 eb3 bb3 eb4@6 eb3 bb3 d4@2 bb3 eb3@2, ~ eb3@5 eb3@7 c4 f3@7 bb3 eb3 d2@9, ~@2 bb3@3 bb3@2 bb3@8 c4@9 eb2@8, ~@3 c4@5 a2@8 g2@16]/4",
  I: "[~@31 f2, f2@4 f2@9 bb3@7 a2@4 g2 eb3 bb3 eb3@2 bb3 eb3@2, ~ eb3@4 a3 eb3@8 f3 bb2@8 c4@9, ~@2 bb3@5 a3@9 a2 f3 c4 f4@13, ~@3 d4@5 bb2 f3 bb3 d4@10 c4 f3@10]/4",
  J: "[~@6 bb2, eb2@9 f3 bb3 f4@2 d4@10 a2@14 eb3 bb3@2 bb2 f3 bb3 c4@13, ~ eb3@2 eb3@2 eb3@2 eb3@8 f3 a2 f3 c4 f4@5 g2@15 eb3@8 bb3@9, ~@2 bb3@4 bb3@2 bb2@13 c4@4 eb3 bb3 eb3@2 bb3 eb3 f2 eb2@12 f3@12, ~@4 f2@10 bb3@8 f3@11 eb3 bb3 eb3 f2@9 f4@11]/7",
  K: "[~@31 bb3, bb2@7 eb3@8 bb3@2 eb3 g3@11 bb3 f3@2, ~ eb3@4 f3@3 bb2@5 f3@8 bb3@3 bb2@8, ~@2 g3@14 bb2@3 eb3@13, ~@3 bb3@6 f3 bb3 c4@14 f3 bb3 c4@5]/4",
  L: "[~@31 f2, eb2@9 f3 bb3 f4@2 d4@10 a2 g2 eb3 bb3 eb3@2 bb3 eb3@2, ~ eb3@2 eb3@2 eb3@2 eb3@8 f3 a2 f3 c4 f4@13, ~@2 bb3@4 bb3@2 bb2@13 c4@11, ~@2 f2@5 bb3@4 f3@5]/4",
  M: "~@7 eb3, eb2, ~ eb3@2 eb3@2 eb3@2 ~, ~ bb3@2 bb3, ~ f2",
  N: "~@7 bb3, bb2, ~ d3@3 c3@4, ~@2 f3@3 d3@3, ~@3 bb3@3 f3@2",
  O: "[~@27 bb3 bb3@2 ~@25 d3, bb2@3 bb2@2 bb2@6 bb3@11 f3 c2@5 eb3@2 [d2,f3]@11 d3 g3 bb3@6 d3 f3 a3@3 f3@2, ~ c3@5 c3@7 d3@2 g2@13 g3@2 d3@3 eb3 g3 bb3@2 g3 eb3@10 d2@8, ~@2 d3@6 g2 d3 g3@11 d3@3 eb2 eb3 g3@2 eb2@11 g3 g2@5 g3@11, ~@4 a2@3 a2@9 c2 d3 f3 a3@11 bb3@2 c2@14 d3 g2@9]/7", // Dm
  P: "[~@3 bb3 eb3 ~@5 f3 ~@4 c4@8 ~, eb2@4 eb2@4 [g3,bb3]@2 eb3 bb3@2 g3@2 bb3@3 a3@16 ~@14, ~ eb3@3 [eb3,g3]@4 c2@10 c4@4 [f3,g3]@16 ~@10, ~ g3 ~ [d2,d3]@5 d4@4 bb3@8 ~@4, ~@3 bb3@3 f3@8 eb3@12 c4@2 d4@16 ~@4]/6", // Gm Eb Fsus2 D
  Q: "~@7 f3, bb2, ~ f3@5 bb3@2, ~@2 bb3@3 d4@3, ~@3 f4@5",
  R: "[~@47 f2, a2@7 a2@14 eb3 bb3@3 f3 bb3 f4@3 bb3@8 f3@2 g2 eb3 bb3 eb3@2 bb3 eb3@2, ~ f3@5 f3@11 eb3 bb3 eb3 f2@11 f3 a2 f3 c4 f4@13, ~@2 c4@3 c4@4 eb3 bb3 eb3@2 bb3 eb3 f2 eb2@13 d4@10 a2@9, ~@3 f4@5 g2@15 eb3@14 c4@11]/6",
  S: "[~@63 f2, eb2@9 f3 bb3 f4@2 d4@10 a2@14 eb3 bb3@2 bb2@13 c4@3 g2 eb3 bb3 eb3@2 bb3 eb3@2, ~ eb3@2 eb3@2 eb3@2 eb3@8 f3 a2 f3 c4 f4@5 g2@15 eb3@8 f3 a2 f3 c4 f4@13, ~@2 bb3@4 bb3@2 bb2@13 c4@4 eb3 bb3 eb3@2 bb3 eb3 f2 eb2@9 f3 bb3 f4@2 d4@10 a2@9, ~@4 f2@10 bb3@8 f3@11 eb3 bb3 eb3 f2@10 bb3@8 f3@10]/8",
  T: "[~@43 d3@21, eb2@18 f3@2 bb3@2 f4@4 d4@20 a2@25 eb3@2 f2@12 [bb1,f2]@43, ~@2 eb3@4 eb3@4 eb3@4 eb3@16 f3@2 a2@2 f3@2 c4@2 f4@10 g2@31 bb3@32 ~@17, ~@2 bb3@4 bb3@2 bb2@13 c4@4 eb3 bb3 eb3@2 bb3 eb3 f2 eb2@16 ~@16, ~@8 f2@20 bb3@16 f3@22 eb3@3 bb3@7 eb3@6 eb3@32 ~@14]/8", // Bb5
})).s("gm_acoustic_guitar_steel").gain(0.48).pan(0.8)

// chords · pizzicato strings · "Pluk Synt"
const pizzicato_strings = note(`<
  ~@24 A B C@2 D B C@2 ~@19 A B C@2 D B C@2 ~@18 A B C@2 D B C@2 A B C@2 D B C@2 A B C@2 D B C ~@5
>`.pickRestart({
  A: "~@8 [f5,bb5,d6] ~ [f5,bb5,d6] ~ [f5,bb5,d6] ~@3", B: "~@8 [f5,a5,c6] ~ [f5,a5,c6] ~ [f5,a5,c6] ~@3",
  C: "~@8 [eb5,g5,bb5] ~ [eb5,g5,bb5] ~ [eb5,g5,bb5] ~@3", // Eb
  D: "~@8 [f5,bb5,d6] ~ [f5,bb5,d6] ~ [bb5,d6] ~@3, ~@12 f5@3 ~", // Bb
})).s("gm_pizzicato_strings").gain(0.49)

// chords · pizzicato strings · "Pluk Synt" · soft notes
const pizzicato_strings_soft = note(`<
  ~@24 A B C@2 D B C@2 ~@19 A B C@2 D B C@2 ~@18 A B C@2 D B C@2 A B C@2 D B C@2 A B C@2 D B C ~@5
>`.pickRestart({
  A: "~@14 [f5,bb5,d6] ~", B: "~@14 [f5,a5,c6] ~", C: "~@14 [eb5,g5,bb5] ~", D: "~@14 [bb5,d6] ~",
})).s("gm_pizzicato_strings").gain(0.14)

// drums · kick
const kick = s("bd").struct(`<
  ~@7 A@33 B@3 A@6 B@4 A@3 B@2 A@4 ~ C A@2 ~ C A D@2 ~@6 A@3 B@2 A@2 E F A B E@2 B@2 G B A B A@4 H I ~@3
>`.pickRestart({
  A: "x", B: "x ~@6 x", C: "~@2 x!2", D: "x!4", E: "x ~@2 x ~@3 x", F: "x ~@2 x ~@4", G: "x!2 ~ x ~@3 x",
  H: "x ~@8 x ~@6", I: "~@5 x ~@10",
})).gain(0.72)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@7 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~ A ~ A ~@4 A ~ A ~ A ~@5 A ~ A ~@2 B A ~@4 A ~@12 A ~ A
  ~@2 A@2 C A ~@8 A ~ D B ~ A ~@5
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@3 x", C: "~@5 x ~@2", D: "~@3 x ~@4",
})).gain(0.4)

// drums · rim
const rim = s("rim").struct("<~@14 [~ x]!20 ~@71>").gain(0.72)

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

// drums · low tom
const low_tom = s("lt").struct("<~@41 A ~@8 A ~@25 A ~@3 A ~@3 A ~@3 A ~@3 A ~@12>".pickRestart({
  A: "~@3 x",
})).gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<A ~@33 B C@6 D E C@2 F C@4 ~@55>".pickRestart({
  A: "x!4", B: "~ x!2 ~", C: "x!2", D: "x!3 ~", E: "~ x!3", F: "x ~ x!2",
})).gain(0.64)

// … 36 more lines

More by Air Supply