Strudelify

ask dna

Yoko Kanno

KeyF majorTempo93 bpm
0:00/0:00
// ask dna — Yoko Kanno
// 93 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4322221; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(93/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.

// other · brass section · "Brass"
const brass_section = note(`<
  ~@24 A ~@5 B@4 ~@2 C ~@11 D ~ E ~ F@2 A ~ G ~@3 B@4 ~@5 H@2 ~ I J K ~@2 L K ~@2 M K ~@2 J K ~ A ~@5 N@2 O ~@5 B@4 ~@5
>`.pickRestart({
  A: "[c4,e4,eb5]!4 ~ [c4,e4,eb5] ~ [c4,e4,eb5] ~ [c4,e4,eb5]!2 ~@5", B: "[~@14 c4@15 ~ c4@15 ~ [c4,c5]@13 ~@5]/4",
  C: "~ [c4,eb4,a4]!2 ~ [c4,eb4,a4] [c4,eb4,a4]@2 ~", D: "~@11 d4!2 f4 [d4,f4] ab4",
  E: "~@2 [g4,bb4,eb5]@3 [f4,a4,d5]@3 [eb4,g4,c5]@4 [f4,a4,d5]@2 ~@2", F: "[~@11 c4 eb4 f4@5 ab4 f4@6 ~ eb4 c4@5]/2",
  G: "~@8 a3@2 c4 ~ d4@2 f4 ~", H: "[~@4 d4 a4 f4 ab4@3 g4 ab4@3 g4@2]/2", I: "~@8 ab4@2 a4 bb4 c5 [ab4,bb4] f4@2",
  J: "~@4 [bb3,bb4] ~ [bb3,bb4] ~ [db4,db5] ~ [eb4,eb5] [f4,f5] ~@4", // Bb Db Eb F
  K: "~@4 [bb3,bb4] ~ [bb3,bb4] ~ [db4,db5]@3 [bb3,bb4] ~@4", // Bb Db Bb
  L: "~@3 [f3,f4] [bb3,bb4] ~ [bb3,bb4] ~ [db4,db5] ~ [eb4,eb5] [f4,f5] ~@4", // F Bb Db Eb F
  M: "~@3 [bb3,bb4] [db4,db5] ~ [bb3,bb4] ~ [db4,db5] ~ [eb4,eb5] [f4,f5] ~@4", N: "[~@3 c5, ~@14 c4@17 ~]/2",
  O: "~@4 [f3,f4]@2 [g3,g4] ~ [a3,a4]@2 [c4,c5] ~ [d4,d5]@2 [f4,f5] ~", // F G A C D F
})).s("gm_brass_section").gain(0.37)

// other · tenor sax · "Sax"
const tenor_sax = note("<~@64 A B@2 C D E F G H ~@38>".pickRestart({
  A: "~@9 db4@2 e4 ab4 f4@3", B: "[~ c5 bb4@10 c5@8 bb4 ~ ab4 a4 ~ f4 ~ eb4 d4 ~ c4 bb3]/2",
  C: "a4 f4 c4@2 f4 g4@4 eb4 d4 c4 f4@2 e4@2", D: "eb4@2 c4 a3@3 ~@10", E: "~@2 d5@2 eb5@4 d5 c5 ab4 a4 f4@2 g4@2",
  F: "f4@2 ab4 f4 c5@2 [c5,eb5]!2 c5@4 c5@4", G: "ab3@2 a3@2 f4@4 ~@6 f4!2", H: "bb4 a4 bb4@4 ab4@2 c5@2 bb4 ab4 f4@4",
})).s("gm_tenor_sax").gain(0.38).pan(0.9)

