Strudelify

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

// chords · piano
const piano = note(`<
  A B C D E B F B E B C G A B H I J K L M N O K P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI@3 ~@37 AJ AK@7 AL@4
  AM@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: "~ g#3, f#2, ~ d3@3", E: "~@8 f#3@7 ~, f#2@15 ~, ~@4 c#3@11 ~",
  F: "~@16 a3@13 ~@3, f#2@29 ~@3, ~@8 d#3@21 ~@3", G: "~@16 g#3@13 ~@3, f#2@29 ~@3, ~@8 d3@21 ~@3",
  H: "~@16 a3@15 ~, f#2@31 ~, ~@8 d#3@23 ~", I: "~ a#3, f#2, ~ e3@3", J: "~ b3, b2, ~ f#3@3",
  K: "~@16 c#4@15 ~, a#2@31 ~, ~@8 f#3@23 ~", L: "~ d4, a2, ~ f#3@3", M: "~@4 f#4@3 ~, g#2@7 ~, ~@2 f#3@5 ~",
  N: "b3 ~@15 g3@14 ~@2, e2@15 ~, ~@4 b2@11 ~", O: "~@16 c#4@13 ~@3, a2@29 ~@3, ~@8 e3@21 ~@3",
  P: "~@16 d4@15 ~, b2@31 ~, ~@8 f#3@23 ~", Q: "~@16 b3@15 ~, g2@31 ~, ~@8 d3@23 ~",
  R: "~@4 f#4@3 ~, g2@7 ~, ~@2 d3@5 ~", S: "~@3 b3, g2@29 ~@3, ~@8 d3@21 ~@3, ~@16 f3@13 ~@3",
  T: "~@4 a#3@3 ~, f#2@7 ~, ~@2 e3@5 ~", U: "~@16 b3@15 ~, b2@31 ~, ~@8 f#3@23 ~",
  V: "~@8 c#4@7 ~, b2@15 ~, ~@4 g3@11 ~", W: "~@16 d4@15 ~, b2@31 ~, ~@8 g#3@23 ~", X: "~ d#4, b2, ~ a3@3",
  Y: "~ e4, e3, ~ b3@3", Z: "~@16 f#4@15 ~, d#3@31 ~, ~@8 b3@23 ~", AA: "~ g4, d3, ~ b3@3",
  AB: "~@4 b4@3 ~, c#3@7 ~, ~@2 b3@5 ~", AC: "~ c4, a2@31 ~, ~ e3@3", AD: "~@16 d#4@13 ~@3, b2@7 ~, ~@2 f#3@5 ~",
  AE: "~@16 e4@9 ~@7, c3@13 ~@3, ~@4 g3@9 ~@3", AF: "~@16 d4@9 ~@7, b2@3 ~, ~@8 g3@17 ~@7",
  AG: "~@4 c4@3 ~, a2@29 ~@3, ~@8 e3@21 ~@3", AH: "~@17 a3@11 ~@4, ~ f#2@28 ~@3, ~@9 e3@19 ~@4",
  AI: "[~@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
  AJ: "~@23 f#3@8 b3, ~@15 b2@13 ~@4",
  AK: "[~@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",
  AL: "[~@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",
  AM: "[~@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@2 R@4 S@4 T@7 ~@5 U@7 V@4 W@6 ~@3 X Y@2 Z@2 ~@8 AA AB AC AD AA
  AE AF@3 AG AH AI AJ AK AL@2 AA AB AM AN AA AE AO@2 AP AQ AP AR AS AT@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]@21]/2", // C# B
  R: "[~@3 [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]/4", // A G# C# B C# B
  S: "[~@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
  T: "[~@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
  U: "[~@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#
  V: "[~@7 [a3,a4]@8 [b3,b4]@27 ~@5 [g3,g4]@31 ~ f#4@32 e4@17]/4", // A B G
  W: "[~@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
  X: "~@3 [b3,b4,b5]", // B
  Y: "[[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#
  Z: "[[g#4,g#5,g#6]@43 ~@21]/2", AA: "~ [c#5,c#6]", AB: "[b4,b5]@3 [a4,a5]", AC: "[g#4,g#5]@10 ~@6 [c#5,c#6]@15 ~",
  AD: "[b4,b5]", AE: "[b4,b5]@3 [a#4,a#5]", AF: "[[g#4,g#5]@16 [d#5,d#6]@51 ~@13 [e5,e6]@16]/3",
  AG: "[d#5,d#6]@3 [c#5,c#6]", AH: "[b4,b5]@9 ~@7 [e5,e6]@16", AI: "[d#5,d#6]@13 ~@3", AJ: "[c#5,c#6]", AK: "[d5,d6]",
  AL: "[[d#5,d#6]@57 ~@7]/2", AM: "[g#4,g#5]@3 ~@5 [c#5,c#6]@8", AN: "[b4,b5]@31 ~",
  AO: "[[g#4,g#5]@8 [d#5,d#6]@23 ~]/2", AP: "~ [c#5,e6]", AQ: "[b4,d#6]@13 ~@3", AR: "[b4,d#6] ~",
  AS: "[c#5,c#6]@24 ~ [d#5,d#6]@7", // C# D#
  AT: "[~ [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 P M Q R S T U@2 I J I V L W N O N M Q X S T Y@2 Z@2 AA@2 AB@2 ~@7 AC@7 ~@18 AD
  AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS ~@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]@6 ~@10 [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@5", // G#m C#dim
  Q: "~@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
  R: "~@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
  S: "~@3 [g#3,c#4,e4]@5 ~@11 [d4,f4,g#4]@6 ~@2 [d4,f4]@5", // C#m Ddim Dm
  T: "~@3 [a#3,d4,f4]@6 ~@10 [a#3,d#4,g4]@6 ~@2 [a#3,d#4,g4]@5", // A# D#
  U: "[~@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
  V: "~@3 [a3,b3,d#4]@5 ~@11 [g#3,b3,e4]@5 ~@3 [g#3,b3,e4]@5", // B7 E
  W: "~@3 [g3,c#4,d#4]@5 ~@11 [g#3,b3,d#4]@6 ~@2 [g#3,b3,d#4]@5", // D#7 G#m
  X: "~@3 [f#3,b3,d#4,f#4]@5 ~@11 [g#3,c#4,e4]@5 ~@3 [g#3,c#4,e4]@5", // B C#m
  Y: "[~@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
  Z: "[~@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
  AA: "[~@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
  AB: "[~@4 [a3,d4]@5 ~@12 [a3,d4]@4 ~@4 [a3,d4]@6 ~@3 a#3@8 ~@18]/2", // D5
  AC: "[~@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
  AD: "~@8 [g#3,b3,e4]@5 ~@3 [g#3,b3,e4]@6 ~@2 [g#3,b3,e4]@5 ~@3", // E
  AE: "~@4 [a3,b3,e4]@3 ~ [a3,b3,e4]@3 ~ [a3,b3,d#4]@3 ~", // Asus2 B7
  AF: "~@8 [g#3,b3,e4]@6 ~@2 [g#3,b3,e4]@6 ~@2 [g#3,b3,e4]@5 ~@3", // E
  AG: "~@8 [a3,b3,e4]@6 ~@2 [a3,b3,e4]@6 ~@2 [a3,b3,d#4]@5 ~@3", // Asus2 B7
  AH: "~@4 [g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4]@2 ~@2", // E
  AI: "~@4 [g3,c#4,e4]@3 ~ [g3,c#4,e4]@3 ~ [g3,c#4,d#4]@3 ~", // C#dim D#7
  AJ: "~@8 [g#3,b3,d#4]@6 ~@2 [g#3,b3,d#4]@6 ~@2 [g#3,b3,d#4]@5 ~@3", // G#m
  AK: "~@8 [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@6 ~@2 [g3,c#4,d#4]@7 ~", // C#dim D#7
  AL: "~@4 [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@3 ~", // G#m
  AM: "~@8 [g3,c#4,e4]@6 ~@2 [g3,c#4,e4]@7 ~ [g3,c#4,d#4]@6 ~@2", // C#dim D#7
  AN: "~@4 [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@2 ~@2", // G#m
  AO: "~@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
  AP: "~@8 [g#3,c#4,e4]@5 ~@3 [g#3,c#4,e4]@6 ~@2 [g#3,c#4,e4]@5 ~@3", // C#m
  AQ: "~@4 [d4,f4,g#4]@3 ~ [d4,f4]@3 ~ [a#3,d4,f4]@3 ~", AR: "~@8 [a#3,d#4,g4]@6 ~@2 [a#3,d#4,g4]@5 ~@3 [d#4,g4]@5 ~@3",
  AS: "~@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 D E F G H I J@2 ~@45 K L ~@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: "~@3 a#3@4 ~@25",
  E: "~@19 f#3@4 ~@4 f#3@3 ~@2", F: "~@3 f#3@5 ~@24", G: "~@3 e3@5 ~@11 f#3@4 ~@4 f#3@4 ~", H: "~@3 f#3@4 ~@25",
  I: "~@3 e3@5 ~@20 f#3@4", J: "[~@4 f#3@5 ~@12 e3@4 ~@4 e3@6 ~@3 [f#3,c#4]@8 ~@18]/2",
  K: "~@8 a#3@6 ~@2 [a#3,g#4]@6 ~@2 g#4@5 ~@3", L: "~@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 D E F G H I J K L M N O P@2 Q@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@3 ~@13 d4@16 c#4@5 ~@3 [a3,d4]@50 [g3,c#4]@16 ~@19, ~@51 a3@25 ~@39 a3@24 ~@85]/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] ~@3 e4@2 ~@2 [b3,e4] ~@3 e4@2 ~@2 e4@2 ~@6, ~@12 b3 ~@7 b3 ~@3 b3 ~@7", E: "~@4 [b3,e4]@8 d#4 ~@3",
  F: "~@8 [b3,e4,b4] ~@3 [e4,b4] ~@3 [b3,e4] ~@3 [b3,e4,b4] ~@3 [b3,e4,b4] ~@7, ~@6 b3 ~ b4 ~@7", // E5
  G: "~@2 [c#4,b4]@4 a#4 ~, ~@8 d#3@19 ~@5, ~@12 c#4 ~@3", // C#7
  H: "~@4 b3 ~ b3 ~ b3 ~ b3 ~ [g#3,b3] ~@3, ~@8 g#3 ~@3 g#3 ~@3 g#3 ~@3 g#3 ~@11", I: "~@8 [a#3,c#4]@19 ~@5",
  J: "~@8 [g#3,b3]@2 ~@2 b3@2 ~@2 b3@2 ~@2 [g#3,b3]@2 ~@2 [g#3,b3]@3 ~@5, ~@12 g#3 ~@3 g#3 ~@15", // G#m
  K: "~@8 [a#3,c#4]@23 ~", L: "~@4 b3 ~ b3 ~ [g#3,b3] ~ [g#3,b3] ~ [g#3,b3] ~@3, ~@8 g#3 ~@3 g#3 ~@19",
  M: "~@4 [b3,f#4]@9 ~@3", N: "[c#4,e4]@31 ~", O: "~ [b3,d#4]@31", P: "[~@4 [a#3,c#4]@35 ~@25]/2",
  Q: "[~@29 [d#4,g#4]@90 ~@9]/4", // G#5
})).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({
// … 96 more lines

More by Zero