Strudelify

That Ole Devil Called Love

Alison Moyet

KeyF minorTempo67 bpm
0:00/0:00
// That Ole Devil Called Love — Alison Moyet
// 67 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 53 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(67/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
const piano = note(`<
  ~ A@2 B C D E F G ~@2 H@2 ~ I J K L M ~@3 N ~@3 O P Q ~ R S T ~@5 O ~@3 U V W X Y Z AA AB@4
>`.pickRestart({
  A: "~@2 [c4,f4,ab4] [c4,f4,ab4]@3 [c4,f4,ab4] ~ [bb3,eb4,g4]@4", // Fm Eb
  B: "~@2 [c4,f4,ab4] [c4,f4,ab4]@3 [c4,f4]@2 [c4,f4]@3 [c4,f4,ab4], ~@6 ab4 ~ ab4@2 ~@2", // Fm F5 Fm
  C: "[c4,f4,ab4]@3 [c4,f4,ab4] ~ [bb3,eb4,g4]@7", D: "[f4,ab4,c5]@2 [f4,ab4,c5] [eb4,g4,c5]",
  E: "~@6 eb6 [c6,d6] bb5 f5 eb5 [bb4,c5] f4@2 eb4 [c4,db4] [eb4,f4] ab4 bb4@2 a4@2 ab4@2, c4@5 ~@3, [f4,bb4] ~", // Csus2 Bbsus2 Dbmaj7 Ebsus2 Bb5
  F: "g4@3 [b3,eb4,g4]@3 ~@4 bb4 eb5, ~@12 [bb3,eb4,g4]@11 ~", G: "a4@4 f4 a4 ~@6", H: "[~@11 [eb5,f5] d5@24 ~@12]/2",
  I: "~@7 c6 [ab5,bb5] g5 ab5 ~@2 c5 ~ bb4 ab4 ~ f4@2 ~@4, ~@6 eb5 ~@5", J: "[eb4,g4]@10 eb4 bb4", K: "a4@7 f5@4 ~",
  L: "[f4,ab4]@11 ~", M: "[eb4,ab4]@5 ~ [eb4,g4]@6", N: "[c5,f5]@4 eb5 gb5 gb5@6",
  O: "[ab4,eb5,g5]@5 ~ [ab4,d5,f5]@5 ~ [ab4,eb5,g5]@5 ~ [ab4,d5,f5]@5 ~", P: "~@18 [d4,gb4,bb4]@5 ~",
  Q: "[db4,f4,ab4]@2 [db4,f4,ab4] [db4,f4,bb4] ~ [db4,g4,bb4]@7", // Db Bbm Gdim
  R: "~@7 bb4 ~@2 eb5@2 g5@3 g4 gb4 f4 f4@5 ~, ~@9 c5@2 ~@13", S: "[eb4,g4,c5] [eb4,g4,b4] [eb4,g4,bb4]!2",
  T: "[eb4,f4,a4]@6 [c4,f4,a4]@4 a4@2 f5@11 ~", U: "~@11 f6@2 c6 bb5 [f5,ab5] [c5,eb5] bb4 f4 eb4 c4@2 ~@2, ~@5 c6 ~@6",
  V: "[eb4,g4,c5] [eb4,g4,b4] [eb4,g4,bb4] [c4,eb4,bb4]", W: "[c4,f4,a4]@5 [c4,eb4,f4] eb5@3 ~@3",
  X: "[db4,f4,bb4]@9 [db4,f4,ab4]@2 ~", Y: "[bb3,db4,e4]@5 ~ [db4,e4,ab4]@3 [eb4,g4,bb4]@3",
  Z: "[db4,f4,bb4]@6 [bb3,eb4,g4]@2 ~ [bb3,db4,g4]@3", AA: "[c4,f4,ab4]@6 [eb4,f4,a4]@5 ~",
  AB: "[[db4,f4,bb4]@10 ~@2 [eb4,g4,bb4]@4 ~@2 [eb4,g4,bb4]@4 [c4,f4,ab4]@65 ~@9]/4", // Bbm Eb Fm
})).s("gm_piano").gain(0.4).pan(0.6)

