Strudelify

I Wonder Why

Showaddywaddy

KeyG majorTempo92 bpm
0:00/0:00
// I Wonder Why — Showaddywaddy
// 92 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 101 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(92/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 · "FINGERDBAS"
const bass = note(`<
  ~ A@3 B@3 C@3 D@3 E@3 F G@2 H@3 I@3 J K L M N L M O P Q@3 R@3 S@3 T@3 U@3 V@3 W@3 X@3 Y@3 Z AA AB AC@2 AD AE@2 AF W@3
  AG@3 AH@3 AI@3 AJ@2 AK AJ@2 AK AL@2 AK AH@3 AI@3 AJ@2 AK ~
>`.pickRestart({
  A: "[d1@13 ~ d1@4 f1@13 ~ f1@3 ~ a1@15 ~ a1@2 g1@5 ~ g1@6 f1@6]/3",
  B: "[d1@13 ~ d1@2 e1@2 f1@13 ~ f1@2 g1@2 a1@15 ~ a1@2 g1@5 ~ g1@5 ~ f1@5 ~]/3",
  C: "[d1@13 ~ d1@2 e1@2 f1@13 ~ f1@2 f#1@2 g1@16 d2@2 g2@16 d2@2]/3",
  D: "[g1@14 d2@2 g2@2 g1@17 ~ c2@15 ~ c2 ~ c2@16 ~@2]/3", E: "[c2@15 ~ c2@2 c1@12 b1@6 a1@18 f1@18]/3",
  F: "c2@15 ~ c2@2 c1@6", G: "[c2@6 c2@7 ~ c2 c1@9]/2", H: "[c2@15 ~ c2@2 c1@12 c2@5 ~ d2@16 c2@2 b1@17 ~]/3",
  I: "[c2@16 b1@2 a1@17 ~ a#1@14 f2@2 a#2@2 a#1@15 ~ a1@2]/3", J: "g1@14 d2@2 g2@2 g1@5 ~", K: "g1@5 ~ g1@5 ~ d1@12",
  L: "~@2 d1@2 e1@2 f1@13 ~ f1@2 g1@2", M: "a1@15 ~ a1@2 g1@5 ~", N: "g1 f1 d1@2", O: "g1@3 a1 g1 e1 d1@6",
  P: "~@2 d1@2 e1@2 f1@13 ~ f1@2 f#1@2", Q: "[g1@7 d2 g1 g2@8 d2 g1@7 d2 a2 g2@6 g1@3]/3",
  R: "[c2@15 ~ c2 ~ c2@16 ~@2 c2@15 ~ c2@2 c1@12 b1@6]/3", S: "[a1@18 f1@18 c2@15 ~ c2@2 c1@6 c2@12]/3",
  T: "[c2@14 ~@2 c2@2 c1@18 c2@15 ~ c2@2 c1@12 c2@5 ~]/3", U: "[d2@16 c2@2 b1@17 ~ c2@16 b1@2 a1@17 ~]/3",
  V: "[a#1@14 f2@2 a#2@2 a#1@15 ~ a1@2 g1@14 d2@2 g2@2 g1@5 ~ g1@5 ~ g1@5 ~]/3",
  W: "[d1@13 ~ d1@2 e1@2 f1@13 ~ f1@2 g1@2 a1@15 ~ a1@2 g1@5 ~ g1@6 f1@6]/3",
  X: "[d1@13 ~ d1@2 e1@2 f1@13 ~ f1@2 g1@2 a1@15 ~ a1@2 g1@5 ~ g1@6 a1@2 g1@2 e1@2]/3",
  Y: "[d1@12 ~@2 d1@2 e1@2 f1@13 ~ f1@2 f#1@2 g1@14 d2@2 g1@2 g2@16 d2@2]/3", Z: "g1@14 d2@2 a2@2 g1@5 ~",
  AA: "g1@5 ~ g1@6 g#1@12", AB: "~ g#1 g1 f1@7 ~ f1", AC: "[c2@13 ~ c2@2 a#1@2 c1@16 g1@2 g#1@12]/2",
  AD: "~@2 g#1 ~ g1@2 f1@15 ~ f1@2", AE: "[g1@16 d2@2 g2@12 d2@2 g2@2 d2@2 g1@5 ~ g1@5 ~]/2",
  AF: "g1@5 ~ g1@2 d2@2 g2@2 g1@5 ~ g1@5 ~",
  AG: "[d1@13 ~ d1@2 e1@2 f1@13 ~ f1@2 g1@2 a1@15 ~ a1@2 a1@5 ~ a1@5 ~ b1@5 ~]/3",
  AH: "[e2@13 ~ e1@2 f#1@2 g1@13 ~ g1@2 a1@2 b1@15 ~ b1@2 a1@5 ~ a1@6 g1@6]/3",
  AI: "[e1@13 ~ e2@2 b1@2 g1@13 ~ g1@2 a1@2 b1@15 ~ b1@2 a1@5 ~ a1@6 g1@6]/3",
  AJ: "[e1@3 g1 b1 e2 g2 e2 d2 g1@7 g1 a1 b1@6]/2", AK: "b2@2 f#2@2 b1@2 a1@5 ~ a1@6 g1@6",
  AL: "[e1@3 g1 b1 e2 g2 e2@2 g1@7 g1 a1 b1@6]/2",
})).s("gm_electric_bass_finger").gain(0.28)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  ~ A@3 B@3 C@3 D@3 E@3 F G@2 H@3 I@3 J K@2 L M@2 N O@2 P@3 Q@2 R S@3 T@2 U V@3 W@2 X A@3 B@3 C@3 Y@3 Z@3 AA@2 AB AC@3
  AD AE@2 AF@3 AG AH@2 AI AJ@2 AK AL@2 AM AN@2 AO AP@2 AQ AR@2 AS AT@2 ~
