Strudelify

L-O-V-E

Natalie Cole

KeyF minorTempo160 bpm
0:00/0:00
// L-O-V-E — Natalie Cole
// 160 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 80 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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 B A B A B C D C D A B E F G H I J K ~ L M N O P ~ Q R S T@3 U V ~@2 W ~ X Y Z ~@2 AA AB AC AD AE AF AG AH ~ AI AJ ~
  AK AL AM ~ AN ~@4 AO AP AQ@2 AR ~@11
>`.pickRestart({
  A: "~@4 [d3,g3,b3]@3 ~@5 [e3,g3,b3]@11 ~", B: "[gb3,b3,d4]@11 ~ [e3,g3,b3]@11 ~",
  C: "~@4 [d3,a3,c4]@3 ~@5 [e3,a3,c4]@11 ~", D: "[gb3,a3,c4]@11 ~ [e3,a3,c4]@11 ~",
  E: "~@4 [b3,d4,f4]@2 ~@6 [b3,d4,f4]@11 ~", F: "[b3,d4,f4]@11 ~ [b3,d4,f4]@11 ~",
  G: "~@4 [g3,c4,e4]@2 ~@6 [g3,c4,e4]@11 ~", H: "[g3,c4,e4]@11 ~ [g3,c4,e4]@11 ~",
  I: "~@4 [g3,db4,e4]@2 ~@6 [g3,db4,e4]@11 ~", J: "[g3,db4,e4]@11 ~ [g3,db4,e4]@11 ~", K: "[gb3,a3,d4] ~@11",
  L: "~@4 [e4,b4,d5,g5] ~@7 [b4,d5,g5] ~@11, ~@6 e4 ~@5", M: "[e4,b4,g5] ~@11, d5 ~@23", N: "~@22 [gb3,a3,c4] ~",
  O: "~@6 b5@2 ~@2 d6@2 c6@3 b5@2 ~ c6 ~@3 a5 ~", P: "d5 ~@11", Q: "~@9 gb6 ~ g6 gb6@3 ~ d6@2 b5@3 ~ g5@2",
  R: "gb5@3 ~ d5@2 b4@2 ~@4 a4@5 ~ b4@2 ~@4", S: "d5@3 ~@6 e5@2 f5",
  T: "[d5@4 ~@2 b4@2 ~@4 a4@4 ~@2 gb5@2 ~@2 g5@14 ~@6 a5@3 ~ bb5@5 a5 ab5@2 g5@3 ~ e5@2 db5@3 ~ bb4@2 g4@3 ~@3]/3",
  U: "~@4 [d3,g3,b3]@2 ~@6 [e3,g3,b3]@3 ~@9", V: "[gb3,a3,c4]@3 ~@7 [gb3,a3,c4]@7 ~@7",
  W: "~@2 [ab4,ab5] ~@3 [ab4,ab5]@6", X: "~@4 [ab3,db4,f4]@2 ~@6 [ab3,db4,f4]@9 ~ [g3,db4,eb4]@2",
  Y: "~@18 eb6 ~ f6 eb6 ~ d6", Z: "db6 ~@3 c6 ~ bb5@3 ~ ab5@2 g5@3 ~ eb6 ~@7",
  AA: "~@4 ab6@2 eb6@2 f6@2 ab6@2 eb6@2 f6@2 ab6@2 eb6@2 f6@2 ab6 ~", AB: "bb6@2 f6 ab6 ~@8",
  AC: "~@4 [gb4,c5,f5,ab5]@2 ~@6 [gb4,c5,f5,ab5]@3 ~ [gb4,c5,f5,ab5]@2 ~@6", // Fm
  AD: "~@3 eb7 ~@2 eb7 ~ c7 bb6 ~ ab6 bb6 ~ ab6 f6 ~ eb6 f6 ~ eb6 c6 ~ bb5",
  AE: "c5 ~ bb4 ab4 ~ f4 ab4 ~ f4 eb4 ~ db4 eb4 ~ db4 bb3 ~ ab3 bb3 ~@5",
  AF: "~@3 [ab4,d5,g5,bb5] ~@4 [ab4,d5,g5,bb5] ~@3", AG: "[ab4,d5,g5,bb5] ~@11", AH: "[db5,f5,bb5,eb6] ~@7",
  AI: "~@9 [f4,db5,ab5]@2 f5", AJ: "~@4 [f4,eb5,ab5] ~@7 [f4,d5,ab5] ~@11",
  AK: "eb6@2 ~@4 d6@4 bb5 ~ db6@3 ~@3 c6@3 ~@3", AL: "~@18 [f5,db6,ab6]@4 eb6 ~",
  AM: "~@10 eb6 ~ ab6@3 ~ eb6 ~ ab6 ~@5", AN: "~@4 [f4,d5,ab5] ~@7 [f4,eb5,ab5] ~@11",
  AO: "~@4 [ab3,c4,f4]@3 ~@5 [ab3,c4,f4]@9 ~@3", AP: "[ab3,db4,f4]@7 ~@3 [g3,db4,f4]@12 ~@2",
  AQ: "[~@22 [a4,ab5,c6,gb6]@15 ~@3 [a4,ab5,c6,gb6]@7 ~]/2", AR: "[bb4,ab5,db6,f6] ~@7",
})).s("gm_piano").gain(0.35)

// bass · acoustic bass
const bass = note(`<
  A@6 B@3 C A D E F G H I J K ~ A L B M B N A O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK@2 BL@3