// bass · acoustic bass
const bass = note(`<
  A B@2 C D E F G H I J K L M F G N O P Q R S T U V W X Y Z P F G AA AB AC AD AE AF AG Y AH M AI AJ AK AB AL J AM AN@4
>`.pickRestart({
  A: "~@10 ab2 a2", B: "bb2@6 eb2@4 ab2 a2", C: "bb2@3 bb2@2 f2 bb2@3 bb2@2 f2", D: "bb1@2 c2 db2@2 eb2@3 g2 ab2@3",
  E: "bb2@5 f2 eb2@5 eb2", F: "ab2@5 eb2 ab2@4 g2 db2", G: "c2@5 c2 bb1@5 bb1", H: "a1@4 eb2 e2 f2@5 f2",
  I: "bb1@6 f2@5 f2", J: "bb2@5 bb2 eb2@5 g2", K: "ab2@5 ab2 b1@5 b1", L: "bb1@2 c2 db2@2 d2 eb2@4 g2 ab2",
  M: "bb2@4 f2 e2 eb2@5 g2", N: "a1@4 eb2 e2 f2@5 ab2", O: "bb2@5 bb2 f2@4 g2 ab2", P: "bb2@5 bb2 eb2@4 g2 bb2",
  Q: "ab2@6 db2@5 db2", R: "ab1@5 ab1 a1@5 f2", S: "bb1@4 f2 e2 eb2@5 g2", T: "ab2@4 a2 bb2 b2@3 e2@3",
  U: "bb2@5 bb2 eb2@3 g2@3", V: "ab2@5 ab2 c2@3 e2@2 c2", W: "f2@5 f2 c2@5 e2", X: "f2@2 f2!2", Y: "bb1@5 bb1 bb2@6",
  Z: "bb1@2 c2 db2@2 ~@3 g2 ab2 g2 ab2, ~@5 eb2@4 ~@3", AA: "a1@4 eb2 e2 f2@4 g2 ab2", AB: "bb2@5 bb2 f2@5 f2",
  AC: "bb2@10 bb2@2 eb2@9 ~ g2@2", AD: "bb2@5 bb2 eb2@4 bb2 a2", AE: "ab2@5 ab2 g2@2 db2 c2@2 e2", AF: "f2@6 c2@5 e2",
  AG: "f2@5 f2 f2@5 f2", AH: "bb2@5 bb2 eb2@2 g2 ab2 g2 ab2", AI: "ab2@5 db2 eb2@3 ab2@3", AJ: "c2@5 c2 bb1@6",
  AK: "a1@5 e2 f2@5 ~", AL: "bb1@5 f2 eb2@4 ab2 a2", AM: "ab2@4 eb2 e2 f2@6",
  AN: "[bb1@4 c2@2 db2@4 d2@2 eb2@6 eb2@4 g2@65 ~@9]/4",
})).s("gm_acoustic_bass").gain(0.54)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~ A B C D E F G H I J K E@2 F L M N O P Q R S T U V W X Y E Z AA AB AC AD AE AF AG W X AH AI AJ AK AL AM AN AI AO AP@4
>`.pickRestart({
  A: "[f3,bb3,db4]@5 ~ [f3,bb3,db4]@5 ~ [g3,bb3,db4]@5 ~ [g3,bb3,eb4]@5 ~", // Bbm Gdim Eb
  B: "[f3,ab3,bb3]@5 ~ [f3,ab3,db4]@5 ~ [g3,bb3,f4]@5 ~ [g3,bb3,eb4]@5 ~", // Bb7 Db Gm7 Eb
  C: "[f3,ab3,bb3]@5 ~ [f3,ab3,db4]@5 ~ [f3,ab3,bb3]@5 ~ [f3,ab3,db4]@5 ~", // Bb7 Db Bb7 Db
  D: "[f3,ab3,bb3]@5 ~ [f3,ab3,db4]@4 [bb3,eb4]@14", // Bb7 Db Eb5
  E: "[f3,ab3,bb3]@5 ~ [ab3,bb3,db4]@5 ~ [g3,bb3,db4]@5 ~ [g3,bb3,eb4]@5 ~", // Bb7 Bbm7 Gdim Eb
  F: "[ab3,c4,f4]@5 ~ [ab3,c4,eb4]@5 ~ [f3,ab3,c4]@5 ~ [ab3,c4,eb4]@5 ~", // Fm Ab Fm Ab
  G: "[bb3,c4,eb4]@5 ~ [g3,b3,eb4]@5 ~ [g3,bb3,eb4]@5 ~ [g3,bb3,c4]@5 ~", // Cm7 Gaug Eb C7
  H: "[a3,c4,eb4]@5 ~ [c4,eb4,f4]@5 ~ [a3,c4,eb4]@5 ~ [f3,a3,c4]@5 ~", // Adim F7 Adim F
  I: "[f3,ab3,bb3]@5 ~ [ab3,bb3,db4]@5 ~ [bb3,db4,f4]@5 ~ [f3,bb3,db4]@5 ~", // Bb7 Bbm7 Bbm
  J: "[bb3,db4,e4]@5 ~ [ab3,bb3,db4]@5 ~ [g3,bb3,db4]@5 ~ [g3,bb3,eb4]@5 ~", // Bbdim Bbm7 Gdim Eb
  K: "[ab3,c4,f4]@5 ~ [ab3,c4,eb4]@5 ~ [f3,b3,d4]@5 ~ [b3,d4,f4]@5 ~", // Fm Ab Bdim
  L: "[c4,eb4,g4]@5 ~ [b3,eb4,g4]@5 ~ [bb3,eb4,g4]@5 ~ [g3,bb3,eb4]@5 ~", // Cm Baug Eb
  M: "[f3,a3,c4]@5 ~ [a3,c4,eb4]@5 ~ [c4,eb4,f4]@5 ~ [a3,c4,eb4]@5 ~", // F Adim F7 Adim
  N: "[f3,bb3,db4]@5 ~ [f3,ab3,db4]@5 ~ [f3,ab3,bb3]@5 ~ [f3,ab3,db4]@5 ~", // Bbm Db Bb7 Db
  O: "[e3,bb3,db4]@5 ~ [bb3,db4,e4]@5 ~ [bb3,db4,eb4]@5 ~ [g3,bb3,db4]@5 ~", // Bbdim Eb7 Gdim
  P: "[ab3,c4,f4]@5 ~ [ab3,c4,eb4]@5 ~ [ab3,db4,f4]@5 ~ [ab3,db4,e4]@5 ~", // Fm Ab Db Dbm
  Q: "[g3,c4,eb4]@5 ~ [ab3,c4,eb4]@5 ~ [a3,c4,eb4]@5 ~ [a3,c4,eb4]@5 ~", // Cm Ab Adim
  R: "[f3,ab3,bb3]@5 ~ [f3,ab3,db4]@5 ~ [bb3,db4,f4]@5 ~ [bb3,db4,eb4]@5 ~", // Bb7 Db Bbm Eb7
  S: "[ab3,c4,f4]@5 ~ [f3,ab3,c4]@5 ~ [d3,gb3,a3]@5 ~ [ab3,b3,e4]@5 ~", // Fm D E
  T: "[f3,bb3,db4]@5 ~ [f3,ab3,db4]@5 ~ [g3,bb3,eb4]@5 ~ [g3,bb3,db4]@5 ~", // Bbm Db Eb Gdim
  U: "[f3,ab3,c4]@5 ~ [ab3,c4,f4]@5 ~ [g3,bb3,c4]@5 ~ [bb3,c4,eb4]@5 ~", // Fm C7 Cm7
  V: "[ab3,c4,eb4]@5 ~ [f3,ab3,c4]@5 ~ [bb3,c4,eb4]@5 ~ [g3,bb3,c4]@5 ~", // Ab Fm Cm7 C7
  W: "[ab3,c4,eb4]@5 ~ [ab3,c4,d4]@5 ~ [ab3,c4,eb4]@5 ~ [ab3,c4,d4]@5 ~", // Ab Dm7b5 Ab Dm7b5
  X: "[f3,bb3,d4]@5 ~ [f3,bb3,d4]@5 ~ [gb3,bb3,d4]@5 ~ [gb3,bb3,d4]@5 ~", // Bb Gbaug
  Y: "[f3,ab3,bb3] ~ [ab3,bb3,db4] [bb3,db4,f4] ~ [g3,bb3,eb4]@4 ~@3", // Bb7 Bbm7 Bbm Eb
  Z: "[ab3,c4,f4]@5 ~ [ab3,c4,eb4]@5 ~ [ab3,c4,eb4]@5 ~ [ab3,c4,f4]@5 ~", // Fm Ab Fm
  AA: "[c4,eb4,g4]@5 ~ [b3,eb4,g4]@5 ~ [bb3,eb4,g4]@5 ~ [g3,c4,eb4]@5 ~", // Cm Baug Eb Cm
  AB: "[a3,c4,eb4]@5 ~ [c4,eb4,f4]@5 ~ [f3,a3,c4]@5 ~ [a3,c4,eb4]@5 ~", // Adim F7 F Adim
  AC: "[f3,ab3,bb3]@5 ~ [f3,bb3,db4]@5 ~ [f3,ab3,db4]@5 ~ [bb3,db4,f4]@5 ~", // Bb7 Bbm Db Bbm
  AD: "[bb3,db4,e4]@5 ~ [bb3,db4,e4]@5 ~ [f3,ab3,db4]@5 ~ [g3,bb3,db4]@5 ~", // Bbdim Db Gdim
  AE: "[f3,ab3,bb3]@5 ~ [f3,bb3,db4]@5 ~ [ab3,bb3,db4]@5 ~ [g3,bb3,eb4]@5 ~", // Bb7 Bbm Bbm7 Eb
  AF: "[ab3,c4,f4]@5 ~ [ab3,c4,f4]@5 ~ [g3,bb3,d4]@5 ~ [bb3,c4,e4]@5 ~", // Fm Gm C7
  AG: "[f3,ab3,c4]@5 ~ [f3,ab3,c4]@5 ~ [bb3,c4,eb4]@5 ~ [g3,bb3,c4]@5 ~", // Fm Cm7 C7
  AH: "[f3,ab3,db4]@5 ~ [f3,bb3,db4]@5 ~ [g3,bb3,eb4]@5 ~ [g3,bb3,db4]@5 ~", // Db Bbm Eb Gdim
  AI: "[f3,ab3,bb3]@5 ~ [f3,ab3,db4]@5 ~ [g3,bb3,eb4]@5 ~ [g3,bb3,db4]@5 ~", // Bb7 Db Eb Gdim
  AJ: "[ab3,c4,f4]@5 ~ [ab3,c4,f4]@5 ~ [ab3,c4,eb4]@5 ~ [f3,ab3,c4]@5 ~", // Fm Ab Fm
  AK: "[g3,c4,eb4]@5 ~ [g3,b3,eb4]@5 ~ [g3,bb3,eb4]@5 ~ [g3,bb3,eb4]@5 ~", // Cm Gaug Eb
  AL: "[a3,c4,eb4]@5 ~ [a3,c4,eb4]@5 ~ [c4,eb4,f4]@5 ~ [f3,a3,c4]@5 ~", // Adim F7 F
  AM: "[f3,bb3,db4]@5 ~ [f3,ab3,db4]@5 ~ [f3,bb3,db4]@5 ~ [f3,bb3,db4]@5 ~", // Bbm Db Bbm
  AN: "[bb3,db4,e4]@5 ~ [bb3,db4,e4]@5 ~ [ab3,bb3,f4]@5 ~ [g3,bb3,eb4]@5 ~", // Bbdim Bb7 Eb
  AO: "[ab3,c4,f4]@5 ~ [ab3,c4,eb4]@5 ~ [a3,c4,eb4]@5 ~ [c4,eb4,f4]@5 ~", // Fm Ab Adim F7
  AP: "[[bb3,db4,f4]@5 ~ [ab3,db4,f4]@5 ~ [g3,bb3,eb4]@5 ~ [g3,bb3,db4]@4 [ab3,c4,f4]@65 ~@9]/4", // Bbm Db Eb Gdim Fm
})).s("gm_acoustic_guitar_nylon").gain(0.25).pan(0.4)

// other · electric guitar jazz
const electric_guitar_jazz = note("<~@28 A B ~@10 C D ~@8 E F ~>".pickRestart({
  A: "~@17 [eb4,f4] [c4,db4]@2 bb3@2 c4@2", B: "db4@19 ~@5",
  C: "~@12 bb3 c4@2 db4 eb4 ~@2 ab4 ~ g4 [g4,ab4] f4, ~@9 f4 ~@2", D: "eb4@5 ~",
  E: "~@7 ab4 c5 eb5 g5 ~@2 eb5 ~@2 c5!2 ~ bb4 bb4@2 g4 ~, ~@12 g5@2 ~ eb5@2 ~@7", F: "eb4 f4@2 eb4@2 ~ c4@8 ~@10",
})).s("gm_electric_guitar_jazz").gain(0.64).pan(0.8)

// other · vibraphone
const vibraphone = note("<~@9 A B ~@6 A B ~@7 C ~@2 D E ~@2 A F ~@3 C ~@6 G H I J K@3 ~>".pickRestart({
  A: "~@9 f4 ab4 bb4", B: "c5@3 ~", C: "g5 f5 g5 f5", D: "c5@6 c5@3 b4@2 ~", E: "bb4@5 ~", F: "c5@5 ~",
  G: "~@9 c5 db5 eb5", H: "e5@7 ~@5", I: "~ f5 db5 bb4@4 ~@5", J: "~@9 b4 c5 ~ f5 e5 ~ eb5 d5 ~ db5 c5 ~ a4 f4 ~",
  K: "[bb4@6 db5@6 eb5@3 ~@3 eb5@2 ~@2 eb5@37 ~@13]/3",
})).s("gm_vibraphone").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A B@2 ~@6 C D ~@5 E F@2 ~@4 G ~ H@3 ~ I J ~@3 K G ~ L@3 M I J N@3 O P@4
>`.pickRestart({
  A: "~@11 eb5", B: "eb6/2", C: "eb6 d6", D: "db6@2 c6 bb5", E: "~ g5", F: "[bb5 eb6@3]/2", G: "f5 g5",
  H: "[bb5@18 eb5@3 eb6@14 ~]/3", I: "~ d6", J: "c6", K: "ab4@2 d5 e5", L: "[bb5@6 eb5 eb6@5]/3", M: "bb5",
  N: "[ab5@5 c6]/3", O: "ab5 a5", P: "[bb5@2 db6@2 eb6@25 ~@3]/4",
})).s("gm_string_ensemble_1").gain(0.3)

