Strudelify

Will It Go Round in Circles

Billy Preston

KeyA♭ majorTempo103 bpm
0:00/0:00
// Will It Go Round in Circles — Billy Preston
// 103 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 C B C B C B D E F G H I@2 J A B C B C B C B D E F G H I@2 J A B C B C B C B D E F G H I@2 J A B C B C B C B D E F
  G H I@2 J A B C B C B C B D E F G K I@2 J A E F G K I@2 J A ~
>`.pickRestart({
  A: "[b4,eb5,gb5,ab5,b5] ~ [ab4,db5,f5,ab5] ~ [gb4,ab4,b4,eb5,gb5] ~ [f4,ab4,bb4,db5,f5] ~ [eb4,gb4,ab4,b4,eb5] ~ [db4,f4,ab4,bb4,db5] ~ [b3,eb4,gb4,ab4,b4] ~ [db4,f4,ab4,bb4,db5] ~", // Abm7 Db Abm7 Bbm7 Abm7 Bbm7 Abm7 Bbm7
  B: "[gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~", // Cdim
  C: "[gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [ab3,d4,f4] ~ [ab3,d4,f4]@2 [g3,db4,f4] ~ [g3,db4,f4]@2", // Cdim Ddim Gm7b5
  D: "[gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [ab3,c4]@2 [eb3,ab3,c4] ~ [e3,bb3,db4]@2 [f3,b3,d4]@2, ~@8 eb3 ~@7", // Cdim Ab Bbdim Bdim
  E: "[ab3,c4,eb4,gb4] ~ [ab3,c4,eb4,gb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [f3,b3,eb4,b4,db5,f5,ab5] ~ [f3,b3,eb4] [b4,db5,f5,ab5] [f3,b3,eb4] gb4 [f3,b3,eb4,ab4] [gb4,c5,eb5,ab5], ~@5 [b4,eb5,gb5,ab5]@2 ~@9", // Ab7 Cdim Fm7b5 Db7 Fm7b5 Ab7 Abm7
  F: "[gb3,c4,eb4] ~ [gb3,c4,eb4,c5,eb5,gb5,ab5] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [f3,b3,eb4,b4,db5,f5,ab5] ~ [f3,b3,eb4] [b4,db5,f5,ab5] [f3,b3,eb4] gb4 [f3,b3,eb4,ab4] [gb4,c5,eb5,ab5], ~@5 [c5,eb5,gb5,ab5]@2 ~@9", // Cdim Ab7 Cdim Fm7b5 Db7 Fm7b5 Ab7
  G: "[gb3,c4,eb4] ~ [gb3,c4,eb4,c5,eb5,gb5,ab5] ~ [gb3,c4,eb4] [c5,eb5,gb5,ab5] [gb3,c4,eb4] ~ [f3,b3,eb4] ~ [f3,b3,eb4,b4,db5,f5,ab5] ~ [f3,b3,eb4] [b4,db5,f5,ab5] [f3,b3,eb4] ~", // Cdim Ab7 Cdim Ab7 Cdim Fm7b5 Db7 Fm7b5
  H: "[gb3,c4,eb4,b4,eb5,gb5,ab5] ~ [gb3,c4,eb4] [b4,eb5,gb5,ab5] [gb3,c4,eb4] ~ [b4,eb5,f5,ab5]@2 [f3,b3,eb4] [f4,b4,db5] [f3,b3,eb4] ~ [f3,b3,eb4,f4,b4,db5] ~ [f3,b3,eb4,f4,b4,db5] ~, ~@6 [gb3,c4,eb4] ~@9", // Ab7 Cdim Abm7 Cdim Fm7b5 Db7 Fm7b5 Cdim
  I: "[[gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [b4,eb5,f5,ab5]@2 [f3,b3,eb4] [b4,eb5,f5,ab5] [f3,b3,eb4] gb4 [f3,b3,eb4,ab4] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4,gb4,c5,eb5] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [f3,b3,eb4,f4,b4,eb5] ~ [f3,b3,eb4] [f4,b4,eb5] [f3,b3,eb4] ~ [f4,b4,eb5]@2, ~@5 [b4,eb5,gb5,ab5]@2 ~ [f3,b3,eb4] ~@6 [gb4,c5,eb5]@2 ~@4 [gb4,c5,eb5]@2 ~@7 [f3,b3,eb4] ~]/2", // Cdim Fm7b5 Cdim Fm7b5 Abm7 Fm7b5 Cdim Fm7b5
  J: "[gb3,c4,eb4] ~ [gb3,c4,eb4,gb4,c5,eb5] ~ [gb3,c4,eb4] ~ [gb3,c4,eb4] ~ [f3,b3,eb4,f4,b4,eb5] ~ [f3,b3,eb4] [f4,b4,eb5] [f3,b3,eb4] ~ [f3,b3,eb4,f4,b4,eb5] ~, ~@5 [gb4,c5,eb5]@2 ~@9", // Cdim Fm7b5 Cdim
  K: "[gb3,c4,eb4,b4,eb5,gb5,ab5] ~ [gb3,c4,eb4] [b4,eb5,gb5,ab5] [gb3,c4,eb4] ~ [gb3,c4,eb4,eb5,f5,ab5] ~ [f3,b3,eb4] [f4,b4,db5] [f3,b3,eb4] ~ [f3,b3,eb4,f4,b4,db5] ~ [f3,b3,eb4,f4,b4,db5] ~, ~@3 b4 ~@4", // Ab7 Cdim Abm7 Cdim Fm7 Fm7b5 Db7 Fm7b5
})).s("gm_piano").gain(0.35).pan(0.6)

// bass · electric bass finger
const bass = note(`<
  A B C B C B C D E F@2 G@5 A B C B H B C D E I J K I J@3 L B C B C B C D E F@2 G@4 M N B O B P Q R B S T U V W X@2 M Y
  Q Z Q AA AB O B AC AD AE AF AG AH@2 AI AJ AK AL AM AN AO AP AQ AR ~
