Strudelify

Il mercante di stelle

Zero

KeyG majorTempo109 bpm
0:00/0:00
// Il mercante di stelle — Zero
// 109 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 99 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(109/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.

// bass · electric bass finger
const bass = note("<~@40 A@8 B C D E F G H I J K L M N O P@5 Q@5 R@8 S@3 T@8 U@8>".pickRestart({
  A: "[~@30 e2@32 d#2@32 e2@16 f#2@16 ~ g2@24 a1@7 ~ b1@32 e2@32 f#2@32 ~]/8", B: "g2 b2", C: "e1@31 ~", D: "d#1",
  E: "e1 f#1", F: "g1", G: "b1@31 ~", H: "e2 e1", I: "f#1", J: "g1@15 ~ g1@16", K: "~ c2@31", L: "~ c2@29 ~@2",
  M: "~ c2@23 e1@8", N: "a1 b1", O: "c2@31 ~",
  P: "[a1@15 ~ b1@7 ~ g1@3 ~ a1@3 a#1@16 a1@7 ~ g1@8 c2@32 f1@31 e1@22 ~@2 b1@8 a1@2]/5",
  Q: "[~@14 g1@15 f#1@31 ~ g1@25 ~@2 g1@3 ~ g2@30 ~@2 c2@31 a#1@5]/5",
  R: "[~@12 a#1@4 ~@2 a#1@4 ~ a#1@5 ~ d#2@31 ~ d#2@31 d#2@31 d#2@31 d#2@31 d#2@31 g1@31 c2@9]/8",
  S: "[~@23 g#1@31 g1@15 b1@15 ~ c2@11]/3",
  T: "[~@4 a#1@15 ~ a1@31 a#1@32 a#2@34 d#2@32 a#2@30 ~@2 a#2@31 a#2@31 ~ g#1@12]/8",
  U: "[~@20 g1@32 g#1@31 d#2@31 ~@2 a#1@40 d#2@94 ~@6]/8",
})).s("gm_electric_bass_finger").gain(0.72)

