Strudelify

Jane

Starship

KeyD majorTempo82 bpm
0:00/0:00
// Jane — Starship
// 82 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Warm Bells" named as a mallet, played on tubular bells (its viola patch is not one); ch 3 "Electric Piano" named as a piano, played on epiano1 (its slap bass 2 patch is not one); ch 2 "Slap Bass" named as a bass, played on slap bass 1 (its electric guitar clean patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 44 bars on a 48-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 · [...]/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 · epiano1 · "Electric Piano"
const epiano1 = note("<A@8 B@2 C@2 D E@2 F G@2 H I@8 J@3 K@6 L M@2 N@3 O@2>".pickRestart({
  A: "[~@306 g5@14 [b3,e4,g4]@3 ~@2 e4@3 ~@2 [b3,e4,g4]@2 ~@3 [g2,g3,d4,g4,b4]@4 b4@3 ~@2 [g4,b4]@2 ~@2 [d4,g4,b4]@3 ~@7 [d4,g4,b4]@3 ~ [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@3 ~@2 f#4@3 ~ [c#4,e4,a4]@4 a4@3 ~, ~@13 e4@29 e4@19 e4@29 e4@28 ~ e4@19 e4@28 e4@88 g5@52 ~@14 [e2,e3]@5 ~@37 [d2,d3]@11 ~@3 [a1,a2]@8, ~@18 g4@19 g4@19 g4@39 g4@19 g4@19 g4@38 g4@88 f#5@19 f#5@19 f#5@25 ~@62, ~@23 e5@52 e5@25 e5@52 e5@62 a4@5 f#5@30 d5@19 d5@19 ~ d5@35 ~@61, ~@27 d5@19 ~ d5@18 d5@39 ~ d5@19 d5@18 d5@34 g5@5 f#5@9 d5@5 a4@5 f#5@10 d5@18 g5@16 a4@29 a4@19 a4@30 ~@49 d4@2 ~@11]/8", // Em G D A E D A
  B: "[~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 [b3,e4,g4]@3 ~@2 [b3,g4]@3 ~ [b3,e4,g4]@2 ~@4 a4@2 ~@2 b4@3 ~ [d4,g4,b4]@3 ~@2 [d4,g4,b4]@3 ~ b4@3 ~@2 [d4,g4,b4]@2 ~@3 [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@2 ~@2 [c#4,e4]@4 ~ c#4@2 ~@2 [c#4,e4,a4]@3 ~@2 [c#4,e4,a4]@3 ~ [b3,e4,g4]@3 ~@2 [b3,g4]@3 ~@2 [b3,e4,g4]@2 ~, ~@10 [e2,e3]@9 ~@5 [g2,g3]@7 ~@21 [d2,d3]@11 ~@2 [a1,a2]@15 ~@3 [e2,e3]@11 ~@2, ~@24 [d4,g4,b4]@3 ~@38 a4@5 ~@26]/2", // A Em G D C#m A Em E …
  C: "[~@2 f#4 ~@7 [d4,g4,b4]@3 ~@2 [d4,g4,b4]@3 ~ b4@3 ~@2 [d4,g4,b4]@3 ~ [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@3 ~@2 f#4@2 ~@2 [c#4,e4,a4]@4 ~@5 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 [b3,e4,g4]@3 ~ g4@2 ~@3 [b3,e4,g4]@2 ~@2 [d4,g4,b4]@3 ~@2 b4@3 ~ [d4,g4,b4]@2 ~@3 [d4,g4,b4]@3 ~ [d4,g4,b4]@3 ~@2, ~ [g2,g3,d4,g4,b4]@4 ~@23 [d2,d3]@9 [d4,a4]@2 ~@3 [a1,a2]@15 ~@3 [e1,e2]@11 ~@2 [g1,g2]@5 ~@18]/2", // G D A Em G D D5 A …
  D: "[d4,g4,b4]@2 ~@2 [d2,d3,d4,f#4,a4]@3 ~@2 [d2,d3,f#4,a4]@12 ~ [a1,a2,c#4,e4,a4]@3 ~@2 [a1,a2,e4,a4]@8 ~ [e1,e2]@5 [e4,g4]@3 ~ [b3,g4]@3, ~@9 d4@8 ~@10 c#4@5 ~@4 [e4,g4]@3 ~@9, ~@36 b3 ~@11", // G D A A5 E Em
  E: "[~@2 [d4,g4,b4]@3 ~@2 b4@2 ~@2 [d4,b4]@2 ~@2 [d4,g4,b4]@4 ~ b4@3 ~@2 [d4,g4]@3 ~ [d4,f#4,a4]@3 ~ [d4,f#4]@3 ~@2 [d4,f#4,a4]@2 ~@2 [c#4,e4,a4]@3 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 [c#4,e4,a4]@3 ~ [b3,e4,g4]@3 ~@2 e4@3 ~@2 b3@2 ~@2 [d4,g4,b4]@7 ~@2 [d4,b4]@2 ~@3 [d4,g4,b4]@3 ~ [d4,b4]@3 ~, ~@2 [g1,g2]@5 ~@17 b4@2 ~@3 [d1,d2]@11 ~@2 [a1,a2]@15 ~@3 [e2,e3]@11 ~@3 [g2,g3,e4]@4 ~@18]/2", // G G5 D A Em G D A …
  F: "~ [d4,g4,b4]@3 ~ [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@3 ~@2 f#4@2 ~@2 [c#4,e4,a4]@4 [e4,a4]@3 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 [b3,e4,g4]@3 ~ [b3,e4]@3 ~@2 [b3,e4,g4]@2, ~@5 [d2,d3]@9 [d4,a4]@3 ~@2 [a1,a2]@15 ~@3 [e1,e2]@11, ~@19 f4 ~@28", // G D A A5 A Em E5 Em …
  G: "[~@2 [g1,g2,d4]@5 b4@2 ~@2 [d4,g4,b4]@3 ~@2 [d4,g4,b4]@3 ~ b4@2 ~@3 [d4,g4,b4]@3 ~ [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@3 ~ [d4,f#4,a4]@2 ~@2 [c#4,e4,a4]@4 ~ [e4,a4]@3 ~@2 e4@3 ~ [c#4,e4,a4]@3 ~@6 [b3,e4]@3 ~ [b3,e4,g4]@3 ~@2 [d4,g4,b4]@3 ~ b4@3 ~@2 [d4,g4,b4]@3 ~ [d4,g4,b4]@3 ~@2 b4@3 ~, ~@2 [g4,b4]@3 ~@24 [d1,d2]@10 ~@3 [a1,a2]@15 ~@3 e2@10 ~@26, ~@17 [c#4,a4] ~@2 [b3,e4,g4] ~@11, ~@61 e1@9 ~@4 [g1,g2]@4 ~@18]/2", // G5 G D A A5 A E5 Em …
  H: "[d4,b4]@2 ~@3 [d1,d4,f#4,a4]@3 ~ [d1,d2,d4,f#4,a4]@11 ~@3 [a1,a2,c#4,e4,a4]@3 ~@2 [a1,a2,e4,a4]@9 ~@5 e4@4 b3@2, ~@4 d2@3 ~@21 c#4@4 ~@5 [e1,e2,g4]@11", // G D A A5 Em
  I: "[~@20 g4@4 ~@15 a2@4 ~@14 e4@4 ~@9 b3@5 ~@21 d4@4 ~ [d1,d2,d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@13 [a1,a2,c#4,e4,a4]@3 ~@2 [a1,a2,c#4,e4,a4]@9 ~@9 b3@4 ~@19 g4@4 ~@14 [a2,a4]@5 ~@13 [e4,a4]@5 ~@9 b3@4 ~@18 g4@5 [d1,d2,d4]@2 ~@2 [d1,d2,d4,f#4,a4]@3 ~@2 [d1,d2,d4,f#4,a4]@13 ~ e4@3 ~ [a1,a2,e4,a4]@8 ~ [b3,e4,g4]@3 ~@2 [b3,e4,g4]@3 ~ [b3,e4,g4]@2 ~@3 [g1,g2,d4]@5 [g4,b4]@2 ~@2 [d4,g4,b4]@2 ~@3 [d4,g4,b4]@4 [d4,b4]@3 ~@2 b4@2 ~@2 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~@2 [c#4,e4,a4]@4 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 [c#4,e4,a4]@3 ~@2 e4@3 ~ e4@3 ~ [b3,g4]@3 ~@2 [g1,g2,b4]@4 b4@2 ~@3 [d4,g4,b4]@3 ~ [d4,g4,b4]@3 ~@2 [d4,g4,b4]@2, ~@2 [g1,g2,b4]@22 ~ [d1,d2]@19 ~@17 [e1,e2,g4]@14 ~@30 [d1,d2]@16 ~@12 [e1,e2,g4]@13 ~@23 [d1,d2]@18 ~ [a1,a2]@18 [e1,e2,g4]@13 [g1,g2,b4]@25 ~@20 [a1,a2,c#4,a4]@3 ~@11 [e1,e2]@10 ~@31 [d1,d2]@10 ~@3 [a1,a2]@16 ~@2 [e1,e2]@11 ~@23, ~@11 g4@9 ~@5 a4@13 a4@5 ~@9 c#4@9 ~@27 d4@8 ~@42 e4@9 ~@14 d4@8 ~@5 f#4@9 ~@9 e4@9 ~@9 e4@9 ~@145 [d4,g4]@3 ~@17, ~@16 d4@8 ~@5 f#4@9 ~@10 e4@9 ~@9 e4@10 ~@7 g4@9 g4@9 ~@55 g4@9 ~@4 a4@14 ~@5 a4@13 ~@27 g4@9 ~@55 [g4,b4]@3 ~@89, ~@34 d4@9 [a1,a2,a4]@18 ~@14 [g1,g2,b4]@26 ~@46 [g1,g2,b4]@22 ~@10 d4@9 ~@9 c#4@9 ~@27 d4@9 ~@27 c#4@4 ~@77 [b3,g4]@3 ~@31]/8", // D A A5 D A5 Em G5 G …
  J: "[~@2 [d4,g4,b4]@3 ~@2 [d4,f#4,a4]@4 ~ [f#4,a4]@3 ~ [d4,f#4,a4]@3 ~ [c#4,e4,a4]@4 ~ [c#4,e4,a4]@3 ~@2 e4@3 ~ [e4,a4]@3 ~ [b3,e4,g4]@3 ~@2 [b3,e4]@3 ~ [b3,e4,g4]@3 ~@2 [g1,g2,d4]@4 b4@2 ~@3 [g4,b4]@2 ~@2 [d4,g4,b4]@3 ~@2 [g4,b4]@3 ~ [d4,g4,b4]@3 ~@2 [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~@2 [c#4,e4,a4]@4 [c#4,e4,a4]@3 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 e1@8 [b3,e4]@2 ~@3 [d4,g4,b4]@3 ~ [d4,b4]@3 ~@2 [d4,g4,b4]@3 ~ [d4,g4,b4]@3 ~@2 b4@3, ~@7 [d1,d2]@11 ~@2 [a1,a2]@15 ~@3 [e1,e2]@11 ~@29 [d1,d2]@10 ~@4 [a1,a2]@15 ~@2 e2@11 ~@3 [g1,g2]@4 ~@17, ~@29 [c#4,a4]@3 ~ c#4@3 ~@16 [g4,b4]@3 ~@5 d4@2 ~@47 [b3,e4,g4]@3 ~@28 d4@3 ~]/3", // G D F#m D A A5 Em E5 …
  K: "[~ [d4,g4,b4]@3 ~ [d1,d2,d4,f#4,a4]@3 ~@2 [d1,d2,d4,f#4,a4]@13 ~ a1@3 ~ [a1,a2,c#4,e4,a4]@8 ~@10 b3@4 ~@18 g4@4 ~@14 a4@4 ~@14 a4@4 ~@9 b3@4 ~@22 d4@4 ~ [d1,d2,d4,f#4,a4]@3 ~@2 [d1,d2,d4,f#4,a4]@13 [a1,a2,c#4,e4,a4]@3 ~@2 [a1,a2,c#4,e4,a4]@9 ~@9 b3@4 ~@18 g4@4 ~@14 f#4@4 ~@13 e4@4 ~@9 b3@5 ~@17 g4@5 d4@2, ~@23 [a2,c#4,e4,a4]@3 ~@11 [e1,e2,g4]@13 [g1,g2,b4]@22 [d1,d2]@18 [a1,a2]@18 [e1,e2,g4]@13 [g1,g2]@26 ~@33 [e1,e2,g4]@13 [g1,g2,b4]@22 [d1,d2,a4]@18 [a1,a2,a4]@17 e2@13 ~@25, ~@42 e4@9 ~@8 g4@9 ~@5 a4@13 ~@4 a4@13 ~@19 b4@26 ~@129 d4@9 ~@2, ~@64 d4@9 ~@4 f#4@9 ~@9 e4@13 ~@5 e4@9 ~@8 g4@9 g4@8 ~@55 g4@9 ~@9 f#4@9 ~@9 e4@8 ~@9 e4@9 ~@9 g4@8 ~@7, ~@81 d4@9 ~@9 c#4@9 ~@27 d4@8 ~@41 e4@9 ~@14 d4@8 ~@10 d4@8 ~@9 c#4@8 ~ [e1,g4]@13 [g1,g2,b4]@24]/6", // G D A D A Em G D …
  L: "~@3 f#4@3 ~ [d1,d2,d4,f#4,a4]@13 [a1,a2,c#4,e4,a4]@3 ~@2 [a1,a2,c#4,e4,a4]@8 ~ [e1,e2,e4]@5 [b3,e4,g4]@3 ~ [b3,e4]@2 ~@3, ~@2 [d1,d2,d4,a4]@3 ~@29 [b3,g4]@3 ~@11", // D A E Em E5 D5 Em
  M: "[[d4,g4,b4]@3 ~@2 [d4,b4]@2 ~@2 [d4,g4,b4]@2 ~@2 [d4,g4,b4]@4 ~ b4@3 ~@2 [d4,g4,b4]@3 ~ [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@3 ~ [c#4,e4,a4]@4 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 [b3,e4,g4]@4 ~ e4@3 ~ [b3,e4,g4]@2 ~@2 [d4,g4,b4]@3 ~@2 [d4,g4,b4]@3 ~ [d4,g4,b4]@2 ~@3 [d4,g4,b4]@4 d4@2 ~@3 [d4,g4]@2, [g1,g2]@5 ~@22 [d1,d2]@10 ~@3 [a1,a2]@15 ~@3 [e1,e2]@11 ~@2 [g1,g2]@5 ~@17 b4@2 ~]/2", // G D A Em G G5 G D …
  N: "[~@2 [d4,f#4,a4]@3 ~@2 [f#4,a4]@3 ~ [d4,f#4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~ [c#4,e4,a4]@3 ~@2 [b3,e4,g4]@3 ~@2 [e4,g4]@3 ~ [b3,e4,g4]@2 ~@2 [g1,g2,b4]@5 [d4,g4,b4]@3 ~ [d4,g4,b4]@2 ~@3 [d4,g4,b4]@4 ~ d4@2 ~@2 [d4,b4]@2 ~@2 [d4,f#4,a4]@3 ~@2 [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~ [c#4,e4,a4]@4 ~ [c#4,e4]@3 ~ [c#4,e4,a4]@3 ~@2 [e4,a4]@3 ~ [b3,e4,g4]@4 ~@5 b3@2 ~@2 [g1,g2,d4,g4,b4]@4 ~ b4@3 ~ [d4,g4,b4]@3 ~@2 [d4,g4]@3 ~@6 d4@2 ~@2, ~@2 [d1,d2]@10 ~@3 [a1,a2]@15 ~@3 [e1,e2]@11 ~@29 [d1,d2]@10 ~@3 [a1,a2]@15 ~@3 [e1,e2]@9 ~@31, ~@6 d4@3 ~@37 [d4,g4]@3 ~@50 c#4@2 ~@30 b4@9 ~@4]/3", // D F#m D A Em G D A …
  O: "[~@5 [d1,d4,f#4,a4]@11 ~@4 [a1,a2,c#4,e4,a4]@3 ~@2 [a1,a2,c#4,e4,a4]@7 ~@64, g8@59 ~@37, ~@5 d2@55 ~@36]/2", // D A
})).s("gm_epiano1").gain(0.41)

