Strudelify

Make Believe

Toto

KeyA majorTempo142 bpm
0:00/0:00
// Make Believe — Toto
// 142 bpm, 6/8, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 180 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(142/3)

// 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@2 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J K L@2 M N O@2 P@3 Q R Q S@2 T U S@2 V W X@2 Y@2 Z AA AB AC AD@2 AE@2 AF@2 AG@2
  AH@2 AI@2 AJ@2 AK AL I@2 J K L@2 M N O@2 P@3 Q R Q S@2 T U S@2 V W X@2 Y@2 Z AA AB AC AD@2 AE@2 AF@2 AG@2 AH@2 AI@2
  AM@2 AN AO AP@2 AQ@2 AR@2 AS@2 AT@2 AU@2 I@2 J K L@2 M N O@2 P@3 Q R Q S@2 T U S@2 V W X@2 Y@2 Z AA AB AC AV@2 AW@2
  AX@2 AS@2 AV@2 AW@2 AX@2 AS@2 AV@2 AW@2 AX@2 AS@2
>`.pickRestart({
  A: "[[e4,a4,c#5,e5] ~@2 [a4,e5] ~ [a4,e5] ~@2 [e4,a4,e5] ~@2 [a4,e5] ~ [e4,a4,d5,e5] ~@2 a4 ~@2 [a4,d5,e5] ~ [a4,d5,e5] ~@2 [e4,a4,c#5,e5] ~@2 [a4,c#5,e5] ~ [a4,e5] ~@2, [a1,a2]@13 [a0,c#2]@19]/2", // A A5 Dsus2 Asus4 A A5 A
  B: "[[e4,g4,b4,e5] ~@2 [g4,b4,e5] ~ [e4,g4,b4,e5] ~@2 [g4,b4,e5] ~@2 [a4,c#5,e5] ~ [e4,a4,d5,e5] ~@2 [a4,d5,e5] ~@2 [e4,a4,d5,e5] ~ [a4,d5,e5] ~@2 [e4,a4,d5,e5] ~@2 [e1,e2,d5,e5] ~ [f#2,a4,d5,e5] ~@2, [e1,e2]@13 [f#1,f#2]@13 ~@6, ~@8 e4@3 e4@2 ~@19]/2", // Em A Dsus2 Asus4 Dsus2 Asus4 Dsus2 E7 …
  C: "[[e4,a4,c#5,e5] ~@2 a4 ~ [a4,e5] ~@2 [e4,a4,e5] ~@2 e5 ~ [e4,a4,d5,e5] ~@2 [a4,e5] ~@2 [a4,e5] ~ [a4,e5] ~@2 [e4,a4,c#5,e5] ~@2 [a4,e5] ~ [a4,e5] ~@2, [a1,a2]@13 a0@19, ~@13 c#2@17 ~@2]/2", // A A5 Dsus2 A5 A A5 A
  D: "[[e4,g4,b4,e5] ~@2 [g4,b4,e5] ~ [g4,b4,e5] ~@2 [e4,g4,b4,e5] ~@2 [a4,c#5,e5] ~ [a4,d5,e5] ~@2 [d5,e5] ~@2 [e4,a4,d5,e5] ~ [e4,a4,d5,e5] ~@2 [e4,a4,d5,e5] ~@2 [e1,e2,d5,e5] ~ [f#1,f#2,d5,e5] ~@2, [e1,e2]@13 [f#1,f#2]@12 ~@7]/2", // Em A Asus4 Dsus2 E7 D E F#
  E: "[[e4,a4,c#5,e5] ~@2 [a4,e5] ~ [a4,c#5,e5] ~@2 [e4,a4,c#5,e5] ~@2 [a4,e5] ~ [e4,a4,d5,e5] ~@2 [d5,e5] ~@2 [e4,a4,d5,e5] ~ [a4,d5,e5] ~@2 [e4,a4,c#5,e5] ~@2 [a4,c#5,e5] ~ [a4,c#5,e5] ~@2, [a1,a2]@13 [a0,c#2]@19]/2", // A A5 A A5 Dsus2 Asus4 A
  F: "[[e4,g4,b4,e5] ~@2 [g4,b4,e5] ~ [g4,b4,e5] ~@2 [e4,g4,b4,e5] ~@2 [a4,c#5,e5] ~ [e4,a4,d5,e5] ~@2 [e4,a4,d5,e5] ~@2 [e4,a4,d5,e5] ~ [e4,a4,d5,e5] ~@2 [e4,a4,d5,e5] ~@2 [e1,e2,e4,a4,d5,e5] ~ [f#1,f#2,e4,a4,d5,e5] ~@2, [e1,e2]@13 [f#1,f#2]@12 ~@7]/2", // Em A Dsus2 D E F#
  G: "[[e4,a4,c#5,e5] ~@2 [a4,e5] ~ [a4,c#5,e5] ~@2 [e4,a4,c#5,e5] ~@2 [c#5,e5] ~ [e4,a4,d5,e5] ~@2 [a4,d5,e5] ~@2 [a4,d5,e5] ~ [a4,d5,e5] ~@2 [e4,a4,c#5,e5] ~@2 [a4,c#5,e5] ~ [a4,c#5,e5] ~@2, [a1,a2]@13 a0@19, ~@13 c#2@17 ~@2]/2", // A A5 A C#m Dsus2 Asus4 A
  H: "[[e4,g4,b4,e5] ~@2 [g4,b4,e5] ~ [e4,g4,b4,e5] ~@2 [e4,g4,b4,e5] ~@2 [g4,c#5,e5] ~ [e4,a4,d5,e5] ~@2 [e4,a4,d5,e5] ~@2 [e4,a4,d5,e5] ~ [e4,a4,d5,e5] ~@5 [e1,e2] ~ [f#1,f#2] ~@2, [e1,e2]@13 [f#1,f#2]@13 ~@6, ~@24 [e4,a4,d5,e5]@5 ~@3]/2", // Em C#dim Dsus2 E F# E F# Dsus2
  I: "[[e1,f#2,g3,d4,g4]@3 g4@2 g4@3 [g3,d4,g4]@3 e4@2 [g3,d4,g4]@10 ~ [g3,d4,f#4]@5 [e1,e2,f#4]@3, ~@13 [e1,e2]@3 ~@16]/2", // Em7 G5 Gmaj7 Esus2 E
  J: "[a1,a2,f#4]@3 e4@2 [a3,c#4,e4]@3 ~@5 [e2,a3,c#4,e4]@3", // D A
  K: "[a2,a3,c#4,e4]@3 ~@5 [a1,a2]@3 [a3,c#4,e4]@2 [a1,a2,a3,c#4,e4]@3", // A
  L: "[[e1,e2,g3,d4,f#4]@3 g4@2 g4@3 [g3,d4,g4]@3 e4@2 [g3,d4,g4]@10 ~ [g3,d4,f#4]@3 f#4@2 [e1,e2,e4]@3, ~@13 [e1,e2]@3 ~@16]/2", // Em7 G5 Gmaj7 E
  M: "[a1,a2]@3 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@2 [e2,a3,c#4,e4]@3", // A
  N: "a2@3 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a1,a2]@3 [a3,c#4,e4]@2 [a1,a2,a3,c#4,e4]@3", // A
  O: "[[g3,d4,g4]@5 g4@3 [g3,d4,g4]@3 e4@2 [g3,d4,g4]@11 [g3,d4,f#4]@5 [e1,e2,f#4]@3, [e1,e2]@3 ~@10 [e1,e2]@3 ~@16]/2", // G5 Gmaj7 Esus2 E
  P: "[f#4@3 e4@2 [a3,c#4,e4]@3 c#4@3 ~@2 [a3,c#4,f#4]@11 e4 ~@2 d4 ~@4 [b1,b2]@3 [f#3,d4] ~ a3 ~@2 [b3,d4] ~@2 a3 ~ [b1,b2]@3, [a1,a2]@5 ~@8 [a#1,a#2]@18 ~@17, ~@29 e4@5 ~@11 f#3 ~@2]/3", // A F#m B D Bm B A A#
  Q: "[b3,d4] ~@2 a3 ~ f#3 ~@2 [b1,b2]@3 f#3 ~ [b1,b2]@3, ~@8 a3 ~@4 b3 ~@2", // Bm B
  R: "[b1,b2]@3 f#3 ~ a3 ~@2 [b3,d4] ~@2 a3 ~ [b1,b2]@3, ~@13 f#3 ~@2", // B Bm B
  S: "[[e1,e2,g3,d4,f#4]@3 g4@2 [g3,d4,g4]@3 g4@3 e4@2 [g3,d4,g4]@9 ~@2 [g3,d4,f#4]@5 e4@3, ~@5 [e1,e2]@18 ~@9]/2", // Em7 G5 Gmaj7 E
  T: "[a1,a2,f#4]@3 [a3,c#4,e4]@3 ~@2 [a3,c#4,e4]@3 [a3,c#4,e4]@2 [a1,a2,a3,c#4,e4]@3", // D A
  U: "[a1,a2]@3 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@2 [a1,a2,a3,c#4,e4]@3", // A
  V: "[a1,a2]@3 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4]@3 [a3,c#4,e4]@2 e2@3", // A
  W: "a2@3 [a3,c#4,e4]@3 ~@2 [a1,a2,a3,c#4,e4]@3 [a3,c#4,e4]@2 [a1,a2,a3,c#4,e4]@3", // A
  X: "[[g3,d4,g4]@5 g4@3 [g3,d4,g4]@3 e4@2 [g3,e4,g4]@11 [g3,d4,f#4]@5 f#4@3, [e1,e2]@3 ~@2 [e1,e2]@19 ~@8]/2", // G5 C Gmaj7 E
  Y: "[f#4@3 e4@2 [a3,c#4,e4]@3 c#4@3 ~@2 [f#3,c#4,f#4]@11 e4@5 d4@3, [a1,a2]@5 ~@8 [a#1,a#2]@19]/2", // A F#5 A A#
  Z: "[b1,b2,e4]@3 [f#3,d4]@2 a3@3 [b3,d4]@3 a3@2 [b1,b2,f#3]@3", // E5 D Bm B5
  AA: "[b3,d4]@3 a3@3 f#3@2 [b1,b2,b3,d4]@2 f#3@3 [b1,b2,a3]@3", // Bm B7
  AB: "[b1,b2]@3 f#3@3 a3@2 ~ b3@2 a3@2 ~ f#3@2, ~@8 d4@3 ~@2 [b1,b2]@3", // B
  AC: "~ b3@2 a3@3 f#3@2 [b1,b2,f#3,a3,b3,d4]@5 ~@3, d4@3 ~@13", // Bm7
  AD: "[c2@3 ~@5 e4@3 d4@2 [g3,c4]@3 d4@5 [g3,d4,g4]@11, ~@13 [e2,d3,e3]@19]/2", // C5 G5 E7
  AE: "[~@5 a4@3 c5@3 a4@2 c5@5 ~@2 c5 a4 ~@2 c5@4 ~ c5@3, [f2,c3,g3,a3]@11 [f2,c3,g3,a3]@21]/2", // F
  AF: "[[c2,a4]@3 g4@5 e4@3 d4 ~ g3@3 d4@5 g4@11, ~@13 [e2,d3,e3]@19, ~@13 c4 ~@18]/2", // F E7
  AG: "[a4@8 f#4@3 a4@2 f#4@3 a4 ~@2 f#4@2 b4@8 e4@3, [f#2,e3]@11 [f#2,e3]@21]/2", // F#7
  AH: "[~@3 c5@2 c5 ~@2 c5 ~@2 c5 ~ [e2,a2,g3]@5 ~@2 b4@4 ~ g4@5 ~@2, [a2,e3]@13 c5@6 [e2,a2,g3]@5 [e2,a2,g3]@8]/2", // A7 A5 A7
  AI: "[a4@3 [a3,c#4,e4,a4]@5 [a3,c#4,e4]@3 a4 ~ [a3,c#4,e4,a4]@6 [c#2,f#2,c#3,a3,c#4,e4,g#4]@5 [c#2,f#2,c#3,g#3,b3,e4]@8, [f#2,c#3]@13 [c#2,f#2,c#3]@5 ~@14, ~@8 a4 ~@23]/2", // A F#m7 C#m7 F#5
  AJ: "[[g3,b3,d4,g4]@3 g4@2 g4 ~@2 [g3,b3,d4]@3 g4 ~ g4@3 g4@3 [d2,d3,g3,b3,d4,f#4]@5 [f#3,a3,d4]@3 b3 ~ e4@3, [d2,d3]@19 ~@5 [d2,d3]@5 ~@3, ~@8 g4 ~@23]/2", // G Gmaj7 D
  AK: "~@3 [c#2,g#2,e3,b3]@2 [c#2,g#2,e3,b3]@3 [c#2,g#2,e3,b3]@3 [c#2,g#2,e3,b3,d#4]@2 [c#2,g#2,e3,b3,e4]@3, e4@11 ~@5", // C#m7
  AL: "~@3 [d#2,b2,f#3,b3]@2 [d#2,b2,f#3,b3,c#4]@3 [d#2,b2,f#3,b3,d#4]@3 [d#2,b2,f#3,b3,e4]@2 [d#2,b2,f#3,b3,f#4]@3, f#4@13 ~@3", // B
  AM: "[[g3,b3,d4,g4]@3 g4@2 g4 ~@2 [g3,b3,d4]@3 g4 ~ g4@3 b4@5 ~@6 d5@2 b4@3, [d2,d3]@3 [d2,a2,d4,f#4], ~@8 g4 ~@12 d5@5 ~@6]/2", // G D
  AN: "~@3 [c2,c3,e4]@2 [c2,c3,e4]@3 [c2,c3,e4]@3 [c2,c3,e4,d5]@2 [c2,c3,e4,e5]@3, e5@13 ~@3", // C
  AO: "~@3 [d2,a2,f#4]@2 [d2,a2,f#4]@3 [d2,a2,f#4]@3 [d2,a2]@2 [d2,a2]@3, d5@13 ~@3", // D D5
  AP: "[[e4,a4,c#5] ~@2 a4 ~ a4 ~@2 [e4,a4] ~@2 a4 ~ [e4,a4,d5] ~@2 a4 ~@2 [a4,d5] ~ [a4,d5] ~@2 [e4,a4,c#5] ~@2 [a4,c#5] ~ a4 ~@2, [a1,a2]@13 [a0,c#2]@19]/2", // A A5 Dsus2 D5 A
  AQ: "[[e4,g4,b4] ~@2 [g4,b4] ~ [e4,g4,b4] ~@2 [g4,b4] ~@2 [a4,c#5] ~ [e4,a4,d5] ~@2 [a4,d5] ~@2 [e4,a4,d5] ~ [a4,d5] ~@2 [e4,a4,d5] ~@2 [e1,e2,d5] ~ [f#2,a4,d5] ~@2, [e1,e2]@13 [f#1,f#2]@13 ~@6, ~@8 e4@3 e4@2 ~@19]/2", // Em G Em G A Dsus2 D5 Dsus2 …
  AR: "[[e4,a4,c#5] ~@2 a4 ~ a4 ~@2 [e4,a4] ~@4 [e4,a4,d5] ~@2 a4 ~@2 a4 ~ a4 ~@2 [e4,a4,c#5] ~@2 a4 ~ a4 ~@2, [a1,a2]@13 a0@19, ~@13 c#2@17 ~@2]/2", // A A5 Dsus2 A
  AS: "[[e4,g4,b4] ~@2 [g4,b4] ~ [g4,b4] ~@2 [e4,g4,b4] ~@2 [a4,c#5] ~ [a4,d5] ~@2 d5 ~@2 [e4,a4,d5] ~ [e4,a4,d5] ~@2 [e4,a4,d5] ~@2 [e1,e2,d5] ~ [f#1,f#2,d5] ~@2, [e1,e2]@13 [f#1,f#2]@12 ~@7]/2", // Em G Em A D5 Dsus2 E7 D …
  AT: "[[e4,a4,c#5] ~@2 a4 ~ [a4,c#5] ~@2 [e4,a4,c#5] ~@2 a4 ~ [e4,a4,d5] ~@2 d5 ~@2 [e4,a4,d5] ~ [a4,d5] ~@2 [e4,a4,c#5] ~@2 [a4,c#5] ~ [a4,c#5] ~@2, [a1,a2]@13 [a0,c#2]@19]/2", // A Dsus2 D5 A
  AU: "[[e4,g4,b4] ~@2 [g4,b4] ~ [g4,b4] ~@2 [e4,g4,b4] ~@2 [a4,c#5] ~ [e4,a4,d5] ~@2 [e4,a4,d5] ~@2 [e4,a4,d5] ~ [e4,a4,d5] ~@2 [e4,a4,d5] ~@2 [e1,e2,e4,a4,d5] ~ [f#1,f#2,e4,a4,d5] ~@2, [e1,e2]@13 [f#1,f#2]@12 ~@7]/2", // Em G Em A Dsus2 D E F#
  AV: "[[e4,a4,c#5] ~@2 a4 ~ [a4,c#5] ~@2 [e4,a4,c#5] ~@2 [a4,c#5] ~ [e4,a4,d5] ~@2 a4 ~@2 [a4,d5] ~ [a4,d5] ~@2 [e4,a4,c#5] ~@2 [a4,c#5] ~ a4 ~@2, [a1,a2]@13 [a0,c#2]@19]/2", // A Dsus2 D5 A
  AW: "[[e4,g4,b4] ~@2 [g4,b4] ~ [e4,g4,b4] ~@2 [g4,b4] ~@2 [a4,c#5] ~ [e4,a4,d5] ~@2 [a4,d5] ~@2 [e4,a4,d5] ~ [a4,d5] ~@2 [e4,a4,d5] ~@2 [e1,e2,d5] ~ [f#2,d5] ~@2, [e1,e2]@13 [f#1,f#2]@13 ~@6, ~@8 e4@3 e4@2 ~@3 f#4@3 ~@8 f#4@2 a4@3]/2", // Em G Em G A Dsus2 D5 Dsus2 …
  AX: "[[e4,c#5] ~@2 a4 ~ [a4,c#5] ~@2 [e4,a4,c#5] ~@2 c#5 ~ [e4,a4,d5] ~@2 [a4,d5] ~@2 [a4,d5] ~ [a4,d5] ~@2 [e4,a4,c#5] ~@2 a4 ~ a4 ~@2, [a1,a2]@13 a0@19, a4@3 ~@10 c#2@17 ~@2]/2", // C#m A Dsus2 D5 A
})).s("gm_piano").gain(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  A B C D E F G H I J K ~ L M N ~@41 O ~@47 O ~@7 A P C D Q F G H I J K ~@33 R P C D L S G H R P C D L S G H R P C D L S
  G H
>`.pickRestart({
  A: "~@3 [e4,c#5] ~ [e4,c#5] ~@2 c#5 ~@2 [e4,c#5] ~@4", B: "[e4,d5,e5] ~@2 e4 ~ e4 ~@5 e4 ~ [e4,c#5] ~@2",
  C: "~@3 e4 ~@12", D: "e4 ~@4 e4 ~@5 [e4,a4] ~ [f#1,e4] ~@2",
  E: "~@3 [e4,c#5,e5] ~ [e4,c#5] ~@2 c#5 ~@2 [e4,a4,c#5] ~@4", // C#m A
  F: "[e4,d5] ~@2 [e4,d5] ~ [e4,d5] ~@5 [e4,c#5] ~ [e4,c#5] ~@2", G: "~@3 e4 ~ e4 ~@5 e4 ~ e4 ~@2",
  H: "[e4,a4] ~@10 [e4,a4] ~ [e4,a4] ~@2", I: "~@3 [e4,c#5] ~ e4 ~@5 [e4,c#5] ~@4", J: "[e4,a4] ~@4 e4 ~@5 e4 ~ e4 ~@2",
  K: "~@3 e4 ~ e4 ~@5 e4 ~@4", L: "~@3 [e4,c#5] ~ e4 ~@5 [e4,a4] ~@4", M: "e4 ~@2 e4 ~ e4 ~@5 e4 ~ e4 ~@2",
  N: "~@3 e4 ~@7 e4 ~@4", O: "c5@3 ~@13", P: "[e4,d5] ~@2 e4 ~ e4 ~@5 e4 ~ [e4,c#5] ~@2",
  Q: "~@3 [e4,c#5] ~ [e4,c#5] ~@2 c#5 ~@2 [e4,a4,c#5] ~@4", R: "~@3 [e4,c#5] ~ e4 ~@5 e4 ~@4",
  S: "e4 ~@2 e4 ~ e4 ~@5 [e4,c#5] ~ [e4,c#5] ~@2", // C#m
})).s("gm_piano").gain(0.25)