>`.pickRestart({
  A: "~@8 eb2 ~ f2 ~ b1 ~ eb2 ~", B: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~",
  C: "ab1 ~@3 ab1 ~ ab1 ~ bb1@3 ~ eb2@3 ~", D: "ab1 ~@3 ab1 ~@3 ab1 ~@3 ab1 ~@3",
  E: "ab1 ~@3 ab1 ~@3 f1 ~ f1 ~ gb1 ~ g1 ~", F: "ab1 ~ ab1 ~ c2 ~ c2 ~ db2 ~ db2 ~ eb2 eb2@2 ~",
  G: "ab1 ~ ab1 ~ c2 ~ c2 ~ db2 ~ db2 ~ eb2 ~ f2 ~", H: "ab1 ~@3 ab1 ~ ab1 ~ bb1@3 ~ eb2 f2 eb2 ~",
  I: "ab1 ~ ab1 ~ c2@3 ~ db2@5 eb2@2 ~", J: "ab1@3 ~ c2@3 ~ db2@2 ~ eb2 ~ eb2@3", K: "ab1@3 ~ c2@3 ~ db2@5 eb2@2 ~",
  L: "ab2 ~ c2 ~ db2 ~ d2 ~ eb2 ~ f2 ~ b1 ~ eb2 ~", M: "ab1 ~ ab1 ~ c2 ~ c2 ~ db2 ~ db2 ~ d2 ~ d2 ~",
  N: "eb2 ~ c2 ~ db2 ~ d2 ~ eb2 ~ f2 ~ b1 ~ eb2@2", O: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ bb1@3 ~ eb2@4",
  P: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ bb1@4 eb2@4", Q: "ab1 ~@3 ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~",
  R: "ab1 ~@3 ab1 ~ ab1 ~ bb1@3 ~ eb2@4", S: "ab1 ~ ab1 ~ f1 ~ f1 ~ gb1 ~ gb1 ~ g1 ~ g1 ~",
  T: "ab1 ~ ab1 ~ c2 ~ c2 ~ db2 ~ db2 ~ eb2!2 f2 ~", U: "ab2 ~ ab2 ~ c2 ~ c2 ~ db2@2 ~ eb2 ~ eb2 f2 eb2",
  V: "ab1 ~ ab1 ~ c2 ~ c2 ~ db2 ~ db2@2 ~ eb2 f2 ~", W: "ab1 ~ ab1 ~ c2 ~ c2 ~ db2@2 db2@2 eb2 ~ f2@2",
  X: "ab1 ~ ab1 ~ c2 ~ c2 ~ db2 ~ db2 ~ eb2 ~ f2@2", Y: "eb2 ~ c2 ~ db2 ~ d2 ~ eb2 ~ f2 ~ bb1 ~ eb2@2",
  Z: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ bb1 ~ bb1 ~ eb2@4", AA: "ab1 ~@3 ab1 ~@3 bb1 ~ bb1 ~ eb2@4",
  AB: "ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~ ab1 ~@3", AC: "ab1 ~ ab1 ~ f1@2 f1 ~ gb1@2 gb1@2 g1@2 g1@2",
  AD: "ab1 ~ ab1 ~ c2@4 db2@3 ~ d2@4", AE: "eb2@4 c2@4 db2@3 eb2 ~ eb2 f2 ~", AF: "ab1@3 ~ c2@3 ~ db2@3 eb2 ~ eb2 f2 ~",
  AG: "ab1 ~ ab1 ~ c2@3 ~ db2@3 eb2 ~ eb2 f2 ~", AH: "ab1 ~ ab1 ~ c2@4 db2@3 eb2 ~ eb2 f2 ~",
  AI: "ab1 ~ ab1 ~ c2@3 ~ db2@3 ~ d2@4", AJ: "eb2 ~ c2 ~ db2 ~ d2 ~ eb2 ~ f2 ~ b1 ~ eb2 ~",
  AK: "ab1@2 ab1 ~ f1@2 f1@2 gb1@2 gb1@2 g1@2 g1 ~", AL: "ab1@2 ab1@2 f1@2 f1 ~ gb1@2 gb1 ~ g1@2 g1@2",
  AM: "ab1@2 ab1 ~ f1 ~ f1 ~ gb1@2 gb1 ~ g1 ~ g1@2", AN: "ab1@2 ab1 ~ c2@2 c2@2 f1@2 f1@2 gb1@2 g1@2",
  AO: "ab1 ~ ab1 ~ c2@2 c2@2 db2 ~ db2 ~ eb2!2 f2 eb2", AP: "ab1@2 ab1 ~ c2@2 c2 ~ db2@2 db2 ~ eb2 ~ eb2 ~",
  AQ: "ab1 ~ ab1 ~ c2@2 c2@2 db2@2 db2 ~ d2 ~ d2@2", AR: "eb2 ~ eb2@2 f2@2 f2 ~ bb1 ~ bb1 ~ eb2@2 eb2 ~",
})).s("gm_electric_bass_finger").gain(0.44).pan(0.4)

// bass · electric bass finger · soft notes
const bass_soft = note(`<
  ~@2 A ~ A ~ A B C ~@2 D@5 ~@2 A ~ A ~ A B C ~@9 A ~ A ~ A B C ~@2 D@4 ~@6 A@2 ~@10 A ~ A C E ~@20
