Strudelify

Look at the Stars

Sailor Moon

KeyC majorTempo144 bpm
0:00/0:00
// Look at the Stars — Sailor Moon
// 144 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 136 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(144/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(`<
  ~@9 A B C D E F G H@2 I J K L M N O P Q J K R S T U S M V W X Y V W Z S AA AB AC B C D AD AE AF AG@2 B C D E F G H@2 I
  J K L M N O P Q J K R S T U S M V W X Y V W Z S AA AB AC B C D AD AE AF AG@2 B C D AH@2 AI AJ AK AL AM AN AO AP AQ AR
  AS B C D E F AT G AU AV AW AQ AX AY AZ G AU AV AW AQ BA BB BC
>`.pickRestart({
  A: "~@4 f1@2 f1!2 f1@2 f1@2 f1@2 f1 c2", B: "f2@2 f2@2 f2@2 f2!2 f2@2 c2@2 a1@2 f1@2",
  C: "e1@2 e1@2 e1@2 e1!2 e1@2 e1@2 e1@2 e1 g1", D: "e2@2 e2@2 e2@2 e2!2 e2@2 c2@2 g1@2 e1@2",
  E: "d1@2 d1@2 d1@2 d1!2 d1@2 d1@2 d1@2 d1 a1", F: "g1!3 ~@5", G: "c2@2 c2@2 c2@2 c2!2 c2@2 c2@2 c2@2 c2!2",
  H: "[c2@2 c2@2 c2@2 c2!2 c2@2 g1@2 a1@2 a#1@4 a#1@2 a#1@2 a#1!2 a#1@2 a#1@2 a#1@2 g#1@2]/2", I: "~ g#1@2 g1 g1@3 ~",
  J: "c2@2 c2@2 c2@2 c2!2 c2@2 g1@2 c2@2 c2!2", K: "b1@2 b1@2 b1@2 b1!2 b1@2 g1@2 b1@2 b1!2",
  L: "a1@2 a1@2 a1@2 a1!2 a1@2 e1@2 a1@2 a1!2", M: "g1@2 g1@2 g1@2 g1!2 g1@2 g1@2 g1@2 g1@2",
  N: "f1@2 f1@2 f1@2 f1!2 f1@2 c1@2 f1@2 f1!2", O: "e1@2 e1@2 e1@2 e1!2 e1@2 b0@2 e1@2 e1!2",
  P: "d1@2 d1@2 d1@2 d1!2 d1@2 a0@2 d1@2 d1!2", Q: "g1!2 g1@2 g1!2 g1@2",
  R: "a#1@2 a#1@2 a#1@2 a#1!2 a1@2 a1@2 a1@2 a1!2", S: "d1@2 d1@2 d1@2 d1!2 d1@2 d1@2 d1@2 d1!2",
  T: "f1@2 f1@2 f1@2 f1!2 a#1@2 a#1@2 a#1@2 a#1!2", U: "d#1@2 d#1@2 d#1@2 d#1!2 d#1@2 d#1@2 d#1@2 d#1!2",
  V: "e1@3 e1 e1@4", W: "a1@3 a1 a1@3 g1", X: "f1@3 f1 f1@2 d1 f1", Y: "g1@3 g1 g1@2 f1@2",
  Z: "f1@2 f1@2 f1@2 f1!2 e1@2 e1@2 e1@2 e1!2", AA: "g1@2 g1@2 g1@2 g1!2 g1@2 g1@2 g1@2 g1!2", AB: "g1 a1 b1 g1@2 g1!3",
  AC: "f1@2 f1!2 f1@2 f1!2 f1@2 f1@2 f1@2 f1 c2", AD: "d1@2 d1@2 d1@2 d1!2 d1@2 d1@2 d1@2 d1@2",
  AE: "e1@2 e1@2 e1@2 e1!2 e1@2 e1@2 e1@2 e1@2", AF: "a1@2 a1@2 a1@2 a1!2 a1@2 a1@2 a1@2 a1@2",
  AG: "[g1@2 a1@2 a#1@2 c2@4 d2@2 e2@2 f2@4 f1!2 f1@2 f1!2 f1@2 f1@2 f1@2 f1 c2]/2",
  AH: "[d1@2 d1@2 d1@2 d1!2 d1@2 d1@2 d1@2 g1@4 g1@2 g1@12]/2", AI: "a1 b1 c2 g#1@2 g#1!3", AJ: "g1 a1 a#1 c2@2 c2!3",
  AK: "f2@6 ~ c2", AL: "f2@3 c2@3 a1@2", AM: "e2@6 ~ c2", AN: "e2@3 c2@3 g1@2", AO: "d2@6 ~ d2", AP: "e2@4 ~ e2 b1 e2",
  AQ: "a1@2 a1@2 a1@2 a1!2 a1@2 a1@2 a1@2 a1!2", AR: "g1 a1 a#1 c2@2 d2 e2 f2",
  AS: "f2@2 f1!2 f1@2 f1!2 f1@2 f1@2 f1@2 f1 c2", AT: "~@4 g1@4 c2@2 c2@2 c2@2 c2!2",
  AU: "c2@2 g1@2 a1@2 a#1@4 a#1@2 a#1@2 a#1!2", AV: "a#1@2 a#1@2 a#1@2 a#1!2 a#1@2 a#1@2 a#1@2 a#1!2",
  AW: "a#1@2 a1@2 g1@2 a1@4 a1@2 a1@2 a1!2", AX: "a1@2 f#1@2 g1@2 g#1@4 g#1@2 g#1@2 g#1!2",
  AY: "g#1@2 g#1@2 g#1@2 g#1!2 g1@2 g1@2 g1@2 g1!2", AZ: "g1@2 c2@2 d2@2 c2@4 c2@2 c2@2 c2!2", BA: "a1 f#1 g1 g#1@5",
  BB: "g#1 g1 f1 g#1@2 a#1@2 c2", BC: "c2 ~",
})).s("gm_electric_bass_finger").gain(0.44)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@9 A ~ B ~ C@2 D@4 ~@7 E ~@16 F G A ~ B ~@4 H A ~ B ~ C@2 I@4 ~@7 E ~@16 F G A ~ B ~@4 H A ~ B ~ J@2 K L ~@8 A ~ B ~
  C@2 M N O N O N O P Q N O N O N R S T
>`.pickRestart({
  A: "~@2 [c5,f5]@3 ~@3", B: "~ [c5,e5] ~@2", C: "[~@5 [a3,d4] [d4,f4] [a4,c5]@2 [a4,c5] [g4,b4] ~@5]/2",
  D: "[[c5,e5]@2 [c5,e5] [c5,f5] ~ [c5,f5] ~ [b4,d5]@2 [b4,d5]@2 [c5,e5] ~ g4 ~@2 [c5,e5]@2 [c5,e5] [c5,f5] ~ [c5,f5] ~ [c5,d#5]@2 [c5,d#5]@2 [b4,d5] [b4,d5]@3 ~, ~@6 [c5,e5] a4 ~@8, ~@15 a#4@2 ~@15]/4", // C F5 Bm C F5 Cm Bm C
  E: "~@4 [d5,g5]@3 ~@5 [d5,g5]@3 ~", F: "d4 g3 b3 d4 g4 b3 d4 g4 b4 d4 g4 b4 d5 g4 b4 d5",
  G: "[g4,g5] [a4,a5] [b4,b5] [g4,g5] ~ [a4,a5] [b4,b5] [c5,c6]", H: "d5 e5 f5 g5 ~ [a4,a5] [b4,b5] [c5,c6]",
  I: "[[c5,e5]@3 [c5,f5] ~ [c5,f5] ~ [b4,d5]@2 [b4,d5]@2 [c5,e5] ~ g4 ~@2 [c5,e5]@2 [c5,e5] [c5,f5] ~ [c5,f5] ~ [c5,d#5]@2 [c5,d#5]@2 [b4,d5] [b4,d5]@3 ~, ~@6 [c5,e5] a4 ~@8, ~@15 a#4@2 ~@15]/4", // C F5 Bm C F5 Cm Bm C
  J: "[~@4 [a3,d4] [d4,f4] [f4,a4] [a4,c5,c6]@2 [a4,c5,c6] [g4,b4,b5]@4 ~@2]/2", K: "[f4,a4]@3 [e4,g#4]@5",
  L: "[d4,g4]@3 [g4,c5]@5", M: "~@4 [c5,e5]@2 [c5,e5] [c5,f5]", N: "~ [c5,f5] ~ [b4,d5]@2 [b4,d5]@2 [c5,e5]",
  O: "[c5,e5]@3 [c5,e5]@3 [c5,e5] [c5,f5]", P: "~ [c5,f5] ~ [c5,e5]@2 [c5,e5]@2 [b4,d5]",
  Q: "[b4,d5]@3 [c5,e5]@3 [c5,e5] [c5,f5]", R: "[c5,e5]@3 [c5,d#5]@5",
  S: "[c5,d#5] [a#4,d5] [g#4,c5] [g#4,d#5]@2 [a#4,f5]@2 [c5,g5]", T: "[c5,g5]@3 ~@5",
})).s("gm_synth_brass_1").gain(0.42)

