Strudelify

Finalmente tu

Fiorello

KeyC majorTempo131 bpm
0:00/0:00
// Finalmente tu — Fiorello
// 131 bpm, 4/4, key C 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: Full arrangement: all 147 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(131/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(`<
  ~@16 A B@2 C D E F G H I J@2 K E L M@2 N O P D Q F R S T U V W F X Y Z Q AA AB AC AD AE AF AG Q AH AI AJ AK AL AM AN Q
  E AO AP F AF AQ AR AS@2 I J@2 K E L M@2 N O P D Q F R S T U V W F X Y Z Q AA AB AC AD AE AF AG Q AH AI AJ AK AL AM AN
  Q E AO AP AT AU R AV Q AH AI AJ AK AL AW AX Q E AO AP F AF AY@2 AZ BA BB@4 ~@2
>`.pickRestart({
  A: "g1@3 a1@3 b1@2", B: "[c2@31 ~]/2", C: "b1", D: "c2 e1", E: "f1@13 ~ f1 ~", F: "d1@13 ~ d1 ~", G: "g1@13 ~ d2 ~",
  H: "g2@10 f#2 f2 e2 [d2,d#2] c#2 c2", I: "c1@14 g1 ~", J: "c2@15 ~", K: "c2@5 e1@3", L: "d1@15 ~",
  M: "[g1@11 a1@3 b1@2]/2", N: "c2@12 ~@2 c2 ~", O: "c1@13 ~ c2@2", P: "b1@13 ~ b1@2", Q: "f1@12 ~@2 f1 ~",
  R: "g1@7 d2", S: "g2@15 ~", T: "f2@14 f1 ~", U: "f1@13 ~ f1@2", V: "e1@13 ~ e1@2", W: "f1 e1", X: "g1@12 ~@2 g1 ~",
  Y: "c2", Z: "c1 c2", AA: "g1@15 ~", AB: "c2 b1", AC: "a1", AD: "d2@12 ~@2 a1 ~", AE: "d2@15 ~", AF: "g1",
  AG: "~@2 c1@6 d1@4 e1@3 ~", AH: "f1", AI: "e1@15 ~", AJ: "f1@3 e1", AK: "d1@13 ~ d1@2", AL: "g1@13 ~ g1 ~",
  AM: "c2@13 ~ c2 ~", AN: "c2 c1", AO: "e1@13 ~ e1 ~", AP: "f1@15 ~", AQ: "c1", AR: "c2 c3", AS: "c3/2",
  AT: "d1@12 ~@2 d1 ~", AU: "d1", AV: "g2 g1 g2 a2@2 g2@3", AW: "c2@13 ~ g2 ~", AX: "c3 a#2 g2 a#2 a2 g2 e2 c2",
  AY: "[c2@18 c4@2 b3@2 c4@4 b3@3 g3@3]/2", AZ: "a3@13 ~ c4@2", BA: "b3@3 g3@3 d3@2", BB: "[c3@25 ~@7]/4",
})).s("gm_electric_bass_finger").gain(0.41)

// chords · piano
const piano = note(`<
  ~ A@2 B@2 A@2 C@2 D@2 E F G H I@2 J K L M N O P Q R S T U V H I@2 J K L W N O X@2 Y Z AA AB AC AD AE AF AG AH AI AJ@3
  AK AL AM@2 AN AO AP AQ AE AF AR AS AT AU AV AW AX@2 AY AZ R S T U V H I@2 J K L W N O BA@2 BB Z AA AB AC AD AE AF AG
  AH AI AJ@3 AK AL AM@2 AN AO AP AQ AE AF AR AS AT BC@3 AK BD AM@2 AN AO AP AQ AE AF AR AS AT AU AV AW AX@2 AY BE BF@4
  ~@2