>`.pickRestart({
  A: "~@2 ab1 ~@13", B: "~@2 ab1 ~@3 ab1 ~@3 ab1 ~@3 ab1 ~", C: "~@2 ab1 ~@3 ab1 ~@9", D: "~@15 eb2", E: "~@14 ab1 ~",
})).s("gm_electric_bass_finger").gain(0.27).pan(0.4)

// chords · rock organ
const rock_organ = note(`<
  A B@2 C@2 D@4 E@7 F G@2 H@2 I@2 J@2 K@7 L M@2 N@2 O@4 K@7 L P Q R S T U V W X@7 Y Z@2 AA@2 AB@2 AC AD AE AF@6 AG AH AI
  AJ AK@4 AG ~
>`.pickRestart({
  A: "~@8 [gb5,b5,eb6] ~ [ab5,db6,f6] ~ [eb5,gb5,b5] ~ [f5,ab5,db6] ~", // B Db B Db
  B: "[[gb5,ab5]@24 [g5,ab5] gb5 eb5 d5 db5 b4 ab4 ~]/2", // Gbsus2 Abmaj7
  C: "[[gb4,ab4]@13 ~ [bb5,b5] db6@2 ab5 c6 [db6,eb6] b5 [b5,db6] ab5 ab5@9]/2", // Gbsus2 Bmaj7 Dbsus2 Bsus2
  D: "[[c5,gb5,ab5]@19 ~ ab5 gb5 eb5 d5 db5 b4 ab4 gb4 ab4 b4 ~@2 c5@32, ~@15 ab4@17, ~@31 gb4@33]/4", // Ab7
  E: "~@2 [c6,eb6,gb6,ab6] ~@3 [b5,db6,f6,ab6] ~", F: "~@8 db6 eb6 b5 db6 b5 ab5 gb5 bb5, ~@4 ab6 ~@3",
  G: "[[c5,gb5,ab5]@22 ~@2 [g5,ab5] gb5 eb5 d5 db5 b4 ab4 gb4]/2", // Ab7 Abmaj7
  H: "[[gb4,ab4,c5]@22 eb5 gb5 ab5@2 b5 ~@2 eb6 b5@2, ~@14 db6 ~]/2", // Ab7
  I: "[[c5,gb5,ab5]@20 gb6@2 [db6,eb6] [ab5,b5] f6@2 [b5,c6] [gb5,ab5] [b5,eb6]@2 [db6,f6]@2, ~@20 eb6 ~@3 db6 ~@7]/2", // Ab7 Dbsus2 Abm Cmaj7 Gbsus2 B Db
  J: "[c5,gb5,ab5]/2", K: "~@2 [gb5,ab5,b5,eb6,gb6,ab6] ~@3 [f5,ab5,b5,db6,f6,ab6] ~",
  L: "~@8 ab6 gb6 eb6 db6 b5 ab5 gb5 bb5", M: "[[c5,gb5,ab5]@23 ~ eb6 db6 b5 ab5 db6 b5 ab5 gb5]/2",
  N: "[ab5@18 eb6 [eb6,gb6]!7 ab6@2 gb6 eb6 b6@2, [c5,gb5]@25 ~@5 bb6 ~]/2", // Ebm Cdim
  O: "[[c5,gb5,ab5]@20 [eb6,gb6] db6 b5 ab5 [db6,f6] b5 ab5 gb5 ab5 b5 ~@2 [c5,gb5]@32, ab6@3 ~@12 ab5@17]/4", // Ab7 Ebm Db Cdim
  P: "[c5,eb5,gb5,ab5]@9 ~ [c5,eb5,gb5]@2 ~ [c5,eb5,gb5,ab5] ~@2, ~@10 ab5 ~@5", // Ab7 Cdim Ab7
  Q: "[c5,eb5,gb5,ab5]@2 ~ [c5,eb5,gb5,ab5] ~ [eb5,gb5,ab5] db5 b4 [db5,f5] b4 ab4 gb4 ab4 [ab4,b4] ~ [gb4,b4,eb5]", // Ab7 Db Abm B
  R: "~ [gb4,b4,eb5] [f4,ab4,db5] ~ [eb4,gb4,ab4] ~ eb4 f4 ab4 ~ ab4 ~ ab4@2 f4 eb4, ~@2 b4 ~@5", // B Db Ab7
  S: "ab4 bb4 ab4 f4 ab4@2 ab4@2 b4 db5 ~ b4 [db5,ab5] b4 ab4 ~, ~@4 [f5,ab5] ~ f5 ~", // Db5 Fm
  T: "[gb4,c5,eb5,ab5] ~ [gb4,c5,eb5,ab5]@2 ~ [gb4,c5,eb5,ab5]@2 ~ [gb4,c5,eb5,ab5] ~ [gb4,c5,eb5,ab5] ~@2 [gb4,c5,eb5,ab5]@2 ~", // Ab7
  U: "[gb4,c5,eb5,ab5] ~ [gb4,c5,eb5,ab5]@2 ~ [gb4,c5,eb5,ab5]@2 ~ [b4,ab5] [ab4,b4,db5] bb4 ~ bb4 [ab4,bb4,b4] f4 eb4", // Ab7 E Db7 Abm
  V: "[ab4,ab5] ~ [ab4,ab5] ~@2 [eb4,gb4,ab4,c5] ~ d4 [eb4,gb4,ab4,c5] ~ [eb4,gb4,ab4,c5] ~@2 [eb4,gb4,ab4,c5] ~ d4", // Ab Ab7
  W: "[eb4,c5,eb5,gb5,ab5] ~ [eb4,c5,gb5]@2 ~ [c5,eb5,gb5,ab5] ~ d4 [eb4,c5,eb5,gb5,ab5] ~ [c5,eb5,gb5,ab5] ~ [e5,gb5,bb5,db6]@2 [f5,g5,b5,d6]@2, ~@2 [eb5,ab5] ~@7 eb4@2 ~@4", // Ab7 Cdim Ab7 Gb7 G7 Ab5
  X: "[c6,gb6] [b5,f6], [eb6,ab6]", Y: "ab6 gb6 eb6 db6 eb6 b5 db6 ab5 b5 gb5 bb5 f5 ab5 eb5 f5 eb5",
  Z: "[[c5,gb5,ab5]@20 ab5 gb5 eb5 d5 db5 b4 ab4 f4 eb4 f4 ab4 b4]/2", // Ab7
  AA: "[[ab4,ab5]@20 [eb5,gb5]@5 [db5,d5] b4 ab4@4 f4, ~@20 d5 ~@11]/2", // Ab Ebm Dmaj7
  AB: "[eb4 f4 ab4@19 ~ ab4@5 f4 eb4 f4 ab4 ~]/2", AC: "~ bb4 [gb4,ab4]@14, b4@2 a4 ~@13",
  AD: "~ eb5 f5 ~ ab5 ~ ab5@4 [ab4,db5,f5] ~ [ab4,db5,f5]@2 [f4,b4,d5]@2", // Db Bdim
  AE: "[gb4,c5,eb5]@3 ~ [gb5,ab5,c6,eb6,gb6,ab6]@2 ~@6 [f5,ab5,b5,db6,f6,ab6]@2 ~@2", // Cdim Ab7 Db7
  AF: "~@2 [gb5,ab5,c6,eb6,gb6,ab6] ~@3 [f5,ab5,b5,db6,f6,ab6] ~", // Ab7 Db7
  AG: "~@8 [eb6,ab6] ~ [db6,f6,bb6]@2 [b5,eb6,ab6]@2 [db6,f6,ab6]@2, ~@4 b5 ~@3", // Ab5 Bbm Abm Db
  AH: "[b5,eb6,gb6,ab6]@7 ~ [b5,db6,f6,ab6]@2 ~ [b5,db6,f6,ab6]@2 f5 [b5,db6,f6,ab6] ~", // Abm7 Db7
  AI: "[b5,eb6,gb6,ab6]@2 ~ [b5,eb6,gb6,ab6] [b5,gb6,ab6] ~ [b5,eb6,gb6,ab6]@2 ~ [b5,db6,f6,ab6] ~ f5 [b5,db6,f6,ab6]@2 [db6,f6,ab6]@2, ~@4 eb6@2 ~@8 b5 ~", // Abm7 Db7 Db
  AJ: "[b5,eb6,gb6,ab6]@3 ~ [b5,eb6,gb6,ab6]@2 ~ [b5,eb6,f6,ab6] ~ [b5,eb6,f6,ab6] ~ ab5 [b5,eb6,f6,ab6] ~ [b5,eb6,f6,ab6] ~", // Abm7 Fm7b5
  AK: "~@4 [b5,eb6,gb6,ab6]@2 ~ [b5,eb6,f6,ab6] ~ [b5,eb6,f6,ab6] ~ ab5 [b5,eb6,f6,ab6] ~ [b5,eb6,f6,ab6] ~", // Abm7 Fm7b5
})).s("gm_rock_organ").gain(0.22).pan(0.9)

// other · trumpet
const trumpet = note(`<
  A B C D C D C D E F G F H F G F I B C D C D C D E F G F H F G F I B C D C D C D E F G F H F G F I B C D C D C D E F G
  F H F G F I B C D C D C D E F G F H F G F I F G F H F G F I ~