// chords · piano
const piano = note(`<
  ~ A B C D E F G H I@2 J@4 K@4 L M N O P Q R S L M T U V W X Y Z AA AB AC Z AD AE AF AG AH I@2 AI@2 AF AJ AK@2 I@2 J@4
  K@4 L M N O P Q R S L M T U V W X Y Z AA AB AC Z AD AE AF AG AH I@2 AI@2 AF AJ AK@2 I@2 AL@4 AM AN AO AP AQ AR AS AT
  AU AV I@2 AW@4 AX AY AZ AY AZ AY AZ BA BB AY AZ AY AZ AY BC BD BE
>`.pickRestart({
  A: "~ a4@15, [c4,f4]", B: "~@2 c4 f4@2 a4@3", C: "[c4,e4,g4]", D: "~ g4@3 c4@2 g4@4 c4@2 e4@4, [c4,e4] ~@3",
  E: "~ f4@5 c4@2 f4@4 a3@4, [a3,c4]@3 ~@5", F: "~ g#4@15, [b3,d4]", G: "e4 a4 e3@2 a3@2 c4@2 e4@2 a4@2 c4@4, c4 ~@7",
  H: "a#3 d3 g3 f4 e4 g3 c4@2", I: "[~@2 [a4,c5]@2 ~@3 [a#4,d5]@2 [a4,c5] [a4,c5]@2 ~ [f4,a4] [f4,b4] [g4,c5]]/2",
  J: "[~@4 [g4,b4] [g4,c5] ~ [a4,d5]@2 [g4,c5] [g4,c5]@2 ~ [e4,g4] [c4,e4] [d4,f4]@2 [f4,a4] [f4,a4]@2 ~ [d4,f4] [f4,a4] [a4,c5]@2 [a4,c5] [g4,b4]@3 [a4,a5] [b4,b5] [c5,c6]]/4", // G C5 D5 C5 Em C Dm F …
  K: "[[c5,e5]@3 [c5,f5] ~ [c5,f5] ~ [b4,d5]@2 [b4,d5]@2 [c5,e5] ~ g4 ~@2 [c5,e5]@2 [c5,e5] [c5,f5] ~ [c5,f5] ~ [c5,d#5]@2 [c5,d#5]@2 [b4,d5] [b4,d5]@3 ~, ~@6 [c5,e5] a4 ~@8, ~@15 a#4@2 ~@15]/4", // C F5 Bm C F5 Cm Bm C
  L: "[c5,e5]@3 [g4,c5]", M: "[b4,d5]@3 [b4,d5]", N: "[a4,c5]@3 [a4,c5]", O: "[c5,e5]@3 [g4,c5]@3 [e4,g4]@2",
  P: "[f4,a4]@3 [f4,a4]", Q: "[g4,b4]@3 [g4,b4]", R: "[a4,c5]@3 [c5,f5]", S: "[b4,d5] [b4,d5,g5] ~ [b4,d5,g5]",
  T: "[c5,f5] [a4,e5]", U: "[a4,c5]@3 [a4,c5]@5", V: "[c5,d#5] [c5,f5]", W: "[d#5,g5]@3 [d#5,g5]",
  X: "[c5,f5]@3 [c5,f5]@3 [c5,f5]@2", Y: "[b4,d5,g5] g3 a3 b3 c4 d4 e4 f4", Z: "[g4,b4,d5] b2 d3 f#3 g3 d4 g4 b4",
  AA: "[e4,g4,c5] e3 a3 b3 c4 e4 a4 c5", AB: "[d4,f4,c5] d3 e3 f3 g3 a3 d4 f4", AC: "[d4,g4,b4] g3 a3 b3 c4 d4 e4 f4",
  AD: "[e4,g4,c#5] e3 a3 b3 c#4 e4 a4 c#5", AE: "[c5,f5]@3 [c5,e5]", AF: "[c5,f5]@3 [c5,f5]",
  AG: "d4 g3 b3 d4 g4 b3 d4 g4 b4 d4 g4 b4 d5 g4 b4 d5", AH: "b4 d4 g4 b4 d5 g4 b4 d5 g5 b4 d5 g5 b5 d5 g5 b5",
  AI: "[~@4 [g4,b4] [g4,c5] ~ [a4,d5]@2 [g4,c5] [g4,c5]@2 ~ [e4,g4] [c4,e4] [d4,f4]]/2", AJ: "[b4,e5]@3 [b4,e5]",
  AK: "[[a4,c5]@6 [a4,c5] [a#4,d5]@2 [c5,e5] [d5,f5] [e5,g5] ~ [f4,a4] [g4,b4] [a4,c5]]/2", // Am A# C Dm Em F G Am
  AL: "[~@4 [g4,b4] [g4,c5] ~ [a4,d5]@2 [g4,c5] [g4,c5]@2 ~ [e4,g4] [c4,e4] [d4,f4]@2 [f4,a4] [f4,a4]@2 ~ [d4,f4] [f4,a4] [a4,c5]@2 [a4,c5] [g4,b4]@6]/4", // G C5 D5 C5 Em C Dm F …
  AM: "[f4,a4]@3 [e4,g#4]@5", AN: "[d4,g4]@3 [g4,c5]@5", AO: "a2 c3 f3 g3 ~ a4 c5 f5, ~@2 a3 ~",
  AP: "[c5,e5]@3 [c5,f5]@3 [a4,c5]@2", AQ: "g2 c3 e3 g3 ~ e4 g4 c5, ~@2 c4 ~", AR: "g3 c4 e4 g4 ~ e4 g4 e4, ~@2 c5 ~",
  AS: "f3 a3 d4 e4 f4!2 a4 c5", AT: "[d5,g#5]@3 [b4,e5]@3 [g#4,b4]@2", AU: "[c5,a5]@3 [c5,e5]@3 [g4,c5]@2",
  AV: "[a#4,d5]@3 [c5,e5]@2 [f4,a4] [g4,b4] [a4,c5]", // A# C F G Am
  AW: "[~@4 [g4,b4] [g4,c5] ~ [a4,d5]@2 [g4,c5] [g4,c5]@2 ~ [e4,g4] [c4,e4] [d4,f4]@2 [f4,a4] [f4,a4]@2 ~ [d4,f4] [f4,a4] [a4,c5]@2 [a4,c5] [g4,b4]@3 ~@3]/4", // G C5 D5 C5 Em C Dm F …
  AX: "~@4 [c5,e5]@2 [c5,e5] [c5,f5]", AY: "~ [c5,f5] ~ [b4,d5]@2 [b4,d5]@2 [c5,e5]",
  AZ: "[c5,e5]@3 [c5,e5]@3 [c5,e5] [c5,f5]", BA: "~ [c5,f5] ~ [c5,e5]@2 [c5,e5]@2 [b4,d5]",
  BB: "[b4,d5]@3 [c5,e5]@3 [c5,e5] [c5,f5]", BC: "[c5,e5]@3 [c5,d#5]@5",
  BD: "[c5,d#5] [a#4,d5] [g#4,c5] [g#4,d#5]@2 [a#4,f5]@2 [c5,g5]", BE: "[c5,g5]@3 ~@5",
})).s("gm_piano").gain(0.3)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@8 A B@2 C@2 ~@31 A D@2 E@2 F G F H D@2 E@2 F ~@30 A D@2 E@2 F G F H B@2 E@2 F ~@4 I J K L ~ M@2 D@2 E@2 F ~@18
>`.pickRestart({
  A: "~@5 f4!3", B: "[~@2 f4!2 e4 f4@2 g4@2 f4 f4@2 ~ f4!2 e4]/2", C: "[~ e4!3 d#4 e4 ~ f4@2 e4 e4@2 ~@4]/2",
  D: "[~ f4!3 e4 f4@2 g4@2 f4 f4@2 ~ f4!2 e4]/2", E: "[~ e4!3 d#4 e4@2 f4@2 e4 e4@2 ~@4]/2", F: "a4", G: "g#4 b4",
  H: "a#4@5 f4!3", I: "~@2 a4!2", J: "g4", K: "~@2 g4!2", L: "f4", M: "[~@2 c4@2 e4@2 a4 a#4@5 ~ f4!3]/2",
})).s("gm_lead_2_sawtooth").gain(0.25).pan(0.7)

// other · lead 1 square
const lead_1_square = note(`<
  ~@8 A B@2 C@2 ~@31 A D@2 E@2 F G H I B@2 E@2 F ~@30 A D@2 E@2 F G H I B@2 E@2 F ~@4 J H K L ~ M@2 D@2 C@2 F ~@18
