Strudelify

In a Sentimental Mood

Ellington

KeyD minorTempo60 bpm
0:00/0:00
// In a Sentimental Mood — Ellington
// 60 bpm, 4/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: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 68 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/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@4 C@3 D@3 E@2 F@6 G@3 H I@4 J@4 K@2 L M@5 N O P Q@2 R S@3 T@4 U@2 V@4 W@5 X@4 ~>".pickRestart({
  A: "~@8 [f3,a3,c4,d4,f4]@4 [g3,bb3,db4,g4]@4 [a3,c4,eb4,gb4,a4]@4 [c4,eb4,gb4,a4,c5]@4 [d4,f4,ab4,b4,d5]@4 ~ f4@3, ~@12 e4 ~@15 [ab4,b4,d5,f5]@4", // Dm7 Gdim Adim Cdim Ddim Abdim
  B: "[~@18 e5 ~@14 [d5,f5]@15 ~ [f4,a4,b4,d5,f5]@13 ~@2 [f4,a4]@15 ~@5 [a4,d5]@11 ~ d4@15 ~ [e3,bb3,d4,g4,d5]@8 [g3,bb3,db4,e4,g4]@8, [d4,a4]@15 db4@16 [c4,d4]@17 [b3,d4]@14 [a3,bb3]@17 [gb3,bb3,d4,gb4]@16 [f3,a3,bb3]@16 ~@17, ~ [g4,c5,d5]@15 [g4,a4,db5]@16 [f4,a4,c5]@16 ~@15 d4@16 ~@49, ~ g5@15 ~@48]/4", // Dm Bm7b5 F D5 Em7b5 Gdim D5 Csus2 …
  C: "[~@20 f4@11 ~@30 d5@4 [g3,bb3,d4,f4,bb4]@14 ~@2 [e3,gb3]@15, ~ [d3,f3,a3,c4,d4]@30 [gb3,c4]@35 ~@13 [c4,e4]@17, ~@31 e4@17 [gb4,a4]@17 ~@15 [ab3,bb3]@16, ~@32 [ab4,c5]@17 ~@47, ~@33 e5@32 ~@31]/3", // Gm7 Esus2 Dm7 Gbdim C Gbm Absus2 Ab
  D: "[~ [g3,a3,c4,g4]@8 [f3,a3,c4,d4,f4]@4 [g3,bb3,db4,e4,g4]@4 [a3,c4,eb4,gb4,a4]@4 [c4,eb4,gb4,a4,c5]@4 [d4,f4,ab4,b4,d5]@4 ~@30 e5@3 ~ d5 ~@3 f5@11 ~@2 d5@12 [gb3,c4,f4,bb4,d5]@4, e4@8 ~@21 [f4,ab4,b4,d5,f5]@3 g4@15 db5 bb4@14 e5@2 e5@4 ~@12 f5@16, ~@31 d4@16 ~ g4@31 f4@12 ~@5, ~@33 [c5,d5]@15 db4@17 c4@14 [b3,e4,a4]@17, ~@34 g5@45 ~@17]/3", // Am7 Dm7 Gdim Adim Cdim Ddim Bb Fdim …
  E: "[[f3,a3,bb3,d4,f4,a4]@16 ~@5 gb4@10 ~@2 [bb3,d4]@14 ~ [e3,bb3,d4,g4,d5]@8 [a2,g3,bb3,db4,e4,g4]@8, ~@16 d3@31 ~@17, ~@16 [gb3,bb3]@15 g2@16 ~@17, ~@20 d4@11 ~ [f3,a3]@16 ~@16]/2", // Bbmaj7 Bb Em7b5 A7 Gb F
  F: "[~ [d4,f4]@29 ~@26 d5@6 ~@3 bb4@15 [e3,ab3,bb3,c4,e4]@15 ~@2 f4@15 ~@9 bb3@6 ~@2 c5@13 ~@2 [eb4,eb5]@5 [db4,db5]@3 ~@8 f3@15 ~@9 [a3,c4,f4]@7 db2, [d3,f3,a3,c4]@30 a2@17 ~@15 f3@17 ~@16 [f2,c3,g3]@18 ~@14 [db2,db3,c4]@16 ~@49, ~@31 [b3,e4]@16 ~ [gb3,c4,f4]@15 [bb3,d4]@16 ~@17 [f3,a3,c4]@17 [gb3,c4,eb4,f4,ab4]@15 [f4,ab4]@15 ~@16 [gb3,bb3,db4,f4]@16 [bb3,db4,gb4]@9 ~@8, ~@32 [g4,b4]@15 bb4@15 ~@2 [f4,a4]@16 ~@32 ab2@30 ~@2 [bb2,ab3,f4,ab4]@16 ~@16 [ab2,gb3]@16, ~@11 e5@10 ~@43]/6", // Dm Eaug Eb Db F Dm7 Fsus2 Dbmaj7 …
  G: "[~ eb4@13 ~@2 gb4@14 ~@2 b4@14 ~ [c5,e5]@15 ~@3 c6@15 [a3,f4,ab4,eb5]@4 ~@8 c5@4, [eb3,f3,ab3,bb3]@14 bb2@16 [eb3,g3]@16 [gb3,c4,gb4]@17 [c4,c5]@16 ~@5 [ab3,f4,ab4,db5]@12, ~@15 [ab3,c4,d4]@15 ~ [db4,g4]@15 ~@16 [db3,ab3]@17 ~@17, ~@4 [f5,ab5] ~]/3", // C F7 Ebsus4 Eb Gbdim C Db Dm7b5 …
  H: "~@3 gb4!2 ab4 ~ eb4, [f3,gb3,bb3,db4,f4] [ab2,gb3], ~@2 [bb3,db4] [a3,c4,f4]", // Gbmaj7 Ab7 Bbm F
  I: "[~@27 [d4,g4]@4 ~ [c3,bb3]@8 ~@4 [g3,bb3,db4,e4,g4]@4 [a3,c4,eb4,gb4,a4]@4 [c4,eb4,gb4,a4,c5]@4 [f4,ab4,b4,d5]@3 ~ [f4,ab4,b4,d5]@3 ~@15 d4@2 ~@12 db5@4 ~@14 g5 ~ f4@12 [gb3,c4,f4,bb4,d5]@4, [bb3,c4]@12 bb4@4 [a4,d5]@3 g4 c5@11 [db4,gb4]@9 [f3,f4]@7 ~@16 [d3,a3,g4]@18 ~@7 a4@8 ~@13 f5@2 f5@17, ~ [g2,f3]@32 ~@32 g5@45 ~@18, ~@8 a5@15 [f4,bb4]@9 ~@24 d4@8 e4@13 e4@3 db4@16 [c4,f4,a4,d5]@16 [b3,a4]@16, ~@8 d5@4 f5@20 ~@27 f5@4 ~ [c5,d5]@18 ~@2 e4@12 ~@32]/4", // G5 C7 Gdim Adim Cdim Fdim Bb Bbsus2 …
  J: "[~@13 f3@2 ~@12 d5@4 [f3,a3,bb3,d4,a4]@17 [e3,ab3,d4,g4,d5]@8 ~ a2@4 ~@19 c4@15 ~@17 [gb3,c4,eb4,ab4]@16, [f3,bb3,d4,f4,a4]@15 [bb3,d4]@16 ~@30 a2@33 ~ [a2,g3]@17 ~@16, ~@11 e3@4 ~ gb3@16 ~@24 [g3,bb3,db4,f4]@9 [d2,e3,f3,a3]@31 ~@2 d5@30, ~@19 a4@12 ~@33 db4@15 ~@17 c4@16 ~@16, ~@23 [gb4,bb4]@9 ~@32 e4@31 ~@2 g4@15 ~@16]/4", // Bbmaj7 E7 Ab7 Bbmaj7 Bb A7 Gm7b5 Dm …
  K: "[~ a3@15 [g3,bb3,db4,e4]@15 ~@2 [f2,f4]@15 [a2,g3,bb3,d4,g4]@7 ~ [a2,g3]@6 ~@2, [g2,d3,bb3,d4,bb4] c3@2 ~, ~@31 [g3,a3]@17 ~@16, ~@32 c4@16 ~@7 [bb3,db4,f4]@7 ~@2]/2", // Gdim F Gm A7 Gm Gsus2 Bbm
  L: "~@3 [e3,db4], c4@11 ~@5, ~ e4@31", // Dbm
  M: "[~ [f3,a3,c4,d4]@17 ~@15 a4@11 ~@5 gb3@15 [f3,f4]@15 ~ e3@10 ~@2 [g3,db4,f4]@3 ~@3 b4@14 ~@14 g3@2 ~@9 e4@12 ~@9 d5@2, ~@27 [gb3,c4,f4,bb4]@6 [a3,bb3,d4]@46 [a3,bb3,e4]@11 ~@5 [f3,a3]@33 ab3@27 ~@5, ~@30 d5@16 a4@2 gb4@16 ~@32 [c4,e4]@16 c5@43 ~@5, ~@47 g4@2 ~@42 bb4@4 ~@2 g4@15 [e4,f4]@17 ~@4 c4@16 ~@6 [f4,bb4]@5, ~@124 gb3@5 ~@27 [gb3,c4]@4]/5", // Dm7 F Gm7b5 Gbmaj7 Bbmaj7 A F C …
  N: "~ c5 d5@13 ~@4 c5@13, bb3, a3@8 c5 ~@7, ~ d4@16 [e3,c4]@15, ~@2 db5 ~@12 db5@2 ~@15", // C
  O: "~@3 g4@10 f4@4 [e3,bb3,e4]@8 [g3,a3,db4,f4]@7, g3@13 ~@19, ~ a3@16 ~@15, ~ c4@12 ~@19", // Edim Dbaug
  P: "~@10 [c4,d4]@8 ~@3 [db4,g4,e5]@4 ~@4 [g3,db4,bb4]@3, ~ [bb3,db4,e4,g4]@9 f4@11 ~@11, ~@2 f3@19 ~@4 [bb3,e4,db5]@7", // Csus2 Dbdim Gdim Bbdim
  Q: "[~ a4@10 ~@6 e4@7 ~@2 bb3@6, f3@28 [gb3,bb3,c4,f4]@5 ~@15 [gb3,d4]@16, ~ b3@27 ~@3 f3@17 ~@16, ~ [d4,f4]@23 ~@8 [g3,a3]@17 ~@15]/2", // Gbmaj7 D Dm Gsus2
  R: "~@4 [g3,c4,f4,bb4]@4 [a3,d4,g4,c5]@3 ~ g3@3 ~@5 [e3,bb3,d4]@2 ~@5 [db4,gb4,bb4]@2 ~ [g3,db4,gb4,bb4]@2, ~@11 [c4,f4,bb4]@4 ~@4 g4@2 ~@6 g3 ~@4", // Gm7 Am7 Em7b5 Gb Fsus4
  S: "[~@13 [c4,f4,a4]@3 eb4 [b3,e4]@3 f4@11 ~@17 ab3@8 ~@9 [bb3,d4]@16 ~@8 bb4@7, ~ a3@15 ~@4 d4@24 e4@20 ~@32, ~ [d4,g4,b4]@11 ~@4 g4@4 a3@20 c4@25 ~@23 [bb3,db4,gb4]@8, ~@2 f3@30 gb3@24 a3@25 ~@6 e3@9]/3", // F E5 Bb G Gb
  T: "[~@2 f4@14 ~@2 ab4@2 ~ bb4@2 c5@2 db5@2 eb5@3 ~@9 gb5 f5 ~@10 a3@4 ~@6 db5@2 ~ c5@2 db5 c5 bb4@2 c5@10 ~@3 [c5,db5] d5 eb5@6 db5 ~ c5@2 ~@2 ab4@2 eb5@2 f4@7 ~ gb4@2 ab4 bb4 ~ b4 ~ d5 gb5 ~ db5 ~ gb5 ~ bb5 d6@2 db6 c6, [g3,a3]@17 ~@14 f3@14 ~@11 ab3@5 ~@2 [gb3,db4]@13 ~@4 [gb3,bb3,f4]@12 ~@3 f3@17 ~@16, ~ d4@15 ~@14 f5@2 bb3@13 ~@6 f4@9 ~@35 bb4@2 eb4@15 ~@16, ~ c4@9 ~@6 [gb3,c4]@15 gb5@2 ab5@6 ~@3 f5@16 ~ eb5@4 ~@45 f4@4 ~@8 d5@2 ~@6, ~@34 eb4@15 ~@2 db4@12 ~ [bb3,f4]@11 ~@5 c4@15 ~ bb3@17 [ab3,d4]@13 ~@2]/4", // Dbmaj7 Gsus2 Gb5 Gbmaj7 Gbdim Bb5 Abdim
  U: "[~ b5@2 gb6 ~ e6 db6 b5 ~ bb5@2 ~ gb5 f5 ~ c6 ~ bb5 ~ a5 f5 db5 ~ c5@2 bb4@3 ~ gb4@2 ~ f4@6 ~ f4 gb4 ab4@6 ~ [c4,bb4,eb5]@4 [e4,g4,db5]@2 ~@2 [a3,eb4,gb4,c5]@4 [g3,db4]@4, ~ [g3,b3,db4,gb4]@10 ab5@2 ~@2 [gb3,c4,f4]@13 ab4@2 ~ [f3,bb3]@16 ~@5 bb3@4 ~@8, ~@32 eb4@14 ~@2 gb4@2 ~@10 [f4,bb4] ~@3]/2", // Cm7 Dbdim Adim Gdim Gmaj7 F Bb5
  V: "[~ f3@11 [eb3,eb4]@2 [f3,f4]@2 ~ gb4@3 ~@39 [f5,bb5]@4 ~@12 [g4,c5]@4 ~@4 ab4@4 ~@5 g4@3 ~@18 [e3,g3]@13 [d4,f4]@2, f4@12 ~@5 ab3@13 c5@2 ~@2 c5@7 [a4,d5]@4 [f5,a5]@3 [d5,g5]@4 [c5,f5]@4 [g5,c6]@7 d5@8 a4@8 [g4,bb4]@8 ~ a2@25 ~@15, [gb3,bb3,db4]@9 ~@7 [gb3,bb3,db4]@16 c4@31 ~@4 c5@5 d5@8 db4@7 [db4,f4,a4]@8 ~ [e3,g3,c4]@16 [bb3,db4]@16, ~@20 ab4@11 g3@32 [e3,a3,bb3,d4,a5]@16 ~ g3@15 d2@18 ~@15, ~@28 bb4@4 ~ [d4,f4,bb4]@30 ~@4 g5@12 ~@18 e4@31]/4", // Eb F Bb5 C5 Em Dm D5 F …
  W: "[~@2 f4 e4@2 [f4,a4]@19 ~@14 g4@8 ~@14 a5@3 ~ a5 bb5@2 a5@11 ~@2 bb4@6 ~@12 a4@18 ~@4 [g4,c5]@7 ~@2 d4@26 ~@3 ab4@2, f3@24 ~@5 gb3@5 a4@14 gb3@7 [bb4,d5]@2 gb5@6 ~@29 bb4@4 [a3,e4]@31 gb3@28 ~ gb3@4, ~ [d3,a3]@24 ~@7 [a3,bb3]@46 e3@7 ~@2 [g3,db4]@8 d3@60 ~@5, ~@2 d4@2 ~@21 b3@4 ~ d5@5 c5@12 ~@7 a4@9 ~@17 g4@3 ~@6 c5@8 ~@19 [a4,e5]@12 ~@32, ~@3 g4 ~@23 bb4@5 d4@31 [f3,d4]@16 [bb3,d4]@4 ~@5 [a3,f4]@9 [c4,f4]@31 [ab3,c4]@27 [bb3,eb4]@5]/5", // F C5 Bb A5 D5 Bbmaj7 Gdim A5 …
  X: "[~@4 c5@2 a4@16 ~@9 e4@15 ~@37 a5@32 ~@13, ~@2 [f3,a3,bb3,d4,f4]@20 c2@6 bb3@18 ~@5 g3@14 c5@3 d5@4 f5@4 g5@38 ~@14, ~@23 g2@23 f2@6 a3@7 g4@56 ~@13, ~@25 e3@21 ~ c3@7 c4@8 a4@53 ~@13, ~@26 ab3@20 ~@3 e3@8 f4@58 ~@13]/4", // Bbmaj7
})).s("gm_piano").gain(0.4).pan(0.3)