// other · tenor sax · "Sax"
const tenor_sax = note("<~@8 A@2 B@2 C@2 D@2 ~@96 E F@7 G@3 H ~@32 I@4 J@2 K@2 L@4 ~@12>".pickRestart({
  A: "[~@8 c#5@2 d5@3 e5@14 d5@2 c#5@3]/2", B: "[~@3 b4 ~ b4 ~@2 b4@2 c#5@2 d5@13 ~@7]/2",
  C: "[~@7 c#5@3 d5@2 ~ e5@14 d5@2 c#5@3]/2",
  D: "[b4@3 ~@2 b4 ~ b4@2 ~@2 a4@13 g4@3 ~@5, ~@9 c#5@2 ~@21, ~@5 b4 ~@10]/2", E: "~@3 a4@3 a4@2 a4 ~@2 a4 ~@2 a4 ~",
  F: "[a4 ~@2 a4@2 a4@3 c#5 d5@5 e5@90 b4@2 a4 b4@2 a4 b4@2]/7",
  G: "[a4@8 c#5@4 ~ c#5@26 ~@2 a4 ~@2 a4 b4@2 ~, ~@40 b4@2 ~ b4@2 ~@3]/3", H: "a4@3 ~ g4@3 ~",
  I: "[~@8 c#5@2 d5@2 ~ e5@14 d5@2 c#5@2 b4@5 ~ b4@2 ~ b4@2 c#5@2 ~ d5@18 ~]/4",
  J: "[~@8 c#5@2 d5@2 ~ e5@14 d5@2 c#5@2 ~]/2", K: "[b4@4 ~ b4 ~@2 c#5@2 b4@2 a4@19 ~, ~@8 b4 ~@23]/2",
  L: "[a4@12 ~ a4@8 a4@13 ~@4 b4@2 a4@2 ~ f#4@2 ~ a4@18, ~@35 c5@5 ~@24]/4",
})).s("gm_tenor_sax").gain(0.4)