>`.pickRestart({
  A: "~@5 f4 g4 a4", B: "[~@2 a4!2 g#4 a4@2 a#4@2 a4 a4@2 ~ f4!2 g4]/2", C: "[~ g4!3 f#4 g4 ~ a4@2 g4 g4@2 ~@4]/2",
  D: "[~ a4!3 g#4 a4@2 a#4@2 a4 a4@2 ~ f4!2 g4]/2", E: "[~ g4!3 f#4 g4@2 a4@2 g4 g4@2 ~@4]/2", F: "f4", G: "e4 g#4",
  H: "e4", I: "g4@5 f4 g4 a4", J: "~@2 f4!2", K: "~@2 e4!2", L: "d4", M: "[~@2 a3@2 c4@2 e4 g4@5 ~ f4 g4 a4]/2",
})).s("gm_lead_1_square").gain(0.25).pan(0.3)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~ A@2 B@2 C D E F ~@56 G H I J I K G L M N O P Q R ~@26 S T U V S W E F ~@23
>`.pickRestart({
  A: "[f5,a5]/2", B: "[e5,g5]/2", C: "[a5,c6]", D: "e6 b5, g#5", E: "[e5,a5]", F: "[g5,a#5]", G: "c6", H: "b5 g5",
  I: "a5", J: "g5", K: "c6@2 b5 g5", L: "b5", M: "a#5 c#6", N: "d6", O: "d#6", P: "g6", Q: "f6@4 a5 f5 g5 a5",
  R: "b5 g5 a5 b5 c6 d6 e6 f6", S: "[a4,f5]", T: "[c5,e5]@3 [c5,f5]@3 [a4,c5]@2", U: "[c5,e5]",
  V: "[e5,g5]@3 [c5,e5]@3 [g4,c5]@2", W: "[b4,e5]",
})).s("gm_string_ensemble_1").gain(0.32)