>`.pickRestart({
  A: "g2@11 ~ d2@11 ~", B: "a2@11 ~ d2@11 ~", C: "d3@8 ~@2 d3@2 d2@11 ~", D: "g2@10 d3@2 d2@5 ~ gb2@5 ~", E: "g2 d2",
  F: "g2@9 ~ g2@2 g2@4 ~@2 g2@6", G: "c2@12 g2@11 ~", H: "c3@11 ~ b2@5 ~ c3@5 ~", I: "a2@11 ~ e2@11 ~",
  J: "a1@9 ~ a1 ~ b1@5 ~ db2@5 ~", K: "d2 ~@7", L: "g2@9 ~ g2@2 d2@11 ~", M: "a2@9 ~ a2@2 d2@11 ~",
  N: "a2@9 ~ d3@2 d2@6 d3@6", O: "g2@9 ~ d3@2 d2@6 d3@5 ~", P: "g2@11 ~ d3@11 ~", Q: "g2@8 ~@2 g2@2 d2@5 ~ g2@5 ~",
  R: "c2@11 ~ g2@5 ~ c2@5 ~", S: "db2@11 ~ db2@11 ~", T: "d2@11 ~ e2@11 ~", U: "a2@6 d2@4 ~ d2",
  V: "g2@5 ~ a2@5 ~ bb2@5 ~ bb2@5 ~", W: "eb2@5 ~ bb2@5 ~ d2@6 gb2@5 ~", X: "ab2@6 c2@6 bb1@5 ~ bb2@5 ~",
  Y: "b2@5 ~ c3@6 b2@6 f2@6", Z: "bb2@5 ~ db2@6 f2@6 bb2@5 ~", AA: "eb2@6 e2@6 f2@5 ~ g2@5 ~",
  AB: "bb2@6 c3@6 db3@6 eb3@5 ~", AC: "f3@5 ~ eb2@5 ~ f2@6 g2@6", AD: "ab2@5 ~ c3@6 bb2@5 ~ bb2@6",
  AE: "b2@5 ~ b2@6 c3@6 eb2@6", AF: "ab2 gb2 f2 e2", AG: "eb2 bb1 ab1 ab2", AH: "db2 ab2 bb2 c3",
  AI: "db3@5 ~ ab2@6 c2@6 b1@5 ~", AJ: "bb1@6 e2@5 ~ f2@6 c3@6", AK: "bb2@3 d2@3 f2@3 c3 db3 d3", AL: "eb3 ~@11",
  AM: "~@12 g2@2 eb2@2 bb1@2 a1@5 ~", AN: "ab1 c2 bb1 db2", AO: "c2@5 ~ c2@5 ~ b1@6 b1@6",
  AP: "bb1@6 f2@6 bb2@6 d2@5 ~", AQ: "eb2@5 ~ e2@6 f2@5 ~ a2@5 ~", AR: "bb2@5 ~ c3@5 ~ db3@5 ~ d3@5 ~",
  AS: "eb3 e3 f3 g3", AT: "ab3@4 eb3@2 ab2@6 bb2@5 ~ bb2@5 ~", AU: "b2@6 b2@5 ~ c3@5 ~ eb2@5 ~",
  AV: "ab1@6 bb1@5 ~ c2@5 ~ db2@6", AW: "eb2 db2 c2 ab1", AX: "db2@6 f1@5 ~ ab1@6 d2@5 ~",
  AY: "f2@6 ab2@6 b2@5 ~ ab2@5 ~", AZ: "eb2@6 e2@5 ~ f2@5 ~ f1@5 ~", BA: "bb1@5 ~ bb1@5 ~ eb2@5 ~ g2@5 ~",
  BB: "ab2@5 ~ eb2@5 ~ ab2@5 ~ c3@5 ~", BC: "f2@5 ~ c3@5 ~ f2@3 ~ f1@7 ~", BD: "bb1@5 ~ f2@6 bb2@5 ~ db2@6",
  BE: "eb2@5 ~ bb2@5 ~ g2@5 ~ eb2@6", BF: "ab2@5 ~ eb2@5 ~ ab2@5 ~ gb2@5 ~", BG: "f2@5 ~ c2@5 ~ f2@4 b1@8",
  BH: "bb1@6 e2@6 f2@5 ~ db2@5 ~", BI: "eb2@5 ~ e2@5 ~ f2@5 ~ g2@6", BJ: "ab2@5 ~ ab2@6 bb2@5 ~ bb2@6",
  BK: "[c3@4 ab2@2 c2@6 db2@5 ~ db2@3 ~ b1@8 gb2@4 b1@2 db2@3 ~@3 eb2@3 ~@3]/2", BL: "[~@10 g1@2 ~@6 ab1@35 ~@19]/3",
})).s("gm_acoustic_bass").gain(0.4)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B A B C D E@4 C D F G H I J K L ~ C D E@4 C D F@2 I M D N O P ~@44
>`.pickRestart({
  A: "[g3,b3,d4]@2 ~ [g3,b3,d4] ~@2 [g3,b3,d4]@2 ~ [g3,b3,d4] ~@2", // G
  B: "[g3,b3,d4]@2 ~ [g3,b3,d4] ~@2 [g3,b3,e4]@2 ~ [g3,b3,e4] ~@2", // G Em
  C: "[g3,b3,d4]@5 ~ [g3,b3,d4]@2 ~@4 [g3,b3,d4]@5 ~ [g3,b3,d4]@2 ~@4", // G
  D: "[g3,b3,d4]@5 ~ [g3,b3,d4]@2 ~@4 [g3,b3,e4]@5 ~ [g3,b3,e4]@2 ~@4", // G Em
  E: "[gb3,c4,d4]@5 ~ [gb3,c4,d4]@2 ~@4 [gb3,c4,d4]@5 ~ [gb3,c4,d4]@2 ~@4", // D7
  F: "[f3,b3,d4]@5 ~ [f3,b3,d4]@2 ~@4 [f3,b3,d4]@5 ~ [f3,b3,d4]@2 ~@4", // Bdim
  G: "[f3,b3,d4]@5 ~ [f3,b3,d4]@2 ~@4 [f3,b3,d4]@4 ~@2 [f3,b3,d4]@2 ~@4", // Bdim
  H: "[e3,g3,c4]@4 ~@2 [e3,g3,c4]@2 ~@4 [e3,g3,c4]@5 ~ [e3,g3,c4]@2 ~@4", // C
  I: "[e3,g3,c4]@5 ~ [e3,g3,c4]@2 ~@4 [e3,g3,c4]@5 ~ [e3,g3,c4]@2 ~@4", // C
  J: "[e3,g3,db4]@2 ~ [e3,g3,db4] ~@2 [e3,g3,db4]@2 ~ [e3,g3,db4] ~@2", // Dbdim
  K: "[e3,g3,db4]@5 ~ [e3,g3,db4]@2 ~@4 [e3,g3,db4]@4 ~@2 [e3,g3,db4]@2 ~@4", L: "[gb3,a3,c4] ~@11",
  M: "[e3,bb3,db4]@5 ~ [e3,bb3,db4]@2 ~@4 [e3,bb3,db4]@5 ~ [e3,bb3,db4]@2 ~@4", // Bbdim
  N: "[gb3,a3,d4]@5 ~ [gb3,a3,d4]@2 ~@4 [gb3,a3,c4]@5 ~ [gb3,a3,c4]@2 ~@4", // D Gbdim
  O: "[g3,b3,d4]@5 ~ [g3,b3,d4]@2 ~@4 [f3,a3,d4]@5 ~ [f3,a3,d4]@2 ~@4", // G Dm
  P: "[g3,bb3,d4]@5 ~ [g3,bb3,d4]@2 ~@4 [gb3,a3,c4]@5 ~ [gb3,a3,c4]@2 ~@4", // Gm Gbdim
})).s("gm_acoustic_guitar_nylon").gain(0.25).pan(0.4)