// chords · french horn
const french_horn = note(`<
  ~ A B C D ~@10 E@2 F@2 G H ~ I J K ~@2 L M N O P Q R S T U V O W X Y O Z AA AB AC AD AE AF@4
>`.pickRestart({
  A: "~@4 c4@2 c4@4 ab3@2 c4@3 ~ eb4@8", B: "~@4 c4@2 c4@4 ab3@2 c4@3 ~ bb3@8",
  C: "~@4 c4@2 c4@4 ab3@2 c4@4 c4@2 c4@4 ab3 ~", D: "~@2 c4 c4@2 eb4@6 ~",
  E: "[~@3 b3@3 bb3@6 [f3,a3]@11 ~, ~@3 eb4@20 ~, ~ g3@3 ~@4]/2", F: "[f3@2 e3 g3, c4]/2", G: "c4 db4, ab3",
  H: "ab3 a3, c4", I: "~@2 a3 ab3, ~ [d4,gb4]", J: "[ab3,bb3,db4,f4] [g3,bb3,db4,e4]",
  K: "[f3,ab3,c4,eb4] [g3,bb3,c4,e4]", // Fm7 C7
  L: "[d3,f3,bb3]@5 [d3,f3,bb3] [d3,gb3,bb3]@2 [d3,gb3,bb3] [d3,gb3,bb3]@2 [d3,gb3,bb3]", // Bb Daug
  M: "[f3,bb3,db4]@2 [f3,ab3,db4] [f3,ab3,db4]@2 [eb3,g3,bb3]@7", N: "[f3,ab3,db4] [g3,bb3,eb4]", O: "[f3,ab3,c4]",
  P: "[eb3,g3,c4] [eb3,g3,b3] [eb3,g3,bb3]!2", Q: "[f3,a3,c4]", R: "db4", S: "ab3@3 [g3,bb3]",
  T: "[db3,f3,bb3] [eb3,bb3,db4]", U: "[f3,ab3,c4]@2 [g3,bb3,d4] [g3,bb3,c4]", V: "[f3,ab3,c4] [e3,bb3,c4]",
  W: "[d3,f3,bb3] [d3,gb3,bb3]", X: "[ab3,bb3,db4] [eb3,g3,bb3]", Y: "[db3,f3,ab3] [eb3,g3,bb3]",
  Z: "[eb3,g3,c4] [eb3,g3,b3] [eb3,g3,bb3]@2", AA: "[eb3,f3,a3]", AB: "[db3,f3,ab3]", AC: "[e3,ab3,db4] [eb3,bb3,db4]",
  AD: "[db3,f3,ab3] [eb3,bb3,db4]", AE: "[f3,ab3,c4] [eb3,a3,c4]",
  AF: "[[db3,f3,bb3]@12 [eb3,g3,bb3]@4 ~@2 [eb3,g3,bb3]@4 [eb3,ab3,c4]@65 ~@9]/4", // Bbm Eb Ab
})).s("gm_french_horn").gain(0.4).pan(0.3)

