Strudelify

Angel Eyes

Frank Sinatra

KeyD minorTempo80 bpm
0:00/0:00
// Angel Eyes — Frank Sinatra
// 80 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 72 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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 · "Acoustic Piano"
const piano = note(`<
  A B@2 C D E@2 F G H@2 F D I@2 J K L@2 M@2 N@2 O P Q@2 C R S@2 T G U@2 C D E@2 F G H@2 F D I@2 J K L@2 M@2 N@2 O P Q@2
  C R S@2 T G V@2 W@2 ~@3
>`.pickRestart({
  A: "~@7 d4",
  B: "[c3@5 d4 b2@5 ab4 [bb2,ab3,d4]@5 f4 [a2,g3,db4,f4]@3 d2@8 ~ a2@3 [g2,f3,b3]@6 [a2,g3,c4]@9, a3@4 ~@3 [f3,c4]@4 ~@5, f4@4 ~@2 f4@4 ~@2 g4@4 ~@5 f4@27, ~@29 d2@2 ~@17]/2", // Bb7 Aaug G7 Am7 F5
  C: "d3@5 d4 c3@5 ~ [b2,d4]@6 ~@3 g4@3, f3@3 [bb2,e3,db4], a3 ~, ~@6 a4@4 ~ ab4@10 ~@3", // Bm Bbdim
  D: "[a2,f4]@6 f4@2 d4@2 ~@2 [ab2,c4]@6 [g2,d3,b3]@3 [gb2,db3,bb3]@3, d3@3 ~, a3 ~, ~ a2 ~@2, ~@5 f4@7", // Dm Ab G Gb
  E: "[~@4 d4 ~ f4@4 a4 ~ e5@4 e5 ~ d5@3 ~@3 e2@5 b3 e2@5 ~ e3@6 eb3@6, [f2,a3]@2 b2!2 d3@2 g3@2, c3@6 d3@6 [a3,f4]@12 ~@6 c4@4 ~ db4@13, ~@7 a4@9]/2", // F Dm
  F: "d3@5 d4 c3@5 ~ [b2,d4]@6 ~@3 g4@3, f3@3 [bb2,db4], a3 ~, ~@6 a4@4 ~ ab4@10 ~@3", // Bm Bbm
  G: "a2@5 f4 d4@3 ~@3 [ab2,c4]@6 ~@3 d4@3, [d3,a3] d3, f4@2 ~ a2@3 ~@3 [g2,b3]@3, ~@3 f4@4 ~", // Ab D5 G
  H: "[c3@5 d4 b2@5 d4 [bb2,ab3,c4,d4,f4]@6 [a2,g3,b3,db4,f4]@3 d3@6 c3@6 a2 ~ ab2 ~@6 b2@2 e3@2 eb3@2, a3@4 ~@3 [f3,a3]@5 g2@2 ~@2, f4@4 ~@2 f4@4 ~@11 d4@27, ~@13 [f3,a3,b3]@3]/2", // Bb7 Aaug F Bm7b5
  I: "[c3@5 d4 d3@5 a4 b2@5 e5 d5@3 ~@3 e2@5 b3 e2@5 ~ e3@6 eb3@6, [f2,a3]@6 e5@2 ~ b2@3 d3@6 g3@6, ~@6 f4@4 ~@2 [a3,f4]@12 ~@6 c4@4 ~ db4@13, ~@7 a4@9]/2", // F Dm
  J: "~@4 d4 ~ a4@4 ~@2 [b2,d4]@6 ~@3 g4@3, f3@3 ~, a3 ~, d3 c3 ~ [bb2,db4], ~@5 ab4@5 ~@2", // Bm Bbm
  K: "f4@4 f4 ~ d4@3 ~@3 [ab2,c4]@6 ~@3 d4@3, [d3,a3] d3, a2!2 ~ [g2,b3], ~@3 f4@4 ~", // Ab D5 G
  L: "[f4@4 d4 ~ f4@4 d4 ~ [bb2,ab3,c4,d4,f4]@6 [a2,g3,a3,b3,db4,f4]@3 d3@7 ~ a2 ab2@2 g2@2 f2@2 ~@6 d5@6, a3@4 ~@3 [f3,g3,a3,d4]@7 ~@2, c3 b2 ~@4 d2@2]/2", // Bb7 Aaug Dm
  M: "[d5@3 ~@3 g4@2 bb4@2 c5@2 ~@3 d5@3 c5@3 ~@12 f3 ~ g3 b2@6 eb4 ~@2 e4 ~ f4, bb3@4 [a3,eb4,gb4]@3 a3@4 ~ ab3@4, [c3,eb4,g4] c3 f2!2 bb2!2 ~ [b2,d4], ~@3 d5@12 ~@6 [d4,f4]@6 f4@20 ~, ~@9 d4@5 ~@2]/2", // Ebdim Cm Bm Dm
  N: "[d5@3 ~@6 d5 c5 ~ [f2,d5]@6 c5@3 ~@3 bb2@6 ~@3 f3@3 d4 ~ eb4 e4 ~ f4 a4 ~ g4 gb4 ~ g4, [bb3,eb4,g4]@12 [a3,eb4,gb4]@9 f4@20 ~@7, c3!2 ~ f2 ~ bb2!2 [bb2,d5], ~ d5@2 ~@4 d4@5 ~@4, ~@7 a3@4 ~ g3@4]/2", // Dm Eb Ebdim Bb
  O: "[b2,d4,gb4]@6 a4 ~ ab4 g4 ~ f4 ~@9 c5 b4 ~, db5@5 b4@2 ~, a3 [ab3,d4,f4], ~ b2 e2!2", // Bm Ddim
  P: "e4@3 ~@3 b3@2 a3@2 g3@2 a2@6 ~@3 gb4@3, [a2,db4]@2 ~ a2, ab3 ~ [gb3,a3,db4]@2, ~ e4@5 ~@2", // A Gbm
  Q: "[ab4@4 ab4 ~ ab4@3 ~@3 ab2@6 [ab2,ab4]@3 [db4,e4]@7 ~ e4 e4@3 ~@3 a2@6 a2@6, [gb3,c4,e4]@4 [gb3,c4,eb4]@3 [g3,a4]@9, ab2@6 ab2@6 ~@9 a2@8 ~ a2@6 ~@12, ~@3 ab4@3 ~@5 [db4,f4]@5]/2", // Ab Dbm Gbm7b5 Cdim Gsus2 Db
  R: "[a2,f4]@6 f4@2 d4@2 ~@2 [ab2,c4]@6 [g2,b3]@3 [gb2,bb3]@3, d3@3 ~, a3 ~, ~ a2 ~@2, ~@5 f4@7", // Dm Ab G Gb
  S: "[c3@5 d4 d3@5 a4 b2@5 d5 d5@3 ~@3 e2@5 b3 [e2,c4]@5 ~ e3@6 eb3@6, [f2,a3]@6 e5@2 ~ b2@3 d3@6 g3@6, ~@6 f4@4 ~@2 [a3,f4]@12 ~@11 db4@13, ~@7 a4@9]/2", // C F Dm
  T: "d3@5 d4 a4@3 ~@3 [b2,d4]@6 ~@3 g4@3, f3@3 ~, a3 ~, ~ c3 ~ [bb2,db4], ~@3 ab4@4 ~", // Bm Bbm
  U: "[c3@5 d4 b2@5 d4 [bb2,ab3,c4,d4,f4]@6 [a2,g3,b3,db4,f4]@3 d3@7 ~ a2 ab2@2 g2@2 f2@2 d2@6 a2@6, a3@4 ~@3 [f3,a3,b3,d4]@7 ~@2, f4@2 ~ f4@2 ~@19]/2", // Bb7 Aaug Bm7b5
  V: "[c3@5 d4 b2@5 d4 [bb2,ab3,c4,d4,f4]@6 [a2,g3,b3,db4,f4]@3 d3@7 ~@2 g2@5 ~ a2@3 e3@3 d3@3 c3@3, a3@4 ~@3 [f3,a3,b3,d4]@5 ~ [f3,a3]@3, f4@4 ~@2 f4@4 ~@19 f2@2 ~@4 ab2@2 ~@11]/2", // Bb7 Aaug Bm7b5 F
  W: "[bb2@6 bb2@6 a2@6 a2@3 [d3,f3]@9 ab2@2 a2@2 eb2@2 d2@6 ~@6, d3@4 g3@3 ~@9]/2", // Dm
})).s("gm_piano").gain(0.4).pan(1)