// other · vibraphone
const vibraphone = note("<A B A B C D C D C D C D E F E F E F G ~ C D C D C D C D E H I J C K L ~@45>".pickRestart({
  A: "d4 e4", B: "gb4 e4", C: "d4@11 ~ e4@11 ~", D: "gb4@11 ~ e4@11 ~", E: "g4@11 ~ a4@11 ~", F: "b4@12 a4@11 ~",
  G: "d4 ~@7", H: "b4@11 ~ a4@11 ~", I: "g4@12 a4@11 ~", J: "bb4@11 ~ g4@11 ~", K: "gb4@11 ~ e4@12", L: "d4@23 ~",
})).s("gm_vibraphone").gain(0.3).pan(0.6)

// chords · alto sax
const alto_sax = note(`<
  ~@34 A B ~ C D E ~ F D G H@4 I@2 J@2 K L M ~ N O P Q R S@2 T U M V@2 W X@3 Y Z AA AB AC AD@3
>`.pickRestart({
  A: "~ [bb3,d4]", B: "[eb4,g4]@12 [c4,f4]@11 ~", C: "[eb4,f4] ~@4 [d4,f4] ~@6", D: "~@11 [db4,f4]", E: "[db4,f4] ~@11",
  F: "[db4,f4] ~@4 [db4,f4] ~@6", G: "[d4,f4] ~@11",
  H: "[~@6 f4@3 ~@3 eb4@4 ab3@14 f4@3 ~ eb4@20 f4@3 ~@3 ab3@25 ~@11]/4",
  I: "[~@6 e4@3 ~@3 f4@3 ~ ab4@18 ~ ab4 g4@4 f4 ~ bb4@3 ~@3]/2", J: "[~@5 d4@12 ~@7, eb4@47 ~]/2",
  K: "~@3 [eb4,f4]@2 [eb4,f4] [db4,f4]@3 [db4,f4]@2 [db4,f4]", // Ebsus2 Db
  L: "[eb4,f4]@6 [eb4,f4]@4 [d4,f4]@8 ~ d4@3 ~ f4, ~@9 f4@2 d4", // Ebsus2 Dm
  M: "[db4,f4]@3 [db4,f4]@2 [db4,f4] [db4,f4]@3 [db4,f4]@2 [db4,f4]", // Db
  N: "~@3 [db4,f4]@2 [db4,f4] [db4,f4]@3 [db4,f4]@2 [db4,f4]", // Db
  O: "[db4,f4]@6 [db4,f4]@4 [db4,f4]@8 [db4,f4]@3 ~ f4@2, ~@7 db4", // Db
  P: "[eb4,f4]@3 [eb4,f4]@2 [eb4,f4] [db4,f4]@3 [db4,f4]@2 [db4,f4]", Q: "[d4,f4]@3 [d4,f4]@2 [f4,ab4]@7",
  R: "eb4@6 f4 ~", S: "[ab4@7 ~]/2", T: "d4 eb4 e4 f4 gb4 g4 ab4 a4 bb4 b4 ~@2",
  U: "[f4,ab4]@4 [f4,ab4] ~ [f4,ab4]@4 [f4,ab4]@2 ~@10 [eb4,f4]@2", V: "[[eb4,f4]@17 ~@5 eb4@8 f4@4 eb4@2 ab4@3 ~@9]/2",
  W: "[f4,ab4]@10 [db4,f4]@3 ~@9 [db4,f4]@2", // Fm Db
  X: "[[db4,f4]@3 ~@3 [db4,f4]@4 [db4,f4]@2 [db4,f4]@3 ~@3 [db4,f4]@4 [eb4,f4]@20 ~@4 eb5@8 b4@4 c5@2 ab4@3 ~@9]/3", // Db Ebsus2
  Y: "[db4,f4]@3 ~@3 [db4,f4]@4 [db4,f4]@2 [db4,f4]@3 ~@3 [db4,f4]@4 [db4,f4]@2", // Db
  Z: "[db4,f4]@3 ~@3 [db4,f4]@4 [db4,f4]@2 [db4,f4]@3 ~@3 [db4,f4]@3 ~@3", AA: "~@6 eb4@3 f4@2 eb4",
  AB: "ab4@3 ~@7 eb4@8 f4@4 b4@2", AC: "~@4 e4 ~ e4 ~", AD: "[~@10 [d4,g4]@3 ~@5 [eb4,ab4]@53 ~]/3",
})).s("gm_alto_sax").gain(0.3).pan(0.4)