// other · trumpet
const trumpet = note("<~ A B C D ~@3 E F G H I J K ~ L M N ~@13 O P Q R S ~@3 T U V ~ W ~@3 X Y@4>".pickRestart({
  A: "~@4 ab4@2 ab4@4 f4@2 ab4@3 ~ bb4@8", B: "~@4 ab4@2 ab4@4 f4@2 ab4@3 ~ g4@8",
  C: "~@2 ab4 ab4@2 f4 ab4@2 ab4 ab4@2 f4", D: "~@2 ab4!2 ~ bb4@7", E: "~@12 d5@2 bb4 ~@2 bb4 a4@2 a4 eb4@2 ~",
  F: "db4@8 ~ f4@2 db4", G: "f4@2 g4 eb4", H: "f4@6 ~@2 f4 f4@2 db4", I: "f4@2 f4 f4@2 f4 g4@2 bb4@4",
  J: "~@2 f4 ab4@2 f4 ab4@3 g4@3", K: "f4@17 ~@7", L: "~@11 c4 f4@2 c4 eb4@2 d4 db4@2 c4@3 ~", M: "f4@8 ~ ab4 f4 db4",
  N: "c4@12 eb4@11 ~", O: "~@12 d5@2 bb4 ~@2 bb4 a4@2 a4 eb4@3", P: "f4", Q: "e4@3 eb4",
  R: "~@4 f4@2 f4@4 db4@2 f4@5 ~ eb4@6", S: "f4 ~", T: "~@6 ab4@4 bb4 ~@5 bb4@8", U: "~@2 f4 ab4@2 f4 bb4@3 g4@3",
  V: "f4@5 ~@3", W: "~@8 a4 ~@2 a4 c5@2 c5 b4 ~@2 bb4@2 a4@3 ~", X: "~@9 b3 c4 ~ f4 e4 ~ eb4 d4 ~ db4 c4 ~ a3 c4 ~",
  Y: "[f4@5 ~ [bb4,db5]@6 [g4,bb4]@3 ~@3 [g4,bb4]@3 ~ [ab4,c5]@65 ~@9]/4", // Bbm Gm Ab
})).s("gm_trumpet").gain(0.3).pan(0.9)