// bass · fretless bass
const bass = note(`<
  ~ A@2 B C D E F C G H I C J K F C G H L M N M O P Q R Q C J K S C G H L T U V W X Y H Z AA AB AC AD AE AF H AG AH AI
  AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA
>`.pickRestart({
  A: "c2@3 ~ g1@3 ~", B: "c2@3 ~ g2@3 ~", C: "d2@9 ~@3 b1@5 ~ bb1@5 ~", D: "d2@5 ~ f2@5 ~ g2@5 ~ g2@5 ~",
  E: "d2@3 ~ d2@3 ~", F: "e2@5 ~ a1@5 ~ a1@9 ~@3", G: "d2@9 ~@3 f2@5 ~ g2@5 ~", H: "d2@5 ~ d2@5 ~ bb1@5 ~ a1@5 ~",
  I: "d2@3 ~ g2@3 ~", J: "d2@5 ~ f2@5 ~ g2@5 ~ gb2@5 ~", K: "f2@5 ~ d2@5 ~ d2@9 ~@3", L: "d2@3 ~ a1@3 ~",
  M: "c2@3 ~ f2@3 ~", N: "bb1@3 ~ b1@3 ~", O: "bb1@3 ~ bb1@3 ~", P: "b1@3 ~ e2@3 ~", Q: "a1@3 ~ a1@3 ~",
  R: "ab2@3 ~ ab2@3 ~", S: "e2@9 ~@3 a1@5 ~ a1@5 ~", T: "d2@5 ~ d2@5 ~ b1@4 eb2@2 bb1@3 ~ eb2@2",
  U: "d2@4 gb2@2 f2@4 ab2@2 g2@3 ~@2 g1 g2@5 ~", V: "d2@5 ~ d2@5 ~ d2@5 ~ d2@5 ~",
  W: "e2@3 ~@2 e1 a1@5 ~ a1@5 ~ eb2@5 ~", X: "d2@5 ~ d2@5 ~ b1@5 ~ bb1@4 eb2@2",
  Y: "d2@5 ~ d2@5 ~ f2@3 ~ b1@2 g2@3 ~ eb2@2", Z: "d3@2 a2@2 d2@2 ab2@3 ~ gb2@2 g2@5 ~ eb2@5 ~",
  AA: "d2@3 ~@2 d1 c2@5 ~ b1@5 ~ bb1@5 ~", AB: "d2@3 ~@2 d1 f2@5 ~ g2@5 ~ gb2@5 ~",
  AC: "f2@4 eb2@2 d2@5 ~ d2@5 ~ d2@3 ~ f2@2", AD: "e2@4 bb1@2 a1@4 bb1@2 a1@3 ~@2 a0 eb2@5 ~",
  AE: "d2@5 ~ c2@5 ~ b1@5 ~ bb1@5 ~", AF: "d2@3 ~@2 d1 d2@5 ~ f2@5 ~ g2@5 ~", AG: "d2@5 ~ e2@5 ~ f2@5 ~ gb2@4 db2@2",
  AH: "c2@3 ~@2 c1 g2@4 c2@2 f3@2 c3@2 f2@2 b1@3 ~ a1@2", AI: "bb1@3 ~@2 bb0 c2@3 ~ bb1@2 b1@5 ~ b1@5 ~",
  AJ: "c2@5 ~ c2@5 ~ f2@5 ~ f2@4 b1@2", AK: "bb1@5 ~ b1@5 ~ bb1@5 ~ c2@5 ~", AL: "b1@5 ~ d2@4 b1@2 e2@5 ~ bb1@5 ~",
  AM: "a1@5 ~ a1@5 ~ a1@5 ~ a1@5 ~", AN: "ab3@2 eb3@2 ab2@2 a2@3 ~ g2@2 ab2@5 ~ bb1@3 ~ ab1@2",
  AO: "a1@3 ~@2 a0 bb1@3 ~ ab1@2 a1@5 ~ e2@3 ~ a1@2", AP: "d3@2 a2@2 d2@2 c2@3 ~ bb1@2 b1@5 ~ bb1@5 ~",
  AQ: "d2@3 ~@2 d1 f2@3 ~ ab2@2 g2@5 ~ gb2@5 ~", AR: "f2@5 ~ d2@5 ~ d3@2 a2@2 d2@2 f2@3 ~ eb2@2",
  AS: "e2@3 ~@2 e1 bb1@4 ab1@2 a1@3 ~ eb2@2 a1@5 ~", AT: "d2@5 ~ f2@4 d2@2 b1@5 ~ bb1@4 eb2@2",
  AU: "d2@5 ~ d2@5 ~ f2@5 ~ g2@5 ~", AV: "d2@5 ~ d2@3 ~ b1@2 bb1@5 ~ a1@4 eb2@2",
  AW: "d2@3 ~@2 d1 c2@5 ~ b1@5 ~ a1@4 b1@2", AX: "bb1@5 ~ bb1@5 ~ a1@5 ~ eb2@4 db2@2",
  AY: "d2@5 ~ c2@5 ~ b1@3 ~@2 d1 a1@4 db2@2", AZ: "d3@11 ~", BA: "d2@6 ~@4 d2@13 ~",
})).s("gm_fretless_bass").gain(0.12)

