Strudelify

With You I'm Born Again

Billy Preston

KeyE♭ minorTempo84 bpm
0:00/0:00
// With You I'm Born Again — PRESTON BILLY
// 84 bpm, 3/4, key D# minor. 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: Full arrangement: all 91 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(84/3)

// 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(`<
  ~@39 A ~@2 B C D E F G H I J K@2 L@2 M N@2 O@2 P Q@5 R S@2 T U@5 V W X Y Z AA AB AC AD@8
>`.pickRestart({
  A: "~ f6@10 bb5@10 ~@11", B: "~@4 ab3@11 ~, ~@3 eb3@27 ~@2", C: "~@8 g3@21 ~@3, ~@3 eb3@27 ~@2",
  D: "~@4 f3@11 ~, ~@3 eb3@27 ~@2", E: "~@9 g3@21 ~@2, ~@3 eb3@27 ~@2", F: "~@9 ab3@23, ~@3 eb3@29",
  G: "~@9 g3@23, ~@4 eb3@27 ~", H: "~@5 f3@11, ~@4 eb3@27 ~", I: "~@10 g3@21 ~, ~@5 eb3@27",
  J: "~@15 [bb4,db5]@5 ~ eb5@11", K: "[~@20 eb5@3 f5@2 ~ gb5@2 ab5@3 bb5@33]/2",
  L: "[~@7 db5 ~ db6@5 bb5@2 ~ ab5@3 eb5@2 f5@3 db5@2 bb4@3 ab4@27 ~@7]/2", M: "~@3 bb4@2 db5@2 ~ eb5@15 ~@9",
  N: "[~@4 ab5 ~ f5 ~ eb5@4 ~ bb5@5 f5@6 bb4@3 ab4@2 bb4@26 ~@9, ~@3 bb5@2 g5@2 ~@57]/2",
  O: "[~@14 eb4@2 f4@3 gb4@2 ab4@3 bb4@3 b4@3 db5@25 ~ bb4@2 ~ b4@2 db5@2 ~]/2", P: "eb5@2 ~ db5@21 ab4@3 bb4@2 b4@2 ~",
  Q: "[db5@2 ~ db5@22 ~ b4 ~ db5 eb5@18 ~@3 eb5@2 ~ db5@3 b4@2 bb4@3 eb5@16 bb4@2 eb5@2 ~ eb5@5 bb4@3 eb5@2 ab5@3 eb5@2 ~ bb4@5 eb5@16 bb4@2 ~ eb5@2 g5@3 eb5@3 bb4@5 g4@5 f4@5 ~ eb4@5 bb3@5 ~@4]/5",
  R: "~@2 ab3@2 b3@3 eb4@6 gb4@5 ab4@5 bb4@5 ~@4",
  S: "[~@2 bb3@3 db4@3 f4@2 ab4@2 ~ bb4@3 ab4@2 f4@5 ~ db4@5 b3@6 eb4@5 gb4@5 bb4@6 ab4@5 gb4@5 ~ bb3@2]/2",
  T: "db4@3 f4@3 ab4@2 bb4@11 ab4@3 ~@3 bb4@5 b3@2, ~@25 ab4 ~@6",
  U: "[~ eb4@2 gb4@3 ab4@3 b4@5 db5@5 ~ eb5@5 db5@5 ~@8 ab4@3 bb4@11 ab4@5 bb4@5 ~@8 e4@13 ~ ab4@6 ~@10 ab4@5 ~ b4@5 db5@5 ~ eb5@5 e5@5 db3@3 e3@3 ab3@3 db4@3 eb4@2 e4@3 gb4@3 ab4@3 db2 [ab2,b2] [db3,e3] [ab3,b3] db4 [e4,ab4] b4 db5 [e5,ab5] ~, ~@30 bb3@6 f4@5 ~@24 b3@24 ~@6 [db4,e4]@17 ~@48, ~@33 db4@5 ~@24 ab3@26 ~@65 gb3@2 ~@5, ~@17 eb4@4 ~@19]/5", // Abm Dbm Abm E Dbm
  V: "~@21 g4@5 b4@5 ~, e3@13 ~@3, ~@5 g3@21 ~@6, ~@11 b3@16 ~@5, ~ e4",
  W: "~@16 gb4@5 a4@5 ~ b4@5, gb3, ~@5 b3@27, ~@5 d4@11",
  X: "~@16 g4@5 b4@5 ~ g4@5, g3@29 ~@3, ~@5 c4@24 ~@3, ~@11 e4@19 ~@2",
  Y: "~@16 gb4@5 a4@5 ~ b4@5, gb3@29 ~@3, ~@5 b3@27, ~@11 d4@21", Z: "~@16 g4@5 a4@5 ~ b4@5, a3, ~@5 c4@27, ~@11 e4@21",
  AA: "~@16 gb4@5 ~ a4@5 gb4@5, gb3@27 ~@5, ~@5 b3@27, ~@11 d4@11 eb4@10",
  AB: "~@17 e4@5 g4@6 a4@4, e3@15 ~, ~@6 g3@25 ~, ~@11 b3@21", AC: "~@19 e4@6 g4@6 a4, ~ e3@15, ~@7 g3@25, ~@13 b3@19",
  AD: "[~@6 e4@33 ~@4 gb4@31 ~@72 b5@4 ~@2 [b3,e4]@59 ~@9 [b4,e5]@23 ~@13, ~@3 g3@34 ~@4 [a3,b3]@37 ~@7 a2@24 b3@24 e5@6 a5@10 ~@107, ~@4 b3@34 ~@53 b2@24 e4@34 ~ e3@62 ~@44, ~@5 c4@34 ~@3 e4@37 ~@18 e3@24 a4@28 ~@2 ab3@60 ~@45, ~@103 a3@24 b4@22 ~@69 ab4@24 ~@14]/8", // E5 Asus2
})).s("gm_piano").gain(0.25).pan(0.3)

// bass · fretless bass
const bass = note("<~@41 A@6 B@2 C@8 D@8 E@7 F@3 G H I H J K L@3 ~ M@5 ~>".pickRestart({
  A: "[~@29 eb2@27 eb2@5 ~ eb2@10 eb2@16 eb2@2 ~@4 eb2@24 ~@3 eb2@2 ~@3 eb2@21 bb2@5 ~ bb1@5 eb2@27 eb2@2 ~@3 eb2@2]/6",
  B: "[~@9 eb2@16 bb2@5 ~ eb2@27 eb2@2 ~@3 eb2]/2",
  C: "[~@21 bb2@10 eb2@26 ~ eb2@5 bb1@23 ~@3 bb1@5 ~ b1@23 eb2@2 ~ gb2@2 ~ b1@2 bb1@21 ~@6 bb1@5 ab1@26 ab1@5 ~ bb1@21 bb2@5 bb1@5 eb2@24 ~@3 eb2@2 ~@3 eb2@3]/8",
  D: "[~@13 eb3@2 ~ f3@2 ~ g3@10 ~ eb2@16 bb2@5 eb2@5 bb1@5 ~ bb1@26 bb1@5 b1@24 gb2@2 ~ eb2@2 ~ b1@2 bb1@26 ~ bb1@5 ab1@26 ~ ab1@2 a1@2 ~ bb1@21 bb2@5 bb1@5 eb2@26 ~ eb2@5 eb2@4]/8",
  E: "[~@7 bb1@10 ~ g1@10 ab1@21 ~ ab1@5 a1@5 ~ bb1@8 bb1@2 ~ bb1@16 bb2@5 b1@10 ~ b2@10 ~ b1@5 b1@5 ~ bb1@8 bb1@2 bb1@10 ~ bb2@10 ~ ab1@8 ab1@2 ~ ab1@8 ~@3 ab1@5 ab1@2 ~ a1@2 bb1@5 ~@3 bb1@2 ~ bb1@10 ~ bb2@5 bb1@5 e2@2]/7",
  F: "[~@4 b2@5 gb3@10 ~ eb2@10 ~ db2@5 ab2@5 ~ e3@16 ab2@5 db2@8 ~ db2@3 db2@8 ~@2 db2@5 ~ eb2@5]/3",
  G: "e2@26 e2@5 ~", H: "b1@21 gb2@5 ~ b1@5", I: "c2@21 c2@2 ~ g2@2 ~ e2@2 c2@2 ~", J: "a1@21 a1@5 ~ bb1@5",
  K: "b1@8 b1@2 ~ b1@13 ~@3 b1@5", L: "[e2@27 ~ e2@3 eb2@3 d2@35 ~@27]/3", M: "[~@15 b1@72 ~ e2@70 ~@2]/5",
})).s("gm_fretless_bass").gain(0.4)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@50 A B C D E F G@6 H@3 I@7 J@3 K L M N O P Q R@2 ~ S@4 ~@2>".pickRestart({
  A: "~@10 [bb3,eb4]@8 ~@3 [eb4,gb4]@11", B: "~@10 [bb3,db4]@8 ~@2 [db4,f4]@11 ~",
  C: "~@9 [b3,eb4]@8 ~@3 [eb4,gb4]@11 ~", D: "~@9 db4@8 ~@2 [f4,ab4]@11 ~@2, ~@9 bb3@5 ~@18", E: "~@9 [b3,eb4]@21 ~@2",
  F: "~@13 [b4,eb5]@5 ~ [bb4,db5]@11 ~@2", // B Bbm
  G: "[~@19 bb4@8 ~@2 [eb4,g4,bb4]@27 ~@22 gb4@5 bb4@5 gb4@5 ~@11 f4@5 ab4@5 ~ f4@5 db4@5 ~@16 gb4@5 ~ bb4@5 gb4@5 ~@11 f4@5 ab4@5 ~@6 db4@5 ab3@3, ~@8 eb4@19 ~@35 gb3@29 ~@34 gb3@32 bb3@26 ~@9, ~@13 ab4@13 ~@41 bb3@24 ~@3 bb3@26 ~@11 b3@27 ~@4 db4@16 ~@14, ~@72 eb4@21 ~@6 db4@16 ~@21 eb4@21 ~@21 f4@11 ~@3]/6", // Eb
  H: "[~@8 eb4@5 ~@11 b3@5 ~@16 ab4@5 c5@5 ab4@5 ~@16 ab4@5 ~ bb4@5 ab4@5 g4@4, ~@2 b3@16 eb4@11 bb3@29 ~@2 bb3@29 ~@7, ~@13 gb4@16 ~@5 eb4@26 ~@6 eb4@24 ~@6, ~@39 f4@21 ~@11 f4@19 ~@6]/3",
  I: "[~@12 f4@3 ~@3 g4@5 bb4@5 ~@17 gb4@5 ab4@5 gb4@5 ~@17 ab4@5 bb4@5 ~ ab4@5 ~@16 gb4@5 ~ bb4@5 gb4@5 ~@11 f4@5 ~ [f4,bb4]@5 ab4@3 gb4@3 eb4@2 db4@3 ~@16 gb4@5 ~ ab4@5 gb4@5 ~@16 ab4@5 ~ bb4@5 ab4@5 ab3@2, ~@2 g3@24 ~@2 ab3@27 ~@17 f4@22 ~@10 eb4@22 ~@5 db4@24 ~@14 eb4@22 ~@5 db4@27 ~, ~@7 bb3@19 ~@8 b3@27 bb3@32 gb3@32 ~@33 ab3@32 ~@11 f4@21 ~@2, ~@12 eb4@16 ~@11 eb4@22 ~@5 db4@27 ~@6 b3@27 bb3@32 ~@5 b3@27 bb3@32 ~@2]/7", // Bb5
  J: "[~@14 ab4@5 ~ [eb4,gb4]@11 ~@38 ab4@6 b4@10 ab4@5 ~ b4@5, ~@4 b3@16 ~@11 ab3@63 ~@2, ~@9 eb4@11 ~@16 b3@57 ~@3, ~@21 eb4@26 ~]/3", // Ebm
  K: "~@16 g4@5 b4@5 g4@5 ~, g3@29 ~@3, ~@5 b3@26 ~, ~@11 e4@21", L: "~@16 a4@5 b4@5 ~ a4@5, b3, ~@5 d4@27, ~@5 gb4@11",
  M: "~@5 e4@5 ~ g4@5 b4@5 g4@5 ~ e4@5, c4", N: "~@16 b4@5 ~@6 d4@5, b3@27 ~@5, ~@5 d4@16 ~@11, ~@11 gb4@8 ~@2 gb4@11",
  O: "~@11 e4@5 ~@11 c4@5, a3@27 ~@5, ~@5 c4@11 g4@16, ~@21 e4@11",
  P: "~@5 d4@5 ~ gb4@5 eb4@5 ~ b3@5 eb4@5, b3@11 ~@21", Q: "~@11 e4@6 g4@5 e4@6 b3@4, g3@11 ~@21, ~@6 b3@11 ~@15",
  R: "[~@2 g3@5 b3@6 e4@6 g4@6 e4@6 b3@6 ~@27]/2",
  S: "[~@27 e3@6 ~@12 e4@42 ~ ab3@39 ~, ~@15 e2@73 ~@40, ~@21 b2@18 b3@48 ~@41, ~@33 a3@54 ~@41]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.2).pan(0.7)

// chords · orchestral harp
const orchestral_harp = note("<A@4 B@2 C@7 D E@7 F@7 G H@8 I@7 J@6 ~@7 K ~@16 L ~@12 M@2 N@2>".pickRestart({
  A: "[~@26 eb4@27 ~@5 db4@27 ~@5 b3@31 ~@7]/4", B: "[~@2 bb3@14 ~@3 bb5@45, ~@9 bb4@23]/2",
  C: "[~@26 bb4@29 ~@3 ab4@28 ~@3 gb4@30 ~@3 [db4,ab4]@29 ~@4 gb4@30 ~@23 b3@11 eb2@5, ~@23 bb3@31 ~ bb3@29 ~@3 [gb3,b3]@32 ~@34 [ab3,eb4]@31 ~ ab3@25 ~@14, ~@24 [eb3,eb4]@31 ~@2 bb2@29 ~@2 [b2,eb4]@30 ~@3 bb2@31 ~@2 [ab2,b3]@30 ~@2 [bb2,eb4]@33 ~@5, ~@25 gb4@29 ~@2 db4@27 ~@37 [bb3,f4]@31 ~@35 b3@20 ~@18, ~@57 f4@26 ~@104 f4@33 ~@4]/7", // Db5 B5 Ab5 Eb B Abm Eb5 Bb5
  D: "~@11 bb3@5 f4@5 ~ ab4@4 ~ [eb4,g4]@5, bb2@7 ~, ~@5 f3@20 ~@7", // Eb
  E: "[~@17 eb4@9 bb3 eb4 ~ bb4@29 ~@2 [f4,ab4]@28 ~@5 bb4@27 ~@4 [db4,ab4]@28 ~@5 bb4@28 ~@24 b3@11 eb2@4, ~ g3@26 eb3@31 bb3@29 ~@3 b3@30 ~@2 bb3@30 ~@34 ab3@25 ~@13, ~@6 bb3@20 ~@2 gb4@29 ~@2 [bb2,db4]@29 ~@3 [b2,eb4]@30 ~@2 [bb2,f4]@31 ~ [ab2,ab3,eb4,gb4]@30 ~@3 [bb2,eb4,f4]@33 ~@3, ~@92 gb4@29 ~@66 b3@20 ~@17]/7", // Fm Db5 Bbm B Bb5 Ab7 Bbsus4
  F: "[~@12 bb3@6 f4@5 ab4@4 ~@2 [eb4,g4]@32 ~@28 gb4@5 ~@11 ab4@21 ~@25 gb4@5 ~@12 ab4@18 ~@28 gb4@5 bb2@5, ~@2 bb2@28 ~@32 ab2@32 bb2@32 b2@31 bb2@31 ab2@21 eb4@10 ~@5, ~@7 f3@20 ~@40 eb3@16 eb4@10 ~@10 db4@22 ~@11 gb3@21 ~@9 bb3@20 ~@12 gb3@21 ~@5, ~@72 gb3@22 ~@10 f4@21 ~@16 b3@5 eb4@10 ~@11 [db4,f4]@19 ~@18 b3@15 ~@5, ~@78 b3@16 ~@8 bb3@23 ~@6 eb3@25 ~@37 eb3@26 ~@5]/7", // Eb Db
  G: "~@6 ab4@16 ~@5 [e3,eb4,ab4]@5, ~@2 bb3@9 ~@2 [ab3,b3]@3, ~@5 [db4,f4]@17 ~@10", // Emaj7 Abm Db
  H: "[~@17 gb4@7 ~@3 eb4@59 ~ [bb3,eb4,gb4]@30 ~@3 ab4@29 ~@2 [b2,eb4,bb4]@30 ~@2 bb2@28 ~@3 [ab2,gb4]@29 ~@3 [bb2,gb4]@10, ~@15 [eb3,bb3]@10 ab3@61 ~@31 bb3@30 ~@3 [b3,gb4]@30 ~ bb3@29 ~@2 ab3@30 ~ ab3@13, ~@16 [db4,eb4]@7 ~@3 [db3,b3,db4]@60 ~ [eb3,gb3]@32 [bb2,f4]@32 ~@105, ~@119 db4@29 ~@34 [db4,f4,ab4]@29 ~@2 [b3,eb4]@30 ~@2 [b3,eb4]@11]/8", // Ebm Bmaj7 Ab7 Ebm Eb5 B5 Dbsus2 Db7 …
  I: "[~@11 [d4,f4,ab4,b4]@8 ~@19 bb4@5 eb4@5 ~ gb4@5 ~@16 bb4@5 ~@6 gb4@3 ~@3 bb4@31 ~@3 ab4@24 [bb2,bb3,d4,f4,ab4]@12 ~@11 ab4@5 bb4@5 ~ ab4@5 eb4@5 ~@17 g4@5 bb4@5 g4@5 ~ bb3@2, ~@21 [eb3,bb3]@32 ~ [db3,bb3]@29 ~@3 b2@34 [bb2,c4,eb4,f4]@24 ~@13 eb3@32 ~@11 eb4@21 ~@3, ~@26 eb4@11 ~@22 eb4@10 ~@6 eb4@9 ~ b3@32 ~@2 bb3@25 ~@13 bb3@27 ~@6 g3@29 ~@5, ~@32 gb4@11 ~@22 gb4@11 ~@10 [eb4,gb4]@31 ~@46 eb4@16 ~@16 bb3@24 ~@5]/7", // Ddim Bb7 Eb5 Gb Bbsus4 Ebm
  J: "[~@8 f4@5 ~ bb4@5 f4@5 ~ d4@5 ~@16 g4@5 bb4@5 ~ g4@5 ~@16 f4@5 ~ ab4@5 f4@5 ~@11 g4@5 ~ bb4@5 g4@5 eb4@5 ~@12 f4@5 bb4@5 ~@6 d4@5 ~@16 g4@5 ~ bb4@5 ~@6, ~@3 d4@11 ~@16 g3@29 ~@3 ab3@30 ~@2 bb3@27 ~@6 bb3@27 ~@5 g3@30 ~@3, ~@35 bb3@27 ~@5 c4@27 ~@71 bb3@24 ~@3, ~@41 eb4@21 ~@11 eb4@22 ~@5 eb4@16 ~@16 d4@11 ~@5 f4@11 ~@11 eb4@21 ~]/6",
  K: "~@17 d5 [eb5,f5] [eb4,f4,g5] [g4,ab4] [bb4,c5,d5] eb5 [f5,g5] ab5 bb5 c6 d6 eb6 f6 ~@2, ~@8 c5 ~@7", // Ebsus2 Eb Abmaj7 Bb Fsus2
  L: "~ bb5 b5 db6 ~ e6 gb6 ab6 b6@2 ~@22, ~@4 eb6@2 ~ bb6@2 ~@23",
  M: "[~@18 e6@4 b5@2 ~ e6@13 ~@26, ~@24 ab5@13 ~@27]/2", N: "[~@7 e6@7 ~@2, ~@25 ab5@28 ~@11]/2",
})).s("gm_orchestral_harp").gain(0.3)

// chords · orchestral harp · soft notes
const orchestral_harp_soft = note("<~@49 A ~@7 B ~@15 C D ~@11 E@2 ~@3>".pickRestart({
  A: "~@26 g4@5 ~", B: "~@8 eb3 [f3,g3] [ab3,bb3] c4 [d4,eb4] f4 g4 [ab4,bb4] ~@16",
  C: "~@10 b3 db4 gb3 ab3 ~@6 ab4 [eb4,e4] ~@5 [e5,gb5]@2 ~@2 [eb5,e5], ~@14 bb3@2 db4@2 e4@2 ~@2 ab4@2 b4@2 eb5@2 ~ ab5@2 ~, ~@15 b3@2 eb4@2 gb4@2 gb4@2 bb4@2 db5@2 ~@3 db5@2", // Emaj7 Esus2 Emaj7
  D: "[gb5,ab5] ~@31", E: "[~@43 b5@11 ~@10, ~@19 e3@24 ~@21, ~@25 a3@21 ~@18, ~@31 b3@18 ~@15, ~@37 e5@15 ~@12]/2",
})).s("gm_orchestral_harp").gain(0.15)

// other · violin
const violin = note("<~@31 A@5 B@8 ~@47>".pickRestart({
  A: "[~@23 bb3@21 eb4@11 ab4@32 gb4@21 bb4@11 ab4@21 db5@10 bb4@10]/5",
  B: "[eb5@21 ~ f5@21 bb4@11 bb5@16 eb5@5 bb5@5 ~ eb6@5 f6@32 eb4@59 d4@12 eb4@54 ~@13]/8",
})).s("gm_violin").gain(0.25)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A@3 B C@3 ~@7 D@8 E ~@3 F@7 ~@12 G@8 H@8 I@2 J K@8 L@2 M N O P Q R S T U V@8
>`.pickRestart({
  A: "[~@37 gb4@21 f5@11 db5@21 eb5@6, ~@13 bb4@16 ~@19]/3", B: "db5@6 bb4@6 ab4@7 eb4@7 db4@6", C: "[~ eb4@37 ~@10]/3",
  D: "[~@27 f5@32 eb5@21 ~ bb4@10 eb5@32 f5@22 db5@11 gb5@32 f5@32 ab5@33 g5@3]/8", E: "~@8 eb5@11 bb4@11 ~@2",
  F: "[~@28 eb5@31 ~ f5@31 eb5@20 db5@10 ~ b4@72 ~@30]/7", G: "[~@30 ab5@32 g5@32 ~ bb5@32 g5@32 bb5@97]/8",
  H: "[~@19 db6@11 bb5@63 ab5@32 g5@27 eb5@5 ~ eb6@5 db6@5 bb5@21 ~ db6@5 ab5@5 db5@5 ab5@5 ~ gb5@5 f5@5 gb5@5 ~ eb5@5 eb5@16 bb5@5 ab5@3]/8",
  I: "[~@2 db5@5 ~ db6@21 bb5@21 eb6@11 f6@3]/2", J: "~@9 bb5@5 ab6@2",
  K: "[~@23 f6@5 bb6@32 gb5@32 ~ ab5@32 bb5@32 ~ ab5@32 gb5@32 ab5@32 gb5@2]/8", L: "[~@20 bb5@11 b5@20 ~@13]/2",
  M: "~@12 db6 eb6 ~ e6 gb6 e6 ~ gb6 ab6 bb5 ~ b5 db6 eb6 ~ e6 gb6 ab6 ~ bb6", N: "[b5,b6]", O: "[a5,a6]", P: "[g5,g6]",
  Q: "[gb5,gb6]@21 [d5,d6]@5 ~ [gb5,gb6]@5", R: "[e5,e6]", S: "[gb5,gb6]",
  T: "[g5,g6]@16 ~ [b4,b5]@5 [e5,e6]@6 [g5,g6]@4", U: "~@2 [a5,a6]@5 [b5,b6]@6 [g5,g6]@6 [gb5,gb6]@6 [e5,e6]@6 [d5,d6]",
  V: "[~@5 [b4,b5]@74 [a4,a5]@73 [ab4,ab5]@88 ~@16]/8", // B A Ab
})).s("gm_string_ensemble_1").gain(0.25).pan(0.3)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@73
  [~@21 db5 b4 db5 ~ eb5 e5 eb5 ~ e5 gb5 ab5]
  [~ gb5 ab5 ~ bb5 b5 bb5 ~ b5 db6 ~ eb6 ~@20]
  ~@16