// chords · tenor sax
const tenor_sax = note(`<
  ~@34 A B ~ C D E ~ F D G H@4 I@2 J@2 K L M ~ N O P Q R S@2 T U V W@2 X Y@3 Z AA AB AC AD AE@3
>`.pickRestart({
  A: "~ [f3,a3]", B: "[bb3,d4]@12 [gb3,a3]@11 ~", C: "[ab3,c4] ~@4 [ab3,b3] ~@6", D: "~@11 [ab3,bb3]",
  E: "[g3,bb3] ~@11", F: "[g3,bb3] ~@4 [g3,bb3] ~@6", G: "[ab3,b3] ~@11",
  H: "[~@6 f3@3 ~@3 eb3@4 ab2@14 f3@4 eb3@20 f3@3 ~@3 ab2@25 ~@11]/4",
  I: "[~@6 e3@3 ~@3 f3@3 ~ ab3@18 ~ ab3 g3@4 f3@2 bb3@4 ~@2]/2", J: "[~@3 db4@5]/2",
  K: "~@3 [ab3,c4]@2 [ab3,c4] [ab3,bb3]@3 [ab3,bb3]@2 [ab3,bb3]", // Ab Absus2
  L: "[ab3,c4]@3 [ab3,c4]@2 [ab3,b3]@4 [ab3,b3]@2 [ab3,b3]", // Ab Abm
  M: "[ab3,bb3]@3 [ab3,bb3]@2 [ab3,bb3] [ab3,bb3]@3 [ab3,bb3]@2 [g3,bb3]", // Absus2 Gm
  N: "~@3 [ab3,bb3]@2 [ab3,bb3] [ab3,bb3]@3 [ab3,bb3]@2 [ab3,bb3]", // Absus2
  O: "[g3,bb3]@3 [g3,bb3]@2 [g3,bb3]@4 [g3,bb3]@2 [g3,bb3]", // Gm
  P: "[ab3,c4]@3 [ab3,c4]@2 [ab3,c4] [ab3,bb3]@3 [ab3,bb3]@2 [ab3,bb3]", Q: "[ab3,b3]@3 [ab3,b3]@2 [c4,eb4]@7",
  R: "eb3@6 f3 ~", S: "[ab3@7 ~]/2", T: "d3 eb3 e3 f3 gb3 g3 ab3 a3 bb3 b3 ~@2",
  U: "[c4,eb4]@2 c4 [c4,eb4]@2 [c4,eb4] ~@5 [ab3,c4], ~@4 eb4 ~@19", // Cm Ab
  V: "[ab3,bb3]@3 [ab3,bb3]@2 [ab3,bb3] [g3,bb3]@3 [g3,bb3]@2 [g3,bb3]", // Absus2 Gm
  W: "[[ab3,c4]@17 ~@5 eb3@8 f3@4 eb3@2 ab3@3 ~@9]/2", X: "[bb3,db4]@10 [ab3,bb3]@3 ~@9 [ab3,bb3]@2",
  Y: "[[g3,bb3]@3 ~@3 [g3,bb3]@4 [g3,bb3]@2 [g3,bb3]@3 ~@3 [g3,bb3]@4 [ab3,c4]@20 ~@4 eb4@8 b3@4 c4@2 ab3@3 ~@9]/3", // Gm Ab
  Z: "[ab3,db4]@3 ~@3 [ab3,db4]@4 [ab3,db4]@2 [ab3,db4]@3 ~@3 [ab3,db4]@4 [ab3,db4]@2", // Db5
  AA: "[g3,db4]@3 ~@3 [g3,db4]@4 [g3,db4]@2 [g3,db4]@3 ~@3 [g3,db4]@3 ~@3", AB: "~@6 eb3@3 f3@2 eb3",
  AC: "ab3@3 ~@7 eb3@8 f3@4 b3@2", AD: "~@4 e3 ~ e3 ~", AE: "[~@10 [a3,b3]@3 ~@5 [bb3,c4]@53 ~]/3",
})).s("gm_tenor_sax").gain(0.3).pan(0.4)