// chords · distortion guitar · "E. Guitar"
const distortion_guitar = note(`<
  ~@16 A ~@7 A B@2 C D E F G@2 H I ~@20 B@2 C D E F G@2 J K ~@4 L@2 M@2 N O P Q R S T U V W X@2 Y@3 Z ~ AA ~@2 AB@2 AC@2
  B@2 C D AD@2 G@2 H I ~ AE@3
>`.pickRestart({
  A: "[c3,e3,bb3,eb4]!4 ~ [c3,e3,bb3,eb4] ~ [c3,e3,bb3,eb4] ~ [c3,e3,bb3,eb4]!2 ~@5", // C7
  B: "[[f2,c3]@2 [f2,c3]@2 [f2,c3,f3,a3,c4,f4]@3 [f2,c3,f3,a3,c4,f4] f2@2 [f2,c3,f3,a3,c4,f4]@2 f2@2 [d3,gb3,c4,d4]@4 [d3,gb3,c4,d4]@2 [d3,gb3,c4,d4]@3 [d3,gb3,c4,d4] d3@2 [d3,gb3,c4,d4]@2 [d3,gb3,c4,d4]@4]/2", // F5 F D7
  C: "[f2,c3]@2 [f2,c3]@2 [f2,c3,f3,a3,c4,f4]@3 [f2,c3,f3,a3,c4,f4] f2@2 [f2,c3,f3,a3,c4,f4]@2 f2@2 [c3,e3]@2", // F5 F C
  D: "~@2 [c3,e3]@2 [c3,e3,bb3,eb4]@3 [c3,e3,bb3,eb4] c3@2 [c3,e3,bb3,eb4]@2 [c3,e3,bb3,eb4]@4", // C C7
  E: "d3@2 d3@2 [d3,a3,c4,f4]@3 [d3,a3,c4,f4] d3@2 [d3,a3,c4,f4]@2 [d3,a3,c4,f4]@2 ~@2", // Dm7
  F: "~@2 [bb2,d3]@2 [bb2,d3,ab3,c4,f4]@3 [bb2,d3,ab3,c4,f4] bb2@2 [bb2,d3,ab3,c4,f4]@2 ~@2 bb2!2", // Bb Bb7
  G: "c3 ~ c3 ~@4 c3!2 ~ c3 ~@4 c3",
  H: "[c3,e3,bb3,eb4] ~ [c3,e3,bb3,eb4] ~@4 c3 [c3,e3,bb3,eb4] ~ [c3,e3,bb3,eb4] ~@5", I: "[bb2,d3,ab3,c4,f4]",
  J: "[c3,e3,bb3,eb4] ~ [c3,e3,bb3,eb4] ~@4 c3 [c3,e3,bb3,eb4] ~ [c3,e3,bb3,eb4] ~@3 c3!2", // C7
  K: "[bb2,ab3,d4,f4] [ab2,gb3,c4,eb4] [g2,f3,b3,d4]@2", // Bb7 Ab7 G7
  L: "[[f2,c3]!2 [f2,c3,f3,a3,c4,f4]@2 [g3,bb3,eb4]!2 ~ [d3,gb3,c4]@9]/2", // F5 F Eb D7
  M: "[[f2,c3]!2 [f2,c3,f3,a3,c4,f4]@2 [g3,bb3,eb4]!2 ~ [d3,gb3,c4]@7 ~ f4]/2", // F5 F Eb D7
  N: "[f4,ab4,db5]@4 ~@10 [eb4,e4] [db4,eb4]", O: "bb3@4 ~@2 db4@4 [ab4,b4,f5]@2 [ab4,b4,f5]!2 [ab4,b4,f5]@2",
  P: "~@6 [g4,db5] [ab4,d5] ab4@6 bb3@2", Q: "f4 bb3@3 [db4,d4] bb3@11", R: "~@6 db3 eb3 f3 db4@5 db3@2",
  S: "g4!2 [ab3,db4,g4]@3 [bb3,db4,f4]@5 [e4,f4]@2 eb4 db4 bb3 db4", T: "eb4!2 [eb4,f4]@2 db4@8 [g4,db5]!4",
  U: "[g4,db5] db4 ~ g3 c4 db4 ~ g3 bb3 ab3 ~ f3 g3 eb3 e2@2", // Gdim
  V: "db3@2 [db4,eb4] ~ db4@4 b3@2 ~@2 bb3 [db4,eb4] bb3 [db4,eb4]", // Dbsus2
  W: "[db4,ab4]!4 [eb4,ab4]!5 [eb4,ab4]@3 [db4,ab4]@2 [bb3,ab4] [db4,ab4]", // Db5 Ab5 Db5 Bb7 Db5
  X: "[~@4 [eb4,g4] [db4,f4,bb4] ~@2 [db4,f4] [db4,ab4] ~@2 eb4@7 db4 eb4 f4 db4 d4 bb3@8]/2", // Eb Bbm Db Db5
  Y: "[~@4 db5 gb4@7 [ab4,db5] ab4!2 db5@2 eb5 [db5,eb5]@2 eb5 db5 eb5!2 g5 eb5 [eb5,g5] db5 eb5 bb4 db5@5 eb5 db5@3 eb5 db5 eb5 g5 [db5,eb5] eb5 g5 ~ eb5]/3", // Db5 Dbsus2 Eb Dbsus2
  Z: "gb5!3 g5@3 f5 e5@3 g3@2 g3@4", AA: "~@12 [d4,e4,g4,a4]!4",
  AB: "[~@4 [f4,f5]@4 f5 c5 [f4,g4]@2 g4@8 ~@12, ~@12 f4 ~@19]/2", AC: "[bb4,eb5]!16",
  AD: "[d3@2 d3@2 [d3,a3,c4,f4]@3 [d3,a3,c4,f4] d3@2 [d3,a3,c4,f4]@2 [d3,a3,c4,f4]@2 [bb2,d3,ab3,c4,f4]@4 [bb2,d3,ab3,c4,f4]@2 [bb2,d3,ab3,c4,f4]@3 [bb2,d3,ab3,c4,f4] bb2@2 [bb2,d3,ab3,c4,f4]@2 [bb2,d3,ab3,c4,f4]@4]/2", // Dm7 Bb7
  AE: "[~@6 bb4@2 c5@10 bb4 ab4 b4@3 c5 ~@6 ab4@18]/3",
})).s("gm_distortion_guitar").gain(0.11).pan(0.3)