>`.pickRestart({
  A: "[~@5 e5@3 ~@6 c5@2, [c3,c4], g4@3 [g4,d5]@5 g4@3 [g4,d5]@5, ~ c5@7 ~ c5@5 ~@2, ~@2 e5@3 ~@5 e5@3 e5@3]/2", // C G5
  B: "[~@5 e5@3 ~@6 c5@2, [c3,c4], g4@3 [g4,d5]@5 g3@8, ~ c5@7 g4@2 e5 [g4,d5]@5, ~@2 e5@3 ~@4 c5@4 e5@3]/2", // C G5
  C: "[~@5 e5@3 ~@6 c5@2, [c3,c4], g4@3 [g4,d5]@5 f3@8, ~ c5@7 g4@2 e5 [g4,d5]@5, ~@2 e5@3 ~@4 c5@4 e5@3]/2", // C G5
  D: "[~@5 g3@3 ~@5 f4@3, c2@10 a3 c4@5, ~ g2@15, ~ c3@3 c3@4, ~@3 e3@5 ~ f3@7]/2",
  E: "g3@2 ~@3 g4@3, [g2,c3,d3,d4], ~ g3@3, ~@3 b3@5", // Gsus4
  F: "~ e4@2 g3@2 g3 [b2,g3,b3,d4]@2, d4@3 ~, [c3,g3,c4]@3 [c3,c4,e4]@3 ~@2", G: "e3@5 [e3,a3]@3, [a2,g3,c4]",
  H: "~@5 e4@3, [d3,a3,c4,f4]", // Dm7
  I: "[g3@3 ~@5 [g3,b3]@3 [a2,g3,c4]@3 [b2,g3,d4]@2, d4 ~, g2@7 g2@4 ~@5, c4@5 c4@3 ~@8, ~@3 g3@5 ~@8]/2", // G Am7 G
  J: "~@5 g4@3, [c3,g3,c4,e4], ~ c5@2 c5@5, ~ b4@3", K: "~@7 a4, [c3,c4,g4], ~ a4@13 ~@2, ~@3 f4@5",
  L: "~@5 f4@3, [b2,b3,g4], ~ d4@3, ~@3 e4@5", M: "~@3 d4, g3, [c3,c4,f4] e2, ~@3 e4@5",
  N: "f3!2 ~ a3, [f2,a3,c4] [c4,g4], ~@2 a3 ~, ~@5 f2@3", O: "~@5 c4@3, [a3,f4], d2!2, ~ e4@3, ~@3 d4@5",
  P: "g3@2 ~@3 g3 g3@2, d4@5 ~@3, g2!2, c4@3 c4@2 [c4,d4]@3, ~@2 g3@3 ~@3", Q: "[g2,g3,b3,d4]",
  R: "g3@3 ~@7 g3@2 g3@4, e4@5 ~@3, c3!2, c4@3 c4@2 [c4,e4]@3, ~@2 g3@3 ~@3", // C
  S: "~@5 a3 a3@2, f4@5 ~@3, c4@3 c4@2 [c4,f4]@3, a3@2 a3@3 ~@3, ~ c3@3 c3@4", // F5
  T: "~@5 b3 ~ c3, g4@5 ~@3, d4@3 d4@2 [d4,g4]@3, b3@2 b3@3 ~ b3@2, ~ c3@3 c3@3 ~", // G5
  U: "~ e4@2 [c3,g3,c4,e4]@2 [e2,g3,b3,d4]@3, d4@5 ~@3, [c3,g3,c4]@3 ~@5", V: "f3!2 ~ f2, [f2,c4] [f3,a3], ~@5 c3@3",
  W: "~@5 d4@3, g3, [c3,c4,f4] e2, ~@3 e4@5", // F5
  X: "[g3@4 ~@6 g3@2 ~@4 g3 ~@5 [g2,g3,c4]@6 [g2,g3,d4]@4, g1@7 g1@3 g1@6, d4@4 g2@4 [g2,b3]@3 ~@5, g2@3 c4@2 d4@3 ~@8, c4@2 g3@3 ~ g3@2 ~ g3@2 ~@5]/2", // C5 G5 G
  Y: "a3@2 ~@3 f4@3, f3, f2!2, c4@3 c4@5, ~ a3@3", Z: "b3@2 ~@3 g4@3, g3, f2!2, d4@3 d4@5, ~ b3@3",
  AA: "g3@2 ~@3 g3 ~ e2, d4@5 ~@3, e2@4 e2@3 ~, b3@3 b3@2 [b3,d4]@3, ~@2 g3@3 ~ g3@2", // Bm
  AB: "g3!2 ~ e4, [f2,a3,c4,f4] [e2,g3,a3,c4,f4]", // F Fmaj7
  AC: "c4@2 ~@3 c4 ~ d2, a4@5 ~@3, d2@4 d2@3 ~, f4@3 f4@2 [f4,a4]@3, ~@2 c4@3 ~ c4@2", // F
  AD: "~@5 b3 ~ g2, g4@5 ~@3, d4@3 d4@2 [d4,g4]@3, b3@2 b3@3 ~ b3@2, ~ g2@3 g2@3 ~", // G5
  AE: "g3@2 ~@5 e4, e4@7 ~, c3!2, c4@3 c4@3 c4@2, ~@2 g3@3 g3@3",
  AF: "~@3 f4 ~@3 g4, c3!2, f4@3 ~ g4@3 ~, ~ a#3@3 ~ c4@3, ~ d4 ~ e4",
  AG: "c4@2 ~@3 c4 ~ f2, a4@5 ~@3, f2@4 f2@3 ~, f4@3 f4@2 [f4,a4]@3, ~@2 c4@3 ~ c4@2", // F
  AH: "d4 ~@3 g4@2 ~@6 [d4,g4,d5]@4, b4, g4@2 ~ c5@5, ~ g2@4 g2@3, ~ d4@2 [d4,g4]@3 ~@2", // G5
  AI: "e4@2 ~ c3 g4@2 ~ g5, [g4,c5]@2 ~ g4, c3@3 ~ [b2,b4,d5]@4, ~ e4 ~@2", // C5 Bm
  AJ: "[~@8 f5@7 ~@5 a4@2 ~@10 a3 ~ a3@4 ~@4 d3@2 [c4,f4,a4]@4, [a2,a4,c5,g5]@15 f4@2 ~ f4@4 [f4,a4]@6 [f4,a4,c5]@4 [c4,f4]@7 ~@9, ~@6 f5@2 ~@7 a4@5 ~@2 e5@10 ~@6 [c4,e4,g4]@6 ~@4, ~@7 e5@9 f5@16 ~@16, ~@16 d3@10 d3@4 d3@11 ~@7]/3", // F Am7 F F5 C
  AK: "c4@2 ~@3 c4 ~ g2, g4@5 ~@3, g2@4 g2@3 ~, d4@3 d4@2 [d4,g4]@3, ~@2 c4@3 ~ c4@2", // G5
  AL: "[g2,c4,d4,g4] ~ [c2,g3,c4,e4]@6 [d2,a3,c4,f4]@4 [e2,c4,e4,g4]@4", // Gsus4 C Dm7 C
  AM: "[c4@2 ~@3 c4 ~@2 d4@3 ~@2 b3 ~ f3, a4@5 ~@11, f3@4 f3@3 f3@5 f3@3 ~, f4@3 f4@2 [f4,a4]@3 ~@3 d4@2 [d4,g4]@3, ~@2 c4@3 ~ c4@2 [b3,g4]@5 ~ b3@2]/2", // F G5 Em
  AN: "b3@2 ~@3 b3 ~ e3, g4@5 ~@3, e3@4 e3@3 ~, d4@3 d4@2 [d4,g4]@3, ~@2 b3@3 ~ b3@2", // G5
  AO: "a3!2 [f3,a3,c4,f4] [e3,a3,c4,e4], [f3,c4,f4] ~", // F Am F5
  AP: "a3@2 ~@3 a3 ~ d3, f4@5 ~@3, d3@4 d3@3 ~, c4@3 c4@2 [c4,f4]@3, ~@2 a3@3 ~ a3@2", // F5
  AQ: "~@2 b3 ~@2 b3 ~ g3, g4@5 ~@3, d4@3 ~@2 [d4,g4]@3, b3@2 ~ [b3,d4]@2 ~ b3@2, ~ g3@3 g3@3 ~", // G5 Bm
  AR: "c4@2 ~@3 c4 c4@2, a4@5 ~@3, f3!2, f4@3 f4@2 [f4,a4]@3, ~@2 c4@3 ~@3", // F
  AS: "[d4,g4] ~@3 g4@2 ~@6 [d4,g4,d5]@4, b4@3 ~, f3@5 f3@3, ~ d4@2 [d4,g4,c5]@3 ~@2", // G5 Csus2
  AT: "g4@2 ~@3 g4 ~ e3, e5@5 ~@3, e3@4 e3@3 ~, c5@3 c5@2 [c5,e5]@3, ~@2 g4@3 ~ g4@2", // C
  AU: "~@2 a4@4 ~@6 f3@3 ~, c5@15 ~, [f3,g4]@6 f4@9 ~, ~@3 f3@3 ~@2, ~@10 c4@5 ~", // Fsus2
  AV: "a3@2 ~@5 d3, f4@5 ~@3, d3@4 d3@3 ~, c4@3 c4@2 [c4,f4]@3, ~ a3@2 a3", // F5
  AW: "~@7 g3, g3@7 ~, c4@3 b3@5, ~ d4@2 ~@3 c4@2, ~ g4@3",
  AX: "[~ c6 b5 c6@2 e5@2 d5@2 g5@2 [g4,e5]@4 ~, c3, ~ g5@4 g4@4 ~@7, ~@10 d5 ~@7 d5 ~@3 d5 ~@9]/2", // C
  AY: "~@3 c5@5, f3@15 ~, ~ c4@7, ~ f4@3", AZ: "~@2 b4@4 g4@9 ~, g3, ~@2 d4@13 ~",
  BA: "[g3@4 ~@6 g3@2 ~@4 g3 ~@7 [a1,b1,c2] [d2,e2,f2] [g2,a2,b2] [c3,d3,e3] [f3,g3,a3] [b3,c4,d4] [e4,f4,g4] [a4,b4], g1@7 g1@3 g1@6, d4@4 g2@4 [g2,b3]@3 [g2,c4]@2 ~@3, g2@3 c4@2 d4@3 ~@8, c4@2 g3@3 ~ g3@2 ~ g3@2 g3@3 ~@2]/2", // Am Dm G C F Bm Em Asus2 …
  BB: "a3@2 ~@3 f4@3, f3, f2!2, c4@3 c4@5, c5 ~@3 a3@12",
  BC: "[~@2 a4@4 ~@6 f3@3 ~@5 a4@2 ~@10 a3 ~ a3@4 ~@4 d3@2 [c4,f4,a4]@4, c5@15 a4@5 ~@2 e5@10 ~@16, [f3,g4]@6 f4@9 f4@2 ~ f4@4 [f4,a4]@6 [f4,a4,c5]@4 [c4,f4]@6 [c4,e4,g4]@6 ~@4, ~@3 f3@3 ~@2 d3@5 d3@2 d3@6 ~@3, ~@10 c4@5 ~ f5@16 ~@16]/3", // F Fsus2 F F5 C
  BD: "[c4,d4,g4] ~ [g3,c4,e4]@5 ~ [a3,c4,f4]@3 ~ [c4,e4,g4]@4, g2 ~@7", // Csus2 C F C
  BE: "~ b4@2 ~@2 g3@3, g3@5 ~@3, ~ d4@4 d4@2 ~, ~@6 g4@9 ~",
  BF: "[c2@3 ~@20 g5@32 ~@9, ~@3 g2@10 e4@32 ~@19, ~@5 c3@11 g4@32 ~@16, ~@2 d3@3 c5@8 ~@3, ~@5 e3@16 ~@11]/4",
})).s("gm_piano").gain(0.39).pan(0.6)

// other · alto sax
const alto_sax = note("<~@20 A B C D@2 ~@46 E@4 ~@72>".pickRestart({
  A: "~@2 e4 d4", B: "c4", C: "a4", D: "[g4@11 ~@5]/2", E: "[c5@26 b4@4 g4@11 ~ g4@2 a4@2 c5@4 b4@4 g4@4 d4@5 ~]/4",
})).s("gm_alto_sax").gain(0.54)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@44 A B C D ~@2 E@3 ~@22 F@4 ~@2 G H I ~@10 A B C J K L E@3 ~@35 M ~@8
>`.pickRestart({
  A: "~@2 [d4,f4] [e4,g4]", B: "[f4,a4]@13 ~@3", C: "[d4,g4]@2 b3 d4", D: "e4@11 ~@5",
  E: "[~@16 g4@7 ~ g4@6 ~@2 g4@6 f4 e4 f4@8, ~@15 [c4,e4]@8 [b3,d4]@6 ~@2 [a3,c4]@7 ~@10]/3", // C Bm Am
  F: "[~@10 c5@12 ~@4 c5@12 ~@4 d5@5 ~ [g4,c5]@16, ~@6 g4@15 ~ f4@14 ~@2 g4@8 ~ e4@14 ~@3]/4", G: "~@3 c4@2 g4@3",
  H: "b3@3 c4@3 d4@2", I: "e4@15 ~", J: "e4@5 d4 e4 f4", K: "g4 d5 c5 a#4", L: "a4@7 ~", M: "~ c5 ~@6",
})).s("gm_acoustic_guitar_nylon").gain(0.25).pan(0.1)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note("<~@138 A@2 ~@3 B@4>".pickRestart({
  A: "[~@2 b4 c5@2 g4@5 f4 c4@4 ~]/2", B: "[~@3 c5@53 ~@8, ~ [c3,c4]@54 ~@9, ~@2 [e4,g4]@53 ~@9]/4",
})).s("gm_acoustic_guitar_nylon").gain(0.13).pan(0.1)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  A B@4 C@4 D E F@6 G@2 H@2 I J@3 K@2 L M N@2 O@2 P Q R S T@2 U@2 V W@3 X@3 Y V Z@2 AA AB@2 AC@2 V AD@2 AE@2 AF@2 AG AH
  AI@4 AJ AK@3 AL AM@2 AN@4 AO@2 ~ E AN@4 AO@2 ~ W@3 X@3 Y V AP AQ AR AS@2 AT AU AV AD@2 AW@2 AX@2 AY AZ BA@3 BB@2 BC@2
  BD BE BF@2 BG BH@3 BI BJ BK@2 BL@2 BM@2 ~@8
