Strudelify
Spalle al muro cover art

Prometeo

Spalle al muro

Zero

KeyB majorTempo130 bpm
0:00/0:00
// Spalle al muro — Zero
// 130 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 4 piano (copy of ch 3 piano)
// note: Full arrangement: all 152 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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, A@4 for four bars: edit a riff to change every repeat.

// other · soprano sax
const soprano_sax = note(`<
  ~@4 A@8 ~@48 B@6 ~@3 C@8 ~@38 D E F G D H I@3 H J K L G M@2 ~@2 N ~ O P Q@2 R S R T U V@2 ~ W@4 ~
>`.pickRestart({
  A: "[[c#4,c#5]@31 ~ [d4,d5]@32 [d#4,d#5]@31 ~ d5@31 ~ [c#4,c#5]@32 ~@32 [d#4,d#5]@31 ~ d5@6 ~@26, f#2@113 ~@15]/8", // C# D D# C# D#
  B: "[~@11 b4@159 ~@22]/6", C: "[~@27 e5@16 d#5@64 c#5@32 d5@32 d#5@60 ~@25]/8", D: "~ [c#4,c#5]",
  E: "[b3,b4]@3 [a3,a4]", F: "[g#3,g#4]@3 ~ [c#4,c#5]@4", G: "[b3,b4]", H: "[b3,b4]@3 [a#3,a#4]",
  I: "[[g#3,g#4]@16 [d#4,d#5]@49 ~@15 [c#4,c#5]@16]/3", J: "[g#3,g#4] ~ [c#4,c#5]@2", K: "b4@27 ~@5, b3@3 ~",
  L: "[c#4,c#5]", M: "[[a#3,a#4]@29 ~@3]/2", N: "~@16 b3!2 ~@6 b3@3 ~@5",
  O: "~@8 [b3,b4] b4 ~@6 [b3,b4]!2 ~@6 b4@2 ~@6, ~@24 b3 ~@7", P: "~ [b3,b4]@2 [a#3,a#4]",
  Q: "[[g#3,g#4]@2 [d#4,d#5]@5 ~]/2", R: "~ [c#4,e4,c#5,e5]", S: "[b3,d#4,b4,d#5]@11 ~@5", T: "[b3,d#4,b4,d#5]@23 ~@9",
  U: "e4@25 f#4@7", V: "[~ d#4@26 e4@9 c#4@28]/2", W: "[~@14 d#4@47 ~@3]/4",
})).s("gm_soprano_sax").gain(0.37)

// other · soprano sax · soft notes
const soprano_sax_soft = note("<~@7 A ~ B ~ C ~@53 D@5 ~@63 E ~ F ~@11 G@4 ~>".pickRestart({
  A: "d4", B: "[d4,d5]", C: "d4@3 ~@13", D: "[~@11 c#5@32 d#5@111 ~@6]/5", E: "~@8 b3!2 ~@22", F: "~@9 b3 ~@22",
  G: "[~@14 a#2@47 ~@3]/4",
})).s("gm_soprano_sax").gain(0.22)

// bass · acoustic bass
const bass = note(`<
  ~@44 A B@5 C@8 D@8 C@8 E@5 F@4 ~@15 G@3 H I H J K L K J K M N O L J H I H I H J K L K J K M N O L J H I H I H J K L K
  J K M P Q R@7
>`.pickRestart({
  A: "~@9 e1@23", B: "[~@11 b1@31 ~ e1@30 ~@2 b1@31 ~ e1@30 ~@2 d#1@21]/5",
  C: "[~@11 g#1@31 ~ d#2@31 ~ g#1@31 ~ d#1@30 ~@2 g#1@31 ~ f#1@31 ~ e2@30 ~@2 d2@21]/8",
  D: "[~@11 d#2@31 ~ d#1@30 ~@2 e1@30 ~@2 b1@31 ~ e1@30 ~@2 b1@31 ~ e1@30 ~@2 d#1@21]/8",
  E: "[~@11 d#2@31 ~ d#1@30 ~@2 d2@30 ~@2 a1@32 d2@21]/5", F: "[~@11 a1@32 d2@31 ~@2 a1@17 a#1@17 ~@18]/4",
  G: "[~@27 e1@33 ~@3 b1@32 ~]/3", H: "e1@15 ~", I: "b1@31 ~", J: "d#1@15 ~", K: "g#1@31 ~", L: "d#2@31 ~",
  M: "f#1@31 ~", N: "e2@15 ~", O: "d2@15 ~", P: "c#2@31 ~", Q: "~ b1@31",
  R: "[~@4 a#1@38 ~@2 d#1@46 ~@3 g#1@94 ~@2 [g#1,g#2]@5 ~@30]/7", // G#
})).s("gm_acoustic_bass").gain(0.66)