// chords · epiano1 · "E. Piano"
const epiano1 = note(`<
  A B@8 C@2 D@2 C@2 E F C@2 D@2 C@2 E G H@4 I@2 J K L M B@4 ~@3 N O@2 ~@2 C@2 D@2 C@2 P G H@4 I@2 J K Q R S@6 T@2 ~@2
  U@2 ~@2 V@2 ~@2 W@2 ~@12 H@4 I@2 J K Q M X@2 Y@2
>`.pickRestart({
  A: "~@5 c2 eb2@2",
  B: "[~@2 f3@2 [c4,eb4]@2 ~@2 [c4,eb4] ~@13 f2 ab2 bb2 ~ bb2 ~ bb2 ab2 f2@2, f2@6 f2@6 f2@9 ~@11, ~@4 bb3 ~@5 [c4,eb4]@4 [bb3,d4]@17 ~]/2", // Cm Bb
  C: "[~@2 f3@2 [c4,eb4]@2 f2@2 [c4,eb4] ~ [c4,eb4]@4 bb2@2 bb2@6 f2 ab2 bb2 ~ bb2 ~ bb2 ab2 f2@2, f2@3 ~ ab2!2 ~@10, ~@4 bb3 ~@9 [bb3,d4]@17 ~]/2", // Cm Bb
  D: "[~@2 f3@2 [c4,eb4]@2 f2@2 [c4,eb4] ~ [c4,eb4]@4 c3@8 g2 bb2 c3 ~ c3 ~ c3 bb2 g2@2, f2@3 ~ ab2!2 ~@10, ~@4 bb3 ~@9 [bb3,eb4]@17 ~]/2", // Cm Eb5
  E: "~@2 f3@2 ~@2 d2@2 [g3,bb3] ~ eb2@4 eb2@2, d2@3 ~ eb2 ~@3, ~@2 [f3,a3]@2 ~ [g3,bb3]@3", F: "c3 ~@7",
  G: "c3 ~@5 c3!2",
  H: "[f2@2 f3@2 [a3,c4]@3 f2 [f2,a3,c4]@2 [e2,a3,c4]@2 eb2@2 [a3,c4]@6 [a3,c4]@4 [d2,a3,c4]@2 [eb2,a3,c4]@2 e2@2 [a3,c4]@4 f3@2 [a3,c4]@3 f2 [f2,a3,c4]@2 [a2,a3,c4]@2 bb2@2 [a3,c4]@2 ~@4 [bb3,eb4]@3 c3 [c3,bb3,eb4]@2 c3@2 c3@2 [c3,bb3,eb4]@2, ~@2 f2@5 ~@3 g3 ~@3 d2@9 ~@3 g3 ~@3 f2@9 ~@7 c3@9 ~@3 [bb3,eb4]@4 ~@2]/4", // Am F Am D7 Adim Am F Am …
  I: "[~@2 f3@2 [a3,c4]@3 d2 [d2,f3]@2 e2@2 f2@2 [ab3,c4]@4 f3@2 ~@2 bb2@2 [bb2,f3,ab3,c4]@2 bb2@2 ~@2 bb2@2, d2@7 ~@3 [a3,c4]@4 bb2@8 ~@10, ~@10 [f3,ab3,c4]@2 ~ [f3,ab3,c4]@3]/2", // Am Dm Ab Fm Am Fm
  J: "c3@2 c3@2 ~@3 bb2 c3@2 c3@2 ~@3 bb2", K: "c3@2 c3@2 ~@3 bb2 [c3,g3,bb3]@2 [c3,g3,bb3]@2 ~@3 bb2",
  L: "[c3,bb3,eb4]@2 [c3,bb3,eb4]@2 ~@3 bb2 [c3,bb3,eb4]@2 [c3,bb3,eb4]@2 ~@4", M: "[bb2,ab3,d4,f4]@15 ~",
  N: "~@5 eb4 d4 ab3", O: "[[a3,eb4]@13 ~ [ab3,d4]@17 ~]/2",
  P: "~ f3 ~ d3 [eb3,g3,bb3] [eb3,g3,bb3]@3, d3@3 ~@5, ~ [f3,a3] ~@2", Q: "[c3,bb3,eb4]!2 ~@2 [c3,bb3,eb4]!2 ~@2",
  R: "[bb2,ab3,d4] [ab2,gb3,c4] [g2,f3,b3]@2", // Bb7 Ab7 G7
  S: "[~@4 [a3,c4]@2 f3@2 [g3,c4] ~ [g3,c4]@4 d2@8 bb2 c3 d3@2 d3@2 d3 c3 a2@2, f2@4 eb2!2 ~@10, ~@4 bb3 ~@9 [gb3,c4]@17 ~]/2", // Am C5 Gbdim
  T: "[~@4 [a3,c4]@2 f3@2 [g3,c4] ~ [g3,c4]@4 [d2,gb3,c4]@17 ~, f2@4 eb2!2 ~@10, ~@4 bb3 ~@27]/2", // Am C5 D7
  U: "[[ab3,d4,g4]@15 ~]/2", V: "[~@4 ab4@2 ~@2 [c4,ab4]@23 ~, ~@6 eb4@25 ~]/2", W: "[~@14 [db4,d4,g4]@17 ~]/2",
  X: "[~@2 f3@2 [c4,eb4]@3 ~ [c4,eb4] ~ [c4,eb4]@4 ~@8 f2 ab2 bb2 ~ bb2 ~ bb2 ab2 f2@2, f2@21 ~@11, ~@4 bb3 ~@9 [bb3,d4]@17 ~]/2", // Cm Bb
  Y: "[~@2 f3@2 [c4,eb4]@3 ~ [c4,eb4] ~ [c4,eb4]@4 [f2,bb3,d4]@17 ~, f2@13 ~@19, ~@4 bb3 ~@27]/2", // Cm Bb
})).s("gm_epiano1").gain(0.3)