// chords · piano
const piano = note(`<
  A@5 B@4 C@5 D@3 E@7 F@2 G@2 H@4 I@5 J@2 K L@8 M N O P Q R S T U V W X Y Z AA AB@8 AC@2 ~@13 AD@5 AE@5 ~@3
>`.pickRestart({
  A: "[~@25 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [b4,d5]@4 [a4,c5]@4 ~@25 d3@7 ~@8 g5@4 g5@4 g5@4 g5@4 g5@4 f#5@4 ~@25 a3@7 f#3@8 a4@4 a4@3, ~@17 d3@40 ~ d3@16 ~@39 [d3,a5]@32 ~@8 e3@7, ~@49 [d2,c5,e5]@32 d2@32 ~@16 c4@16 ~@15, ~@65 c4@16 ~@40 a3@16 ~@23]/5", // Bm Am D5 C
  B: "[~@2 a4@4 a4@4 a4@4 f#4@4 ~@18 b3@9 ~@9 [b3,e4,g#4]@16 ~@8 b3@8 ~ f#4@16 ~@8 f#4@8 [c3,c4,g4]@8 g3, ~@2 a3@16 f#3@17 ~@19 e3@32 ~ d#3@32 ~@9, ~@10 e3@8 b4@26 ~@26 g#4@16 d#4@16 ~ b3@16 ~@9, ~@27 b2@27 ~@17 e4@16 ~@41]/4", // E C5
  C: "[~@7 a4@8 d4@8 c4@16 ~@8 a2@8 ~@17 [b3,f#4]@16 d4@16 c4@16 a3@8 ~@16 a3@8 [g2,g3,c4]@8, ~@7 [d3,a3]@16 [d4,g4]@32 d4@32 ~@33 e4@16 d4@16 ~@8, ~@23 g2@23 ~@10 b2@32 [e2,g3]@32 f#2@32 ~@8, ~@39 b3@16 [f#3,b3]@16 ~@57 a3@16 ~@16]/5", // B5 C5 D5 G5 Em B5
  D: "[g4@8 ~ e4@8 [d#4,b4]@8 [b3,g4]@16 [c4,g4]@16 [b3,f#4]@16 c4@8 b3@8 [c3,c4,g4]@7, ~@8 b2@16 ~ e3@32 d#3@32 ~@7, ~@8 f#4@8 ~@57 f#4@16 ~@7]/3", // G#m Em C5 B5 C5
  E: "[~@9 [d3,d4,a4]@16 ~ [c4,d4,g4]@16 ~@8 a2@8 [b3,d4,f#4]@16 [b3,d4,f#4]@16 [d4,g4]@16 [c4,g4]@16 a4@16 ~@9 a4@8 [d4,a4] ~@15 [d4,g4,b4]@16 g3@8 g3@8 g3@8 g3@8 [f3,c4,f4]@5, ~@26 g2@24 ~@8 b2@32 e3@32 f#3@32 ~ g3@32 c3@31 ~@6, ~@42 [b3,d4,g4]@16 ~@81 d4@16 f4@16 ~@16 [c4,e4]@16 [c4,e4]@16 ~@5]/7", // D5 Csus2 Bm G5 C5 D5 G F5 …
  F: "[~@11 [d4,g4]@16 e4@23 g4@8 [f3,g4]@6, ~@10 g3@16 ~ c3@31 ~@6]/2", // G5 Fsus2
  G: "[~@2 f4@8 a4@8 g4@8 g4@16 e4@8 g4@7 ~ f2@6, ~@10 g3@16 c3@31 f4@7]/2",
  H: "[~@10 g2@7 g2@4 a2@4 ~@8 d4@8 f4@8 [g2,g4]@8 f4@8 e4@8 d4@8 c4@8 c4@8 ~@8 f4@8 d4@7 [e3,e4]@8, ~@9 [b3,d4]@16 a#3@31 ~ c4@16 ~@24 a3@24 ~@7, ~@10 f4@15 a#2@24 ~@8 c3@31 ~ f3@31 ~@8, ~@25 g4@16 ~@87]/4", // G E Bm
  I: "[~@16 b4@8 [a3,e4,a4,c5]@16 [g3,a4,c5]@16 [d4,f#4]@16 e4@7 f#4@8 g4@16 e4@8 g4@8 d4@33 ~@8, b3@24 ~@32 [d3,a4]@31 c3@31 ~@42, ~ g#4@2 ~@17]/5", // Am Am7 D D5
  J: "[~ g4@4 g4@4 g4@4 g4@4 g4@4 ~ f4@4 a4@32 ~@6]/2", K: "~@2 e4@4 e4@3 e4@4 e4@4 ~ e4@4 d4@4 f4@6",
  L: "[~@11 e4@9 d#4@9 ~ [e4,b4]@16 ~@8 e4@8 f#4@16 ~@8 f#3@8 ~@8 c4@8 ~@8 d4@8 ~ c4@16 b3@16 ~@16 [f#4,a4]@16 [d4,g4]@16 [c4,g4]@16 [e4,a4]@16 [d4,a4]@16 ~, ~@30 e3@32 [d#3,b3]@24 ~@8 [e3,g4]@16 [f#3,a4]@16 ~ [g3,g4]@32 b2@32 e3@32 f#3@32 ~, ~@46 b3@16 ~@16 f#4@16 ~@73 b3@24 ~@65]/8", // E5 F#m G5 C5 A5 D5 G#m Em …
  M: "[g3,c4,g4] [b2,d#4,b4]", N: "[g4,b4] [f#4,a4] [g4,b4] [a4,c5], e3", O: "[f#4,a4] [e4,g4] [f#4,a4]@2, d#3",
  P: "[g3,c4,e4,g4] [a3,d4,a4]", Q: "c4 ~@2 d3, ~ b3@3, ~ g3", R: "~ e4 ~ a4, b2, ~ d4", S: "d4 c4, e3",
  T: "d4 e4 ~ a4, f#3, ~ d4", U: "[d4,f4,c5] [d4,f4,b4], g3", V: "~@9 [g3,c4]@8 [g3,d4]@8 [g3,c4,e4]@7, ~ c3@31",
  W: "~ [c4,f4]@16 [d4,g#4]@15, ~ c3@31", X: "~ e4@23 g4@8, ~ c3@31", Y: "g4 f4 a4 g4, a3 b3", Z: "g4@2 e4 g4, c3@31 ~",
  AA: "[f2,f4]@16 g2@8 g2@3 a2@4 a#2, ~ [d4,f4]", // F Dm
  AB: "[~@15 [e4,c5]@8 [d4,a#4]@8 [c4,e4,a4]@8 [a#3,d4,g4]@8 [a3,c4,f4]@8 [g3,c4,e4]@8 g4@8 f4@15 a4@8 ~ e4@7 ~@16 b4@8 [a3,e4,a4,c5]@15 ~ [g3,e4]@15 [d4,f#4]@15 ~ e4@8 f#4@8 ~@19 g4@4 c5@4 [b4,g5]@4 [a4,f5]@8 [g4,e5]@8 [f4,d5]@15 g2@5, ~@7 g4@24 c3@32 f3@31 e3@31 ~@32 [d3,a4]@31 ~@68, ~@102 b3@23 ~@71 g3@55 ~@5, ~@110 g#4@15 ~@16 [g4,c5]@15 ~@33 [g4,e5]@19 ~@48]/8", // C Gm Am Gm F C Am C …
  AC: "[~@19 e5@8 [c5,d#5]@8 [d#4,g#4]@8 ~ [d5,f5]@8 [f5,a#5]@9 ~@3, ~@3 g3@24 a#2@34 ~@3, ~@11 c4@16 ~@37]/2", // Cm G#5 Dm A#5
  AD: "[~@29 a#4@4 a#4@4 a#4@4 a#4@4 a#4@4 g#4@4 ~@24 d#4@8 ~@8 g5@4 g5@4 g5@3 g5@4 ~ g5@3 f5@4 ~@16 d#4@16 ~@8 f4@4, ~@21 d#2@31 ~ [a#2,c5]@31 ~ a#2@63 g#2@12, ~@61 g#3@24 ~@39 g#3@24 ~@12, ~@69 c4@16 ~@32 g#5@31 ~@12]/5", // A#sus2
  AE: "[f4@4 f4@4 f4@4 f4@4 d#4@4 ~@16 a#3@16 ~@7 f4@4 f4@4 f4@4 f4@4 f4@4 d#4@4 [d#3,d#4]@72 ~@5, ~@20 [d#3,d#4]@31 ~ f3@31 ~@77, ~@7 g3@6 ~@27]/5", // D#
})).s("gm_piano").gain(0.56).pan(0.4)