>`.pickRestart({
  A: "[[a3,c4,e4]@16 f3@2 [f3,a3,c4,e4]@17 ~ [g3,b3,d4]@16 ~@2 [f3,a3,c4]@5 ~ [f3,a3,c4]@5 ~ [g3,b3,d4]@5 ~, f3@7 ~@29]/3", // Am Fmaj7 G F G
  B: "[[f3,a3,c4,e4]@17 ~ [f3,a3,c4,e4]@17 ~ [g3,b3,d4]@17 ~ [f3,a3,c4]@5 ~ [f3,a3,c4]@5 ~ [g3,b3,d4]@4 ~@2]/3", // Fmaj7 G F G
  C: "[[f3,a3,c4,e4]@16 ~@2 [f3,a3,c4,e4]@16 ~@2 g3@13 ~@3 c4@2 [b3,d4]@16 g3 ~, ~@9 [c4,d4]@4 ~@5, ~@25 g3@2 g3@7 ~@2]/3", // Fmaj7 Bm Csus2
  D: "[[c4,d4]@14 ~@2 c4@2 b3@16 ~@2 [f3,a3,c4]@17 ~ [e3,g3,c4]@17 ~, g3@13 ~ g3@20 ~@38, ~@8 d4@9 ~@19]/3", // Csus2 F C
  E: "[[f3,a3,c4]@11 ~ [g3,b3,d4]@5 ~ [g3,c4,e4]@10 ~@2 [g3,b3,d4]@6 [e3,a3,c4]@17 ~ [f3,a3,c4]@17 ~]/3", // F G C G Am F
  F: "~@7 g4 a4 [c5,g5]@3, [e3,g3,c4]@3 ~", // C5 C
  G: "[[a4,c5]@6 [g4,c5]@5 ~ [a3,c4]@14 ~@2 c4@2 [g3,c4]@12 ~@4 e4 ~, ~@6 f4@8 ~ e4@7 c4@2, ~@26 a3@4 ~@12 g3@5 ~]/2", // Am C5 Am C5
  H: "[a3@5 ~ a3@5 ~ [b3,d4,g4]@5 ~ [g3,c4]@12 ~@4 e4@2 [a3,d4]@12 ~@4 f4@2 [b3,d4,g4]@11 ~@5 d4@2, [c4,f4]@11 ~@7 e4@14 c4@4 f4@14 d4@4 ~@14 c4@4, ~@30 g3@5 ~@13 a3@6 ~@12 g3@6]/3", // G C5 D5 G F5
  I: "[c4@5 ~@7 g3@5 ~ a3@11 ~@3 c4@2 f4@2 [f3,a#3,d4]@16 ~@2 [a#3,d4,f4]@16 ~@2, e4@17 ~@55, g3@11 ~@19 a3@5 ~@37, ~@6 c4@11 ~ [c4,f4]@14 ~@40]/3", // A# F5
  J: "[c4,d4,g4]@17 ~ [g3,b3,g4]@5 ~", // Csus2 G
  K: "[[a3,c4,g4]@5 ~ [b3,d4,g4]@6 [a3,c4,e4]@16 f3@2 [f3,a3,c4,e4]@17 ~, ~@6 f3@7 ~@11]/2", // Am7 G Am Fmaj7
  L: "[g3,b3,d4]@16 ~@2 [f3,a3,c4]@5 ~", M: "[[f3,a3,c4]@5 ~ [g3,b3,d4]@5 ~ [f3,a3,c4,e4]@17 ~ [f3,a3,c4,e4]@17 ~]/2",
  N: "[g3,b3,d4]@17 ~ [f3,a3,c4]@5 ~", // G F
  O: "[[f3,a3,c4]@5 ~ [g3,b3,d4]@4 ~@2 [f3,a3,c4,e4]@16 ~@2 [f3,a3,c4,e4]@16 ~@2]/2", // F G Fmaj7
  P: "[g3@13 ~@3 c4@2 [b3,d4]@16 g3 ~ [c4,d4]@14 ~@2 c4@2 b3@16 ~@2, [c4,d4]@8 ~@18 d4@9 ~, ~@14 g3@4 g3@14 ~@4 g3@13 ~ g3@20 ~@2]/3", // Bm Csus2
  Q: "[[a3,c4,f4]@14 a3@2 [c4,f4]@2 [c4,e4]@14 c4@2 g4@2 [c4,f4]@6 [c4,f4]@5 ~, ~@18 g3@17 ~ a3@11 ~]/2", // F F5 C F5
  R: "[g3,b3,d4]@6 [g3,c4,e4]@11 ~ [b3,d4]@2 ~@2 [b3,d4]@2, ~@5 g4", // G C Bm
  S: "[[a3,c4]@16 ~@3 a3@13 g3@2 f3 ~ [e3,g3,c4]@15 ~@3 g4@2 ~@2 g4@2 f4@2 ~@2 f4@2 e4@5 ~, ~@18 c4@17 ~@21 c5@4 ~@2 c5@9 ~, ~@9 f3@7 ~@20, ~@9 g3 ~@26]/3", // Am C
  T: "[[f4,a4]@14 c4@2 [f4,a4]@2 [c4,e4,g4]@17 ~ [f4,a4]@5 ~ [f4,a4]@5 ~, c4@13 ~@23 c4@11 ~]/2", // F C F
  U: "[d4,g4,b4]@5 ~ [e4,g4]@16 c4 ~, ~@2 c4@5 ~", // G Em
  V: "[[d4,f4,a4]@17 ~ [b3,d4,g4]@17 ~ [c4,e4,g4]@16 ~@2 [a3,c4,f4]@17 ~]/3", // Dm G C F
  W: "[[a#3,d4,f4]@17 ~ [a#3,d4,f4]@16 ~@2 [c4,d4,g4]@12]/2", // A# Csus2
  X: "[c4,d4,g4]@5 ~ [g3,b3,g4]@5 ~ [a3,c4,g4]@5 ~ [b3,d4,g4]@6", // Csus2 G Am7 G
  Y: "[[c4,d4]@14 ~@2 c4@2 g2@16 ~@2 [c4,d#4,g4]@17 ~ [c4,d#4,g4]@14 ~@2 [d#4,g4]@2, g3@13 ~ g3@20 ~@38, ~@8 d4@9 ~@17 c4@2]/3", // Csus2 Cm D#
  Z: "[[d4,f4]@16 a#3@2 [d4,f4]@6 [d4,f4]@4 a#3 ~ [a#3,d4,f4]@5 ~ [c4,d#4,g4]@17 ~ [c4,d#4,g4]@5 ~ [c4,d#4,g#4]@5 ~ [c4,d#4,g4]@5 ~, a#3@7 ~@2 a#3@4 ~@23]/3", // Dm A# Cm G# Cm
  AA: "[[c4,f4]@12 c4@2 f4@2 [c4,f4,a4]@2 [d4,g4,b4]@10 d4@2 [d4,g4,b4]@5 ~ [a5,c6]@10 f5@2, a4@7 ~@11 f5@4 ~@2]/2", // F5 F G Am
  AB: "[f5,a5,c6]@4 ~@2 [g5,b5,d6]@5 ~ [f5,a5,c6]@5 ~ [g5,b5,d6]@5 ~", // F G F G
  AC: "[[a3,c4,e4]@17 ~ [a3,c4,e4]@17 ~ [g3,b3,d4]@17 ~ [f3,a3,c4]@5 ~ [f3,a3,c4]@5 ~ [g3,b3,d4]@5 ~]/3", // Am G F G
  AD: "[a3,c4]@16 ~@2 [c5,e5,g5]@5 ~, e4@7 ~@5", // Am C
  AE: "[[a4,d5,f5]@5 ~ [g4,c5,e5]@5 ~ [g4,b4,d5]@17 ~ [g4,b4,d5]@4 ~@2 [g4,b4,d5]@4 ~@2 [a4,c#5,e5]@6]/2", // Dm C G A
  AF: "[[b3,d4,f#4]@16 b3 ~ [b3,d4,f#4]@11 ~ [b3,d4,f#4]@5 ~ [a3,c#4,e4]@14 a3@2 [c#4,e4]@2 [g3,b3,d4]@5 ~ [g3,b3,d4]@5 ~ [a3,c#4,e4]@5 ~]/3", // Bm A C#m G A
  AG: "[d4,f#4]@16 b3 ~ [b3,d4,f#4]@5 ~, b3@7 ~@5", // D Bm
  AH: "[[b3,d4,g4]@5 ~ [b3,d4,f#4]@6 [a3,c#4]@12 ~@2 c#4@2 e4@2 [g3,b3,d4]@4 g3 ~ [g3,b3,d4]@4 ~@2 [a3,c#4,e4]@5 ~, ~@6 e4@7 ~@11, ~@24 a3@5 ~@19]/2", // G Bm A G A
  AI: "[d4,f#4]@14 ~@2 [d4,f#4]@2 [b3,d4,f#4]@5 ~, b3@6 ~ b3@2 ~@3", // D Bm
  AJ: "[[b3,d4,g4]@5 ~ [b3,d4,f#4]@4 b3 ~ a3@9 ~ a3@2 ~@2 c#4@2 e4 ~ [g3,b3,d4]@5 ~ [b3,d4]@4 g3 ~ [a3,c#4,e4]@5 ~, ~@6 e4@7 ~@11, ~@12 c#4@12 a3@5 ~@7 g3@2 ~@10]/2", // G Bm G Bm A
  AK: "d4@12 ~@4 f#4 ~ [b3,d4,f#4]@5 ~, a4@2 ~, f#4@7 d4@2 ~@3, b3@5 ~ b3@3 ~@3", // Bm
  AL: "[[b3,d4,g4]@6 [b3,d4,f#4]@5 ~ a3@12 ~@4 [c#4,e4]@2 [g3,b3,d4]@5 ~ [g3,b3,d4]@5 ~ [a3,c#4,e4]@5 ~, ~@6 [c#4,e4]@7 a3@2 ~@9, ~@24 a4@5 ~@19]/2", // G Bm C#m G A C#m
  AM: "[b3,d4,f#4]@16 b3@2 [b3,d4,f#4]@5 ~", // Bm
  AN: "[[b3,d4,g4]@5 ~ [b3,d4,f#4]@5 ~ c#4@12 ~@2 c#4 ~ [a3,c#4,e4]@2 [b3,d4]@5 ~ [b3,d4]@4 g3 ~ [a3,c#4,e4]@5 ~, ~@6 e4@7 ~@11, ~@6 a3@5 ~ a3@2 ~ g3@4 ~@5]/2", // G Bm A Bm A
  AO: "[d4,f#4]@14 b3@2 d4@2 [b3,d4,f#4]@5 ~, b3@13 ~@11", // D Bm
  AP: "[[b3,d4,g4]@5 ~ [b3,d4,f#4]@5 ~ [a3,c#4]@12 ~@4 e4@2 [g3,b3,d4]@5 ~ [g3,b3,d4]@5 ~ [a3,c#4,e4]@5 ~, ~@6 e4@7 c#4@2 ~@9, ~@24 a3@5 ~@19]/2", // G Bm A G A
  AQ: "[b3,f#4]@14 ~@2 b3@2 [b3,d4,f#4]@5 ~, d4@2 ~", // B5 Bm
  AR: "[[b3,d4,g4]@5 ~ [b3,d4,f#4]@4 b3 ~ [c#4,e4]@14 ~@2 [c#4,e4]@2 [g3,b3,d4]@5 ~ [g3,b3,d4]@5 ~ [a3,c#4,e4]@5 ~, ~@6 a3@6 ~ a3@2 ~@9]/2", // G Bm C#m G A
  AS: "b3@11 ~@3 d4@2 f#4 ~ [b3,d4,f#4]@5 ~, [d4,f#4]@7 ~@5, ~@12 b3@5 ~@7", // Bm D
  AT: "[[b3,d4,g4]@5 ~ [b3,d4,f#4]@5 ~ [a3,c#4,e4]@14 a3@2 [c#4,e4]@2 [b3,d4]@10 g3 ~ [a3,c#4,e4]@5 ~, ~@15 g3@4 ~@5]/2", // G Bm A C#m Bm A
})).s("gm_piano").gain(0.35).pan(0.3)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~ A@2 ~ B@2 ~ C@2 ~@11 D@2 E@3 F@2 G@3 H@3 I J@3 ~@2 K L@4 M@2 N O@3 P@2 Q@3 R@3 S@5 ~@7 T U V W@3 X@3 Y@3 Z@3 X@3 Y@3
  AA@3 X@3 Y@3 ~
>`.pickRestart({
  A: "[~@2 f4 ~ g4@2 ~@2, e4@5 c4@13 ~@6, ~ g4 ~ e4@3 ~@2]/2",
  B: "[~@3 g4@3 ~ f4@2 ~@6 c4@3 ~@6, e4@12 c4@17 ~@19, ~@3 e4@3 ~@2, ~@2 g4 ~]/2",
  C: "[~@14 f4@4 ~@12 c4@9 ~@9, e4@5 c4@10 ~@9, ~@6 g4@7 ~@5 e4@18 ~@12, ~@2 g4 ~]/2", D: "[~@12 f4@17 ~ g4@18]/2",
  E: "[e4@17 ~ g4@16 ~@2 f4@36]/3", F: "[g4@30 ~@9 g4@8 ~, ~@3 e4]/2",
  G: "[d4@4 g4 ~@4 g4@9 d4@4 ~@2 d4@17 ~ c4@11 ~ d4@5 ~ e4@3 g4@9, ~@3 e4@6 ~@2 g4@16 ~@9]/3",
  H: "[d4@4 g4 ~ e4@3 g4@9 d4@4 ~@2 d4@17 ~ c4@12 d4@6 e4@3 g4@9, ~@11 g4@10 ~@15]/3",
  I: "d4@4 g4 ~ e4@4 g4@8 d4@4 g4 ~",
  J: "[d4@14 c4@2 ~@2 b3@13 ~@5 c4@13 ~@5 b3@17 ~, ~@8 g4@8 b3@2 ~@7 c4@2 ~@9, ~@34 g4@16 ~@2 g4@19 ~]/3",
  K: "~@9 d4 g4 d4", L: "[c4@18 g3@14 ~@14 f4@4 c4@2 g3@2 g4@2 ~@2 g4@3 ~@3 f4@10 ~@22, ~@28 c5@2 ~ c5@2 ~@15]/4",
  M: "[~@6 d4@5 ~ c4@17 ~@19]/2", N: "~@6 d4@5 ~, ~@2 a4@5 ~",
  O: "[~@6 d4@8 ~@10 c4@10 ~@8 c4@9 ~@9 c4@11 ~, g4@14 ~@4 g4@15 ~@3 f4@15 ~@3 f4@16 ~@2]/3",
  P: "[~@6 c4@10 ~@8 c4@12 a3@5 ~ b3@6, f4@16 ~@2 g4@17 ~@13]/2",
  Q: "[~@3 g4@8 ~ d4@4 g4 ~@4 g4@9 d4@4 ~@2 d4@17 ~ c4@11 ~ d4@5 ~, e4@6 ~@3 e4@6 ~@2 g4@16 ~@3]/3",
  R: "[e4@3 g4@9 d4@4 g4 ~ e4@3 g4@9 d4@4 ~@2 d4@17 ~ c4@12 d4@6, ~@17 g4@10 ~@9]/3",
  S: "[e4@3 g4@9 d4@4 g4 ~ e4@4 g4@8 d4@4 g4 ~ d4@14 c4@2 ~@2 b3@13 ~@5 c4@13 ~@5 g3@17 ~@13, ~@26 g4@8 b3@2 ~@7 c4@2 ~@15, ~@70 g4@16 ~@2 g4@19 ~@13]/5",
  T: "e4 a4 e4 a4 e4 a4 e4 a4 e4 a4 e4 a4", U: "e4@2 ~ e4@2 ~ a4@2 e4@2 a4@2 ~@4 d4@5 ~ c5@2, ~ a4 ~@4 g4@4 ~@2",
  V: "~ g4@2 d4@14 ~ d4@5 ~", W: "[e4@2 ~ g4@11 d4@4 g4@12 d4@3 ~ g4@2 d4@17 ~@19]/3",
  X: "[~@3 a4@8 ~ e4@4 a4 ~@4 a4@9 e4@4 ~@2 e4@17 ~ d4@11 ~ e4@5 ~, f#4@6 ~@3 f#4@6 ~@2 a4@16 ~@3]/3",
  Y: "[f#4@3 a4@9 e4@4 a4 ~ f#4@3 a4@9 e4@4 ~@2 e4@17 ~ d4@12 e4@6, ~@17 a4@10 ~@9]/3",
  Z: "[f#4@3 a4@9 e4@4 a4 ~ f#4@4 a4@8 e4@4 a4 ~ e4@14 ~@4 d4@11 ~ e4@5 ~]/3",
  AA: "[f#4@3 a4@9 e4@4 a4 ~ f#4@4 a4@8 e4@4 a4 ~ e4@14 ~@4 d4@12 e4@6]/3",
})).s("gm_electric_guitar_clean").gain(0.25).pan(0.7)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~ A@6 B@5 ~@5 C@2 D@3 E@3 F@3 G@3 H I@2 J@3 K@2 L M@3 N@2 O P@6 Q@3 R@3 S@6 T@3 U@3 Q@3 V@3 W@24 ~
>`.pickRestart({
  A: "[[a3,c4,e4]@6 [g3,b3,d4]@3 [f3,a3,c4]@2 [g3,b3,d4], f3 ~@3]/3", // Am G F G
  B: "[[a3,c4,e4]@6 c4@3 b3@3 c4@3 b3@3 ~@2, f3@3 ~@3 [g3,d4]@12 ~@2]/5", // Am G5
  C: "[[a3,f4] [g3,e4] [a3,f4]@3 [g3,e4]@3, c4]/2", // Dm C Dm C
  D: "[[f3,a3,c4]@2 [b3,d4] [c4,e4]@3 [a3,f4]@3 [b3,g4]@3, ~ g3@2 d4@3]/3", // F Bm C Dm Em
  E: "[[g3,e4] [a3,f4] [f3,a#3,d4]@2, c4 ~]/3", F: "[[g3,c4,d4]@3 [g3,b3] c4 b3 [a3,c4,e4]@6, ~ d4 ~@2, ~@2 g3 ~@3]/3",
  G: "[[g3,b3,d4]@3 [f3,a3,c4]@2 [g3,b3,d4] [a3,c4,e4]@6]/3", H: "[g3,b3,d4]@3 [f3,a3,c4]",
  I: "[[f3,a3,c4] [g3,b3,d4] [a3,c4,e4]@6]/2", J: "[c4 b3 c4 b3, d4, g3 g3]/3",
  K: "[[f3,a3]@3 [e3,g3]@3 [f3,a3]@2, c4]/2", L: "[b3,d4] [c4,e4]@2 [g3,b3,d4], g3@3 ~",
  M: "[e3@3 f3@3 [e3,g3]@4 [a3,f4] [g3,e4], c4, a3 ~]/3", N: "[[a3,c4,f4]@3 [g3,e4]@3 [f3,a3]@2, ~@3 c4@5]/2",
  O: "[g3,b3,d4] [g3,c4,e4]@3", // G C
  P: "[[a3,f4]@3 [b3,g4]@3 [g3,e4]@3 a3@3 [a#3,d4]@6 c4@3 b3 c4 b3, d4 c4 ~ [g3,d4], ~@3 f4@3 ~@2]/6", // Dm Em C A# G5
  Q: "[[a3,c4,e4]@6 [g3,b3,d4]@3 [f3,a3,c4]@2 [g3,b3,d4]]/3", // Am G F G
  R: "[[a3,c4,e4]@6 [g3,b3,d4]@3 [f3,a3,c4]!2 [g3,b3,d4]]/3", // Am G F G
  S: "[[a3,c4,e4]@2 c4 b3 c4 g4 g3 g#3, ~ d4@2 [c4,d#4], ~ g3 g3 ~]/6", T: "[[a#3,d4,f4]@2 g3 g#3, ~ [c4,d#4]]/3",
  U: "[[f3,a3,c4] [g3,b3,d4] [a3,c4,f4] [b3,d4,g4]]/3", // F G F G
  V: "[[a3,c4,e4]@36 [g3,b3,d4]@17 ~ [g3,b3,d4]@6 [g3,b3,d4]@6 [a3,c#4,e4]@6]/3", // Am G A
  W: "[[b3,d4,f#4]@6 [a3,c#4,e4]@3 [g3,b3,d4]@2 [a3,c#4,e4]]/3", // Bm A G A
})).s("gm_string_ensemble_2").gain(0.17).pan(0.9)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@3 A ~@3 B ~@18 C@2 D ~ E F@3 G@2 ~@6 H I@2 J K@3 ~@2 L M@3 N O@2 P@3 Q R@3 S@2 T@3 ~@2 A ~@2 U V@3 W X@2 V@3 W X@2
  V@3 W X@2 V@3 W Y@2 ~
>`.pickRestart({
  A: "~@8 g5 ~ a5 ~ c6 ~ g5 ~ a5 ~ c6 ~ g5 ~ a5 ~", B: "g5 ~ a5 ~ c6 ~ g5 ~ a5 ~ c6 ~@13",
  C: "[~@6 a5 b5 c6 d6 e6 f6 g6@32 f6@2 e6@2]/2", D: "d6@19 ~@5", E: "a5 e6 c6 a5",
  F: "[g5@30 c6@4 d6 [e6,f6] g6@30 e6@2 f6@2 g6@2]/3", G: "[g5@3 ~]/2", H: "~@2 c5 g5", I: "[f5@3 e5@3 a4@2]/2",
  J: "b4 g5@3", K: "[d5 c5]/3", L: "~@18 a5 b5 c6 d6 e6 f6", M: "[g6@32 f6@2 e6@2 d6@19 ~@17]/3", N: "~@2 a5 e6",
  O: "[c6@6 a5@6 g5@30 c6@4 d6 [e6,f6]]/2", P: "[g6@15 e6 f6 g6 g5@18]/3", Q: "~@18 c5@2 d5 ~ d5 ~",
  R: "[d5@2 d#5 ~ d#5@2 [f4,f5]@2 [g4,g5]@2 [g#4,g#5]@2 [a#4,a#5]@60]/3", S: "[[d#5,d#6] [a#4,a#5]@3]/2",
  T: "[g4,g5]/3", U: "~@18 b5 c#6 d6 e6 f#6 g6", V: "[a6@32 g6@2 f#6@2 e6@19 ~@17]/3", W: "~@2 b5 f#6",
  X: "[d6@6 b5@6 a5@30 d6@4 e6 [f#6,g6]]/2", Y: "[d6@3 b5@3 a5@15 d6@2 ~]/2",
})).s("gm_string_ensemble_1").gain(0.25).pan(0.1)