// other · baritone sax
const baritone_sax = note("<~@34 A B ~ C D E ~ C D E ~@8 F G H ~ F G H I ~@4 J K L ~ M N@2 ~ O P ~@3 Q@3>".pickRestart({
  A: "~ d3", B: "g3@12 f3@11 ~", C: "f3 ~@4 f3 ~@6", D: "~@11 f3", E: "f3 ~@11", F: "~@3 f3@2 f3 f3@3 f3@2 f3",
  G: "f3@3 f3@2 f3@4 f3@2 f3", H: "f3@3 f3@2 f3 f3@3 f3@2 f3", I: "f3@6 f3@4 ab3@13 ~", J: "ab3@2 ab3 ab3@2 ab3 ~@5 f3",
  K: "f3@6 f3@4 f3@2 f3@5 ~ f3@3 ~@2 f3", L: "f3@17 ~@7", M: "ab3@10 f3@3 ~@9 f3@2",
  N: "[f3@3 ~@3 f3@4 f3@2 f3@3 ~@3 f3@4 f3@20 ~@6]/2", O: "f3@3 ~@3 f3@4 f3@2 f3@3 ~@3 f3@4 f3@2",
  P: "f3@3 ~@3 f3@4 f3@2 f3@3 ~@3 f3@3 ~@3", Q: "[~@10 f3@3 ~@5 gb3@53 ~]/3",
})).s("gm_baritone_sax").gain(0.3).pan(0.3)