// other · timpani
const timpani = note("<~@22 A ~@7 B ~@25 C D ~@14 E ~@26>".pickRestart({
  A: "~@17 g2!10 ~@5", B: "~@14 g2!11 ~@7", C: "~@22 g2!10", D: "g2 ~@31", E: "~@15 g2!6 ~ g2!7 ~@3",
})).s("gm_timpani").gain(0.36).pan(0.3)

// other · timpani · soft notes
const timpani_soft = note("<~@22 A ~@7 B ~@25 C ~@15 D ~@26>".pickRestart({
  A: "~@11 g2!6 ~@15", B: "~@9 g2!5 ~@18", C: "~@16 g2!5 ~@11", D: "~@12 g2!3 ~@17",
})).s("gm_timpani").gain(0.07).pan(0.3)

// other · french horn
const french_horn = note("<~@30 A@6 ~@21 B C D E ~@2 F@2 ~@6 G H@8 I@6 ~@13>".pickRestart({
  A: "[~@25 a3@31 b3@32 c4@32 a3@32 c4@32 ~@8]/6", B: "~ c3@16 g3@15", C: "~ a3@16 g#3@15", D: "~ g3@31", E: "c4 d4",
  F: "[d3@7 g3@8 c4@8 a#3@8 a3@8 g3@8 f3@8 e3@8 ~]/2", G: "~@3 g3@8 c4@8 g3@8 g#3@4 d#3",
  H: "[~@3 c4@4 ~ a#3@4 a#3@17 a#3@31 c4@31 ~ a#3@31 c4@31 a#3@31 c4@31 c#4@31 ~ g4@8]/8",
  I: "[~@7 f4@8 e4@7 d#4@31 ~ d4@15 g4@8 f4@8 d#4@8 d4@7 d#4@8 g4@8 c4@31 a#3@31 ~@14]/6",
})).s("gm_french_horn").gain(0.59).pan(0.7)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A B@5 ~@7 C@3 D@6 E@5 F@5 G@7 H@8 I J K L M N@2 O P Q R S@2 T U@2 V@7 W X@8 Y@3 Z@5 AA AB@3 AC@7
>`.pickRestart({
  A: "~@25 d3@7",
  B: "[~ a3@8 [d3,c4]@8 ~ [d2,b3]@23 [d3,d4]@8 ~@9 e4@15 [e3,a3]@8 f#3@28 ~ e4@4 [b2,d#4]@26 ~@20, ~@49 d3@23 ~@9 a3@33 ~@46]/5", // D7 G D A5 B
  C: "[~@25 b3@16 c4@16 b3@16 c4@8 b3@8 [e2,c4]@7, ~@25 e2@32 d#2@32 ~@7]/3", // C
  D: "[~@9 [f#2,a3]@16 ~ a3@16 ~@8 a2@8 [b2,d4]@32 d4@16 c4@16 ~ e4@15 d4@16 ~ f4@16 d4@16 e2@5, ~@25 g2@24 ~@41 e2@32 f#2@32 ~ g2@32 ~@5, ~@21 g3@8 ~@67]/6", // F#m Bm
  E: "[~@3 e3@8 c4@8 [g2,b3]@8 [f2,a3]@15 ~ b3@15 [c3,e4]@24 [e2,b3]@8 [f2,c4]@16 [g2,d4]@16 [c3,e4]@31 [f2,c4]@7, ~@21 g2@8 ~@51]/5", // G F C E5 F5 G5 C F5
  F: "[~@17 g2@4 a2@4 [a#2,d4]@24 [g2,a#3]@8 d4@8 c4@8 f4@8 e4@8 [f2,f4]@31 [e2,g#4]@32 [a2,a4]@8, ~@9 g2@8 ~@40 c3@31 ~@72, ~@2 d4@3 ~@27]/5", // A# Gm F E A
  G: "[~@8 f4@8 e4@8 d4@16 e4@16 c4@31 d3@34 c2@32 ~@8 f5@6 e5@2 d5@5 ~ c5@2 ~ b4@5 a4@2 ~ g4@16 c5@8 g4@8 [a2,c5]@6, ~@8 g2@16 f#2@31 ~ g2@65 g5@39 ~@64, ~@153 f2@32 g2@32 ~@7]/7", // Am
  H: "[~@11 [b2,b4]@18 ~ e3@16 b2@8 e3@8 [d#2,f#3]@32 e2@16 ~@8 d4@8 ~ c4@16 ~@8 a2@8 b3@8 f#3@8 b3@8 d4@8 d4@16 c4@15 ~ e4@16 ~ d4@16, ~@30 e2@32 ~@32 c4@24 ~@25 b3@16 ~@97, ~@111 f#2@16 g2@24 ~@8 b2@32 e2@32 f#2@32 ~]/8", // B D#m
  I: "c4 b3 d#4 f#4, g2 b2", J: "g4 f#4 g4 a4, b2", K: "f#4 e4 f#4 [f#3,g4], b2@3 ~", L: "[g3,c4] [a3,d4]",
  M: "~ a3 [d3,g3]@2, d3 ~", N: "[f#3@2 ~ c4, d4@3 ~, ~ g3]/2", O: "[a3,d4]", P: "[f3,c4]@16 b5@5 ~ d6@5 g5@5, ~ g3",
  Q: "~ g6@8 c6@8 d6@8 e6@7, ~ c3@16 g3@15", R: "~ a3@16 ~@8 e6@7, ~ f6@24 ~@7, ~@17 g#3@15",
  S: "[~@9 c6@8 b5@7 ~@8 g3@8 [f3,f5]@8 [a3,d5]@8 [g3,g4]@8, d6 ~@2 c6@2 ~@3, ~ g3@31 ~@32]/2", T: "[e3,e4]@31 ~",
  U: "[f4@23 d4@8 d4@8 g4@8 [c4,c5]@8 [a#3,a#4]@8 [a3,a4], f3@31 g3@16 ~@17]/2", // C A# A
  V: "[~@7 [g3,g4]@8 [f3,f4]@8 [e3,e4]@8 g4@8 f4@23 ~ a4@7 g#4@23 ~ b4@8 a4@23 c5@8 a4@15 ~ e5@8 e5@8 c5@15 c5@8 c5@8 ~@8 b3@15 ~ c2@4, ~@31 f3@31 e3@31 ~ a3@31 f#3@31 ~ g3@31 a3@15 ~@21, ~@196 g4@23 ~@5]/7", // G F E
  W: "~@3 [g2,g3]@8 [c3,c4]@8 [g3,g4]@8 [g#3,g#4]@4 d#4", // G C G G#
  X: "[~@3 c5@4 ~ a#4@4 a#4@5 ~ f5@5 a#5@6 ~@8 g4@8 f4@8 d#4@8 a#4@7 g#4@8 g4@8 f4@8 a#4@7 a#4@8 g#4@8 g4@8 d#4@8 c5@7 a#4@8 g#4@8 g4@8 d5@8 c5@7 a#4@8 g#4@8 d#5@8 d5@7 c5@8 a#4@8 f5@8 d#5@8 [g#3,c#5]@7 [g3,c5]@8 [g4,g5], ~@12 a#3@17 a#3@31 ~ c4@31 a#3@31 c4@31 a#3@31 c4@31 c#4@23 ~@17]/8", // C#5 C5 G
  Y: "[~@7 [f4,f5]@8 [e4,e5]@8 d#5@23 f5@8 [g3,g5]@23 [d3,d5]@8 [c3,d#5]@11, ~@23 g#3@31 ~@42]/3", // F E G D Cm
  Z: "[~@12 g5@8 c6@8 g5@15 d#5@8 d#5@8 a#4@16 g4@8 [g#3,f4]@34 d#3@31 ~ f3@11, ~@4 a#2@15 ~ a2@31 d#3@32 ~@77]/5", // C#
  AA: "~@29 a#3@3, ~@21 g3@11", AB: "[~@5 d#4@8 a#4@7 g#4@24 a#4@8 [f3,b4]@31 ~ [d#3,a#4]@12, ~@20 g#3@31 ~@45]/3",
  AC: "[~@12 d#4@8 [f3,f4]@31 [d#3,g#4]@72 ~ [d#3,g3]@94 ~@6]/7", // F G#5 D#
})).s("gm_string_ensemble_1").gain(0.4).pan(0.8)

// other · oboe
const oboe = note("<~@87 A@3 ~@2 B@7>".pickRestart({
  A: "[~@28 g#4@7 ~@2 g#4@11 ~ g4@4 g4@27 ~@16]/3",
  B: "[~@28 f4@3 f4@3 ~@2 f4@3 f4@3 ~ f4@4 d#4@3 ~ d#4@72 ~ g4@95 ~@5]/7",
})).s("gm_oboe").gain(0.36).pan(0.2)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A B@5 ~@7 C@4 D@4 E@7 F G@8 H@2 I@8 J K L M N O P Q R S T U V W X@6 Y@3 Z AA@8 AB@4 AC@4 AD@5 AE@6
>`.pickRestart({
  A: "~@13 d4@3", B: "[~ e4@8 f#4@8 a4@8 g4@24 ~@9 e4@15 a3@8 a3@29 ~@4 d#4@27 ~@19]/5",
  C: "[~@25 g4@32 f#4@32 g4@16 a4@23]/4", D: "[~@10 b4@16 d4@24 f#4@8 g4@32 a4@32 ~ c5@5, ~@123 a4 ~@4]/4",
  E: "[~@11 [b4,d5]@16 [e4,g5]@24 [g4,b4]@8 [a4,c5]@16 [b4,d5]@15 [c4,e5]@24 [e3,g4]@8 g4@8 f4@8 a4@8 g4@8 e5@24 c5@8 c5@7 f5@8 ~ f5@8 d5@7 [a#3,d5]@7, ~@122 f3@16 g3@16 c4@32 a3@15 b3@16 ~@7]/7", // Bm Em G Am Bm C Em A#
  F: "~ [d4,g5]@8 [f4,f5]@8 [g4,g5]@8 [d4,f5]@7", // G5 F G Dm
  G: "[~ [c4,e5]@8 [a#3,d5]@8 [a3,c5]@8 c5@8 a5@24 e5@7 b5@24 e5@8 ~@8 f3@8 [e3,g5]@8 [d3,a5]@23 ~ e3@7 ~ e3@31 [f3,c5]@34 g3@32 a3@7, ~@25 a3@32 g#3@31 a3@16 ~@152, ~@96 c6@16 ~@31 c5@8 c6@27 ~@78]/8", // C A# Am Em D5 F5
  H: "[~@6 b3@4 c4@3 d4@4 ~ e4@3 f4@4 ~@9 c5@3 c5@4 ~ c5@3 c5@4 ~ c5@4 ~@4 [a3,c5]@6, ~@25 g4@33 ~@6]/2", // Am
  I: "[~@11 b4@18 ~ e4@32 f#4@32 c5@24 ~@9 a4@16 g4@16 [d4,f#4]@32 [e4,g4]@32 e4@16 d4@16 ~, ~@11 g#3@9 ~@10 b4@64 g4@32 ~@97 a4@32 ~, ~@119 d5@40 ~@97]/8", // D Em
  J: "c5 ~ f#4@2, g4 ~, ~ b4@3", K: "b4 a4 b4 c5, g3", L: "a4 g4 a4 b4, b3", M: "[e3,g4] [f#3,a4]",
  N: "[g3,c4] [b2,b3]", O: "[b3,d4]", P: "d4 c4", Q: "[d4,a4]", R: "[f4,a4]@8 [a4,c5]@8 [g4,b4]@5 ~ d5@5 g4@5",
  S: "~ g5@8 c5@8 d5@8 e5@7", T: "~ f5@24 e5@7", U: "~ d5@7 c5@8 b4@8 ~ c5@7", V: "c5 f4 d5 g4", W: "c4",
  X: "[a3@31 a#3@8 g4@8 a4@8 g4@8 f4@8 e4@8 d4@8 c4@8 g3@8 d4@23 a3@8 e4@24 d4@8 c4@23 e4@3]/6",
  Y: "[~ c4@4 a3@24 c4@31 a3@16 b3@16 ~@4]/3", Z: "~@3 g3@8 c4@8 g4@8 d#4@4 c4",
  AA: "[~@4 g#4@3 d#4@4 ~ d4@17 g3@31 g#3@31 ~ g3@31 g#3@31 g3@31 g#3@31 c#4@31 e4@9]/8",
  AB: "[~@22 [g#3,c4]@31 ~ [b3,d4]@31 [c4,d#4]@31 a3@12]/4", // G# Bm Cm
  AC: "[~@19 [g4,d#5]@8 [d#4,a#4]@16 [a#3,g4]@8 [g#3,f4]@34 g3@32 g#3@11]/4", // Cm D#5 D# C#
  AD: "[~@21 [d#3,g3]@31 [f3,g#3]@32 [f3,g#3]@32 [d#3,g3]@31 [g#3,b3]@13]/5", // D# Fm D# G#m
  AE: "[~@19 g3@33 g#3@40 [a#3,a#4]@93 ~@7, ~@19 d#3@72 ~@101]/6", // A#
})).s("gm_string_ensemble_2").gain(0.45).pan(0.2)