// other · alto sax
const alto_sax = note("<~ A@3 B C D E F@4 ~@57 G H I J K L@2 ~@9 M@3 N@3 O@3 P@3 Q@3 ~>".pickRestart({
  A: "[e5@4 ~ g5@25 e5@2 ~ d5 c5@2 d5@14 e5 ~ e5 ~ c5@10 ~@2 g4@4 c5 ~]/3", B: "e5 ~ g5@6 ~ e5@3",
  C: "f5@6 e5@13 ~@3 c5 ~", D: "e5@4 g5 ~ [d#5,e5] c5@10 ~ g4@4 c5@2", E: "d#5 e5@2 ~ g5@11 a5@2 ~@7",
  F: "[e5@4 g5 ~ e5@4 d5@2 d5@24 ~@5 a4@42 ~@13, d#5 ~@95]/4", G: "~@14 g4@2 ~@2 c5@2 a4 ~ c5 ~",
  H: "e5@2 ~ g5@19 a5 ~", I: "d5@4 ~ a4 e5 d5@5", J: "~@2 e5 ~@11 c6 ~ a5 ~ g5 ~ d#5@4",
  K: "c5@7 ~ a4@3 ~ c5 ~ a4@4 e5@2 g5@2 ~@2", L: "[~@2 e5@2 g5@2 e5@2 c5 ~ d5@4 e5@4 g5@12 a5@18]/2",
  M: "[f#5@6 f#5@6 f#5@6 f#5@13 ~ e5@3 ~@2 e5@15 f#5 ~@13 c5@3 ~ e5 ~]/3",
  N: "[f#5@4 g5@2 f#5@4 g5@2 f#5@4 g5 ~ f#5@12 ~@2 e5@4 b4@16 ~@14 a4@3 ~ d5 ~, f5 ~@17 f5 ~@53]/3",
  O: "[f#5@5 ~ f#5@6 f#5@5 ~ f#5@12 ~@2 a5 ~ g5@2 e5@18 ~@12 b4@2 d5@3 ~, f5 ~@17 f5 ~@53]/3",
  P: "[f#5@5 ~ f#5@5 ~ f#5@6 f#5@12 ~@2 e5@3 ~ e5@14 ~@2 f#5 ~@13 b4@2 d5@3 ~, f5 ~@71]/3",
  Q: "[f#5@3 ~ g5@2 f#5@4 g5@2 f#5@4 g5@2 f#5@13 ~ e5@3 ~ e5@16 f#5 ~@9 b5 ~ a5 ~ f#5@2 ~@4, f5 ~@17 f5 ~@17 d#5 ~@35]/3",
})).s("gm_alto_sax").gain(0.48).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B C A D E A F G A H I J F K A F I J F G A D I L M G A H G N F K A D C J B O A F K J B O A B G P Q R A B C A D S A
  F G N T U V W X V Y Z A B C A D S V B C A AA S A D C A D S A B AB A D S A B C A D S ~