>`.pickRestart({
  A: "~@4 eb5 db5 b4 ab4", B: "ab4@3 ~", C: "~@10 bb4 ~@3 ab4 ~", D: "gb4 ~", E: "ab5 ~@15", F: "~@5 eb5@3 db5 ~@7",
  G: "b4 bb4 ab4 ~@2 gb4@3 ab4 ~@7", H: "b4 bb4 ab4!2 ~ ab4 ab4@7 ~@3", I: "ab4 ~@3 eb5 db5 b4 ab4",
})).s("gm_trumpet").gain(0.29).pan(0.4)

// other · harmonica
const harmonica = note("<~@49 A B C D E F G H ~@23 I J K L M L N O P ~>".pickRestart({
  A: "~@2 [eb5,gb5,ab5]@11 ~ [db5,f5] b4, ~@7 ab5", B: "[db5,f5,ab5] b4 ab4 gb4 ab4 b4 ~@7 eb5 f5 ~",
  C: "ab5 ~ ab5@2 ~ eb5 f5 ~ ab5 ~ ab5 ~@2 eb5 f5 ~", D: "ab5 bb5 ~ f5 ~ eb5 ~ f5 ~ b4 ~ ab4 ~ ab4 f4 ~",
  E: "ab4 ~@3 b4 c5 ab5@2 ~ ab5 ~ ab5 ~ c5 ab5 ~", F: "ab5 ~ ab5 ~ ab5 bb5 ~ f5 ~ eb5 ~ f5 b4 [ab4,bb4] f4 eb4",
  G: "~@4 b4 c5 [eb5,gb5,ab5] ~ [eb5,gb5,ab5] ~@2 [eb5,gb5,ab5] ~ b4 [db5,f5,ab5] ~", // Ab7 Db
  H: "[b4,eb5] ~ ab4 gb4 ab4@2 ~@10", I: "~@12 ab5 ~ ab5 ~", J: "ab5 ~ ab5 ~@2 eb5 f5 ~ ab5!2 ~ ab5 ~ bb5 eb5 f5",
  K: "ab5 ~ ab5 ~ ab5 gb5 eb5 d5 db5 b4 ab4 ~ ab4@2 ab4@2",
  L: "~ eb5 f5 ~ ab5 ~ ab5@2 ~ eb5 f5 ~ b5!2 [e5,f5,g5,a5] [f4,g4,a4,b4,c5,d5], ~@6 c6 ~", // Fmaj7 Dm7
  M: "~ eb5 f5 ~ ab5 gb5 ~ gb5 ~ eb5 db5 eb5 b4 c5 ab4 ~", N: "~ eb5 f5 ~ ab5 bb5 ~ ab5 ~ gb5 eb5 ~ db5 b4 ab4 ~",
  O: "~ eb5 f5 ~ ab5 ~ ab5@2 ~ eb5 f5 ~ ab5@2 ~@2", P: "[gb5,b5] [f5,bb5] [eb5,ab5] [db5,f5] eb5 db5 b4 ab4",
})).s("gm_harmonica").gain(0.44).pan(0.4)

// other · alto sax
const alto_sax = note(`<
  A B C D C D C D E F G F H F G F I J C D C D C D E F G F H F G F I J C D C D C D E F G F H F G F I J C D C D C D E F G
  F H F G F I J C D C D C D E F G F H F G F I F G F H F G F I ~