// chords · flute
const flute = note(`<
  A B@4 C@2 ~@23 D E F@4 ~ G@2 H@3 ~@7 I J ~@4 K L ~@6 M@5 N ~@3 O@2 P@3 Q R S@6 ~@3 T U@2 ~@2 V@6
>`.pickRestart({
  A: "~@26 d6@3 [b4,d6]@3, ~@25 b4@4 ~@3", // Bm
  B: "[~@2 b4@3 ~ b4@3 [b4,d6]@4 [a4,c6]@4 ~ e6@24 ~@15 [b4,g5]@4 ~ b4@4 [b4,g5]@4 [b4,g5]@3 [b4,g5]@4 ~ d5@3 [c5,a5]@26 ~@14 a4@3 ~ a4@3, ~ d6@4 d6@4 ~@8 c5@24 ~@20 g5@4 ~@12 f#5@4 ~@47]/4", // Bm Am Em F
  C: "[~ a4@3 ~@2 a4@3 ~ a4@4 f#4@4 b4@27 ~@19]/2", D: "~@25 [a4,c5]@7", E: "~ a5@23 [b4,e5]@8, c5@3 ~",
  F: "[[e5,b5]@24 [a5,c6]@24 [e5,g5]@8 [f#5,a5]@32 [c5,g5]@31 ~@9]/4", // E5 Am Em F#m C5
  G: "[~@2 g5@3 ~ g5@3 ~ g5@3 ~ d5@3 ~ f5@3 ~ c5@3 ~ a5@30 ~@8, ~ e5@3 ~ e5@3 ~ e5@3 ~ f5@3 ~ d5@4 e5@3 ~ f5@30 ~@9]/2",
  H: "[~ e5@3 ~@2 e5@3 e5@3 ~@2 e5@3 ~ e5@4 d5@4 f5@17 e5@9 d#5@9 ~ [b4,b5]@17 ~@17]/3", // B
  I: "[g5,b5] [f#5,a5] [g5,b5] [a5,c6]", J: "[f#5,a5]@21 ~@11", K: "~ e5 d5 a5",
  L: "[f5,a5]@8 [a5,c6]@8 [g5,b5]@6 [b5,d6]@5 ~ b4@4, ~@27 g5@5", // F Am G Bm
  M: "[~@7 [e5,g5]@8 [a5,c6]@8 [g5,a#5]@8 [f5,a5]@8 [e5,g5]@8 [d5,f5]@8 [c5,e5]@8 g5@8 [a4,f5]@23 [c5,a5]@8 [b4,g#5]@24 [d5,b5]@8 [c5,a5]@23 [a5,c6]@3]/5", // Em Am Gm F Em Dm C Dm …
  N: "~ [e5,a5]@4 [c5,e5]@24 ~@3", // A5 C
  O: "[~@16 [c5,g#5]@2 [d5,a#5]@2 ~@3 d6@2 [g5,d#6]@2 [g#5,f6]@2 g6@15 ~@20, ~@10 d#5 f5 ~@20, ~@21 c6@2 ~@41]/2", // Fm Gm Cm C#
  P: "[~@4 g#5@8 g5@8 f5@8 a#4@7 a#5@8 g#5@8 g5@8 d#5@8 c6@7 a#5@8 g#5@8 g5@6]/3", Q: "~@2 d6@8 c6@7 a#5@8 g#5@7",
  R: "~ d#6@8 d6@7 c6@8 a#5@8",
  S: "[f6@8 d#6@8 c#6@8 c6@7 g6@8 f6@8 e6@8 d#6@19 d6@4 d#6@4 f6@4 d6@25 ~@6 d#6@22 ~ c6@8 c6@8 g5@23 ~@13]/6",
  T: "~@29 g5@3", U: "[~ g5@3 g5@3 ~ g5@3 ~ g5@3 ~ f5@4 g#5@30 ~@14]/2", V: "[~@19 d#5@33 g#5@9 d#6@126 ~@5]/6",
})).s("gm_flute").gain(0.24).pan(0.9)