>`.pickRestart({
  A: "x ~@7 x!2 ~@2", B: "~@5 x!2 ~@5", C: "~@2 x!2 ~@4 x ~@3", D: "~@5 x!2 ~@4 x", E: "~@2 x!2 ~ x ~@2 x ~@3",
  F: "~ x", G: "~@2 x!2 ~@7 x", H: "~ x ~ x ~@2", I: "~@3 x ~@7 x", J: "x ~@2 x", K: "~@2 x!2 ~@8", L: "x!4", M: "x!2",
  N: "x ~@4 x ~@2 x!2 ~ x", O: "~ x ~@2", P: "x ~@4 x ~@3 x ~@2", Q: "~@5 x!2 ~@2 x ~@2", R: "x!3 ~",
  S: "~@2 x!2 ~ x ~@6", T: "~@6 x ~@2 x ~ x", U: "~@3 x ~@4 x ~@3", V: "x ~@2 x ~ x ~@2 x!2 ~@2",
  W: "~@2 x ~@3 x ~@4 x", X: "~@2 x!2 ~@4 x ~@2 x", Y: "x ~ x ~@3 x ~ x!2 ~@2", Z: "~ x ~@4", AA: "~@5 x!2 ~ x!2 ~ x",
  AB: "~@2 x!2 ~@2 x ~ x ~@3",
})).gain(0.32)

// drums · rim
const rim = s("rim").struct("<~@12 A B C A B C A B C A B C D ~@12 B C A B C A B C A B C A ~ C ~@50>".pickRestart({
  A: "x ~@2 x", B: "~ x", C: "~ x ~@2", D: "~@3 x",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct(`<
  A B C D B C E B C D B F ~@13 G H D B C D B I D B C D ~@14 J B C D B C E B C D B I D B I D B C K B C D B C E B C D B C
  E B C D B C L B C D B C E B C D B C E ~
>`.pickRestart({
  A: "~@3 x", B: "~ x", C: "~ x ~@2", D: "x ~@2 x", E: "x ~ x!2", F: "~@6 x ~@3 x!2 ~@12", G: "~@11 x",
  H: "~ x ~ x ~@8", I: "x!2 ~@2", J: "~@5 x ~ x ~ x ~@2", K: "x!4", L: "x ~@3 x ~ x ~@2 x ~@2",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct(`<
// … 57 more lines

More by Showaddywaddy