// chords · epiano1 · "Electric Piano" · soft notes
const epiano1_soft = note(`<
  ~@6 A B C D E@2 F G H I J@2 K L ~@2 M ~@2 N O P Q R ~ S ~ T U ~ V W X Y Z AA AB@2
>`.pickRestart({
  A: "~@37 [b3,g4]@3 ~@8", B: "~@3 [d4,g4]@3 ~@2 d4@2 ~@7 [d4,g4,b4]@2 ~@16 a4@2 ~@8 e4@3, ~@44 c#4@3 ~",
  C: "~@15 e4@3 ~@11 g4@3 ~@10 [d4,g4]@2 ~@4, ~@14 d4 ~@9", D: "~@22 e4@3 ~@15 e4@3 ~@5",
  E: "[~@6 [d4,g4,b4]@3 ~@10 [d4,g4]@3 ~@25 e4@3 ~@14 [b3,e4]@2 ~@12 [d4,g4]@3 ~@15, ~@23 [c#4,a4] ~@24]/2", // G G5 E5 G5 F#m
  F: "~@45 e4@2 ~", G: "~@7 d4@2 ~@2 g4@2 ~@7 [d4,g4]@3 ~@10 a4@3 ~@12, ~@2 g4 ~@13",
  H: "~@17 [b3,g4]@3 ~@2 [e4,g4]@3 ~@10 g4@2 ~@7 g4@3 ~", I: "~@23 c#4@3 ~@15 g4@3 ~@4",
  J: "[~@7 g4@3 ~@10 [d4,g4]@3 ~@24 c#4@3 ~@15 g4@3 ~@10 [d4,g4]@3 ~@11 [d4,g4]@3 ~]/2", K: "g4 ~@23",
  L: "~@39 f#4@5 ~@4", M: "~@39 f#4@4 ~@5", N: "~@9 d4@2 ~@11 g4@3 ~@2 [d4,g4]@3 ~@18",
  O: "~@19 [b3,g4]@3 ~ e4@2 ~@8 [d4,g4]@3 ~@12", P: "~@12 d4@3 ~@28 g4@3 ~@2", Q: "~@8 [d4,g4]@3 ~@11 d4@3 ~@23",
  R: "~@18 [b3,e4,g4]@3 ~ g4@3 ~@6 g4@3 ~@10 g4@3 ~", S: "~@38 f#4@5 ~@5", T: "d2 ~@15", U: "~@37 a2@4 ~@7",
  V: "~@22 g4 ~", W: "~@5 g4@3 ~@10 [d4,g4]@3 ~@27", X: "~@15 [b3,g4]@2 ~@24 [g4,b4]@3 ~@4", Y: "~@19 b3 ~@4",
  Z: "~@16 [g4,b4]@3 ~@2 g4@2 ~@20 a4@2 ~@3", // G
  AA: "~@13 b3@2 ~@2 [e4,g4]@2 ~@7 [d4,g4]@3 ~@10 g4@6 ~@3, ~@12 [e4,g4]@2 ~@25 d4 ~@8", // Em G5 Em
  AB: "[~@3 g#4@5 ~@40, a8@59 ~@37, d2@5 ~@91, ~@2 [c2,c7]@57 ~@37]/2", // C
})).s("gm_epiano1").gain(0.2)