// bass · acoustic bass · "Bass"
const bass = note(`<
  ~@8 A@2 B@2 C@2 D@2 E@2 F G H@2 F G I@2 J@2 K L M@2 N@2 O@2 P@2 Q@2 R@2 S@2 T U T V W@2 X@2 Y@2 Z@2 AA@4 AB@2 AC AD
  E@2 F G H@2 F G I@2 J@2 K L M@2 N@2 O@2 P@2 Q@2 R@2 S@2 AE AF AE AF ~@16 A@2 B@2 C@2 D@2 A@2 B@2 E@2 F G H@2 F G I@2
  J@2 K L M@2 N@2 O@2 P@2 Q@2 R@2 S@2 AE AF AE AF A@2 B@2 C@2 D@2 A@2 B@2 A@2 B@2 C@2 D@2 A@2 B@2
>`.pickRestart({
  A: "[a2@7 ~ c#2 ~@2 d2@2 e2@11 ~@3 c#2@2 d2@3]/2", B: "[e2@5 ~@3 d2@3 e2 ~ f#2@11 ~@5 f#2 ~@2, ~@27 e2@4 ~]/2",
  C: "[a2@4 ~@4 c#2 ~@2 d2 ~ e2@9 ~@5 c#2 ~ d2 ~@2]/2", D: "[e2@5 ~@3 d2@3 e2 ~ f#2@11 ~@3 e2@2 f#2 ~@2]/2",
  E: "[e2@7 ~@6 e2@11 ~@3 e2@4 ~]/2", F: "a2@3 ~@10 a2@3", G: "~@11 a2@2 b2@3", H: "[e2@4 ~@9 e2@11 ~@3 d2@2 e2@3]/2",
  I: "[e2@4 ~@9 e2@9 ~@5 d2@2 e2@3]/2", J: "[a2@3 ~@9 f#2@13 ~@3 f#2@3 ~]/2", K: "b2@3 ~@9 b2@4", L: "~@11 f#2@2 a2@3",
  M: "[b2@4 ~@9 b2@7 ~@7 a2@2 b2 ~@2]/2", N: "[e2@4 ~@9 e2@7 ~@7 d2@2 e2@3]/2", O: "[a2@3 ~@10 a2@7 ~@7 a2@2 b2 ~@2]/2",
  P: "[e2@3 ~@10 e2@11 ~@3 d2@2 e2@3]/2", Q: "[a2@4 ~@9 a2@7 ~@7 a2@2 b2 ~@2]/2", R: "[e2@3 ~@10 e2@8 ~@6 d2@2 e2@3]/2",
  S: "[a2@3 ~@9 f#2@16 a2@3 ~]/2", T: "b1@3 ~@2 b1@3 c#2@8", U: "d2@8 e2@7 ~", V: "d2@7 ~ e2@2 d2@2 b1@3 ~",
  W: "[c2@3 ~@10 e2@11 ~@3 c2@2 e2@3]/2", X: "[f2@11 ~@2 f2@14 ~@2 f2@3]/2", Y: "[c2@3 ~@10 e2@13 ~ c2@2 e2@2 ~]/2",
  Z: "[f#2@11 ~@16 e2@2 f#2@3, ~@13 f#2@16 ~@3]/2", AA: "[a2@9 ~@4 a2@12 ~@4 e2@2 f#2@11 ~@4 c#2@12 ~@3 c#2@3]/4",
  AB: "[g2@5 ~@8 d2@13 ~@3 d2@3]/2", AC: "c#2@9 ~@2 b1@2 c#2@2 ~", AD: "d#2@3 ~", AE: "b2@3 ~@10 b2@3",
  AF: "~@13 a2@3, ~@11 f#2@4 ~",
})).s("gm_acoustic_bass").gain(0.64)

