Strudelify

Sara Smile

Hall & Oates

KeyF majorTempo82 bpm
0:00/0:00
// Sara Smile — Hall & Oates
// 82 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 11 "Cello" cello (copy of ch 6 "Melody 2" piano); ch 9 "Strings" synth strings 1 (copy of ch 7 "Melody 3" piano)
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(82/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · fretless bass · "Bass"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V I W X Y Z W G AA AB AC AD AE Q R AF T AG AH AI AJ AK AL AM AN G AO AB AP
  AQ AR Q AS AT AU AV AW U AX AY AZ BA AU BB BC
>`.pickRestart({
  A: "d2@3 d2 ~@2 c2@2 c2@3 g2@3 c3@2", B: "g1@2 ~ a1 ~@2 c2@9 bb1", C: "d2@3 d3@3 a2@2 c2@3 c2@3 c3 c2",
  D: "g1@2 ~ a1 ~@2 c2@7 bb2 ~ bb1", E: "d2@3 d2 ~@2 d2@8 c2 d2", F: "c2@2 ~ c2 ~@2 c2@7 e1 g1 c2",
  G: "bb1 ~@2 bb1 ~@2 bb1@7 f1 a1 bb1", H: "a1@3 d3@3 a2@2 a1@2 ~ a1 a2!2 a1 ~", I: "d2@3 d3 ~@2 d2@9 c2",
  J: "c2@3 c2 ~@2 c2@8 g1 c2", K: "bb1@2 ~ bb1 ~@2 bb1@8 a1 f1", L: "a1@3 d3@3 a2 a1 a1@2 ~ a1 a2!2 a1 ~",
  M: "bb1@3 bb1 ~@2 bb1@2 c2@2 ~ c2 c3!2 c2 ~", N: "db2@3 db2 ~@2 db2@2 d2@3 a2@3 d3@2",
  O: "bb1@3 bb1@2 ~ bb1@2 c2@2 ~ c2 c3!2 c2 ~", P: "eb2@3 bb2@3 eb3@2 d2@3 d2@2 ~ d2@2",
  Q: "g2 ~@2 g2 ~@2 g2@7 d2 f2 g2", R: "g2 ~@2 g2 ~@2 g2@6 f2 g2 f2 d2", S: "d2@3 a2@3 d3 d2 a1@3 a1 ~@2 a1@2",
  T: "g2@3 d3@3 g3@2 c2@4 db2@4", U: "d2@3 a2@3 d3@2 a1@3 e2@3 a2 a1", V: "g2@3 d3@3 g3@2 c2@2 ~ c2 c3!2 c2 ~",
  W: "c2 ~@2 c2 ~@2 c2@7 e1 g1 c2", X: "bb1@2 ~ bb1 ~@2 bb1@9 a1", Y: "a1@2 ~ a1 a2!2 a1 ~ a1@3 e2@3 a2@2",
  Z: "d2@2 ~ d2 ~@2 d2@7 d3 ~ d2", AA: "a1@2 ~ a1 a2!2 a1 ~ a1@6 ~ a1", AB: "bb1@3 f2@3 bb2@2 c2@3 g2@3 c3@2",
  AC: "db2@2 ~ db2 db3!2 db2 ~ d2@3 a2@3 d3@2", AD: "bb1@3 f2@3 bb2 bb1 c2@3 c2 ~@2 c2@2",
  AE: "eb2@3 eb2 ~@2 eb2@2 d2@3 a2@3 d3@2", AF: "d2@2 ~ d2 d3!2 d2 ~ a1@3 a1 ~@2 a1@2",
  AG: "d2@3 a2@3 d3@2 a1@3 a1 ~@2 a1@2", AH: "g2@3 d3@3 g3 g2 c2@6 ~ c2", AI: "d2@2 ~ d2 ~@2 d2@7 a1 c2 d2",
  AJ: "c2@2 ~ c2 ~@2 c2@8 g1 e1", AK: "bb1@2 ~ bb1 ~@2 bb1@7 bb2 ~ bb1", AL: "a1@3 d3@3 a2@2 a1@3 a1 ~@2 a1@2",
  AM: "d2@2 ~ d2 ~@2 d2@9 c2", AN: "c2@3 c3 ~@2 c2@9 g1", AO: "a1@6 ~ a1 a1@3 a1@2 ~ a1@2",
  AP: "db2@3 db2 ~@2 db2@2 d2@6 ~ d2", AQ: "bb1@3 f2@3 bb2@2 c2@2 ~ c2 c3!2 c2 ~",
  AR: "eb2@2 ~ eb2 eb3!2 eb2 ~ d2@3 d2@2 ~ d2@2", AS: "g2 ~@2 g2 ~@2 g2@6 f2 g2 ~@2", AT: "d2@3 d2 ~@2 d2@2 a1@6 ~ a1",
  AU: "g2@6 ~ g2 c2@4 db2@4", AV: "d2@6 ~ d2 a1@3 e2@3 a2@2", AW: "g2@3 g2 ~@2 g2@2 c2@3 g2@3 c3@2",
  AX: "g2@3 g2@2 ~ g2@2 c2@4 db2@4", AY: "d2@3 d2@2 ~ d2@2 a1@6 ~ a1", AZ: "g2@2 ~ g2 g3!2 g2 ~ c2@6 ~ c2",
  BA: "d2@2 ~ d2 d3!2 d2 ~ a1@3 e2@3 a2 a1", BB: "d2@3 a2@3 d3 d2 a1@3 e2@3 a2@2", BC: "g2@3 d3@3 g3 g2 c2@3 g2@3 c3@2",
})).s("gm_fretless_bass").gain(0.31)

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S T S U E V W X Y Z K AA AB AC AD AE AF@2 AG AH AI AJ Y F W AK AL V K AM M AN AO
  AP AQ AR AS AH AT AU S AH AV AW AX T AV AY
>`.pickRestart({
  A: "[c4,d4,f4,a4]@2 ~ [c4,d4,f4,a4] ~@4 [c2,g3,c4,e4]@2 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~", // Dm7 C
  B: "[bb1,bb2]@3 ~ [f3,bb3,d4,f4] ~ [bb1,bb2] ~@8 d4, ~@7 [f3,bb3,d4,f4]@9, ~@13 [bb1,bb2]@3, ~@7 c4", // Bb
  C: "[c4,d4,f4,a4]@8 [g3,c4,e4]@5 c3 [g3,c4,e4] ~", D: "[f3,bb3,d4,f4]@6 [bb3,d4,f4]@7 [f3,bb3,d4,f4] ~ bb1",
  E: "[a3,d4,f4,a4]@6 [d4,f4,a4]@7 [a3,d4,f4,a4] ~ d2", F: "[e3,a3,c4,e4]@6 [a3,c4,e4]@7 [e3,a3,c4,e4] ~ c2",
  G: "[bb1,bb2]@3 ~ [a3,bb3,d4,f4] ~ [bb1,bb2] ~@8 d4, ~@7 [a3,bb3,d4,f4]@9, ~@13 [bb1,bb2]@3, ~@7 c4", // Bb Bbmaj7 Bb Bbmaj7 Bb
  H: "[g3,b3,d4]@3 [g3,b3,d4] ~@4 [a3,db4,e4]@8", // G A
  I: "[a3,d4,f4,a4]@2 d3 [a3,d4,f4,a4] ~ [d2,d3] [a3,d4,f4,a4]@6 d2 [a3,d4,f4,a4] ~@2", // Dm D Dm
  J: "[c2,c3]@3 [c2,c3] [e3,a3,c4,e4] ~ [c2,c3] ~@8 c2, ~@7 [e3,a3,c4,e4]@9, ~@13 e2@3, ~@7 f2", // C Am C Am
  K: "[a3,bb3,d4,f4]@6 [bb3,d4,f4]@7 [a3,bb3,d4,f4] ~ bb1", L: "[g3,b3,d4]@5 a2 [g3,b3,d4] ~ [a3,db4,e4]@8",
  M: "[f3,bb3,d4]@5 bb2 [f3,bb3,d4] ~ [g3,c4,e4]@8", // Bb C
  N: "[db4,e4,g4,a4]@3 [db4,e4,g4,a4] ~@4 [a3,d4,f4]@3 [a3,d4,f4] ~@4", // A7 Dm
  O: "[bb3,d4,f4]@5 bb2 [bb3,d4,f4] ~ [c2,g3,c4,e4]@2 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~", // Bb C
  P: "[bb3,db4,eb4,g4]@5 eb2 [bb3,db4,eb4,g4] ~ [a3,d4,f4]@8", // Eb7 Dm
  Q: "[bb3,d4,f4,g4]@5 g2 [bb3,d4,f4,g4]@7 [bb3,d4,f4,g4]@2 g2", // Gm7
  R: "[bb3,d4,f4,g4]@5 g2 [c4,e4,g4]@6 g2 [c4,e4,g4]@2 g2", S: "[a3,d4,f4]@5 d3 [a3,d4,f4] ~ [a3,c4,e4]@8",
  T: "[bb3,d4,f4,g4]@3 g2 [bb3,d4,f4,g4]!2 g2 ~ [bb3,d4,f4,g4]@4 [b3,eb4,f4,ab4]@4", // Gm7 Fm7b5
  U: "[bb3,d4,f4,g4]@3 g2 [bb3,d4,f4,g4]!2 g2 ~ [bb3,d4,f4,g4]@3 [bb3,d4,f4,g4] ~@4", // Gm7
  V: "[e3,a3,c4,e4]@2 c3 [e3,a3,c4,e4] ~ [c2,c3] [e3,a3,c4,e4]@6 c2 [e3,a3,c4,e4] ~@2", // Am C Am
  W: "[a3,bb3,d4,f4]@2 bb2 [a3,bb3,d4,f4] ~ [bb1,bb2] [a3,bb3,d4,f4]@6 bb1 [a3,bb3,d4,f4] ~@2", // Bbmaj7 Bb Bbmaj7
  X: "[g3,b3,d4]@3 [g3,b3,d4] ~@4 [a2,a3,db4,e4]@2 ~ [a3,db4,e4] ~@2 [a3,db4,e4] ~", // G A
  Y: "[d2,d3]@3 [d2,d3] [a3,d4,f4,a4] ~ [d2,d3] ~@8 d2, ~@7 [a3,d4,f4,a4]@9, ~@13 a2@3, ~@7 bb2", // D Dm D Dm
  Z: "[c2,c3]@3 ~ [e3,a3,c4,e4] ~ [c2,c3] ~@8 c4, ~@7 [e3,a3,c4,e4]@9, ~@13 [c2,c3]@3, ~@7 b3", // C Am C Am C
  AA: "[g3,b3,d4]@5 a2 [g3,b3,d4] ~ [a3,db4,e4]@3 a2 [a3,db4,e4]!2 a2 ~", AB: "[bb3,d4,f4] [g3,c4,e4]",
  AC: "[db4,e4,g4,a4]@3 db2 [db4,e4,g4,a4]!2 [db2,db3] ~ [a3,d4,f4]@5 d3 [a3,d4,f4] ~", // A7 Db Dm
  AD: "[bb3,d4,f4]@3 [bb3,d4,f4] ~@4 [c2,g3,c4,e4]@2 ~ [g3,c4,e4] ~@2 [g3,c4,e4] ~", // Bb C
  AE: "[bb3,db4,eb4,g4]@3 [bb3,db4,eb4,g4] ~@4 [a3,d4,f4]@8", AF: "[bb3,d4,f4,g4] ~@5 [bb3,d4,f4,g4]@9 ~",
  AG: "[a3,d4,f4]@3 [a3,d4,f4] ~@4 [a3,c4,e4]@5 a2 [a3,c4,e4] ~", // Dm Am
  AH: "[bb3,d4,f4,g4]@3 [bb3,d4,f4,g4] ~@4 [bb3,d4,f4,g4]@4 [b3,eb4,f4,ab4]@4", // Gm7 Fm7b5
  AI: "[a3,d4,f4]@3 d2 [a3,d4,f4]!2 [d2,d3] ~ [a3,c4,e4]@3 a2 [a3,c4,e4]!2 a2 ~", // Dm D Am
  AJ: "[bb3,d4,f4,g4]@5 g2 [bb3,d4,f4,g4] ~ [bb3,d4,f4,g4]@3 c2 [bb3,d4,f4,g4]!2 [c2,c3] ~", // Gm7 C
  AK: "[g3,b3,d4]@3 a1 [g3,b3,d4]!2 [a1,a2] ~ [a3,db4,e4]@5 a2 [a3,db4,e4] ~", // G A
  AL: "[d2,d3]@3 ~ [a3,d4,f4,a4] ~ [d2,d3] ~@8 f4, ~@7 [a3,d4,f4,a4]@9, ~@13 [d2,d3]@3, ~@7 e4", // D Dm D Dm D
  AM: "[g3,b3,d4]@3 [g3,b3,d4] ~@4 [a3,db4,e4]@5 a2 [a3,db4,e4] ~", // G A
  AN: "[db4,e4,g4,a4]@5 db3 [db4,e4,g4,a4] ~ [a3,d4,f4]@8", AO: "[bb3,d4,f4]@3 [bb3,d4,f4] ~@4 [g3,c4,e4]@8",
  AP: "[db4,eb4,g4,bb4] [a3,d4,f4]", AQ: "[bb3,d4,f4,g4]@5 ~ [bb3,d4,f4,g4]@9 ~",
  AR: "[bb3,d4,f4,g4] ~@2 [bb3,d4,f4,g4] ~@2 [bb3,d4,f4,g4]@4 ~ [c4,e4,g4]@2 g2 ~ [c4,e4,g4]", // Gm7 C
  AS: "[a3,d4,f4]@3 [a3,d4,f4] ~@4 [a3,c4,e4]@8", AT: "[a3,d4,f4]@5 d3 [a3,d4,f4] ~ [a3,c4,e4]@3 a2 [a3,c4,e4]!2 a2 ~",
  AU: "[f4,g4,bb4,d5]@8 [bb3,d4,f4,g4]@3 c2 [bb3,d4,f4,g4]!2 [c2,c3] ~", // Gm7 C
  AV: "[a3,d4,f4]@5 d3 [a3,d4,f4] ~ [a3,c4,e4]@2 ~ [a3,c4,e4] ~@4", // Dm Am
  AW: "[f4,g4,bb4,d5]@3 g2 [f4,g4,bb4,d5]!2 g2 ~ [bb3,d4,f4,g4]@8", AX: "[a3,d4,f4] [a3,c4,e4]",
  AY: "[bb3,d4,f4,g4]@3 [bb3,d4,f4,g4] ~@4 [bb3,d4,f4,g4]@8", // Gm7
})).s("gm_piano").gain(0.17).pan(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  A B C D E F B ~ G ~ H I J ~ K L ~@2 M ~ M ~ E N O P ~ Q H I ~ R A ~@3 S ~@2 T ~ F O S U N H S J V ~@3 W ~@2 M ~ M ~ M
  ~@3 M ~
>`.pickRestart({
  A: "~@8 c3@2 [c2,c3] ~@2 [c2,c3] ~@2", B: "~@3 [bb1,bb2] ~@12", C: "~@13 c2 ~ [c2,c3]",
  D: "~@3 f3@3 [bb1,bb2] ~, ~@5 bb1@7 ~@4", E: "~@3 a3@3 [d2,d3] ~, ~@5 d2@7 ~@4",
  F: "~@3 e3@3 [c2,c3] ~, ~@5 c2@7 ~@4", G: "~@2 d2 ~@9 d3 ~@3", H: "~@3 a3@3 [bb1,bb2] ~, ~@5 bb1@7 ~@4",
  I: "~@5 a1 ~ [a1,a2] ~@8", J: "~@5 bb1 ~ [bb1,bb2] ~@8", K: "~@5 bb1 ~ [bb1,bb2] c3@2 [c2,c3] ~@2 [c2,c3] ~@2",
  L: "~@7 eb2 ~@8", M: "~@5 d2 ~ [d2,d3] ~@8", N: "~@2 c2 ~@9 c3 ~@3", O: "~@2 bb1 ~@9 bb2 ~@3",
  P: "~@10 a2 ~@2 a2 ~@2", Q: "~@3 [c2,c3] ~@12", R: "~@13 d2 ~ [d2,d3]", S: "~@15 a2", T: "~@7 g2 ~@8",
  U: "~@3 [d2,d3] ~@12", V: "~@5 db2 ~ [db2,db3] ~@8", W: "~@9 g2 ~@6",
})).s("gm_piano").gain(0.07).pan(0.4)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  A B C D E F G H I F J K L M L N O P Q R S T I F G U E V J W X Y Z AA AB AC AD AE AF AG E V AH H AI V AH AJ AK M AL AM
  AB AC AD AE AN AO AD AP Q AQ AD AR AD AS
>`.pickRestart({
  A: "~@3 d4@3 f4@2 ~@3 c4@5, ~ f2@7 ~@3 g4@3 ~@2, ~@2 f3@6 ~ c3@7, ~@3 a3@5 ~@2 g3@6",
  B: "~@2 bb3 d4@2 ~ bb3 d4@2 ~ bb3 d4@2 ~ bb3 ~, ~ d3@3 ~ d3@3 ~ d3@4 bb2@2 ~",
  C: "~@3 d4@3 f4@2 [c3,c4,e4]@5 e3 c4 ~, ~ f2@7 ~@8, ~ f3@3 ~@4, ~@3 a3@5 ~@8", // C
  D: "~@2 f3 [bb3,d4]@2 ~@2 [bb3,d4]@4 ~ d4 bb3 f3 d3, ~ bb2@2 ~@2 bb2@2 ~@4 bb2@2 ~@3, ~@6 f3@5 ~@5", // Bb
  E: "~@3 a4@2 ~@2 a4@2 ~ d4 a4@2 d3 a3 [d4,a4], ~ d3@3 ~ d3@2 ~@2 d3@4 ~@3, ~ d4 ~ d4 ~@4", // D5
  F: "~@2 e3 [a3,e4]@2 ~ e3 [a3,e4]@2 ~@2 [a3,e4] ~ e4 a3 e3, ~ c3@2 ~@2 c3@2 ~@2 c3@2 ~@5, ~@5 e3 ~@2", // A5
  G: "~@3 d4@2 ~@2 d4@2 ~ a3 d4@2 bb2 f3 [a3,d4], ~ bb2@3 ~ bb2@2 ~@2 bb2@4 ~@3, ~ a3 ~ a3 ~@4", // D5
  H: "~@5 g3@3 ~@3 a3@5, [a2,d4,g4]@8 ~ a2@7, ~@5 e3@3, ~@11 e4@3 ~@2", // Dsus4
  I: "~@2 d4 f4@2 ~ d4 f4@2 ~ d4 f4@2 ~ d4 ~, ~ f3@3 ~ f3@3 ~ f3@4 d3@2 ~",
  J: "~@2 f3 [a3,d4]@2 ~ f3 [a3,d4]@2 ~@2 [a3,d4] f4 d4 a3 f3, ~ bb2@2 ~@2 bb2@2 ~@2 bb2@2 ~@5, ~@5 f3 ~@2", // D5
  K: "~@3 [d4,b4]@5 ~@5 db3@3, ~ a2@6 ~ [a2,a3,db4]@8, ~ b3@2 ~@5", // G A
  L: "~@3 bb3@5 ~@3 c4@5, ~ bb2@7 ~ c3@7, ~ f3@3 ~ g3@3, ~@3 f4@3 ~@5 g4@3 ~@2",
  M: "[db3,g3,db4]@8 [d3,d4,f4]@5 f3 d4 ~", N: "[eb2,g3,db4]@5 db3 g3 ~ [d3,d4,f4]@5 f3 d4 ~",
  O: "~@3 f4@2 ~@2 f4@2 ~@2 f4@2 ~ d4@2, ~ g2@3 ~ g2@3 ~ g2@3 ~ g2@2 ~, ~@2 bb3@3 ~ bb3@3 ~ bb3@3 ~@3",
  P: "~@2 bb3 f4@2 ~@2 f4@2 ~ bb3 f4@2 ~ d4 bb3, g2@5 g2@3 ~ g2@3 ~ g2@2 ~, ~@6 bb3@3 ~@7",
  Q: "~@3 d4@5 ~@5 c3@3, ~ d3@7 [a2,a3,c4]@8, ~ a3@3 ~@4, ~@3 a4@3 ~@10", // Am
  R: "~@3 [bb3,f4]@5 [c3,bb3,f4]@4 [db3,b3,f4]@4, ~ g2@6 ~@9, ~ g3@2 ~@5", // Bb5 Fsus4 Db7
  S: "[d3,d4,f4]@5 f3 d4 ~@6 c3@3, ~ [a2,a3,c4]", T: "~@3 [bb3,f4]@4 ~ [c3,bb3,f4]@5 f3 bb3 ~, ~ g2@6 ~@9, ~ g3@2 ~@5",
  U: "[a2,d4,g4]@5 g3 d4 ~@4 [a3,e4]@5, ~@9 a2@6 ~, ~@5 e3@2 ~", // Dsus4 A5
  V: "~@2 a3 c4@2 ~ a3 c4@2 ~ a3 c4@2 ~ a3 ~, ~ c3@3 ~ c3@3 ~ c3@4 ~@3",
  W: "~@3 [d4,b4]@4 ~@4 a3@5, ~ a2@6 ~@2 a2@7, ~ b3@2 ~@2 e3@3, ~@11 e4@3 ~@2", // G
  X: "~@3 [bb3,f4]@5 ~@3 [c4,g4]@5, ~ bb2@6 ~@2 c3@6 ~, ~ f3@2 ~@2 g3@2 ~", // Bb5 C5
  Y: "~@3 db4@3 e4@2 ~@3 d4@5, ~ db3@7 ~ d3@7, ~@2 e3@6 ~@3 a4@3 ~@2, ~@3 g3@5 ~@2 a3@6",
  Z: "~@3 bb3@5 ~@5 e3@3, ~ bb2@7 [c3,c4,e4]@8, ~ f3@3 ~@4, ~@3 f4@3 ~@10", // C
  AA: "~@3 [g3,db4]@5 [d3,d4,f4]@5 f3 d4 ~, ~ eb2@6 ~@9, ~ eb3@2 ~@5", // Gdim Dm
  AB: "~@3 f4@2 ~ bb3 f4@2 ~ bb3 f4@2 ~ bb3 f4, ~ g2@3 ~ g2@3 ~ g2@3 ~@4, ~@2 bb3@3 ~@8 f3@2 ~",
  AC: "~@3 f3 bb3@2 f3 bb3@2 ~ f3 bb3@2 g2 f3 bb3, g2@6 ~@3 g2@2 ~@5",
  AD: "[d3,d4,f4]@5 f3 d4 ~@4 a3@5, ~@9 a2@7, ~@5 e3@3, ~@11 e4@3 ~@2", // Dm
  AE: "~@3 f4@3 g4@2 [c3,bb3,f4]@4 [db3,b3,f4]@4, ~ g2@7 ~@8, ~ g3@3 ~@4, ~@3 bb3@5 ~@8", // Fsus4 Db7
  AF: "~@5 f3@3 [a2,a3,c4]@5 c3 a3 ~, [d3,d4,f4] ~", AG: "~@5 f3@3 ~@5 f3@3, [g2,bb3,f4] [c3,bb3,f4]",
  AH: "~@2 a3 d4@2 ~ a3 d4@2 ~ a3 d4@2 ~ a3 ~, ~ d3@3 ~ d3@3 ~ d3@4 bb2@2 ~",
  AI: "~@2 a3 [d4,a4]@2 ~ a3 [d4,a4]@2 ~@2 [d4,a4] ~ a4 d4 a3, ~ d3@2 ~@2 d3@2 ~@2 d3@2 ~@5, ~@5 a3 ~@2", // D5
  AJ: "~@3 d4@5 [a2,a3,db4]@5 db3 a3 ~, ~ a2@7 ~@8, ~ b3@3 ~@4, ~@3 b4@3 ~@10", // A
  AK: "~@3 bb3@5 [c3,c4,e4]@5 e3 c4 ~, ~ bb2@7 ~@8, ~ f3@3 ~@4, ~@3 f4@3 ~@10", // C
  AL: "~@5 d3@3 [c3,c4,e4]@5 e3 c4 ~, [bb2,bb3,d4] ~", // C Bb
  AM: "~@3 db4@3 eb4@2 [d3,d4,f4]@5 f3 d4 ~, ~ eb2@7 ~@8, ~ eb3@3 ~@4, ~@3 g3@5 ~@8", // Dm
  AN: "~@3 d4@5 [a2,a3,c4]@5 c3 a3 ~, ~ d3@7 ~@8, ~ a3@3 ~@4, ~@3 a4@3 ~@10", // Am
  AO: "~@3 [bb3,f4]@5 [c3,bb3,f4]@5 f3 bb3 ~, ~ g2@6 ~@9, ~ g3@2 ~@5", // Bb5 Fsus4
  AP: "~@3 [bb3,f4]@4 ~ [c3,bb3,f4]@4 [db3,b3,f4]@4, ~ g2@6 ~@9, ~ g3@2 ~@5", // Bb5 Fsus4 Db7
  AQ: "[g2,bb3,f4]@5 f3 bb3 ~@4 f4@3 g4@2, ~@9 c3@7, ~@5 g3@3, ~@11 bb3@5", // Gm7
  AR: "~@5 f3@3 [c3,bb3,f4]@4 [db3,b3,f4]@4, [g2,bb3,f4] ~", // Fsus4 Db7 Gm7
  AS: "~@3 f4@3 g4@2 ~@3 f4@3 g4@2, ~ g2@7 ~ c3@7, ~ g3@3 ~ g3@3, ~@3 bb3@5 ~@3 bb3@5",
})).s("gm_acoustic_guitar_nylon").gain(0.17).pan(0.6)