// chords · electric bass pick · "Fantasy"
const electric_bass_pick = note("<A@5 B@2 ~@11 C@3 D E@2 F ~@5 G H@2 I J@2 K ~@7>".pickRestart({
  A: "[~@13 e4@4 g4@5 e5@5 d5@8 ~@2 g4@4 e4@4 ~@2 d5@6 ~@3 g4@4 e4@4 ~@2 d5@4 ~@5 e5@7 ~@8 e4@5 g4@4 e5@5 d5@8 ~@2 g4@4 e4@4 ~ d5@4 ~@6 g4@4 e4@4 ~ d5@8 ~@2 e5@6 ~@8 e4@4 g4@2 ~@4 g5@3 ~@2 f#5@8 ~ d5@4 ~ a4@4 ~ f#5@8 ~ d5@4 a4@4 ~ f#5@8 ~@2 g5@9 ~@3]/5",
  B: "[~@3 a4@5 d5@5 g5@4 ~ f#5@9 d5@4 ~ a4@5 f#5@9 ~ d5@4 ~ a4@5 f#5@8 ~ g5@9 ~@21]/2",
  C: "[~@37 [e5,b5]@12 ~@24 f#5@11 ~@2 e5@21 ~@2 [e5,b5]@11 ~@2 [d5,g5,b5]@22, ~@37 g5@36 a5@34 ~ g5@12 ~@24, ~@50 b5@23 ~@71, ~@51 d5@33 ~@2 c#5@15 ~@43]/3", // E5 G
  D: "~@4 [d5,f#5,a5]@3 ~@2 [d5,f#5,a5]@11 ~@4 [c#5,e5,a5]@3 ~@2 [c#5,e5,a5]@6 ~@3 [e5,g5,b5]@10", // D A Em
  E: "[~@3 [d5,g5,b5]@21 ~@2 [d5,f#5,a5]@10 ~@3 [e5,a5]@21 ~@2 [e5,g5,b5]@11 ~@2 [d5,g5,b5]@21, ~@13 c#5@5 ~@14]/2", // G D A5 Em G
  F: "~@6 [d5,f#5,a5]@3 ~@2 f#5@4 ~@10 [c#5,e5,a5]@3 ~@2 [c#5,e5,a5]@4 ~@14, ~@5 [d5,a5]@2 ~@17", // D A D5
  G: "~@37 [b4,e5,g5]@10 ~", // Em
  H: "[~@2 [d5,g5,b5]@23 ~@3 [d5,f#5,a5]@11 ~@3 [e5,a5]@16 ~@2 [b4,e5,g5]@11 ~@2 [d5,g5,b5]@23, ~@7 c#5@2 ~@7]/2", // G D A5 Em G
  I: "~@4 [d5,f#5,a5]@2 ~@2 [d5,f#5,a5]@5 ~@10 [c#5,e5,a5]@3 ~ [c#5,e5,a5]@4 ~@5 [e5,g5,b5]@11 ~", // D A Em
  J: "[~@2 [d5,g5,b5]@22 ~@3 [d5,f#5,a5]@2 ~@3 [d5,f#5,a5]@7 ~@2 [c#5,e5,a5]@16 ~@2 [b4,e5,g5]@11 ~@2 g5@24, ~@71 [d5,b5]@23 ~@2]/2", // G D A Em G
  K: "~@2 [d5,f#5,a5]@3 ~@2 [d5,f#5,a5]@5 ~@8 [c#5,e5,a5]@3 ~@2 [c#5,e5,a5]@4 ~@19", // D A
})).s("gm_electric_bass_pick").gain(0.36)