// other · muted trumpet
const muted_trumpet = note("<~@35 [g5@4 g5 ~ g5@3 ~ g5@7 ~ e5@4 ~@2] ~@44>").s("gm_muted_trumpet").gain(0.5).pan(0.6)

// other · brass section
const brass_section = note("<~@36 A ~ B@3 ~ C D ~@8 E F G H G H I J ~@4 K L@2 ~ M N@3 M ~@7>".pickRestart({
  A: "~@6 [b3,b4]@4 ~@2 [c4,c5]@4 [eb3,eb4]@3 ~@5", B: "~@6 [c4,c5]@3 ~@3 [db4,db5]@4 [eb3,eb4]@3 ~@5",
  C: "~@6 [b3,b4]@3 ~@3 [c4,c5]@4 ~ eb4@3 ~@4, ~@16 eb3@3 ~@5", D: "~@6 [b3,b4]@3 ~@3 [c4,c5]@4 [eb4,eb5]@3 ~@5",
  E: "~@6 b3 ~", F: "c4@4 eb3@3 ~@17", G: "~@6 c4 ~", H: "db4@4 eb3@3 ~@17", I: "~@6 db4 ~",
  J: "d4@4 ab3@3 ~@11 [ab3,ab4]@3 ~@3", K: "~@6 [b3,b4]@3 ~@3 [c4,c5]@3 ~ [eb3,eb4]@3 ~@5",
  L: "[~@22 [eb4,eb5]@8 [f4,f5]@4 [eb4,eb5] ~ [ab4,ab5]@3 ~@9]/2", M: "~@6 [b3,b5]@3 ~@3 [c4,c6]@3 ~ [eb3,eb5]@3 ~@5",
  N: "[~@22 eb5@8 f5@4 eb5 ~ ab5@3 ~@7 gb5@8 ab5@4 gb5 ~ b5@3 ~@9]/3",
})).s("gm_brass_section").gain(0.5).pan(0.6)