// other · lead 3 calliope · "effects"
const lead_3_calliope = note("<~@50 A@3 ~ B C D ~@53 E F ~@68>".pickRestart({
  A: "[~@3 [f6,g6] ~ a5@2 ~ c6@2 g5@3 a5@2 f5@3 g5@2 ~ e5@2 f5@2 ~ d5@2 ~ f5@2 e5@10 ~@7]/3", // Fsus2
  B: "~@3 c#5@2 f#5@3 a5@2 f#5@3 a5 ~@2", C: "c#6@2 a5@2 ~ c#6 ~ e6@2 ~ d6 ~@2 g#6 ~@2", D: "e6 ~@15",
  E: "~@5 c7@2 ~@5 e6@2 ~@2, ~@3 e6@3 ~ e7@3 c7@3 ~@3, ~@4 g6@5 d7@2 g6@2 ~@3",
  F: "~@6 d7@2 ~@3 a6@2 f#6@2 ~, ~@3 f#6@5 ~@2 c7@3 ~@3, ~@4 a6@5 d7@3 ~@4, ~@5 c7@2 ~ e7@4 ~@4, ~@6 f#7@5 ~@5",
})).s("gm_lead_3_calliope").gain(0.31)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A B A B A C A C A B A C A B D B A C A B E B E C E B E C E B E C E B E B E ~ F G E H E G E I E G E G E G J ~ E
  K E B E B E B E C E B E B E C E B E B F C E B E C E C E C E ~ E C E H E C E I L C E G E G J ~ E B E B E B E B E C E B
  E B E C E B E B F C E B E C E C E C E ~@13 E H A H A H M H A H N O A P Q R A S M P N P A S