// bass · slap bass 1 · "Slap Bass"
const bass = note("<~@6 A@2 B C D E F G H I J K L M@2 N O@2 P Q@2 R S T U V@3 W@2 X Y Z AA@2 AB AC ~>".pickRestart({
  A: "[~@4 d2@2 ~@2 [d2,d3]@2 ~@3 [d2,d3]@2 ~@3 [d2,d3]@2 ~@2 [d2,d3]@8 ~@2 e2@14 g2@4 ~@24 d2@13 a2@5 ~@4]/2", // D
  B: "~@5 e2@7 g2@2 ~@10", C: "~@3 d2@14 a2@4 ~@14 e2@13", D: "~ g2@3 ~@25 d2@12 a2@2 ~@5", E: "~@12 e2@13 ~ g2@3 ~@19",
  F: "~@4 d2@3 ~@2 d2@5 ~@8 a2@2 ~@3 a2@6 ~@3 e2@12", G: "~@2 g2@3 ~@24 d2@13 a2@4 ~@2", H: "~@13 e2@12 g2@3 ~@20",
  I: "~@5 d2@13 a2@5 ~@14 e2@11", J: "~ g2@2 ~@12 d2@6 a2@2 ~", K: "~@12 e2@14 g2@3 ~@19",
  L: "~@5 d2@3 ~ d2@10 ~@3 a2@2 ~@3 a2@4 ~@6 e2@11", M: "[~@2 g2@22 d2@13 ~ a2@23 e2@13 g2@22]/2",
  N: "~@4 d2@3 ~@2 d2@12 ~ a2@3 ~@2 a2@7 ~@2 e2@12", O: "[~@2 g2@22 ~ d2@14 a2@22 e2@14 g2@21]/2",
  P: "~@5 d2@3 ~@2 d2@6 ~@8 a2@3 ~ a2@7 ~@3 e2@10", Q: "[~@4 g2@5 ~@22 d2@2 ~@2 d2@10 a2@7 ~@10 e2@13 ~ g2@5 ~@15]/2",
  R: "~@6 d2@3 ~@2 d2@9 ~@3 a2@3 ~@3 a2@7 ~@2 e2@10", S: "~@3 g2@5 ~@22 d2@13 a2@5", T: "~@13 e2@13 ~ g2@5 ~@16",
  U: "~@5 d2@3 ~@2 d2@11 ~ a2@3 ~@3 a2@5 ~@4 e2@11",
  V: "[~@2 g2@23 d2@17 a2@18 e2@13 g2@27 d2@3 ~ d2@12 ~ a2@3 ~@2 a2@8 ~@2 e2@12]/3",
  W: "[~ g2@22 d2@18 a2@18 e2@12 g2@25]/2", X: "~@2 d2@3 ~ d2@12 ~@2 a2@3 ~ a2@5 ~@5 e2@13 ~",
  Y: "g2@5 ~@22 d2@13 a2@5 ~@3", Z: "~@10 e2@13 g2@5 ~@20",
  AA: "[~@2 d2@3 ~@2 d2@8 a2@15 ~@2 e2@13 ~ g2@5 ~@22 d2@12 ~ a2@10]/2", AB: "~@7 e2@14 g2@5 ~@22",
  AC: "d2@3 ~@2 d2@11 ~@2 a2@3 ~@2 a2@11 ~@14",
})).s("gm_slap_bass_1").gain(0.46)