// chords · epiano1 · "Electric Piano"
const epiano1 = note(`<
  ~ A B C D E F G D H I J K L M N K O P Q R S T U V W X Y K Z AA AB K AC AD AE AF AG AH@3 AI AJ AK AL AM AN@3 AO AP AQ
  AR@2 AS@7 AT AU@2 AV AW AX AY AZ BA BB@2
>`.pickRestart({
  A: "[c4,e4,g4]@3 ~@3 [c4,e4,g4]@12 ~@4 [db4,f4,ab4]@2", B: "[c4,e4,g4]@3 ~ [c4,e4,g4]@2 ~@4 [c4,e4,g4,c5]@11 ~@3",
  C: "[c4,e4,g4,c5]", D: "[d4,f4,a4,d5]@11 ~ [d4,ab4,b4,f5]@5 ~ [db4,e4,g4,bb4]@5 ~",
  E: "[d4,f4,a4]@5 ~ [ab3,c4,f4]@5 ~ [b3,f4,a4,e5]@5 ~ [b3,d4,g4]@5 ~", // Dm Fm Esus4 G
  F: "[d4,f4,a4]@3 ~ d2 ~ [d4,f4,a4]@4 ~@2 [b3,f4,a4,d5]@11 ~", // Dm Bm7b5
  G: "[d4,g4,b4,e5]@5 ~ [db4,gb4,g4,b4]@5 ~ [db4,f4,g4,bb4]@3 ~@3 [db4,f4,g4,bb4]@4 ~@2", // Em7 Gbsus4 Gm7b5
  H: "[d4,f4,a4,d5]@11 ~ [ab3,d4,f4,c5]@5 ~ [f3,b3,d4,g4]@5 ~", // Dm Dm7b5 G7
  I: "[f3,c4,e4,a4]@5 ~ [f3,a3,b3,d4]@5 ~ [ab3,d4,f4,c5]@5 ~ [g3,b3,db4,f4]@5 ~", // Fmaj7 Bm7b5 Dm7b5 G7
  J: "~@4 [f3,d4,a4]@6 ~@2 [f3,b3,d4,a4]@11 ~", K: "[f3,d4,a4]@11 ~ [ab3,d4,f4,b4]@5 ~ [g3,db4,e4,bb4]@5 ~",
  L: "[d4,f4,a4,d5]@5 ~ [ab3,f4,c5]@5 ~ [b3,f4,a4,e5]@5 ~ [bb3,gb4,db5]@5 ~", // Dm Fm Esus4 Gb
  M: "[a3,f4,c5]@5 ~ [f3,d4,a4]@5 ~ [f3,b3,d4,a4]@11 ~", // F Dm Bm7b5
  N: "[g3,b3,d4,e4]@5 ~ [g3,db4,gb4,b4]@5 ~ [g3,a3,db4,eb4]@3 ~ a2 ~ [g3,a3,db4,eb4]@4 ~@2", // Em7 Gmaj7 Eb7
  O: "[f3,a3,d4]@3 ~ [f3,a3,d4]@6 ~@2 [d3,f3,ab3,c4]@5 ~ [f3,b3,e4,a4]@5 ~", // Dm Dm7b5 Fmaj7
  P: "[f3,a3,c4,d4]@5 ~ [f3,b3,d4,a4]@5 ~ [ab3,d4,g4,c5]@5 ~ [g3,db4,f4,b4]@5 ~", // Dm7 Bm7b5 Abmaj7 G7
  Q: "[f3,a3,d4]@11 ~ [f3,d4,a4]@3 ~ d2 ~ [f3,d4,a4]@4 ~@2", R: "[eb3,bb3,d4,g4]@11 ~ [eb3,gb3,a3,db4]@11 ~",
  S: "[a3,c4,d4,f4]@11 ~ [ab3,b3,d4,f4]@11 ~", T: "[bb3,eb4,g4,c5]@11 ~ [a3,eb4,gb4,db5]@3 ~@3 [a3,eb4,gb4,db5]@4 ~@2",
  U: "[a3,d4,f4,c5]@3 ~@3 [a3,d4,f4,c5]@4 ~@2 [g3,d4,f4,bb4]@11 ~", V: "[a3,d4,gb4,b4]@11 ~ [ab3,d4,f4,c5]@11 ~",
  W: "~@4 [ab3,db4,e4,b4]@6 ~@2 [gb3,db4,e4,a4]@11 ~", X: "[gb3,bb3,c4,f4]@11 ~ [gb3,bb3,c4,f4]@11 ~",
  Y: "~@4 [g3,b3,db4,gb4]@6 ~@2 [g3,db4,f4,bb4]@3 ~ a2 ~ [g3,db4,f4,bb4]@4 ~@2", // Gmaj7 Gm7b5
  Z: "[f3,d4,a4]@5 ~ [ab3,f4,c5]@5 ~ [b3,e4,f4,a4]@5 ~ [bb3,gb4,db5]@5 ~", // Dm Fm Esus4 Gb
  AA: "[a3,f4,c5]@5 ~ [f3,d4,a4]@5 ~ [f3,b3,d4,a4]@3 ~ [f3,b3,d4,a4]@6 ~@2", // F Dm Bm7b5
  AB: "~@4 [g3,d4,e4,b4]@6 ~@2 [g3,db4,f4,bb4]@5 ~ [g3,db4,eb4,b4]@5 ~", // Em7 Gm7b5 Gaug
  AC: "[d4,f4,a4]@11 ~ [ab3,d4,f4,c5]@5 ~ [b3,e4,f4,a4]@5 ~", // Dm Dm7b5 Esus4
  AD: "[c4,f4,a4,d5]@5 ~ [b3,d4,f4,a4]@5 ~ [d4,ab4,c5,g5]@5 ~ [db4,g4,b4,f5]@5 ~", // Dm7 Bm7b5 Csus2 Db7
  AE: "[d4,f4,a4]@11 ~ [d4,f4,a4]@3 ~@3 [d4,f4,a4]@4 ~@2", // Dm
  AF: "[d4,f4]@5 [ab3,b3,d4,f4]@4 [g3,bb3,db4,e4]@2 ~, [a4,d5]@3 ~", // Dm Abdim Gdim D5
  AG: "[f3,a3,d4]@2 ~ [f3,ab3,c4,f4]@2 ~ [f3,b3,e4,a4]@2 ~ [g3,b3,d4]@2 ~", // Dm Fm Fmaj7 G
  AH: "[[f3,d4]@5 [f3,a3,b3,d4]@6 [g3,d4,e4,b4]@4 [g3,db4,e4,b4]@2 ~@6 [f3,a3,d4]@7 [ab3,d4,f4,b4]@2 ~ [g3,db4,e4,bb4]@2 ~, a4@11 ~@7 [g3,db4,eb4,c5]@12 ~@6]/3", // Dm Bm7b5 Em7 Dbm7b5 Dm Abdim Gdim Cm
  AI: "[d4,f4]@5 [ab3,d4,f4,c5]@4 [f3,a3,b3,d4]@2 ~, a4@3 ~", // Dm Dm7b5 Bm7b5
  AJ: "[f3,a3,c4,e4]@2 ~ [f3,b3,d4,a4]@2 ~ [ab3,d4,g4,c5]@2 ~ [g3,b3,db4,f4]@2 ~", AK: "[f3,a4]@5 [f3,b3,e4,a4]@7, d4",
  AL: "d4@5 [ab3,d4,f4,b4]@4 [g3,bb3,db4,e4]@2 ~, [f3,a4]@3 ~", // Abdim Gdim F
  AM: "[d4,f4,a4,d5]@2 ~ [ab3,f4,c5]@2 ~ [f3,g3,b3,d4]@2 ~ [gb3,bb3,db4,gb4]@2 ~", // Dm Fm G7 Gb
  AN: "[[f3,a3,c4]@2 ~ [f3,d4,a4]@2 ~ d4@5 [g3,d4,e4,b4]@4 [g3,db4,e4,a4]@2 ~@6 [f3,d4,a4]@7 [ab3,b3,d4,f4]@2 ~ [g3,db4,e4,bb4]@2 ~, ~@2 [f3,b3,a4]@3 ~ [g3,db4,f4,bb4]@4 ~@2]/3", // F Dm Em7 A7 Dm Abdim Gdim Bm7b5 …
  AO: "[d4,f4]@5 [ab3,d4,f4,c5]@4 [b3,f4,a4,e5]@2 ~, a4@3 ~", // Dm Dm7b5 Esus4
  AP: "[c4,f4,a4,d5]@2 ~ [b3,d4,f4,a4]@2 ~ [d4,f4,ab4,c5]@2 ~ [db4,gb4,g4,b4]@2 ~", AQ: "[d4,f4,a4]",
  AR: "[eb4@5 [a3,db4,eb4,gb4]@6 [a3,d4,f4,c5]@6 [ab3,b3,d4,f4]@7, [bb3,c4,g4]@11 ~@13]/2", // Ebm7b5 Dm7 Abdim C7
  AS: "[eb4@5 [a3,eb4,gb4,db5]@6 [a3,c4,d4,f4]@7 d4@5 [a3,b3,d4,gb4]@7 ab3@5 [ab3,b3,db4,e4]@7 gb3@5 [gb3,bb3,c4,f4]@7 ~@5 [g3,db4,gb4,b4]@7 ~@5 [f3,d4,a4]@6 [ab3,d4,f4,b4]@4 [g3,db4,e4,bb4]@2 ~, [bb3,g4,d5]@11 ~@7 [g3,f4,bb4]@12 [d4,f4,c5]@12 [db4,e4,a4]@12 [gb3,bb3,c4,f4]@12 [g3,bb3,db4,f4]@11 ~@7]/7", // Ebm7b5 Dm7 Bm7 Dbm7 Gbmaj7 Gmaj7 Dm Abdim …
  AT: "[d4,f4,a4,d5]@2 ~ [ab3,f4,c5]@2 ~ [f3,b3,d4,a4]@2 ~ [gb3,bb3,db4,gb4]@2 ~", // Dm Fm Bm7b5 Gb
  AU: "[[f3,a3,c4]@2 ~ [f3,a3,d4]@2 ~ d4@5 [g3,d4,e4,b4]@7 [g3,db4,e4,c5]@2 ~ [g3,db4,f4,bb4]@2 ~, ~ [f3,a3,b3]@2 ~]/2", // F Dm Em7 C Gm7b5 Bm7b5
  AV: "d4@5 [ab3,b3,d4,f4]@4 [g3,bb3,db4,e4]@2 ~, [f3,a3]@3 ~", // Abdim Gdim F
  AW: "[d4,f4]@5 [ab3,c4,d4,f4]@4 [f3,b3,e4,a4]@2 ~, [a4,d5]@3 ~", // Dm Dm7b5 Fmaj7 D5
  AX: "[f3,c4,d4,a4]@2 ~ [f3,a3,b3,d4]@2 ~ [ab3,d4,f4,c5]@2 ~ [g3,b3,db4,gb4]@2 ~", // Dm7 Bm7b5 Dm7b5 Gmaj7
  AY: "~@10 d2@2 [f3,d4,a4]@3 ~@3 [f3,d4,a4]@4 ~@2", AZ: "~@5 [g3,db4,e4,a4]@7, [ab3,c4,d4,g4]",
  BA: "[f3,b3,d4,a4]@11 ~ [f3,b3,d4,a4]@12", BB: "[f3,a3,b3,d4]/2",
})).s("gm_epiano1").gain(0.12)

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