// other · muted trumpet
const muted_trumpet = note(`<
  ~ A B C D ~@3 E F G H I J K ~ L M N O P@2 ~@10 Q R@2 S T ~@3 U J V ~ W ~@3 X Y@4
>`.pickRestart({
  A: "~@4 c5@2 c5@4 ab4@2 c5@3 ~ eb5@8", B: "~@4 c5@2 c5@4 ab4@2 c5@3 ~ bb4@8",
  C: "~@4 c5@2 c5@4 ab4@2 c5@4 c5@2 c5@4 ab4 ~", D: "~@2 c5 c5@2 eb5@6 ~", E: "~@12 f5@2 d5 ~@2 d5 c5@2 [c5,d5] g4@2 ~",
  F: "f4@7 ~@2 ab4@2 f4", G: "ab4@2 c5 g4", H: "bb4@6 ~@2 ab4 ab4@2 f4", I: "ab4@4 ab4@2 ab4@3 ~ ab4@2 c5@3 ~ eb5@7 ~",
  J: "~@2 ab4 c5@2 ab4 c5@3 b4@3", K: "bb4@17 ~@7", L: "~@11 c5 f5@2 c5 eb5@2 d5 db5@2 c5@3 ~", M: "ab4@8 ~ c5 ab4 f4",
  N: "e4@12 g4@11 ~", O: "~@3 eb5 f5 ~ ab5 ~ f5 ~ c5 ab4 bb4 f4 ab4@4 ~ f4 ab4 ~ bb4 ~",
  P: "[f5 ~@2 eb5 ~ b4 ~ bb4 ab4 ~ bb4 f4 ~ ab4 ~@2 f4 ~ eb4@8 ~@22]/2", Q: "~@12 f5@2 d5 ~@2 d5 c5@2 a4 g4@3",
  R: "[ab4@7 g4]/2", S: "~@4 ab4@2 ab4@4 f4@2 ab4@5 ~ g4@6", T: "ab4 ~", U: "~@6 c5@4 db5 ~@5 eb5@8", V: "bb4@5 ~@3",
  W: "~@8 c5 ~@2 c5 eb5@2 eb5 d5 ~@2 db5@2 c5@3 ~", X: "~@9 b4 c5 ~ f5 e5 ~ eb5 d5 ~ db5 c5 ~ a4 f4 ~",
  Y: "[bb4@5 ~ f5@6 eb5@3 ~@3 eb5@3 ~ eb5@65 ~@9]/4",
})).s("gm_muted_trumpet").gain(0.5)