// bass · slap bass 1 · "Slap Bass" · soft notes
const bass_soft = note("<~@5 A@2 B ~@36>".pickRestart({
  A: "[~@30 d3 ~@3 d3@2 ~@2 [d2,d3]@2 ~@3 d3@2 ~@2 [d2,d3]@2 ~@3 d3@2 ~@42, ~@29 d2@2 ~@2 d2@2 ~@7 d2@2 ~@52]/2", // D
  B: "~@40 g2@3 ~@5",
})).s("gm_slap_bass_1").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL ~
>`.pickRestart({
  A: "~@20 x ~@3 x ~@3 x ~@4 x ~@4 x ~@3 x ~@4 x", B: "~@4 x ~@3 x ~@4 x ~@4 x ~@13 x ~@13 x ~",
  C: "~@4 x ~@6 x ~ x ~@6 x ~@3", D: "~@10 x ~@13 x ~@8 x ~@14", E: "x ~@3 x ~@12 x ~@4 x ~@12 x ~@4 x ~@7",
  F: "~ x ~@9 x ~@12 x ~@4 x ~@8 x ~@3 x ~@4 x", G: "~@12 x ~@12 x ~@9 x ~@12", H: "~ x ~@3 x ~@12 x ~@4 x ~@12 x ~@11",
  I: "~@2 x ~@8 x ~@13 x ~@3 x ~@12 x ~@4 x", J: "~@12 x ~@13 x ~@8 x ~@12", K: "~ x ~@4 x ~@12 x ~@4 x ~@12 x ~@10",
  L: "~@3 x ~@8 x ~@12 x ~@4 x ~@12 x ~@3 x", M: "~@13 x ~@12 x ~@8 x ~@12", N: "x ~@4 x ~@12 x ~@18 x ~@10",
  O: "~@2 x ~@4 x ~@30 x ~@3 x ~@4 x", P: "~@13 x ~@12 x ~@4 x ~@16", Q: "~@5 x ~@3 x ~@27 x ~@10",
  R: "~@3 x ~@3 x ~@31 x ~@4 x ~@3", S: "x ~@13 x ~@11 x ~@4 x ~@16", T: "~@7 x ~@17 x ~@12 x ~@9",
  U: "~@4 x ~@8 x ~@13 x ~@17 x ~@2", V: "~@14 x ~@13 x ~@8 x ~@10", W: "~@2 x ~@4 x ~@12 x ~@17 x ~@9",
  X: "~@4 x ~@8 x ~@12 x ~@4 x ~@12 x ~@3", Y: "~@13 x ~@13 x ~@8 x ~@11", Z: "~ x ~@17 x ~@17 x ~@10",
  AA: "~@2 x ~@8 x ~@17 x ~@12 x ~@5", AB: "~@12 x ~@12 x ~@8 x ~@12 x", AC: "~@17 x ~@18 x ~@11",
  AD: "~ x ~@8 x ~@17 x ~@12 x ~@6", AE: "~@11 x ~@12 x ~@7 x ~@13 x ~", AF: "~@5 x ~@5 x ~@4",
  AG: "x ~@8 x ~@12 x ~@4 x ~@12 x ~@7", AH: "~@9 x ~@13 x ~@8 x ~@13 x ~", AI: "~@15 x ~@17 x ~@12 x ~",
  AJ: "~@7 x ~@13 x ~@4 x ~@12 x ~@8", AK: "~@8 x ~@13 x ~@7 x ~@12 x ~@4", AL: "~@7 x ~@16",
})).gain(0.41)

// drums · clap
const clap = s("cp").struct(`<
  ~@6 A B C D E F G H I J K L M N O P N Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ ~