>`.pickRestart({
  A: "e4@3 d4@2 e4 c4@2", B: "[c4!2 c4!2 f4@4, c5, g4 ~]/4",
  C: "[~@8 e4@3 d4@2 e4 c4@2 c4@4 c4@4 c4@4 c4@4, c5, g4 f4]/4", D: "[g3,e4], c4 ~@15", E: "[a3,f4]",
  F: "[[b3,d4]@8 ~@16 f4@8 c4@8 b3@3 c4@3 [b3,d4]@2, g3 a4 g4, ~@8 [c4,e4]@16 d4@19 ~@5]/6", // Bm C
  G: "[[e4,g4] [f4,a4], c4]/2", H: "[[b3,d4]@8 f4@3 e4@5, g4, ~ c4]/2", I: "[f3,a3,c4]",
  J: "[[f4,a4] c4 b3, d4, ~ g4@2]/3", K: "c5/2", L: "b4", M: "c5@5 b4@3", N: "a4/2", O: "g4/2", P: "g5", Q: "a5",
  R: "b5", S: "c6@5 b5@3", T: "a5/2", U: "[[d5,g5,c6]@31 ~]/2", V: "[c4,f4,a4]", W: "[d4@2 e4@2 a4 e4, g4, b4@2 c4]/3",
  X: "[[f4,a4] b4 [c4,e4], d4@2 ~, ~ g4@2]/3", Y: "[a#3,d4,f4] [c4,e4,g4]", Z: "[[d4,b4]@2 [c4,e4] [b3,d4], g4]/2",
  AA: "g4 f4, [a3,c4]", AB: "[f3,a3,c4]/2", AC: "[[g3,c4,d4]@9 [g3,c4,e4]@3 [a3,c4,f4]@2 [c4,e4,g4]@2]/2",
  AD: "[d4 e4, [g4,b4]]/2", AE: "[c4 d4, [f4,a4]]/2", AF: "[c5@2 b4@2 e4!2 g4 [g4,c5], g4@3 e4, d4 c4]/2",
  AG: "e5 f5 e5 d5, [a#3,d4,f4] [c4,e4,g4]", AH: "[f4,a4,c5]", AI: "[[d4,b4] e4 [f4,a4]@2, g4 ~, ~ c5@3]/4",
  AJ: "c5 b4, [d4,g4]", AK: "[[c4,e4,g4]@5 ~]/3", AL: "~@3 c4@3 d4@2", AM: "[e4 [a3,f4], c4, g3 ~@31]/2",
  AN: "[[b3,d4] c4 c4 [d4,f4], g4 a4, ~ e4@2 ~]/4", AO: "[c5 b4, [d4,g4]]/2",
  AP: "d4@8 d4 e4 f4 g4 a4 b4 c5 d5, b4@13 ~@3, g4@11 ~@5", AQ: "[c4,e4,e5] [b3,d4,g5]",
  AR: "g5@6 f5 e5 [f4,f5]@8, [a3,c4], g4 ~", // F Am
  AS: "[[f5,f6]@6 [e5,e6]@6 [f5,f6]@4 [f5,f6]@6 [c5,c6]@4 [a4,a5]@5 [d3,d4], [f3,a3,c4]]/2", // F E F C A D F
  AT: "[e3,d4,e4] [f3,f4] [g3,g4] [a3,a4] [b3,b4] [c4,c5] [d4,d5] [e4,e5] [f4,f5] [g4,g5] [a4,a5] [b4,b5] [c5,c6] [d5,d6] [e5,e6] [f5,f6], c4@5 ~@11, g3 ~@7", // E7 F G A B C D E …
  AU: "~ [g3,c4,e4]@3 [a3,c4,f4,g5,g6]@2 [c4,e4,g4,g5,g6]@2, [g5,g6] ~", AV: "[a4,f5]@7 a4, [c4,f4]",
  AW: "[[g4,a4,g5]@6 [a4,a5]@9 ~ d4@16, f4, c4 ~]/2", // Gsus2 A
  AX: "[c5@6 b4@10 [c4,e4]@4 [c4,c5]@2 [d4,d5]@2 [e4,e5]@2 [f4,f5]@3 [g4,g5]@3, g4@5 ~@3, d4 ~]/2", // C D E F G
  AY: "[a4,a5]@3 [a#4,a#5]@2 ~ [c5,c6]@2 [c5,c6]@8", AZ: "[f4,a4], c5 ~@15",
  BA: "[~@8 [c5,c6]@4 [d5,d6]@4 e4@16 ~@4 [a5,a6]@7 ~ [f5,f6]@2 [e5,e6]@2, g4@2 [f4,a4], [d4,b4] c5@2, ~@4 [g5,g6]@5 ~@3]/3", // C D A F E F G
  BB: "[d4@15 ~@5 [e5,e6]@4 [c5,c6]@4 [a4,a5]@4, [a3,f4]@31 ~, [f5,f6]@19 ~@13, ~@15 c4@16 ~]/2", // E C A Dm F
  BC: "[[g4,g5]@5 ~@3]/2", BD: "~@2 [c5,c6] ~@3 [c5,c6] ~@3 [c5,c6] ~@3 [c5,c6] ~",
  BE: "~@2 [d5,d6] ~@3 [b4,b5] ~@3 [g4,g5]@5 ~", BF: "[[g5,g6]@22 [f5,f6] [e5,e6] [f5,f6]@8]/2", BG: "[d5,d6]",
  BH: "[[g5,g6]@47 ~]/3", BI: "[f5,f6]", BJ: "[b4,b5]@3 [c5,c6]@3 [d5,d6]@2", BK: "[[g5,g6]@5 [a5,a6] [f5,f6]@2]/2",
  BL: "[[a5,a6]@3 [b4,b5]]/2", BM: "[[c5,c6]@7 ~]/2",
})).s("gm_string_ensemble_2").gain(0.24)

// other · taiko drum
const taiko_drum = note("<~@9 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@109>".pickRestart({
  A: "~@8 c2 ~@7",
})).s("gm_taiko_drum").gain(0.48)

// chords · synth strings 1
const synth_strings_1 = note("<~@2 A B@2 C@4 ~@114 D E@2 F@2 G@2 H I J@4 K L@3 ~@7>".pickRestart({
  A: "[c2,g2]", B: "[c2, g2 ~]/2", C: "[c2, g2 ~]/4", D: "[c4,f4,a4]", E: "[d4 e4, [g4,b4]]/2", F: "[c4 d4, [f4,a4]]/2",
  G: "[c5 b4 e4!2, g4, d4 c4]/2", H: "[a#3,d4,f4] [c4,e4,g4]", I: "[f4,a4,c5]",
  J: "[[d4,b4] e4 [f4,a4]@2, g4 ~, ~ c5@3]/4", K: "c5 b4, [d4,g4]", L: "[[c4,e4,g4]@5 ~]/3",
})).s("gm_synth_strings_1").gain(0.34)

// chords · pad choir
const pad_choir = note("<~@41 A@3 B@2 ~@3 C@3 ~@22 D E F G H ~@12 A@3 B@2 ~@3 C@3 ~@45>".pickRestart({
  A: "[g4,d5]/3", B: "[[f4,c5]@3 ~]/2", C: "[[g4,d5]@15 ~]/3", D: "[d4,g4,c5]@15 ~", E: "~@6 g4 ~@3 c5 ~@5",
  F: "~@6 f4 ~@3 c5 ~@5", G: "~@6 g4 ~@3 d5 ~@5", H: "[g4,c5] ~@15",
})).s("gm_pad_choir").gain(0.14)

// chords · glockenspiel
const glockenspiel = note(`<
  ~ A B A B A C D E ~@7 F G ~@5 H@2 ~@7 F G ~@5 I J ~@14 K L ~@25 F G ~@5 I J ~@14 K L ~@40