// bass · electric bass finger · "Bass"
const bass_2 = note(`<
  A B C B D E F G D E F H I J I K L M N O P B D Q F R D Q F S T J I K L M N O P B D Q F R D Q F S T J I K L M N O P B N
  O P B N O P B
>`.pickRestart({
  A: "[d2,d3]@2 d3 f2@5", B: "g2 a2 bb2 c3@3 c2@2", C: "[d2,d3]@2 d3 a2@5", D: "d2@3 d3@2 d2 d3 d2",
  E: "c2@3 e3@2 c2 c3 c2", F: "bb1@3 bb2@2 bb1 bb2 bb1", G: "a1@3 a2@2 a1 c2 db2", H: "a1@6 a2@4 e2@2 a2 g2 e2@2",
  I: "bb1@2 bb1 c2@3 c2@2", J: "db2@2 db2 d2@3 d2@2", K: "eb2 d2", L: "g1@2 g2 ~@5", M: "~@6 c2 db2",
  N: "d2@2 d2 a2@3 a2@2", O: "g2 a2 bb2 c3@2 db3@3", P: "d3@2 d2 a2@3 a2@2", Q: "c2@3 c3@2 c2 c3 c2",
  R: "a1@6 a2@4 e2@2 e2 g2 a2@2", S: "bb1@3 a2@2 e2 a1@2", T: "bb1@2 bb1 c2 c2@2 c2@2",
})).s("gm_electric_bass_finger").gain(0.31)