>`.pickRestart({
  A: "~@32 x ~@4 x ~@3 x ~@4 x ~", B: "~@8 x ~@8 x ~@4 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@2",
  C: "~@6 x ~@3 x ~@4 x ~@3 x ~@4 x ~@4 x ~@3 x ~@8 x ~@4 x", D: "~@17 x ~@13 x ~@3 x ~@8 x ~@3",
  E: "~ x ~@8 x ~@8 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~", F: "~@7 x ~@4 x ~@4 x ~@3 x ~@3 x ~@4 x ~@3 x ~@4 x ~@8",
  G: "x ~@5 x ~@5 x ~@2 x", H: "~@11 x ~@3 x ~@9 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3 x",
  I: "~@8 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~@3", J: "~ x ~@8 x ~@3 x ~@8 x ~@4 x ~@3 x ~@4 x ~@8 x ~",
  K: "~@7 x ~@3 x ~@4 x ~@3 x ~@4 x ~@8 x ~@4 x ~@7 x", L: "~@4 x ~@3 x ~@4 x ~@8 x ~@7 x ~@4 x ~@3 x ~@4 x ~@3",
  M: "x ~@36 x ~@8 x ~", N: "~@7 x ~@8 x ~@8 x ~@8 x ~@8 x ~@4", O: "~@4 x ~@8 x ~@8 x ~@8 x ~@8 x ~@7",
  P: "x ~@17 x ~@18 x ~@8 x ~", Q: "~@4 x ~@8 x ~@9 x ~@7 x ~@8 x ~@7", R: "~ x ~@17 x ~@18 x ~@8 x",
  S: "~@9 x ~@3 x ~@4 x ~@3 x ~@4 x ~@7 x ~@4 x ~@7", T: "~ x ~@4 x ~@3 x ~@4 x ~@3 x ~@3 x ~@8 x ~@4 x ~@4 x ~@3 x ~",
  U: "~@2 x ~@8 x ~@4 x ~@7 x ~@4 x ~@4 x ~@3 x ~@3 x ~@4 x", V: "~@4 x ~@3 x ~@3 x ~@4 x ~@4 x ~@3 x ~@8 x ~@3 x ~@8",
  W: "x ~@4 x ~@3 x ~@4 x ~@3 x ~@3 x ~@8 x ~@4 x ~@3 x ~@4 x ~@2", X: "~ x ~@35 x ~@8 x ~",
  Y: "~@7 x ~@8 x ~@7 x ~@8 x ~@8 x ~@5", Z: "~@3 x ~@8 x ~@8 x ~@7 x ~@9 x ~@7 x",
  AA: "~@9 x ~@7 x ~@8 x ~@9 x ~@8 x ~@2", AB: "~@6 x ~@8 x ~@17 x ~@7 x ~@6",
  AC: "~@2 x ~@8 x ~@8 x ~@7 x ~@8 x ~@7 x ~@2", AD: "~@34 x ~@3 x ~@4 x ~@4",
  AE: "~@4 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@3 x ~@4 x ~@2",
  AF: "~@5 x ~@4 x ~@3 x ~@4 x ~@3 x ~@3 x ~@4 x ~@7 x ~@4 x ~@2",
  AG: "~@6 x ~@4 x ~@7 x ~@4 x ~@3 x ~@4 x ~@4 x ~@3 x ~@5", AH: "~@2 x ~@4 x ~@4 x ~@8 x ~@3 x ~@8 x ~@4 x ~@3 x ~@4",
  AI: "x ~@3 x ~@3 x ~@7 x ~@4 x ~@8 x ~@3 x ~@13", AJ: "x ~@4 x ~@13 x ~@3 x ~@24",
})).gain(0.36)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@7 A ~ B C D E F ~ E ~ G ~@6 D ~@15 H ~@3>".pickRestart({
  A: "~ x ~@14", B: "~@13 x ~@26 x ~@7", C: "~@5 x ~@42", D: "~@43 x ~@4", E: "~@41 x ~@6", F: "~@3 x ~@6 x ~@13",
  G: "~@17 x ~@30", H: "~@8 x ~@6 x ~@8",
})).gain(0.2)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@6 A B C D E F G H I J H K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH V AI ~
>`.pickRestart({
  A: "~@23 x ~@18 x ~@5", B: "~@13 x ~@17 x ~@16", C: "~ x ~@17 x ~@18 x ~@9", D: "~@4 x ~@8 x ~@8 x ~",
  E: "~@5 x ~@5 x ~@4", F: "~ x ~@5 x ~@5 x ~@2", G: "~@3 x ~@5 x ~@5 x", H: "~@8 x ~@8 x ~@6",
  I: "~@2 x ~@8 x ~@8 x ~@3", J: "~@5 x ~@8 x ~@8 x", K: "~@4 x ~@16 x ~@17 x ~@8", L: "~@9 x ~@13 x ~@4 x ~@19",
  M: "~@5 x ~@10", N: "~ x ~@8 x ~", O: "~@23 x ~@4 x ~@19", P: "~ x ~", Q: "~@5 x ~@34 x ~@7", R: "~@11 x ~@17 x ~@18",
  S: "x ~@2 x ~@2 x ~", T: "~@6 x ~@16 x ~@18 x ~@5", U: "~@11 x ~@17 x ~@17 x", V: "~@17 x ~@17 x ~@12",
  W: "~@5 x ~@16 x ~@17 x ~@7", X: "~@5 x ~@4 x ~@12 x ~@4 x ~@19", Y: "~@16 x ~@16 x ~@14", Z: "~@3 x ~@34 x ~@9",
  AA: "~@4 x ~@3 x ~@13 x ~@4 x ~@20", AB: "~@15 x ~@16 x ~@15", AC: "~@2 x ~@34 x ~@10",
  AD: "~@2 x ~@4 x ~@12 x ~@3 x ~@4 x ~ x ~@11 x ~@4", AE: "~@14 x ~@16 x ~@16", AF: "~ x ~@17 x ~@17 x ~@10",
  AG: "~ x ~ x ~@8 x ~@8 x ~@2", AH: "~@12 x ~@17 x ~@16 x", AI: "x ~@4 x ~@12 x ~@4 x ~@24",
})).gain(0.46)