// other · alto sax
const alto_sax = note("<~@24 A B ~@6 C D@2 ~ E@2 ~@2 F G H ~ I ~@3 J K@4>".pickRestart({
  A: "~@7 c4@2 bb3 ab3 [f3,g3] bb3 ~ ab3 ~ g3 ~@2 f3 ~ e3@2 eb3", B: "db3 c3@21 ~@2",
  C: "~@12 f4@2 d4 ~@2 d4 c4@2 c4 g3@2 ~", D: "[ab3@41 ~@7]/2",
  E: "[~@5 c3@2 eb3 f3 ~ ab3 bb3@2 c4@2 ~ c4!2 db4@2 b3@2 ~ db4@2 c4@12 ~@11, ~@11 c4 ~@12]/2",
  F: "~@6 c4@4 db4 ~@5 eb4@8", G: "~@2 ab3 c4@2 ab3 c4@3 b3@3", H: "bb3@5 ~@3",
  I: "~@8 c4 ~@2 c4 eb4@2 eb4 d4 ~@2 db4@2 c4@3 ~", J: "~@9 b3 c4 ~ f4 e4 ~ eb4 d4 ~ db4 c4 ~ a3 f3 ~",
  K: "[bb3@5 ~ db4@6 bb3@3 ~@3 bb3@3 ~ c4@65 ~@9]/4",
})).s("gm_alto_sax").gain(0.62)