// other · orchestra hit
const orchestra_hit = note(`<
  ~@9 A ~ B ~@4 C@3 ~@7 D ~@18 A ~ B ~@5 A ~ B ~@4 C@3 ~@7 D ~@18 A ~ B ~@5 A ~ B ~@12 E A ~ B ~@18 F G
>`.pickRestart({
  A: "~@4 [f5,f6]@7 ~@5", B: "~ [e4,e5]@2 ~", C: "[~@5 g5 a5 a#5@2 ~@6 [d#5,d#6]@2 [d#5,d#6]@2 [d5,d6] [d5,d6]@3 ~]/3",
  D: "~ [g4,g5,g6] ~ [g4,g5,g6]", E: "~@5 [a5,a6] [b5,b6] [c6,c7]", F: "~@3 [g#5,d#6]@2 [a#5,f6]@2 [c6,g6]",
  G: "[c6,g6]@3 ~@5", // C5
})).s("gm_orchestra_hit").gain(0.56)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@9 A@2 B@2 C@2 D E@2 F G H I J K L M N G H O M P Q M J R S T U R V W X Y Z A@2 B@2 AA@2 AB AC A@2 B@2 C@2 D E@2 F G H
  I J K L M N G H O M P Q M J R S T U R V W X Y Z A@2 B@2 AA@2 AB AC A@2 B@2 AD@2 AE AF ~@6 AG AH A@2 B@2 C@2 AI AJ AK
  AL AM AN AO AP AQ AJ AK AL AM AN AR AS AT