>`).s("gm_string_ensemble_1").gain(0.1).pan(0.3)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A@4 B@3 ~@5 C@6 D@8 E@3 F@8 G@4 H@5 I@3 J@8 K@8 L@7 M@3 N@2 O P Q R S@2 T@8
>`.pickRestart({
  A: "[~@26 [bb3,f4,gb4]@32 [db4,eb4,ab4]@31 ~ [b3,eb4,gb4]@24 ~ [gb3,bb3]@13]/4", B: "[~ [f3,ab3,c4]@37 ~@10]/3",
  C: "[~@27 [ab3,ab4]@32 [g3,g4]@32 [eb4,gb4]@32 [f4,ab4]@32 [b3,eb4,gb4,bb4]@32 [bb3,db4,f4,ab4]@5, ~@27 [bb3,eb4]@64 [bb3,db4]@64 ~@37]/6", // Ab G Ebm Fm Bmaj7 Bbm7 Eb5 Bbm
  D: "[~@28 [ab3,b3,gb4]@32 [bb3,f4,ab4]@32 [ab3,ab4]@33 [g3,g4]@33 [b3,eb4,gb4]@32 [db4,f4,ab4]@31 ~ [b3,eb4,gb4,bb4]@31 [db4,f4,ab4]@3, ~@14 eb4@32 [bb3,eb4]@33 ~@49]/8", // Abm7 Bb7 Ab G B Db Bmaj7 Db …
  E: "[~@28 [b3,eb4,gb4]@31 ~ [db4,ab4]@31 [b3,e4,ab4]@5, ~@15 f4@7 ~@2]/3", // B Db5 E
  F: "[~@15 [db4,eb4,gb4]@10 ~ [ab3,b3,e4]@61 [eb4,gb4]@32 [db4,f4,ab4]@32 [b3,eb4,gb4,bb4]@31 ~ [bb3,db4,f4,ab4]@31 [b3,eb4,gb4]@31 ~ [f4,ab4,b4]@10, ~@87 bb3@64 ~@105]/8", // Ebm7 E Ebm Db Bmaj7 Bbm7 B Fdim
  G: "[~@11 [d4,f4]@10 ~@65 b3@34 [bb3,f4]@8, ~@11 bb3@75 ~@42, ~@11 eb4@53, ~@22 gb4@99 ~@7]/4", // Dm Bb5
  H: "[~@17 d4@12 ab4@32 ~ g4@32 [d4,f4]@32 [eb4,g4]@32 [c4,f4,ab4]@2, ~@29 bb3@129 ~@2, ~@29 eb4@64 ~@67]/5", // Dm Eb Fm
  I: "[~@30 [eb4,g4]@32 ~ [d4,f4]@32 [eb4,g4], ~@5 bb3@11]/3", // Eb Dm Eb
  J: "[~@31 [eb4,gb4]@31 ~ [db4,f4,ab4]@31 ~ [eb4,gb4]@31 [db4,f4,ab4]@31 ~ [b3,eb4,gb4]@63 ab4@32 g4@3, ~@31 bb4@190 [eb4,bb4]@35]/8", // Ebm Db Ebm Db B Eb5
  K: "[~@30 [eb4,gb4]@32 [db4,f4,ab4]@31 [b3,eb4,gb4,bb4]@32 [db4,f4,ab4]@31 ~ [b3,gb4]@32 [bb3,f4]@31 ab4@32 g4@4, ~@30 bb3@63 ~@64 eb4@63 [eb4,bb4]@36]/8", // Ebm Db Bmaj7 Db B5 Bb5 Eb5
  L: "[~@28 [b3,eb4,gb4]@32 ~ [db4,f4,ab4]@32 [b3,eb4,gb4,bb4]@32 ~ [db4,f4,ab4]@32 [ab3,b3,eb4,gb4]@32 [bb3,db4,f4,ab4]@32 [b3,eb4,ab4]@2]/7", // B Db Bmaj7 Db Abm7 Bbm7 Abm
  M: "[~@20 [bb3,db4,gb4]@11 [ab3,b3,db4,e4]@65]/3", N: "[[e4,g4]@31 ~ [d4,gb4,a4]@32, b3]/2", O: "[c4,e4,g4,b4]",
  P: "[b3,gb4,a4], d4@13 ~@3", Q: "[a3,db4,e4,g4]", R: "d4@21 ~ eb4@10, [b3,e4,gb4,a4]",
  S: "[e4@33 ~ d4@30, [b3,g4,b4]]/2", // Em
  T: "[~@5 [c4,e4,g4,b4]@37 [a3,b3,e4,gb4]@37 [a3,b3,e4,a4]@72 ~ [ab3,b3,e4,ab4]@88 ~@16]/8", // Cmaj7 Asus2 E
})).s("gm_string_ensemble_2").gain(0.25)