// chords · trumpet
const trumpet = note("<~@43 A@5 B@2 C ~ D E F G H G D I J K L@2 ~@9 M@4 N@3>".pickRestart({
  A: "[~@22 bb4@50 ab4@36 ~@4 [ab4,eb5]@3 ~@5, ~@11 eb5@43 ~@6]/5", B: "[f4,c5]/2", C: "[g4,eb5] ~@7",
  D: "~@6 [bb4,f5]@2 [bb4,f5] ~@3", E: "~@3 [c5,f5]@2 b4 ~@6, ~@10 f5 ~@13", F: "~@12 [bb4,f5]@4 [bb4,f5] ~@7",
  G: "~@3 [bb4,f5]@2 [bb4,f5] ~@6", H: "~@6 [bb4,ab5]@2 bb4 ~@3, ~@16 f5 ~@7",
  I: "~@6 [b4,f5]@4 [c5,f5]@2 ~@6 ab4@3 ~@3", J: "[gb4,c5] [ab4,db5] [ab4,eb5] [bb4,f5]",
  K: "c5@3 bb4@3 [ab4,eb5]@2 [eb4,ab4] ~@3, gb5 ~, ~@6 f5 ~@17", L: "[[ab4,db5]@9 ~ [ab4,db5]@2 ~@6 [b4,f5]@30]/2",
  M: "[~@22 [bb4,eb5]@8 [bb4,f5]@4 [bb4,eb5]@2 [db5,ab5]@3 ~@7 [bb4,eb5]@8 [bb4,f5]@4 [bb4,eb5]@2 [db5,ab5]@3 ~@7 [gb5,b5]@8 [eb5,ab5]@4 [eb5,ab5]@2 [e5,b5]@2 ~@4 [e5,b5]@2 ~@4]/4", // Eb5 Bb5 Eb5 Db5 Eb5 Bb5 Eb5 Db5 …
  N: "[~@11 b5@3 ~@4 [eb5,c6]@53 ~, ~@10 d5@3 ~@59]/3", // Cm
})).s("gm_trumpet").gain(0.45).pan(0.6)