>`.pickRestart({
  A: "[~@4 f3@4 f3 ~ f3 ~@3 f3@4 f3@2 f3@2 ~@2 f3 ~ f3 ~@3 f3@2]/2",
  B: "[~@4 e3@4 e3@2 e3 ~@3 e3@4 e3@2 e3@2 ~@2 e3 ~ e3 ~@3 e3@2]/2", C: "[~@4 d3@4 d3@2 d3 ~@3 g3@4 g3@2 g3@2 ~@10]/2",
  D: "c3@2 c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~",
  E: "[c3 ~ c3 ~ g3@2 c3 ~ c3 ~ g2@2 a2@2 a#2@4 a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ g#2@2]/2", F: "~ g#2@2 g2 g2@3 ~",
  G: "c3 ~ c3 ~@3 c3!3 ~ c3 ~@3 c3!2", H: "b2 ~ b2 ~@3 b2!3 ~ b2 ~@3 b2!2", I: "a2 ~ a2 ~@3 a2!3 ~ a2 ~@3 a2!2",
  J: "g2 ~ g2 ~@3 g2!3 ~ g2 ~@3 g2!2", K: "f2 ~ f2 ~@3 f2!3 ~ f2 ~@3 f2!2", L: "e2 ~ e2 ~@3 e2!3 ~ e2 ~@3 e2!2",
  M: "d2 ~ d2 ~@3 d2!3 ~ d2 ~@3 d2!2", N: "g2 ~ g2 ~ g3@2 g2!3 ~ g2 ~ g3@2 g2!2",
  O: "a#2 ~ a#2 ~@3 a#2!2 a2 ~ a2 ~@3 a2!2", P: "f2 ~ f2 ~@3 f2!2 a#2 ~ a#2 ~@3 a#2!2",
  Q: "d#2 ~ d#2 ~@3 d#2!3 ~ d#2 ~@3 d#2!2", R: "e2@3 ~@3 e2 ~ e2@4 ~@4", S: "a2@3 ~@3 a2 ~ a2@3 ~@3 g2 ~",
  T: "f2@3 ~@3 f2 ~ f2@2 ~@2 d2 ~ f2 ~", U: "g2@3 ~@3 g2 ~ g2@2 ~@2 f2@2 ~@2", V: "a2@3 ~@3 a2 ~ a2@2 ~@2 g2@2 ~@2",
  W: "f2@3 e2", X: "d3", Y: "g2", Z: "g2 a2 b2 g2 ~ a2 b2 c3",
  AA: "[~@4 d3@4 d3 ~ d3 ~@3 e3@4 e3@2 e3@2 ~@2 e3 ~ e3 ~@3 e3@2]/2", AB: "~@4 a3@4 a3@2 a3 ~@3 a3@2",
  AC: "g3@2 a3@2 b3@2 g3@2 ~@2 a3 ~ b3 ~ f3@2", AD: "[~@4 d3@4 d3@2 d3 ~@3 g3@4 g3@2 g3@12]/2", AE: "a2@3 g#2@5",
  AF: "g2@3 c3@5", AG: "a2", AH: "g2@3 c3@2 d3 e3 f3", AI: "~@8 c3@2 c3 ~ c3 ~ c3 ~",
  AJ: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ g3@2 c3 ~", AK: "c3 ~ g2@2 a2@2 a#2@4 a#2 ~ a#2 ~ a#2 ~",
  AL: "a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ f3@2 a#2 ~", AM: "a#2 ~ a2@2 g2@2 a2@4 a2 ~ a2 ~ a2 ~",
  AN: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2@2 a2 ~", AO: "a2 ~ f2@2 g2@2 g#2@4 g#2 ~ g#2 ~ g#2 ~",
  AP: "g#2 ~ g#2 ~ g#2 ~ g#2 ~ g2 ~ g2 ~ g2@2 g2 ~", AQ: "g2 ~ c3@2 d3@2 c3@4 c3 ~ c3 ~ c3 ~",
  AR: "a2 ~ f2@2 g2@2 g#2@10", AS: "g#2 g2 f2 g#2@2 a#2@2 c3", AT: "c3 ~",
})).s("gm_distortion_guitar").gain(0.39).pan(0.2)

// chords · pad choir
const pad_choir = note("<~ A@2 B@2 C D E F ~@96 G H I J G K L M ~@23>".pickRestart({
  A: "[f5,a5]/2", B: "[e5,g5]/2", C: "[a5,c6]", D: "[g#5,b5]", E: "[e5,a5]", F: "[g5,a#5]", G: "[a5,f6]",
  H: "[c6,e6]@3 [c6,f6]@5", I: "[c6,e6]@3 [c6,e6]", J: "[e6,g6]@3 [c6,e6]@3 [g5,c6]@2", K: "[b5,e6]", L: "[e6,a6]",
  M: "[a#5,g6]", // D#
})).s("gm_pad_choir").gain(0.32).pan(0.6)

// other · lead 2 sawtooth
const lead_2_sawtooth_2 = note(`<
  ~@9 A B C@2 D ~ E@3 ~@27 B@2 C@2 D C F G B@2 C@2 D ~ E@3 ~@27 B@2 C@2 D C F G B@2 C@2 D ~@11 B@2 C@2 D ~ H E@14 I ~