// drums · kick
const kick = s("bd").struct("<~@64 A B@2 C@2 D@2 E C@2 D E F G H I@2 J K L ~@15>".pickRestart({
  A: "~@31 x", B: "~@15 x", C: "~@29 x ~@2", D: "~@7 x", E: "~@27 x ~@4", F: "~@13 x ~@2", G: "~@25 x ~@6", H: "~@3 x",
  I: "~@23 x ~@8", J: "~@11 x ~@4", K: "~@21 x ~@10", L: "~@5 x ~@2",
})).gain(0.74)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@65 A ~ B@2 C@2 D ~ B ~ D ~ E ~ F ~ G ~ H ~@15>".pickRestart({
  A: "~@13 x ~@2", B: "~@25 x ~@6", C: "~@3 x", D: "~@23 x ~@8", E: "~@21 x ~@10", F: "~@5 x ~@2", G: "~@9 x ~@6",
  H: "~ x",
})).gain(0.44)

// drums · rim
const rim = s("rim").struct("<~@69 [~@3 x ~@4]!2 [~@11 x ~@20] ~@27>").gain(0.74)

// drums · snare
const snare = s("sd").struct("<~@65 A B@2 C ~@3 D C D E F@2 G H I J K L@2 ~@14>".pickRestart({
  A: "~@15 x ~@16", B: "~@7 x ~@8", C: "~@13 x ~@18", D: "~@3 x ~@4", E: "~@11 x ~@20", F: "~@5 x ~@10",
  G: "~@9 x ~@22", H: "~ x ~@2", I: "~@7 x ~@24", J: "~@3 x ~@12", K: "~@5 x ~@26", L: "~ x ~@6",
})).gain(0.74)