// chords · piano
const piano_2 = note("<~ A B C D E F G H A B I J E F G K L M N O P Q R S A B I J E T U V ~@35>".pickRestart({
  A: "[d3,d4,f4,a4] [d3,db4,f4,a4]", B: "[d3,c4,f4,a4] [d3,b3,f4,a4]", C: "[g2,bb3,d4,g4] [g2,bb3,d4,gb4]",
  D: "[g2,bb3,d4,f4]@2 [g2,bb3,d4,e4] [a2,g3,db4,e4]", E: "[d3,f3,a3,d4]", F: "[d3,a3,c4,gb4]",
  G: "[g3,bb3,d4,f4] [gb3,bb3,db4,e4]", H: "[f3,a3,c4,e4] ~", I: "[g3,bb3,d4,g4] [g3,bb3,d4,gb4]",
  J: "[g3,bb3,d4,f4]@2 [g3,bb3,d4,e4] [a2,g3,db4,e4]", K: "[f3,a3,c4,e4] [ab3,c4,eb4,gb4]",
  L: "[db3,ab3,c4,f4] [bb2,ab3,db4,f4]", M: "[eb3,gb3,bb3,db4] [ab2,gb3,ab3,c4]", N: "[db3,f3,ab3,c4] [bb2,f3,ab3,d4]",
  O: "[eb3,g3,bb3,db4] [ab2,eb3,gb3,ab3,c4]", P: "[db3,f3,ab3,c4] [bb2,f3,ab3,db4]",
  Q: "[eb3,gb3,bb3,db4] [ab2,ab3,c4,eb4]", R: "[g2,f3,bb3,c4]", S: "[c3,e3,g3,bb3,c4]", T: "[d3,gb3,a3,c4,d4]",
  U: "[g3,bb3,d4,f4] [c3,g3,bb3,db4,e4]", V: "[f2,f3,a3,c4,e4]",
})).s("gm_piano").gain(0.45).pan(0.3)