>`.pickRestart({
  A: "~@4 gb4 f4 eb4 db4", B: "b3@11 ~@5", C: "~@8 ab3@3 ~ g3@3 ~", D: "gb3 ~", E: "eb4 ~@7", F: "~@5 b4@3 ab4 ~@7",
  G: "gb4 f4 eb4 ~@2 [b3,eb4]@3 [b3,eb4] ~@7", H: "gb4 f4 eb4!2 ~ eb4 [b3,eb4]@8 ~@2", I: "[b3,eb4] ~@3 gb4 f4 eb4 db4",
  J: "b3@3 ~",
})).s("gm_alto_sax").gain(0.25).pan(0.3)

// other · trombone
const trombone = note(`<
  A B C D C D C D E F G F H F G F I J C D C D C D E F G F H F G F I J C D C D C D E F G F H F G F I J C D C D C D E F G
  F H F G F I J C D C D C D E F G F H F G F I F G F H F G F I ~
>`.pickRestart({
  A: "~@4 eb4 db4 b3 ab3", B: "gb3@15 ~", C: "~@8 d4@4 db4@3 ~", D: "c4 ~", E: "[gb3,c4] ~@7", F: "~@5 gb4@3 f4 ~@7",
  G: "~@5 ab3@2 ~ f3 ~@7", H: "~@6 f3@7 ~@3", I: "gb3 ~@3 eb4 db4 b3 ab3", J: "gb3@3 ~",
})).s("gm_trombone").gain(0.29).pan(0.2)

// other · baritone sax
const baritone_sax = note(`<
  A B C D C D C D E F ~ F E F ~ F G B C D C D C D E F ~ F E F ~ F G B C D C D C D E F ~ F E F ~ F G B C D C D C D E F ~
  F E F ~ F G B C D C D C D E F ~ F E F ~ F G F ~ F E F ~ F G ~