// other · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
  ~@4 A B C D E F G H I J K L M N O P O Q A R S T U V G W X Y Z AA AB@2 AC AD AE AF U B S AG AH R G AI I AJ AK AL AM AN
  AO AD AP AQ O AD AR AS AT P AR AU
>`.pickRestart({
  A: "a3@6 a3@6 ~ a3 ~ d2, ~@6 d3 ~", B: "[e3,a3]@6 [e3,a3]@6 ~ [e3,a3] ~ c2, ~@6 c3 ~",
  C: "[bb1,bb2]@3 bb2 [a3,bb3] ~ [bb1,bb2] ~@6 [bb1,bb2]@3, ~@7 [a3,bb3]@9", D: "[g3,b3]@3 [g3,b3] ~@4 a3@8",
  E: "a3@2 [d2,d3] a3 ~ [d2,d3] a3@6 [d2,d3] a3 ~@2", // D
  F: "[c2,c3]@3 [c2,c3] [e3,a3] ~ [c2,c3] ~@8 c2, ~@7 [e3,a3]@9, ~@13 e2@3, ~@7 f2", // C A5 C A5
  G: "[a3,bb3]@6 [a3,bb3]@6 ~ [a3,bb3] ~ bb1, ~@6 bb2 ~", H: "[g3,b3]@5 [a1,a2] [g3,b3] a1 a3@8",
  I: "[f3,bb3]@5 [bb1,bb2] [f3,bb3] bb1 g3@8", J: "~@8 a3@3 a3 ~@4",
  K: "bb3@5 [bb1,bb2] bb3 bb1 [c2,g3]@2 c2 g3 ~@2 g3 ~", L: "bb3@5 eb2 bb3 eb2 a3@8", M: "bb3@5 g2 bb3@7 bb3@2 g2",
  N: "bb3@5 g2 ~@6 g2 ~@2 g2", O: "a3@5 [d2,d3] a3 d2 a3@8", P: "bb3@3 g2 bb3!2 g2 ~ bb3@4 b3@4",
  Q: "bb3@3 g2 bb3!2 g2 ~ bb3@3 bb3 ~@4", R: "[e3,a3]@2 [c2,c3] [e3,a3] ~ [c2,c3] [e3,a3]@6 [c2,c3] [e3,a3] ~@2",
  S: "[a3,bb3]@2 [bb1,bb2] [a3,bb3] ~ [bb1,bb2] [a3,bb3]@6 [bb1,bb2] [a3,bb3] ~@2", // Bbmaj7 Bb Bbmaj7 Bb Bbmaj7 Bb Bbmaj7
  T: "[g3,b3]@3 [g3,b3] ~@4 [a2,a3]@2 ~ a3 ~@2 a3 ~", // G A
  U: "[d2,d3]@3 [d2,d3] a3 ~ [d2,d3] ~@8 d2, ~@7 a3@9, ~@13 a2@3, ~@7 bb2", // D
  V: "[c2,c3]@3 c3 [e3,a3] ~ [c2,c3] ~@7 b3@2, ~@7 [e3,a3]@9, ~@13 [c2,c3]@3", // C A5 C A5 C
  W: "[g3,b3]@5 [a1,a2] [g3,b3] a1 a3@3 a2 a3!2 a2 ~", X: "bb3 g3", Y: "~@3 db2 ~@2 [db2,db3] ~ a3@5 [d2,d3] a3 d2",
  Z: "bb3@3 bb3 ~@4 [c2,g3]@2 c2 g3 ~@2 g3 ~", AA: "bb3@3 bb3 ~@4 a3@8", AB: "bb3 ~@5 bb3@9 ~",
  AC: "a3@3 a3 ~@4 a3@5 a2 a3 a2", AD: "bb3@3 bb3 ~@4 bb3@4 b3@4", AE: "a3@3 d2 a3!2 [d2,d3] ~ a3@3 a2 a3!2 a2 ~",
  AF: "bb3@5 g2 bb3 g2 bb3@3 c2 bb3!2 [c2,c3] ~", AG: "[g3,b3]@3 a1 [g3,b3]!2 [a1,a2] ~ a3@5 a2 a3 a2",
  AH: "[d2,d3]@3 d3 a3 ~ [d2,d3] ~@6 [d2,d3]@3, ~@7 a3@9", AI: "[g3,b3]@3 [g3,b3] ~@4 a3@5 a2 a3 a2",
  AJ: "~@5 [db2,db3] ~ db2 a3@8", AK: "bb3@3 bb3 ~@4 g3@8", AL: "~ a3", AM: "bb3@5 ~ bb3@9 ~",
  AN: "bb3 ~@2 bb3 ~@2 bb3@4 ~@3 g2 ~@2", AO: "a3@3 a3 ~@4 a3@8", AP: "a3@5 [d2,d3] a3 d2 a3@3 a2 a3!2 a2 ~",
  AQ: "~@8 bb3@3 c2 bb3!2 [c2,c3] ~", AR: "a3@5 [d2,d3] a3 d2 a3@2 ~ a3 ~@4", AS: "~@3 g2 ~@2 g2 ~ bb3@8", AT: "a3!2",
  AU: "bb3@3 bb3 ~@4 bb3@8",
})).s("gm_electric_guitar_muted").gain(0.11).pan(0.6)

// other · electric guitar muted · "Guitar" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@4 A B C ~@3 D E F ~ G ~@3 H ~ H ~ A ~@2 I ~ J D E ~ K L ~@8 B ~@2 M ~ D ~ F N ~@3 O ~@2 H ~ H ~ H ~@3 H ~
>`.pickRestart({
  A: "~@5 d2@7 d2@2 ~@2", B: "~@5 c2@7 c2@2 ~@2", C: "~@3 bb1 ~@12", D: "~@5 bb1@7 bb1@2 ~@2", E: "~@7 a2 ~@8",
  F: "~@7 bb2 ~@8", G: "~@7 bb2 c3@2 c3 ~@2 [c2,c3] ~@2", H: "~@7 d3 ~@8", I: "~@10 a2 ~@2 a2 ~@2", J: "~@3 c2 ~@12",
  K: "~@15 d3", L: "~@8 c3@2 c3 ~@2 [c2,c3] ~@2", M: "~@3 d2 ~@12", N: "~@7 db3 ~@8", O: "~@9 g2 ~@6",
})).s("gm_electric_guitar_muted").gain(0.05).pan(0.6)

// chords · electric guitar clean · "Guitar"
// … 85 more lines

More by Hall & Oates