// bass · acoustic bass
const bass = note(`<
  ~ A B C D E F G H@2 I J K L M N O P@2 Q@2 R S T@2 U V W@2 X Y Z@2 A B C D E AA G AB@2 AC AD K L AE N O AF AG AH AI AJ
  AK AL@2 U V W@2 X Y AM@3 AN@2
>`.pickRestart({
  A: "~ d2@15 db2@8 a2@8", B: "~ c2@15 b1@8 a2@8", C: "g1@15 d2@17", D: "g2@15 e2@9 a1@4 db2@4", E: "d2@7 a1",
  F: "d2@12 e3@2 f3@2 gb3@8 a2@5 ~@3", G: "~ g1@16 gb1@15",
  H: "[~ f1@16 a1@12 db2@4 d2@8 ~@7 db3@8 ~ a2@7, ~@44 e3@9 ~@11, ~@23 d3@2 ~@7]/2", I: "d2@14 ~ d2@9 b2@8",
  J: "bb2@2 d2 g1 d2@3 gb1", K: "g1@4 e1 bb1 a1 db2", L: "d2@12 e2@4 f2@11 e2@5", M: "d2@3 ab1", N: "g1@2 gb1 c2",
  O: "~ f1@10 gb1@2 g1@3 ab1@4 eb2@4 ab2@4 eb2@4", P: "[~ db2@11 c2@2 b1@2 bb1@8 f2@6 ~ eb2@13 a1@4 ab1@16]/2",
  Q: "[db2@16 bb1@8 ~@3 bb1@4 eb1@12 bb1@2 a1@2 ~ ab1@8 eb2@8]/2", R: "db2@6 c2 b1 bb1@4 e2@3 ~",
  S: "eb2@12 a1@4 ab1@11 ~ ab1@4", T: "[g1@25 ~@2 g1@4 c2@25 db2@8]/2", U: "d2 db2", V: "c2 b1",
  W: "[g1@11 d2@4 ~ a2@7 g2@4 d2@4 g1@13 gb1@2 f1@2 e1@4 bb1@4 a1@4 db2@4]/2", X: "d2@12 e2@4 f2@11 g2@5",
  Y: "a2@11 eb2@4 ~ d2@8 ab1@8", Z: "[g1@16 c2@15 f1@17 a1@13 ~@3]/2", AA: "d2@12 e2@5 gb2@7 d2@8",
  AB: "[~ f1@16 a1@12 db2@4 d2@8 d3@8 db3@8 a2@7]/2", AC: "d2@14 ~ d2@9 ab1@8", AD: "g1@2 d2 g1 d2@3 gb1",
  AE: "d2@24 d2 ~@7", AF: "db2@11 ~@2 c2@4 bb1@5 ~ bb1 f2@7 ~", AG: "eb2@6 d2 ~ eb2@8 ab1@6 ~ ab1@2 c2@4 gb1@3",
  AH: "~ f1@6 ~ f1 db2@6 c2 b1 ~ bb1@7 f2@4 e2@3", AI: "~ eb2@4 ~@3 eb2 a1@5 ~ a1 ~ ab1@7 bb1@4 c2@3 ~",
  AJ: "db2@6 ab1@2 db2@4 c2@4 bb1@5 ~@2 bb1 c2@3 ~ db2@3 ~", AK: "~ eb2@5 ~ db2 eb2 ~@2 eb2 a1@4 ab1@10 ~@2 ab1@4",
  AL: "[g1@20 d2@4 g2@3 g1@4 c2@16 db2@16 ~]/2", AM: "[~@3 g1@22 c2@27 f1@20 c2@16 ~@8]/3",
  AN: "[~@7 f3@30 ~@27, ~ f1@18 ~@13, ~@4 a2@33 ~@27]/2",
})).s("gm_acoustic_bass").gain(0.4)