// other · string ensemble 1
const string_ensemble_1_2 = note(`<
  A@7 ~@5 B@3 C@3 D@8 E@8 F@2 G H@2 I J K@8 L@6 M@8 N@3 O@2 P@7 Q R S R T R U V W@8
>`.pickRestart({
  A: "[~@13 eb3@16 db3@16 b2@20 bb2@37 ~@10]/7", B: "[~@27 eb2@64 eb3@5]/3", C: "[~@27 bb2@32 b2@32 bb2@5]/3",
  D: "[~@28 ab2@32 bb2@32 eb2@66 ab2@32 bb2@31 ~ b2@31 bb2@3]/8",
  E: "[~@28 ab2@31 ~ bb2@31 [e2,e3]@20 [eb2,eb3]@10 ~ [db2,db3]@61 eb3@32 bb2@32 b2@9]/8", F: "[~@23 bb2@31 ab2@10]/2",
  G: "~@11 bb2@5", H: "[~@11 [eb2,eb3]@16 [db2,db3]@5]/2", I: "~@11 [b1,b2]@5", J: "~@3 [bb1,bb2]",
  K: "[~@29 [eb2,eb3]@129 [eb2,eb3]@98]/8", L: "[~@31 eb3@31 ~ bb2@31 ~ b2@31 bb2@31 ~ ab2@31 ~ bb2@2]/6",
  M: "[~@61 eb2@32 ~ eb3@32 bb2@31 b2@32 bb2@31 ~ ab2@32 bb2@3, ~@29 eb3@61 ~@166]/8",
  N: "[~@15 eb2@8 ab2, ~@7 eb3@16 ~]/3", O: "[~@29 bb2@32 b2@3]/2",
  P: "[~@30 bb2@32 ab2@32 bb2@32 [e2,e3]@21 ~ [eb2,eb3]@11 [db2,db3]@65]/7", Q: "[e2,e3]@31 ~", R: "b2", S: "c3",
  T: "a2", U: "e3", V: "~ [d2,d3]@15", W: "[~@5 [c2,c3]@37 [b1,b2]@37 [b1,b2]@72 ~ [e2,e3]@88 ~@16]/8",
})).s("gm_string_ensemble_1").gain(0.25).pan(0.7)