>`.pickRestart({
  A: "x ~@10 x ~ x ~@2", B: "~@11 x ~ x ~@2", C: "~@13 x ~@2", D: "~ x ~@9 x ~ x ~@2", E: "x ~@12 x ~@2",
  F: "~ x ~@11 x ~@2", G: "~@3 x ~@9 x ~@2", H: "~@3 x ~ x ~@7 x ~@2", I: "~@3 x ~@12",
  J: "~@3 x ~ x ~@2 x ~@2 x ~ x ~@2", K: "~@12 x!2 ~@2", L: "x ~@14 x", M: "x ~@9 x ~@2 x ~@2", N: "x ~@10 x ~@2 x ~",
  O: "~@3 x ~ x ~@10", P: "~@3 x ~@2 x ~@6 x ~@2", Q: "x ~@4 x ~@5 x ~@4", R: "x ~@4 x ~@10", S: "~@3 x ~@2 x ~@9",
})).gain(0.17)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B@7 A B@14 C B@16 D B@7 D B@6 ~@2 B@31 D B@7 D B@6 ~@2 B@31 D ~@12 B@11 E B@2 F G B E B@5 H
>`.pickRestart({
  A: "~@8 x ~@2 x ~@4", B: "~ x", C: "~@7 x ~@8", D: "~@8 x ~@2 x ~ x ~@2", E: "~@8 x ~@4 x ~@2",
  F: "~@2 x ~@5 x ~@4 x ~@2", G: "~@3 x ~@4 x ~@2 x ~ x ~@2", H: "~@4 x ~@2 x",
})).gain(0.17)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@7
  [~@13 x ~@2]
  ~@55
  [~@3 x ~ x ~@2 x ~@2 x ~ x ~@2]
  ~@47
  [~@4 x!2 ~@2 x ~@2 x ~ x ~@2]
  ~@68