// drums · congas
const congas = s("conga:13").struct("<~@9 A ~@2 B ~@2 C ~ D E ~@2 E ~@2 F ~@5 G ~@5 H ~@7>".pickRestart({
  A: "~@2 x ~ x ~@6 x ~ x ~@10", B: "~@4 x ~@4 x ~@13 x ~@3 x ~@20", C: "~@6 x ~@12 x ~@28", D: "~@13 x ~@10",
  E: "~@5 x ~@3 x ~@13 x ~@3 x ~@20", F: "~@6 x ~@3 x ~@13 x ~@4 x ~@18", G: "~@6 x ~@3 x ~@12 x ~@4 x ~@19",
  H: "~@2 x ~@4 x ~@12 x ~@3 x ~@23",
})).gain(1.47)

// drums · congas
const congas_2 = s("conga:18").struct("<~@7 A B ~ C D ~ E D ~ F ~@8 G H I J K ~@6 L ~ M N ~@4>".pickRestart({
  A: "~ x ~@2", B: "~ x ~@36 x ~@9", C: "~@5 x ~@10", D: "~ x ~@14", E: "~ x ~@22", F: "~@2 x ~@27 x ~@12 x ~@4",
  G: "~@4 x ~@26 x ~@13 x ~@2", H: "~@7 x ~@4", I: "~@7 x ~@12 x ~@27", J: "~@31 x ~@12 x ~@3", K: "~@9 x ~@6",
  L: "~@47 x", M: "~ x ~@34 x ~@11", N: "~@2 x ~@12 x ~@30 x ~",
})).gain(1.47)

stack(epiano1, epiano1_soft, electric_bass_pick, bass, bass_soft, kick, clap, clap_soft, pedal_hat, congas, congas_2)

More by Starship