// other · lead 4 chiff · "Synthesizer"
const lead_4_chiff = note("<~@39 A ~@7 B@2 C@2 ~@14 D@8 ~@15 E ~@22>".pickRestart({
  A: "f4@15 ~", B: "[f4@6 f3@6 f4@9 ~ f3@6 f4@4]/2", C: "[f4@3 f3@3 f4 f4@4 f3@3 f4@2]/2",
  D: "[f4@6 f3@6 f4@2 f4@8 f3@6 f4@9 ~ f3@6 f4@2 f4@8 f3@6 f4@9 ~ f3@6 f4@2 f4@8 f3@6 f4@9 ~ f3@6 f4@2 f4@8 f3@6 f4@4]/8",
  E: "db4 d4 eb4 e4 f4 gb4 g4 ab4 a4 bb4 b4 c5 ~@4",
})).s("gm_lead_4_chiff").gain(0.3)

// bass · electric bass finger · "E. Bass"
const bass = note(`<
  ~@4 A B@2 C@2 D@2 E@2 F@2 G H D@2 E@2 F@2 G H I@4 J@2 K@2 L M N@2 O@2 P@2 Q@2 R@2 S T U@2 V W R@2 S H X@3 Y Z@2 K@2 L
  AA AB@2 AC@2 AB@2 AD@2 AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS ~@8 AT AU@4 AV@2 K@2 L M AW@2 AX@2
>`.pickRestart({
  A: "~@5 c2 eb2@2", B: "[f1@6 f1@2 ab1@2 ab1@2 ~@2 bb1@9 bb1 d2@2 eb2@2 ~@2 f1@2]/2",
  C: "[f1@3 f1 ab1!2 ~ bb1@4 bb1 d2 eb2 ~ f1]/2", D: "[f1@3 f1 ab1!2 ~ bb1@4 d2!2 eb2 ~ f1]/2",
  E: "[f1@6 f1@2 ab1@2 ab1@2 ~@2 c2@8 g1@2 c2 g1 c2@4 g1@2]/2", F: "[f1@3 f1 ab1!2 ~ bb1@4 d2!2 eb2 ~ f2]/2",
  G: "d2@6 d2@2 eb2 ~ eb2@4 eb2@2", H: "c2 ~@4 bb1 bb2@2",
  I: "[f1@7 f1 f2 ~ e2 ~ eb2 ~ d2@4 d2!2 d2@3 d2!2 ~ eb2 ~ e2 ~ f2@4 f2!2 f2@3 f1!2 ~ a1 ~ bb1 ~ c2@8 c2 g1 c2 g1 c2@2 g1@2 c2@2]/4",
  J: "[d2@7 d2 d2@2 e1@2 f1@2 bb1@9 f1 bb1 f1 bb1@5 bb1]/2", K: "c2 ~ c2 ~@4 bb1 c2 ~ c2 ~@4 bb1",
  L: "c2 ~ c2 ~@4 bb1 c2 ~ c2 ~@5", M: "bb1", N: "[f1@4 ~@4 ab1@2 ab1@2 ~@2 bb1@9 d2 d2@2 eb2@4 f1@2]/2",
  O: "[f1@6 f1@2 ab1@2 ab1@2 ~@2 bb1@9 d2 d2@2 eb2@4 f1 ~]/2",
  P: "[f1@6 f1@2 ab1 ~ ab1@2 ~@2 bb1@9 d2 d2@2 eb2@4 f1@2]/2",
  Q: "[f1@6 f1@2 ab1 ~ ab1@2 ~@2 c2@8 g1!2 c2 g1 c2@2 g1@2 e1@2]/2",
  R: "[f1@6 f1@2 ab1@2 ab1@2 ~@2 bb1@9 d2 d2@2 eb2@4 f2@2]/2", S: "d2@6 d2@2 eb2 ~ eb2@2 eb2 ~ d2@2", T: "c2 ~@7",
  U: "[f1@6 f1@2 ab1 ~ ab1@2 ~@2 bb1@8 ~@2 d2@2 eb2@4 f1@2]/2", V: "f1@6 f1@2 ab1 ~ ab1@2 ~@2 c2@2",
  W: "c2@6 g1!2 c2 g1 c2@2 g1@2 e1@2",
  X: "[f1@7 f1 f2 ~ e2 ~ eb2 ~ d2@4 d2!2 d2@3 d2!2 ~ eb2 ~ e2 ~ f2@4 f2!2 f2@3 f1!2 ~ a1 ~ bb1 ~ c2@2]/3",
  Y: "c2@6 c2 g1 c2 g1 c2@2 g1@2 c2@2", Z: "[d2@7 d2 d2@2 e1@2 f1@2 bb1@4 bb1@5 f1 bb1 f1 bb1@4 bb1 f1]/2",
  AA: "bb1 ab1 g1@2", AB: "[f1@4 f1@3 f1 eb2@2 eb2@2 ~@2 d2@9 g1 ab1 a1 c2 a1 ab1@2 g1@2]/2",
  AC: "[f1@4 f1@3 f1 eb2 ~ eb2@2 ~@2 d2@9 c2 d2@2 c2@2 c2@2 d2@2]/2",
  AD: "[f1@4 f1@3 f1 eb2@2 eb2@2 ~@2 d2@6 c2 d2@2 c2@2 a1 ab1 g1 d2@2 c2@2]/2",
  AE: "db2@2 db2@5 b1 db2 ~ db2@2 db2@2 ab2@2", AF: "db2@2 db2@5 b1 db2 ~ eb2 f2 ab2@2 f2@2",
  AG: "bb1@2 bb1@5 ab1 bb1 ~ bb1@2 bb1 ~ ab1 ~", AH: "bb1@4 d2 eb2 d2 bb1 ~ bb1 ~ bb1 f2 ~ eb2 ~",
  AI: "db2@2 db2@5 b1 db2 ~ db2@2 db2@2 b1@2", AJ: "db2@2 db2@5 b1 db2 eb2!2 f2 ab2@2 f2@2",
  AK: "eb2 ~ eb2@4 eb2!3 ~ eb2@2 eb2@2 eb3@2", AL: "eb2@2 ab2 bb2 bb2@2 eb2@2 bb2 ab2 eb2@2 eb2 ~ eb2 ~",
  AM: "db2 ~ db2@5 ab2 db2@2 db2@5 b1", AN: "db2 ~ db2@5 b1 db2 ~ db2@2 db2@2 b1@2",
  AO: "bb1 ~ bb1@5 ab1 bb1 ~ bb1 ~ ab1@2 g1 ~", AP: "bb1 ~ bb1@2 bb1 ~ ab1 ~ bb1 db2!3 bb1@2 eb2@2",
  AQ: "db2 ~ db2@5 b1 db2 ~ db2@4 db2@2", AR: "eb2 ~ eb2@5 db2 eb2 db2 eb2@4 eb2@2", AS: "bb1 ~@7",
  AT: "~@9 c2 c2@2 d2@2 e2@2",
  AU: "[f1@7 f1 f2 ~ e2 ~ eb2 ~ d2@4 d2!2 d2@3 d2!2 ~ eb2 ~ e2 ~ f2@4 f2!2 f2@3 f1!2 ~ a1 ~ bb1 ~ c2@4 c2 ~ c2@2 c2 g1 c2@2 e1@2 g1@2 e1@2]/4",
  AV: "[d2@4 d2@3 d2 d2@2 e1@2 f1@2 bb1@4 bb1@5 f1 bb1 f1 bb1@4 bb1 f1]/2", AW: "f2/2", AX: "[f2@7 f1@9]/2",
})).s("gm_electric_bass_finger").gain(0.42)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A B C B@2 A B C B@3 D B A B C B@3 D B@11 C B C B A B C B@3 D B C B C B@3 D B@11 A B C B A B A B A B C B A B C B A
  B C E@3 ~@9 B@10 F@3 ~
>`.pickRestart({
  A: "~@4 x ~@2 x ~@4 x ~@3", B: "~ x ~ x", C: "~@4 x ~@7 x ~@2 x", D: "~@3 x", E: "~@4 x ~@4 x ~@2 x ~@3", F: "~ x",
})).gain(0.3)

// drums · clap
const clap = s("cp").struct("<~@24 A B@10 ~@19 A B@32 ~ A B@16 ~@6>".pickRestart({
  A: "~@3 x", B: "~ x ~ x",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!4 ~@106>").gain(0.3)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@3 A ~@3 A ~ A B ~@4 A ~ A ~@13 A ~@5 A ~ A ~@3 A ~ A ~ A ~@15 A ~@7 A ~@3 A ~@3 A ~@26
>`.pickRestart({
  A: "~@7 x", B: "~@3 x ~@4",
})).gain(0.3)

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

stack(
  brass_section, tenor_sax, distortion_guitar, epiano1, lead_4_chiff, bass, kick, snare, clap, hihat, open_hat, ride
)

More by Yoko Kanno