// chords · trumpet
const trumpet_2 = note("<~@43 A@5 B@2 C ~ D E F G F H F I J K L@2 ~@9 M@4 N@3>".pickRestart({
  A: "[~@22 gb4@50 f4@36 ~@4 [f4,c5]@3 ~@5, ~@11 c5@43 ~@6]/5", B: "[[d4,ab4]@47 ~]/2", C: "[f4,bb4] ~@7",
  D: "~@6 [ab4,db5]@2 ab4 ~@3, ~@16 db5 ~@7", E: "~@3 [ab4,eb5]@2 [ab4,d5] ~@6", F: "~@6 [ab4,db5]@2 [ab4,db5] ~@3",
  G: "~@3 [g4,db5]@2 [g4,db5] ~@6", H: "~@3 [g4,db5]@2 db5 ~@6, ~@10 g4 ~@13", I: "~@3 [ab4,d5]@2 [ab4,eb5] ~@6",
  J: "[eb4,ab4] [f4,bb4] [gb4,c5] [ab4,db5]", K: "[bb4,eb5]@3 [ab4,db5]@3 [gb4,c5]@2 [c4,gb4] ~@3",
  L: "[[f4,bb4]@9 ~ [f4,bb4]@2 ~@6 [ab4,d5]@30]/2", // Bb5 Abdim
  M: "[~@22 [g4,c5]@8 [ab4,db5]@4 [g4,c5]@2 [bb4,f5]@3 ~@7 [g4,c5]@8 [ab4,db5]@4 [g4,c5]@2 [c5,f5]@3 ~@7 [eb5,ab5]@8 gb5@4 [b4,gb5]@2 [db5,ab5]@2 ~@4 [db5,g5]@2 ~@4, ~@39 b4 ~@8]/4", // C5 Db5 C5 Bb5 C5 Db5 C5 F5 …
  N: "[~@10 [a4,g5]@3 ~@5 [bb4,ab5]@53 ~]/3", // A7 Bb7
})).s("gm_trumpet").gain(0.45).pan(0.6)

// chords · trombone
const trombone = note(`<
  ~@20 A@2 B@2 C@2 D@2 E@2 F@2 G H I@2 ~@7 J@5 K@2 L ~ M N O P O P Q R S T U@2 ~@2 V@2 W X@3 Y Z@4 AA@3
>`.pickRestart({
  A: "b3/2", B: "[c4@15 ~]/2", C: "c4/2", D: "[b3@15 ~]/2", E: "f4/2", F: "[e4@11 ~]/2", G: "b3", H: "c4@23 ~",
  I: "[d4@15 ~]/2", J: "[~@22 [ab3,eb4]@86 ~@4 [ab3,eb4]@3 ~@5]/5", K: "[[ab3,d4]@47 ~]/2", L: "[g3,db4] ~@7",
  M: "~@6 b3 ~", N: "c4@4 eb3@3 ~@17", O: "~@6 c4 ~", P: "db4@4 eb3@3 ~@17", Q: "~@6 db4 ~",
  R: "d4@4 ab3@3 ~@11 ab3@3 ~@3", S: "[gb3,c4]@6 [ab3,db4]@5 ~ [ab3,eb4]@6 [bb3,f4]@6",
  T: "[c4,gb4]@6 [bb3,f4]@6 [ab3,eb4]@4 ab3 eb3@2 ~@5", U: "[[bb3,f4]@9 ~ [bb3,f4]@2 ~@6 [b3,f4]@30]/2",
  V: "[~@11 [a3,eb4]@7 ~@2 [a3,eb4]@4]/2", W: "[ab3,db4] ~@7",
  X: "[~@22 [ab3,eb4]@19 ~@5 [c4,gb4]@14 ~@4 [c4,gb4]@7 ~]/3", Y: "[bb3,f4] ~@7",
  Z: "[~@22 [g3,c4]@7 ~ ab3@4 g3@2 [ab3,db4]@3 ~@7 [g3,c4]@8 [ab3,db4]@4 [g3,c4]@2 [ab3,db4]@4 ~@6 [ab3,eb4]@8 eb4@4 [ab3,eb4]@2 [ab3,e4]@3 ~@3 [bb3,e4]@3 ~@3, ~@5 db4 ~@10, ~@34 c4 ~@43 ab3@2 ~@16]/4", // C5 Db5 C5 Db5 C5 Db5 Ab5 Dbm …
  AA: "[~@10 [g3,e4]@3 ~@5 [gb3,f4]@53 ~]/3", // C Gbmaj7
})).s("gm_trombone").gain(0.45).pan(0.6)

// chords · trombone
const trombone_2 = note("<~@43 A@3 B@2 C@2 D ~@9 E F G@2 ~@2 H@2 I J@3 K L@4 M@3>".pickRestart({
// … 59 more lines

More by Natalie Cole