>`).gain(0.17)

// drums · hihat
const hihat = s("hh").struct("<A@7 B C D E D C D C D ~@164>".pickRestart({
  A: "~ x", B: "~@3 x ~ x ~@2 x ~@2 x ~ x ~@2", C: "x ~@4 x ~@2 x ~@2 x ~ x ~@2", D: "~@3 x ~ x ~@2 x ~@7",
  E: "~ x ~@3 x ~@2 x ~@2 x ~ x ~@2",
})).gain(0.17)

// drums · open hat
const open_hat = s("oh").struct("<~@9 A ~ A ~ A ~ A ~@164>".pickRestart({
  A: "~@13 x ~@2",
})).gain(0.17)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 A@6 B A@3 C A@21 ~@16 A@32 ~@16 A@32 ~@12 A@4 D A@3 C A@15>".pickRestart({
  A: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", B: "x ~@2 x ~ x ~@2 x ~@3 x!2 ~@2", C: "x ~@3 x!2 ~@2 x ~@2 x ~ x ~@2",
  D: "x ~@2 x ~ x ~@2 x ~@2 x!2 ~@3",
})).gain(0.12)

// drums · crash
const crash = s("cr").struct("<~@156 A ~@3 A ~@3 A ~@3 A ~ B C A ~@3 A ~@3>".pickRestart({
  A: "x", B: "~@2 x ~@4 x ~@5 x ~@2", C: "~ x ~@2 x ~@3",
})).gain(0.19)

stack(piano, piano_soft, tenor_sax, bass, lead_3_calliope, kick, snare, low_tom, hihat, open_hat, tambourine, crash)

More by Toto