// other · vibraphone
const vibraphone = note("<~@42 A B C D E F G H ~@41>".pickRestart({
  A: "~@19 eb6@10 ~@3", B: "~@19 eb6@11 ~@2", C: "~@19 bb6@11 ~@2", D: "~@19 bb6@6 ~@7", E: "~@10 eb6@5 ~",
  F: "~@20 eb6@11 ~", G: "~@20 bb6@11 ~", H: "~@21 bb6@6 ~@5",
})).s("gm_vibraphone").gain(0.2)

// other · flute
const flute = note("<~@22 A@6 B@4 ~@14 C D E F ~@6 G@5 H@5 ~@3 I@6 J K L M N O P Q R@8>".pickRestart({
  A: "[~@8 eb5@11 bb4@11 gb5@32 db5@5 ~ eb5@5 f5@10 ab4@10 ~ gb5@31 ab5@5 eb5@5 ~ f5@10 db5@8 ~@2 bb5@31 ~ db6@4]/6",
  B: "[~ c6@5 ab5@5 eb5@5 db5@5 ~ ab4@5 gb4@20 bb4@10 ~ b4@61 ~@9]/4", C: "~@9 bb5@2 ~ f6@2 bb6@2 ~ bb6@2 ~ bb6@5 ~@7",
  D: "~@9 bb5@2 ~ eb6@2 ~ bb6@2 bb6@2 ~ bb6@5 ~@7", E: "~@10 bb5@2 d6@2 ~ bb6@2 ~ bb6@2 bb6@4 ~@8",
  F: "~@10 bb5@2 ~ eb6@2 bb6@2 ~ bb6@2 ~ bb6@4 ~@7",
  G: "[~@29 g5@27 eb5@5 ~ eb6@5 db6@5 bb5@21 ~ db6@5 ab5@5 db5@5 ab5@5 ~ gb5@5 f5@5 gb5@5 ~ eb5@5 eb5@16 bb5@5 ab5@3]/5",
  H: "[~@2 db5@5 ~ db6@21 bb5@21 eb6@10 ~ f6@21 bb5@10 ab6@26 ~ f6@5 g6@10 ~ bb5@21 ~@4]/5",
  I: "[~@30 eb6@5 db6@5 ~ bb5@11 gb5@10 ab5@32 gb5@21 ~ bb5@11 b5@65]/6", J: "b6@31 ~", K: "a6@29 ~@3", L: "g6",
  M: "gb6@21 d6@5 ~ gb6@5", N: "e6", O: "gb6", P: "g6@16 ~ b5@5 e6@5 ~ g6@4", Q: "~@2 a6@5 b6@6 g6@6 gb6@6 e6@6 d6",
  R: "[~@5 b5@65 ~@9 a5@72 ~ ab5@88 ~@16]/8",
})).s("gm_flute").gain(0.25)