// other · harmonica
const harmonica = note("<A B@2 C@2 D E F G B@2 C@2 D E F H I J K L I J M A B@2 C@2 D E F N ~@35>".pickRestart({
  A: "~@2 f4 g4 a4 c5 d5 f5", B: "[g5@10 f5 g5 f5 e5 d5 c5]/2", C: "[a4@2 d5 a4@7 a4 c5 d5 ab4 g4 f4]/2",
  D: "d4@5 f4 a4 c5", E: "e5@3 d5", F: "bb4 e4", G: "g4@2 f4 g4 a4 c5 d5 f5", H: "f4 ~",
  I: "c5@2 bb4 c5 eb5 db5 c5 bb4", J: "f4@2 eb4 f4 gb4 ab4 f4 eb4", K: "db4@16 ~@5 g4@4 ~@2 bb4@4 ~, ~@2 gb4 ~",
  L: "b4@4 ~ c5@6 eb5@4 ~ e5@4 ~ f5@6 ab5@4 ~", M: "c4", N: "f4",
})).s("gm_harmonica").gain(0.45).pan(0.7)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~ A ~ B C D ~ E F A G B C D ~ E F A G B C D ~@2 F@2 A G B C D ~@2 A ~ B C D ~ E F A G B C D ~ E F A G B C D ~@2 F@2 A
  G B C D ~@5