// drums · rim
const rim = s("rim").struct("<~ A@31 ~ A ~@2 A@32 ~@2 A ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.3)

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

// drums · hihat
const hihat = s("hh").struct("<~ A@2 B@2 A@2 B A@6 B A@7 B A@2 B A@5 C D B E F ~@35 G>".pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~ x", B: "x ~@2 x ~ x!2 ~ x!2 ~ x", C: "x!3 ~", D: "~@3 x!7 ~@2", E: "x ~@2 x ~ x!2 ~@5",
  F: "~@3 x!7 ~ x", G: "x",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@69 [~@8 x!2 ~ x] ~ [~@2 x!2 ~@8]>").gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@2 A ~@6 A ~@2 A ~@7 A ~@8 A ~@42>".pickRestart({
  A: "~@2 x",
})).gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@31 [~@3 x] ~@2 [~@16 x!3 ~@5] ~@33 [~@16 x!3 ~@5] ~@3>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@31 A ~@2 A B ~@32 A C ~ D>".pickRestart({
  A: "~@11 x", B: "x", C: "~ x ~@2", D: "~@5 x ~@6",
})).gain(0.35)

// drums · ride
const ride = s("rd").struct("<~@36 [x ~@2 x ~ x!2 ~@2 x ~ x]!32 [x ~@2 x ~ x!2 ~@5] ~ [x ~@2 x ~ x!2 ~@2 x ~ x] ~>")
  .gain(0.35)

stack(piano, bass, epiano1, kick, rim, snare, hihat, mid_tom, open_hat, high_tom, crash, ride)

More by Frank Sinatra