// other · vibraphone
const vibraphone_2 = note("<~@5 A@2 ~@9 B ~ C ~@2 D E ~@7 F@2 ~@9 G ~@45 H@2 I J>".pickRestart({
  A: "[~ db9@2 [bb8,c9] ~ ab8 ~ ab8@2 bb8@2 db9 gb8 db9@2 [bb8,c9] ab8 gb8 ~ [ab8,bb8] ~@2 db9 c9 ~ bb8 ~ gb8 ~ ab8 gb8 gb8@2 c9 ~ db9 c9 gb8 bb8@2 [gb8,ab8] ~ [bb8,c9] db9 gb8 db9 gb8 db9 c9 bb8 ab8 gb8 ab8 [gb8,bb8] gb8!2 ~@8, ~@6 gb8@2 ~@3 c9@2 ~@8 gb8@2 ~@3 ab8@2 ~@3 bb8 ~@2 gb8@2 ~@28]/2", // Bbsus2 Absus2 Gbsus2 Bbsus2 Gb
  B: "~@2 c9@2 [gb8,bb8] ab8 ~ [gb8,c9] [ab8,bb8] ~ db9 [gb8,bb8] ~ db9 ~ bb8 gb8 [ab8,db9] c9 bb8 gb8 [ab8,c9,db9] bb8 gb8 [ab8,db9] c9 bb8 ~@5, ~@2 db9 ~@3 db9@2 ~@2 c9@2 ab8@2 c9@2 ~@16", // Gb Gbdim Absus2 Gb Db5 Dbmaj7 Db5
  C: "~@9 [c9,db9] bb8 gb8 ab8 db9 bb8 gb8 [ab8,db9] c9 [gb8,bb8] ab8 [c9,db9] bb8 [gb8,ab8] db9 c9 gb8 ab8 [c9,db9] bb8 ~@3, ~@13 c9@2 ~@17", // Dbmaj7 Db5 Gb Dbmaj7 Gbsus2 Dbmaj7
  D: "~@31 db9",
  E: "c9@2 gb8 [ab8,db9] ~ [gb8,bb8] ab8 [c9,db9] bb8 [gb8,ab8] db9 c9 [gb8,bb8] [ab8,db9] c9 bb8 [gb8,ab8] [c9,db9] bb8 gb8 [ab8,db9] c9 bb8 [gb8,ab8] [c9,db9] bb8 ~ db9 c9 gb8 ~@2, ~@2 c9 ~@13", // Db5 Gb Dbmaj7 Gbsus2 Gb Db5 Gbsus2 Dbmaj7 …
  F: "[~@5 gb8@2 ~@2 c9@2 ~ gb8@2 db9@2 ~ bb8@2 gb8 ~ ab8 c9@2 ~ gb8@2 ab8 db9 ~ bb8 gb8@2 ab8 ~ c9@2 bb8 gb8 ab8 ~ c9@2 gb8 bb8 ~ db9@2 ~@2 bb8 ab8 db9 [gb8,c9] ~@10, ~@2 db9@2 bb8@2 ~@5 bb8@2 ~@32 ab8@2 ~@2 gb8@2 ~@13, ~@3 c9@2 ~@3 db9@2 ~@6 c9@2 ~@4 db9 ~@6 c9@2 ~@3 db9@2 ~@4 db9@2 ~@6 c9@2 ~@14]/2", // Gbdim
  G: "~ [c9,db9] ~ bb8 ab8 db9 ~ gb8@2 ab8 [c9,db9] ~ [gb8,bb8] ~ [ab8,db9] c9 [gb8,bb8] ab8 db9 c9 bb8 gb8 ab8 [c9,db9] ~ gb8 ab8 db9 c9 bb8 ~@2, ~ gb8 ~ c9 ~@12, ~@7 bb8 ~@24", // Dbmaj7 Gb Db5 Gb Dbmaj7
  H: "[~@31 db9@2 c9@2 gb8@2 ~@2 bb8 gb8@2 [ab8,db9] ~ gb8@2 ab8 [c9,db9] bb8 gb8 ~ [ab8,db9] ~ bb8 gb8 ab8 [c9,db9] ~ gb8 ab8 ~ db9 bb8 gb8, ~@38 [c9,db9]@2 ~@3 c9@2 ~@7 c9@2 ~@7 c9@2 ~, ~@44 bb8 ~@12 bb8@2 ~@5]/2", // Db5 Dbmaj7 Db5 Dbmaj7
  I: "ab8 db9 bb8 gb8 ab8 db9 [bb8,c9] gb8 ab8 db9 c9 [gb8,bb8] ab8 db9 c9 [gb8,bb8] ab8 db9 [bb8,c9] gb8 ~ [ab8,db9] c9 [gb8,bb8] ~ ab8 ~ bb8 [gb8,ab8] ~ db9 c9, ~ c9@2 ~@22 db9@2 ~@5, ~@13 c9 ~@2", // Bbsus2 Gb Bbsus2 Db5 Gb Gbsus2
  J: "bb8 ~ db9 c9 bb8 ~ gb8 ab8 ~@3 ab8 ~@20, ~ gb8@2 ~@7 gb8@2 ~@20",
})).s("gm_vibraphone").gain(0.19)