// drums · low tom
const low_tom = s("lt").struct("<~@64 [~@23 x ~@3 x ~@4] ~@7 [~@8 x ~@9 x ~@4 x ~@8] ~@7 [~@11 x ~@3 x ~@16] ~@18>")
  .gain(0.74)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@64 [~@11 x ~@7 x ~@12] ~@6 [~@31 x] [~@3 x ~@28] ~@6 [~@27 x ~@4] ~@19>").gain(0.74)

// drums · open hat
const open_hat = s("oh").struct("<~@68 [~@21 x ~@10] ~ [~@3 x ~@4] ~@28>").gain(0.52)

// drums · high tom
const high_tom = s("ht").struct("<~@64 [~@15 x ~@16] ~@34>").gain(0.66)

// drums · crash
const crash = s("cr").struct("<~@22 A ~@7 B ~@25 C D ~@6 E ~@7 F ~@3 G ~@3 H ~@3 I ~@11 J ~@2>".pickRestart({
  A: "~@17 x!11 ~@4", B: "~@15 x!11 ~@6", C: "~@23 x!9", D: "x!2 ~@30", E: "~@31 x", F: "~@29 x ~@2", G: "~@13 x ~@2",
  H: "~@23 x ~@8", I: "~@3 x ~@28", J: "x!5 ~ x ~ x!9 ~ x!4 ~@10",
})).gain(0.22)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@22 A ~@7 B ~@25 C ~@38 D E ~@2>".pickRestart({
  A: "~@11 x!6 ~@15", B: "~@9 x!6 ~@17", C: "~@16 x!6 ~@10", D: "~@28 x!4", E: "~@22 x!5 ~@5",
})).gain(0.07)

// drums · ride
const ride = s("rd").struct("<~@70 A ~@2 B C D E F G H I J K C L ~@3 M ~@10>".pickRestart({
  A: "~@7 x", B: "~@5 x ~@7 x ~@7 x ~@6 x ~@3", C: "~ x ~ x ~ x ~ x", D: "~@3 x ~@7 x ~@7 x ~@7 x ~@4",
  E: "~@3 x ~@6 x ~@7 x ~@13", F: "~@2 x ~@7 x ~@6 x ~@7 x ~@6", G: "~ x ~@7 x ~@7 x ~@6 x ~@7",
  H: "x ~@7 x ~@7 x ~@6 x ~@7 x", I: "~@15 x", J: "~@3 x ~@3 x ~@3 x ~@3 x", K: "~@5 x ~@7 x ~@7 x ~@7 x ~@2",
// … 11 more lines

More by Zero