// other · clarinet
const clarinet = note("<~ A B C D ~@3 E F G H I J K ~ L M N O P ~@32>".pickRestart({
  A: "~@2 db4 db4@2 db4!2 ~ db4@4", B: "~@2 db4!2 ~ db4 db4@2 db4@4", C: "~@2 db4 db4@2 db4!2 ~ db4 db4@2 db4",
  D: "~@2 db4 db4@2 eb4@7", E: "~@12 c4@2 c4 ~@2 c4 c4@2 c4 c4@2 ~", F: "[bb3,db4]@17 ~ [db4,f4]@4 [bb3,db4]@2",
  G: "[bb3,db4]@2 [bb3,db4]!2", H: "[ab3,c4]@6 ~@2 c4 b3@2 ab3", I: "bb3@3 ~ bb3@2 bb3@4 bb3@2 bb3@3 ~ db4@7 ~",
  J: "~@4 ab3@2 c4@4 ab3@2 c4@6 b3@5 ~", K: "c4@3 ~", L: "~@11 c4 f4@2 c4 eb4@2 d4 db4@2 c4@4", M: "ab3@8 ~ c4 ab3 f3",
  N: "e3 g3", O: "ab3 db4", P: "c4",
})).s("gm_clarinet").gain(0.3).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!48 [x ~@5 x ~@4 x] ~@3>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~ [x!4]!49 ~@3>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!48 [~@3 x ~@5 x ~ x] ~@3>").gain(0.35)

stack(
  piano, bass, acoustic_guitar_nylon, electric_guitar_jazz, vibraphone, string_ensemble_1, french_horn, trumpet,
  muted_trumpet, alto_sax, clarinet, kick, snare, hihat
)

More by Alison Moyet