>`.pickRestart({
  A: "~@23 x ~@8", B: "~@11 x ~@4", C: "~@10 x ~@2 x ~@16 x ~", D: "~@23 x ~@2 x ~@3 x ~", E: "~@7 x ~@15 x ~@8",
  F: "~@31 x", G: "~@14 x ~@3 x ~@2 x ~@10",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@23 A ~@31 A ~@7 B C ~ D ~>".pickRestart({
  A: "~@12 x ~@3 x ~@2 x ~@3 x ~@3 x ~@3 x", B: "~@3 x ~@23 x ~@4", C: "~@23 x ~@8", D: "~@3 x ~@12",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct(`<
  ~ A B C D E F G H A I J D K F L M N I J D K F O ~ M A P C D K F Q A B C D R F G H A I J D K F L M N I J D K F O ~ M A
  P C D K ~@5
>`.pickRestart({
  A: "x ~@7 x ~@7 x ~@8 x ~@4 x ~", B: "x ~@8 x ~@6 x ~@7 x ~@6 x", C: "~@8 x ~@7 x ~@7 x ~@4 x ~@2", D: "x!4",
  E: "x ~@4 x ~@3 x ~@6 x ~@7 x ~@7", F: "x ~@8 x ~@6 x ~@8 x ~@4 x ~", G: "x ~@8 x ~@5 x ~ x ~@7 x ~ x ~@4",
  H: "x!2 ~@6 x ~@8 x ~@7 x ~@6", I: "x ~@7 x ~@6 x ~@8 x ~@7", J: "x ~@7 x ~@7 x ~@7 x ~@4 x ~@2",
  K: "x ~@5 x ~@2 x ~@6 x ~@7 x ~@7", L: "x ~@7 x ~@8 x ~@7 x ~ x ~@4", M: "x ~@7 x ~@8 x ~@7 x ~@6",
  N: "x ~@3 x ~@3 x ~@3 x ~@2 x", O: "x", P: "x ~@7 x ~@6 x ~@7 x ~@7 x", Q: "x ~@14 x ~@16",
  R: "x ~@2 x!2 ~@3 x ~@3 x ~@3",
})).gain(0.3)

stack(piano, piano_2, bass, harmonica, pedal_hat, crash, ride)

More by Ellington