>`.pickRestart({
  A: "~@4 b2 c3 b2 eb2", B: "ab2@3 ~", C: "~@8 bb2@3 f2 eb2@4, ~@12 e2 ~@3", D: "ab2 ~", E: "ab2 ~@3 f2!2 gb2 g2",
  F: "ab2!2 ~@6", G: "ab2 ~@3 b2 c3 b2 eb2",
})).s("gm_baritone_sax").gain(0.29).pan(0.1)

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

// drums · rim
const rim = s("rim").struct("<[~ x] ~@89>").gain(0.33)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@14 B ~ A@14 B ~ A@3 C A@3 D A@6 B ~ A@14 B E A@3 C A@3 F A@3 G A@2 B E A@6 B E ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@2 x!2 ~@2 x!2 ~@2 x", D: "~@2 x ~@4 x", E: "x", F: "~@3 x!5 ~@8",
  G: "~@4 x ~@2 x!5 ~@4",
})).gain(0.49)

// drums · low tom
const low_tom = s("lt").struct("<~@10 [~@3 x ~@4] ~@65 [~@12 x!4] ~@13>").gain(0.44)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B@2 C B@2 D E F G H@4 I ~ A B@2 C B@2 D E F H@5 I ~ A B@2 H A B@2 E F H@5 I ~ A B@6 J F H@5 I J A B@3 A B@2 ~ F
  H@2 K L H I J M J@3 B@3 J ~
>`.pickRestart({
  A: "~@2 x ~ x ~ x ~ x ~ x ~ x ~ x!2", B: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", C: "x ~ x ~ x ~@3 x ~ x ~ x ~ x!2",
  D: "x ~@3 x ~ x ~ x ~ x ~ x ~ x!2", E: "x!2 ~@6", F: "~ x!2 ~ x ~ x!2", G: "x!3 ~ x!4", H: "x!8", I: "x!6 ~@2",
  J: "x!7 ~", K: "x!4 ~@4", L: "~ x!7", M: "~ x!6 ~",
})).gain(0.27)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@4 A ~@2 B ~ C D@5 E ~@4 A ~@2 B ~ C D@5 E ~@9 C D@5 E ~@9 C D@5 E ~@9 C D@2 F D@2 E ~@10
>`.pickRestart({
  A: "~@3 x ~@4", B: "~ x ~@6", C: "~@3 x ~@2 x!2 ~@2 x!2 ~@3 x", D: "~@3 x ~@3 x ~@3 x ~@3 x",
  E: "~@3 x ~@3 x ~@3 x ~@4", F: "~@3 x ~@3 x ~@8",
})).gain(0.11)

// drums · open hat
const open_hat = s("oh").struct(`<
  A ~@7 B ~@6 C ~@8 B ~@6 C ~@4 D ~@3 B ~@6 C ~@8 A ~@6 C A ~@3 D ~@3 E ~@3 F ~@2 C A@5 ~@3 A ~
>`.pickRestart({
  A: "~@7 x", B: "~@2 x ~ x!4", C: "~@3 x", D: "~@9 x ~@3 x ~@2", E: "x", F: "~ x",
})).gain(0.49)

// … 11 more lines

More by Billy Preston