>`.pickRestart({
  A: "~@8 f4!2 f5!2 f6!2 f5 f6", B: "f4!2 f5!2 f6!2 f5 f6 f4!2 f5!2 f6!2 f5 f6",
  C: "e4!2 e5!2 e6!2 e5 e6 e4!2 e5!2 e6!2 e5 e6", D: "d4!2 d5!2 d6!2 d5 d6 d4!2 d5!2 d6!2 d5 d6",
  E: "c5!2 c6!2 c7!2 c6 c7 c5!2 c6!2 c7!2 c6 c7", F: "a4!2 a5!2 a6!2 a5 a6 a4!2 a5!2 a6!2 a5 a6",
  G: "g4!2 g5!2 g6!2 g5 g6 g4!2 g5!2 g6!2 g5 g6", H: "~@8 c5!2 c6!2 c7!2 c6 c7", I: "c5!2 c6!2 c7!2 c6 c7 ~@8",
})).s("gm_lead_2_sawtooth").gain(0.32)

// other · celesta
const celesta = note("<~@34 A ~@3 A ~@39 A ~@3 A ~@53>".pickRestart({
  A: "[d4,e4] [f4,g4] [a4,b4] [c5,d5] [e4,f4] [g4,a4] [b4,c5] [d5,e5] [g4,a4] [b4,c5] [d5,e5] [f5,g5] [d5,e5] [f5,g5] [a5,b5] [c6,d6]", // Dsus2 Fsus2 Asus2 Csus2 Fmaj7 Gsus2 Cmaj7 Dsus2 …
})).s("gm_celesta").gain(0.18).pan(1)

// other · synth bass 1
const synth_bass_1 = note("<~@14 [~@3 g3] ~@121>").s("gm_synth_bass_1").gain(0.72)

// other · synth bass 2
const synth_bass_2 = note("<~@58 [~@3 g3] ~@60 [g3 ~@3] ~@16>").s("gm_synth_bass_2").gain(0.8)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A@4 B C A D B E A@15 F G H G H G I A@2 J K A@7 C A@5 C A D B E A@15 F G H G H G I A@2 J K A@7 C A@5 L A D ~@7 M
  A@4 B N G A C A C A C A C A C A C A N O P
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "~ x!2 ~@3 x ~", D: "~@2 x ~@2 x!2 ~", E: "~ x ~ x!2 ~@3", F: "~ x!2 ~ x!2 ~@2",
  G: "~@3 x", H: "~@5 x ~@2", I: "~@5 x!3", J: "x!8", K: "x!4 ~@2 x!2", L: "~ x ~@2", M: "~ x!2 ~ x!2 ~ x",
// … 67 more lines