// other · harmonica
const harmonica = note(`<
  ~@14 A B C D E F@4 ~@3 G H@7 I@2 ~@3 J K@6 ~@3 L@2 M@8 N@2 O@5 P@4 Q@5 R S T U V W X@2 Y@2 Z@4 ~@2
>`.pickRestart({
  A: "~@22 eb4@5 bb4@5", B: "~ gb4@21 ab4@5 f4@5", C: "~ db4@24 ~@2 eb4@5", D: "~ f4@5 gb4@5 bb4@5 ~ ab4@5 gb4@5 f4@5",
  E: "~ db4@24 ~@3 eb4@4", F: "[~ f4@5 gb4@5 ~ bb4@5 ab4@5 gb4@5 ~ ab4@16 gb4@5 f4@8 bb3@2 ~ bb4@63 ~@5]/4",
  G: "~@7 b4",
  H: "[~@2 bb4@5 gb4@5 eb4@5 eb4@10 ~ f4@23 ~@3 db4@5 eb4@20 gb4@10 ~ ab4@47 ~@5 eb4@8 ~ bb4@5 gb4@18 ~@4 ab4@5 f4@5 db4@24 ~@3 eb4@5 f4@4]/7",
  I: "[~@2 gb4@5 bb4@5 ab4@5 gb4@5 ~ f4@5 db4@26 ~@10]/2", J: "~@22 eb4@5 ~ f4@4",
  K: "[~ gb4@6 bb4@6 ab4@6 gb4@2 ab4@24 ~@4 f4@12 bb4@126 ~@5]/6", L: "[~@31 eb5@33]/2",
  M: "[~@10 db5@15 ab4@5 ~ bb4@31 db5@21 ab4@10 ~ gb4@31 ~ ab4@29 ~@2 eb5@16 f5@5 ~ eb5@5 f5@5 bb4@27 eb4@11 bb4@5 gb4@16 ab4@5 ~ f4@2]/8",
  N: "[eb4@2 ~ db4@24 ~@2 eb4@6 f4@5 gb4@5 bb4@10 ~ db5@3 bb4@2 f4@3]/2",
  O: "[eb4@2 db4@24 ~@3 eb4@5 f4@5 ~ gb4@5 bb4@5 ab4@5 ~ gb4@5 ab4@15 ~ gb4@5 f4@5 bb3@5 bb4@58 ~@6 eb5@4]/5",
// … 72 more lines

More by Billy Preston