// chords · piano
const piano = note(`<
  A B C B A B C B A B C B A B C D E F G H I J F K L M N O P Q R S T U V W X Y Z AA AB AC AD@3 ~@37 AE AF@7 AG@4 AH@5
  ~@53
>`.pickRestart({
  A: "~@16 f#3@15 ~, f#2@31 ~, ~@8 c#3@23 ~", B: "~@8 g#3@7 ~, f#2@15 ~, ~@4 d3@11 ~",
  C: "~@8 a3@7 ~, f#2@15 ~, ~@4 d#3@11 ~", D: "~ a#3, f#2, ~ e3@3", E: "~ b3, b2, ~ f#3@3",
  F: "~@16 c#4@15 ~, a#2@31 ~, ~@8 f#3@23 ~", G: "~ d4, a2, ~ f#3@3", H: "~@4 f#4@3 ~, g#2@7 ~, ~@2 f#3@5 ~",
  I: "b3 ~@15 g3@14 ~@2, e2@15 ~, ~@4 b2@11 ~", J: "~@16 c#4@13 ~@3, a2@29 ~@3, ~@8 e3@21 ~@3",
  K: "~@16 d4@15 ~, b2@31 ~, ~@8 f#3@23 ~", L: "~@16 b3@15 ~, g2@31 ~, ~@8 d3@23 ~",
  M: "~@4 f#4@3 ~, g2@7 ~, ~@2 d3@5 ~", N: "~@3 b3, g2@29 ~@3, ~@8 d3@21 ~@3, ~@16 f3@13 ~@3",
  O: "~@4 a#3@3 ~, f#2@7 ~, ~@2 e3@5 ~", P: "~@16 b3@15 ~, b2@31 ~, ~@8 f#3@23 ~",
  Q: "~@8 c#4@7 ~, b2@15 ~, ~@4 g3@11 ~", R: "~@16 d4@15 ~, b2@31 ~, ~@8 g#3@23 ~", S: "~ d#4, b2, ~ a3@3",
  T: "~ e4, e3, ~ b3@3", U: "~@16 f#4@15 ~, d#3@31 ~, ~@8 b3@23 ~", V: "~ g4, d3, ~ b3@3",
  W: "~@4 b4@3 ~, c#3@7 ~, ~@2 b3@5 ~", X: "~ c4, a2@31 ~, ~ e3@3", Y: "~@16 d#4@13 ~@3, b2@7 ~, ~@2 f#3@5 ~",
  Z: "~@16 e4@9 ~@7, c3@13 ~@3, ~@4 g3@9 ~@3", AA: "~@16 d4@9 ~@7, b2@3 ~, ~@8 g3@17 ~@7",
  AB: "~@4 c4@3 ~, a2@29 ~@3, ~@8 e3@21 ~@3", AC: "~@17 a3@11 ~@4, ~ f#2@28 ~@3, ~@9 e3@19 ~@4",
  AD: "[~@2 [b3,d#4]@15 ~@2 [a3,c4]@17 [g3,b3]@17 ~ [f#3,a3]@16 ~@26, ~@2 b2@69 ~@25]/3", // B Am G F#m
  AE: "~@23 f#3@8 b3, ~@15 b2@13 ~@4",
  AF: "[~@31 c#4@14 ~@18 d4@15 ~@17 d#4@15 ~@17 e4@16 ~@16 f#4@15 ~@17 g4@15 ~@9 b3@8 b4, ~@15 b2@30 ~@2 b2@31 ~ b2@31 ~ e3@32 d#3@31 ~ d3@31 ~ c#3@17, ~@23 g3@22 ~@10 g#3@23 ~@9 a3@23 ~@9 b3@26 ~@6 b3@23 ~@9 b3@23 ~@18]/7",
  AG: "[~@31 c4@16 ~@16 d#4@13 ~@19 e4@9 ~@15 g3@8 d4, ~@15 a2@31 ~ b2@28 ~@4 c3@26 ~@6 b2@17, ~@23 e3@24 ~@8 f#3@20 ~@12 g3@18 ~@23]/4",
  AH: "[~@31 c4@12 ~@20 a3@11 ~@5 [b3,d#4]@14 ~@3 [a3,c4]@17 ~ [g3,b3]@19 ~ [f#3,a3]@18 ~@8, ~@15 a2@29 ~@3 f#2@27 ~@5 b2@73 ~@8, ~@23 e3@20 ~@12 e3@19 ~@86]/5", // B Am G F#m
})).s("gm_piano").gain(0.5).pan(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@4 A@8 ~@14 B C D E F G H C I J K L M N O P@4 ~@15 Q@6 R@4 S@7 ~@5 T@7 U@4 V@6 ~@3 W X@2 Y@2 ~@8 Z AA AB AC Z AD AE@3
  AF AG AH AI AJ AK@2 Z AA AL AM Z AD AN@2 AO AP AO AQ AR AS@7 ~
>`.pickRestart({
  A: "[~@16 [d4,d5]@16 [d#4,d#5]@16 [d4,d5]@16 ~@16 d5@16 [d#4,d#5]@16 d5@3 ~@13, f#1@113 ~@15, [c#4,c#5]@31 ~ [c#4,c#5]@25 ~@7]/8", // D D# D D# C#
  B: "f3@31 ~", C: "[f#3,f#4]", D: "[b2,b3]@31 ~", E: "[c#3,c#4]@31 ~", F: "d3", G: "[d#3,d#4]", H: "e3",
  I: "g3@23 ~ [a3,a4]@8", J: "[b3,b4]@27 ~@5", K: "[g3,g4]@31 ~", L: "f#4", M: "e4@3 f#3", N: "[g3,g4] [b3,b4]",
  O: "[c4,c5] [e4,e5]", P: "[~ [a4,a5]@16 [g4,g5]@17 f#4@33 ~ f#3@39 ~@21, ~@17 f#5@35 ~@12]/4",
  Q: "[~@27 [c#5,c#6]@16 [b4,b5]@24 [a4,a5]@8 [g#4,g#5]@6 ~@10 [c#5,c#6]@16 [b4,b5]@33 ~@15 [c#5,c#6]@16 [b4,b5]@21]/6", // C# B A G# C# B C# B
  R: "[~@3 [a#4,a#5]@8 [g#4,g#5]@16 [d#5,d#6]@49 ~@15 [c#5,e5,c#6,e6]@16 [b4,d#5,b5,d#6]@21]/4", // A# G# D# C#m B
  S: "[~@3 [a#4,c#5,a#5,c#6]@8 [g#4,b4,g#5,b5]@6 ~@10 [c#5,e5,c#6,e6]@16 [d#5,d#6]@27 ~@5 [c#5,c#6]@32 [b4,b5]@32 [a#4,a#5]@56 ~@29, ~@43 [b4,b5]@24 ~@157]/7", // A#m G#m C#m D# C# B A# B
  T: "[~@15 [b2,b3]@31 ~ [c#3,c#4]@31 ~ d3@32 [d#3,d#4]@32 e3@32 [f#3,f#4]@32 g3@17]/7", // B C# D# F#
  U: "[~@7 [a3,a4]@8 [b3,b4]@27 ~@5 [g3,g4]@31 ~ f#4@32 e4@17]/4", // A B G
  V: "[~@7 f#3@8 [g3,g4]@16 [b3,b4]@16 [c4,c5]@16 [e4,e5]@16 [a4,a5]@16 [g4,g5]@16 f#4@32 ~@3 f#3@43 ~@3, ~@111 f#5@74 ~@7]/6", // G B C E A G
  W: "~@3 [b3,b4,b5]", // B
  X: "[[g#4,g#5]@8 [g#4,g#5]@8 [g#4,g#5,g#6]@8 ~ [c#5,c#6,c#7]@11 ~@4 [c#5,c#6,c#7]@7 ~ [c#5,c#6,c#7]@8 [a#4,a#5,a#6]@8, g#6 ~@7 g#6 ~@15 [g#4,g#5,g#6]@5 ~@35]/2", // G# C# A# G#
  Y: "[[g#4,g#5,g#6]@43 ~@21]/2", Z: "~ [c#5,c#6]", AA: "[b4,b5]@3 [a4,a5]", AB: "[g#4,g#5]@10 ~@6 [c#5,c#6]@15 ~",
  AC: "[b4,b5]", AD: "[b4,b5]@3 [a#4,a#5]", AE: "[[g#4,g#5]@16 [d#5,d#6]@51 ~@13 [e5,e6]@16]/3",
  AF: "[d#5,d#6]@3 [c#5,c#6]", AG: "[b4,b5]@9 ~@7 [e5,e6]@16", AH: "[d#5,d#6]@13 ~@3", AI: "[c#5,c#6]", AJ: "[d5,d6]",
  AK: "[[d#5,d#6]@57 ~@7]/2", AL: "[g#4,g#5]@3 ~@5 [c#5,c#6]@8", AM: "[b4,b5]@31 ~",
  AN: "[[g#4,g#5]@8 [d#5,d#6]@23 ~]/2", AO: "~ [c#5,e6]", AP: "[b4,d#6]@13 ~@3", AQ: "[b4,d#6] ~",
  AR: "[c#5,c#6]@24 ~ [d#5,d#6]@7", // C# D#
  AS: "[~ [b4,b5]@26 [c#5,c#6]@9 [a#4,a#5]@35 ~@5 [d#2,d#3]@48 [g#2,g#3,d#5,a#5]@89 ~@11]/7", // B C# A# D# G#sus2
})).s("gm_string_ensemble_1").gain(0.26)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note(`<
  ~@9 A ~ B ~@12 C@3 ~@3 A ~ D ~ E ~@2 F G ~@45 H@2 I@2 J@2 ~ K@3 ~@58
>`.pickRestart({
  A: "d4", B: "d4@3 ~@13", C: "[[g3,g4]@2 f4, ~@64 f#4 ~@31]/3", D: "e4", E: "g4@23 ~@9", F: "f#3", G: "e3@3 f#4",
  H: "[~@15 d4@33 ~@16]/2", I: "[~@15 e4@32 ~@17]/2", J: "[~@15 g4@23 ~@26]/2", K: "[~@15 f#3@32 e3@24 f#4@9 ~@16]/3",
})).s("gm_string_ensemble_1").gain(0.13)

// other · string ensemble 2
const string_ensemble_2 = note("<~@44 A@5 B@8 C@4 ~@15 D@7 ~@69>".pickRestart({
  A: "[~@9 b4@151]/5", B: "[~@10 c#5@34 d#5@111 e5@16 d#5@64 c#5@21]/8", C: "[~@11 d5@32 ~ d#5@60 ~@24]/4",
  D: "[~@28 b4@15 [a3,a4,a5]@23 ~ [g3,g4]@7 [f#3,f#4,f#5]@8 ~@9 [b3,b4,b5]@16 [a4,a5]@27 ~@22 b5@15 ~ [a4,a5]@17 [g3,g4,g5]@18 ~@17, ~@27 [b3,b5]@15 ~@24 g5@6 ~@35 a3@24 ~@24 [b3,b4]@16 a3@18 ~@35]/7", // A G F# B A G B
})).s("gm_string_ensemble_2").gain(0.42).pan(0.6)

// other · string ensemble 2
const string_ensemble_2_2 = note("<~@102 A B@4 ~@45>".pickRestart({
  A: "~@3 [b2,b3,b4]", // B
  B: "[[g#3,g#4,g#5]@7 [g#3,g#4,g#5]@8 [g#3,g#4,g#5]@8 [g#3,g#4,g#5]@5 [c#4,c#5,c#6]@11 [c#4,c#5,c#6]@7 ~ [c#4,c#5,c#6]@8 ~ [a#3,a#4,a#5]@7 [g#3,g#4,g#5]@43 ~@22]/4", // G# C# A# G#
})).s("gm_string_ensemble_2").gain(0.64).pan(0.4)

// chords · tuba
const tuba = note(`<
  ~@36 A B C D E F G ~ H I J I K L M N O N O P Q R S T@2 I J I K L M N O N O P Q R S U@2 V@2 W@2 X@2 ~@7 Y@7 ~@18 Z AA Z
  AA AB AC AD AE AD AE AD AF AG AH AI AJ ~@21
>`.pickRestart({
  A: "[a3,c4,e4]@15 ~", B: "[b2,b3,d#4]@31 ~", C: "[c3,c4,e4]", D: "[b2,b3,d4]", E: "[a3,c4] ~@31, a2",
  F: "~ [f#2,a3,c4]@31", G: "~ [b3,d#4]@9 ~@6", H: "~@18 [g#3,b3,e4]@6 ~@3 [g#3,b3,e4]@5",
  I: "~@3 [g#3,b3,e4]@5 ~@11 [a3,b3,e4]@6 ~@2 [a3,b3,e4]@5", // E Asus2
  J: "~@3 [a3,b3,d#4]@6 ~@10 [g#3,b3,e4]@6 ~@2 [g#3,b3,e4]@5", // B7 E
  K: "~@3 [a3,b3,d#4]@5 ~@11 [g#3,b3,e4]@6 ~@2 [g#3,b3,e4]@5", // B7 E
  L: "~@3 [g#3,b3,e4]@4 ~@12 [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@5", // E C#dim
  M: "~@3 [g3,c#4,d#4]@6 ~@10 [g#3,b3,d#4]@6 ~@2 [g#3,b3,d#4]@5", // D#7 G#m
  N: "~@3 [g#3,b3,d#4]@5 ~@11 [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@5", // G#m C#dim
  O: "~@3 [g3,c#4,d#4]@7 ~@9 [g#3,b3,d#4]@6 ~@2 [g#3,b3,d#4]@5", // D#7 G#m
  P: "~@3 [g#3,b3,d#4]@5 ~@11 [f#3,b3,d#4,f#4]@6 ~@2 [f#3,b3,d#4,f#4]@5", // G#m B
  Q: "~@3 [f#3,b3,d#4,f#4]@5 ~@11 [g#3,c#4,e4]@6 ~@2 [g#3,c#4,e4]@5", // B C#m
  R: "~@3 [g#3,c#4,e4]@5 ~@11 [d4,f4,g#4]@6 ~@2 [d4,f4]@5", // C#m Ddim Dm
  S: "~@3 [a#3,d4,f4]@6 ~@10 [a#3,d#4,g4]@6 ~@2 [a#3,d#4,g4]@5", // A# D#
  T: "[~@3 [d#4,g4]@5 ~@11 [a#3,d#4,g4]@6 ~@2 [a#3,d#4,g4]@14 ~@10 [g#3,b3,e4]@5 ~@3 [g#3,b3,e4]@5]/2", // D# E
  U: "[~@3 [d#4,g4]@5 ~@11 [a#3,d#4,g4]@6 ~@2 [a#3,d#4,g4]@14 ~@10 [a3,d4]@4 ~@4 [a3,d4]@4 ~]/2", // D# D5
  V: "[~@3 [a3,d4]@4 ~@12 [e3,a3,d4]@4 ~@4 [e3,d4]@7 ~ c#4@6 ~@10 [a3,d4]@4 ~@4 [a3,d4]@4 ~, ~@27 a3@13 ~@24]/2", // D5 Dsus2 E7 D5
  W: "[~@3 [a3,d4]@4 ~@12 [e3,a3,d4]@4 ~@4 [e3,a3,d4]@8 [a3,c#4]@5 ~@3 [f#3,a3,d4]@9 ~@8 [a3,d4]@4]/2", // D5 Dsus2 A D D5
  X: "[~@4 [a3,d4]@5 ~@12 [a3,d4]@4 ~@4 [a3,d4]@6 ~@3 a#3@8 ~@18]/2", // D5
  Y: "[~@15 [a3,c4,e4]@30 ~@2 [b2,b3,d#4]@31 ~ [c3,c4,e4]@32 [b2,b3,d4]@32 [a3,c4] ~@31 [f#2,a3,c4]@31 ~ [b3,d#4]@17, ~@143 a2@32 ~@49]/7", // Am B C Bm Am F#dim B
  Z: "~@8 [g#3,b3,e4]@5 ~@3 [g#3,b3,e4]@6 ~@2 [g#3,b3,e4]@5 ~@3", // E
  AA: "~@4 [a3,b3,e4]@3 ~ [a3,b3,e4]@3 ~ [a3,b3,d#4]@3 ~", AB: "~@4 [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@2 ~@2",
  AC: "~@4 [g3,c#4,e4]@3 ~ [g3,c#4,e4]@3 ~ [g3,c#4,d#4]@3 ~", // C#dim D#7
  AD: "~@8 [g#3,b3,d#4]@6 ~@2 [g#3,b3,d#4]@6 ~@2 [g#3,b3,d#4]@5 ~@3", // G#m
  AE: "~@8 [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@6 ~@2 [g3,c#4,d#4]@7 ~", // C#dim D#7
  AF: "~@8 [f#3,b3,d#4,f#4]@6 ~@2 [f#3,b3,d#4,f#4]@6 ~@2 [f#3,b3,d#4,f#4]@5 ~@3", // B
  AG: "~@8 [g#3,c#4,e4]@5 ~@3 [g#3,c#4,e4]@6 ~@2 [g#3,c#4,e4]@5 ~@3", // C#m
  AH: "~@4 [d4,f4,g#4]@3 ~ [d4,f4]@3 ~ [a#3,d4,f4]@3 ~", AI: "~@8 [a#3,d#4,g4]@6 ~@2 [a#3,d#4,g4]@5 ~@3 [d#4,g4]@5 ~@3",
  AJ: "~@4 [a#3,d#4,g4]@3 ~ [a#3,d#4,g4]@7 ~", // D#
})).s("gm_tuba").gain(0.13).pan(0.4)

// chords · tuba · soft notes
const tuba_soft = note("<~@57 A B C ~@13 A B C D E F E G H@2 ~@45 I J ~@22>".pickRestart({
  A: "~@19 a#3@6 ~@2 [a#3,g#4]@5", B: "~@3 g#4@6 ~@23", C: "~@3 a#3@5 ~@24", D: "~@19 f#3@4 ~@4 f#3@3 ~@2",
  E: "~@3 f#3@5 ~@24", F: "~@3 e3@5 ~@11 f#3@4 ~@4 f#3@4 ~", G: "~@3 e3@5 ~@20 f#3@4",
  H: "[~@4 f#3@5 ~@12 e3@4 ~@4 e3@6 ~@3 [f#3,c#4]@8 ~@18]/2", I: "~@8 a#3@6 ~@2 [a#3,g#4]@6 ~@2 g#4@5 ~@3",
  J: "~@24 a#3@5 ~@3",
})).s("gm_tuba").gain(0.07).pan(0.4)

// chords · french horn
const french_horn = note("<~@76 A@7 ~@48 B C B C D E F G F H F I J K L@2 M@4 ~>".pickRestart({
  A: "[~@19 a3@2 ~@2 a3 ~@3 a3@2 ~@2 a3@2 ~@2 a3@4 ~@12 d4@15 ~ c#4@5 ~@11 a3@2 ~@2 a3@2 ~@2 a3@2 ~@2 a3@2 ~@2 a3@4 ~@12 d4@15 ~ c#4@5 ~@3 [a3,d4]@50 [g3,c#4]@16 ~@19, ~@51 a3@25 ~@39 a3@25 ~@84]/7", // D5 Gdim
  B: "~@8 e4@2 ~@2 e4@2 ~@2 [b3,e4] ~@3 [b3,e4] ~@3 [b3,e4]@2 ~@6, ~@8 b3 ~@3 b3 ~@19", // E5
  C: "~@24 d#4 ~@7, ~@8 [b3,e4]@19 ~@5", // E5
  D: "~@8 [b3,e4,b4] ~@3 [e4,b4] ~@3 [b3,e4] ~@3 [b3,e4,b4] ~@3 [b3,e4,b4] ~@7, ~@6 b3 ~ b4 ~@7", // E5
  E: "~@2 [c#4,b4]@4 a#4 ~, ~@8 d#3@19 ~@5, ~@12 c#4 ~@3", // C#7
  F: "~@4 b3 ~ b3 ~ b3 ~ b3 ~ [g#3,b3] ~@3, ~@8 g#3 ~@3 g#3 ~@3 g#3 ~@3 g#3 ~@11", G: "~@8 [a#3,c#4]@19 ~@5",
  H: "~@8 [a#3,c#4]@23 ~", I: "~@4 [b3,f#4]@9 ~@3", J: "[c#4,e4]@31 ~", K: "~ [b3,d#4]@31",
  L: "[~@4 [a#3,c#4]@35 ~@25]/2", M: "[~@29 [d#4,g#4]@90 ~@9]/4",
})).s("gm_french_horn").gain(0.26).pan(0.6)

// chords · trombone
const trombone = note("<~@98 A@3 B C B D E D F G H I J K L M ~@37>".pickRestart({
  A: "[~@9 e2@12 b1@11]/3", B: "e2", C: "b1", D: "d#2", E: "g#1", F: "~@8 [b3,d#4]@8 [b3,d#4]@11 ~@5",
  G: "~@8 [c4,e4]@8 [c4,e4]@8 [c#4,d#4]@7 ~", H: "~ [b3,d#4] [b3,d#4]@2", I: "~ [b3,d#4]@3", J: "~ [b3,e4,g#4]@3",
  K: "~ [b3,f4,g#4]@3", L: "~ [b3,e4,g#4]!2 [a#3,d#4,g4]", M: "[b3,e4,g#4] [a#3,d#4,g4]@3",
})).s("gm_trombone").gain(0.25).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@11 A ~@32 B ~ C ~ C ~ C ~ C ~ C ~ C ~ C ~ D E C E C E C E C E C E C E C E C E C E C F ~@16 G H ~ A@13 ~ I A I A I A
  I A I A I A I A I A I A I A I A I A I A I A J K L ~@4 M ~
>`.pickRestart({
  A: "x", B: "~@9 x ~@22", C: "~@11 x ~@20", D: "~@3 x ~@7 x ~@20", E: "~@7 x ~@3 x ~@20", F: "~@8 x ~@3 x ~@16 x ~@2",
  G: "~@27 x ~@4", H: "~@31 x", I: "x ~@6 x", J: "x ~@28 x ~@2", K: "~ x ~@30", L: "~ x ~@6", M: "~@7 x",
})).gain(0.79)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A ~@6 B ~@47 C ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ C E D@3 F ~@33 G ~ H ~ H ~ H ~ H ~ H ~ H ~ H ~ I H@12 ~@7 F ~
>`.pickRestart({
  A: "x!2 ~@30", B: "x", C: "~@23 x ~@3 x ~@4", D: "~@27 x ~@4", E: "~@3 x ~@3 x ~@19 x ~@4", F: "~@7 x", G: "~ x!7",
  H: "~ x", I: "~@3 x!2 ~ x!2",
})).gain(0.79)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@5 A ~ A ~ A ~@35 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B C D C D C D C D C D C D C D C D E F@3 G H ~@18 A ~ A ~ A ~ A ~ A ~ A
  ~ A ~@2 I ~ I ~ I ~ I ~ I ~ I ~ I ~ I ~ J@12 K L M N ~@5
// … 80 more lines

More by Zero