>`.pickRestart({
  A: "g7 ~ c8 ~ e8 ~ d8 ~@3 e8 ~@5", B: "g7 ~ c8 ~ e8 ~ d8 ~@3 e8 ~ c8 ~@3",
  C: "g7 ~ c8 ~ e8 ~ [c8,d8] ~@3 e8 ~ c8 ~@3", D: "g7 ~ c8 ~ [g7,e8] ~ d8 ~ f7 ~ e8 ~ e7 ~@3",
  E: "[f7,g7] ~ c8 ~ e8 ~ d8 ~@3 e8 ~ c8 ~@3", F: "~@6 [c7,e7] ~@5 [b6,d7] ~@3", G: "[c7,e7] ~@15",
  H: "[~@2 a7 b7 [c#8,d#8] [e8,f#8] [c#8,g#8] [e7,a8,b8] [f#7,g#7,c#9] a7 [b7,f#8] [c#8,d#8,e8] e8 [c#8,f#8,g#8] [d#8,e8,a8] [b7,f#8] g#8 [e7,f#8,a8] [f#8,b8] ~ [e7,d#9] [f#7,f#8] [g#7,a7]!2 [b7,c#8] ~@7, ~@3 e7@2 b7@2 d#8@2 g#8@2 ~@2 f#7@3 ~ d#8@2 [a8,c#9]@2 ~@11, ~@4 f#7@2 ~@2 e8@2 ~@2 e7@3 c#8@3 g#8@3 b7@2 ~ e7@5 ~@3]/2", // C#sus2 Esus2 C#5 Esus4 F#sus2 B5 C#m C#sus4 …
  I: "g5@2 c6 ~ d6@2 g6@2 c7@2 d6@2 g6@2 c7 ~", J: "g6 ~ c7 ~ d7@2 g7 ~ d7@2 c7@2 d7@2 g7 ~",
  K: "c5@2 d5 ~ g5@2 c6@2 d6@2 g6@2 c7@2 d7 ~", L: "g7 ~@15",
})).s("gm_glockenspiel").gain(0.2).pan(0.7)

// chords · glockenspiel · soft notes · Esus2 Asus2 C#sus2
const glockenspiel_soft = note(`<
  ~@23
  [~ f#7 g#7 ~@13]
  [~@8 d#8!2 [e8,f#8] g#8 [a8,b8] c#9 [c#9,d#9] ~, ~@5 b8 g#8 b7, ~@13 f#8@2 ~]
  [c#8@2 b8 ~@13]
  ~@121
>`).s("gm_glockenspiel").gain(0.14).pan(0.7)

// other · french horn
const french_horn = note("<~@8 A@2 ~@137>".pickRestart({
  A: "[g4@15 ~]/2",
})).s("gm_french_horn").gain(0.54)

// drums · kick
const kick = s("bd").struct(`<
  ~@25 A@3 B A@3 C A@3 B A@3 C A@3 B A@3 B A@3 B A@3 D E A F@3 E@2 G E A F@3 E A ~ A ~ E A E B E A E C E A E B E A E C E
  A E B E A E G E A E B E A B D E A F@3 E@2 H E A F@2 E A I J E A F@3 E@2 H E A F@2 I J A ~@9
>`.pickRestart({
  A: "x", B: "x ~ x ~@2 x ~@2", C: "x!2 ~ x", D: "~ x ~@2 x ~@3", E: "x ~@6 x", F: "x ~@2 x", G: "x ~@2 x ~@2 x ~",
  H: "x ~@2 x ~@4", I: "x ~@2 x ~@3 x", J: "~@3 x ~@4",
})).gain(0.48)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@25 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@18 A ~@74
>`.pickRestart({
  A: "~@7 x",
// … 90 more lines

More by Fiorello