Strudelify

San Martino

Fiorello

KeyA majorTempo128 bpm
0:00/0:00
// San Martino — Fiorello
// 128 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 133 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(128/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.

// chords · synth bass 1
const synth_bass_1 = note(`<
  A@8 B@6 C@4 D@8 E@8 C@4 D@8 F@3 G H@2 I J H@2 I J H@2 I G H@2 K L M@2 K L M@2 N K O@2 ~@8 P Q R@2 P S R@2 P S R@2 P Q
  R@2 P Q R@2 P S R@2 P S R@2 P Q R@2 P Q R@2 P S R@2 P S R@2 P Q R@2 T
>`.pickRestart({
  A: "[~@127 a4, d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4, ~ a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 ~]/8",
  B: "[~@95 f#4, d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 a3 d4 a4 d4 a3 d4 a4 d4 a3 d4 a4 d4 a3 d4 a4 d4 b3 e4 b4 e4 b3 e4 b4 e4 b3 e4 b4 e4 b3 e4 b4 e4, ~ a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 ~]/6",
  C: "[~@63 d4, f#4 b4 f#5 b4 f#4 b4 f#5 b4 f#4!2 c#5 f#5 b4 f#4!2 c#5 g3 c4 g4 c4 g3 c4 g4 c4 a3 d4 a4 d4 a3!2 d4 e4, ~ c#5@2 f#4@2 f#4@2 f#5@2 c#5@2 f#4@2 f#4@2 c#5@2 f#5@2 b4@2 f#4@2 f#4@2 c#5@2 f#5@2 b4@2 f#4@2 d4@2 g3@2 g3@2 d4@2 d4@2 g3@2 g3@2 d4@2 e4@2 a3@2 a3@2 e4@2 a4@2 e4@2 a3@2 ~]/4",
  D: "[~@127 d4, d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 b3 e4 b4 e4 b3 e4 b4 e4 f#3 b3 f#4 b3 f#3 b3 f#4 b3 b3 e4 b4 e4 b3 e4 b4 e4 b3 e4 b4 e4 b3 e4 b4 e4 g3 c4 g4 c4 g3 c4 g4 c4 f#3 a3 f#4 a3 f#3 a3 f#4 a3, ~ a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 f#4@2 c#4@2 f#3@2 f#3@2 c#4@2 c#4@2 f#3@2 f#3@2 c#4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 f#4@2 d4@2 g3@2 g3@2 d4@2 d4@2 g3@2 g3@2 d4@2 d4@2 f#3@2 f#3@2 d4@2 d4@2 f#3@2 f#3@2 ~]/8",
  E: "[~@127 f#4, a3 d4 a4 d4 a3 d4 a4 d4 a3 d4 a4 d4 a3 d4 a4 d4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 d4 g4 d5 g4 a3 d4 a4 d4 a3 d4 a4 d4 a3 d4 a4 d4 a3 d4 a4 d4 b3 e4 b4 e4 b3 e4 b4 e4 b3 e4 b4 e4 b3 e4 b4 e4, ~ e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 a4@2 d4@2 d4@2 a4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 f#4@2 f#4@2 b3@2 b3@2 ~]/8",
  F: "[~@31 e4@2 ~ [b3,d4,f#4]!9 ~@5, a3 d4 a4 d4 a3 d4 a4 d4 a3 d4 a4 d4 a3 d4 a4 d4 ~@8, ~ e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 e4@2 e4@2 a3@2 a3@2 ~@17]/3", // Bm
  G: "~@2 [f#3,a3,c#4]!9 ~@5", H: "~@2 [g3,b3,d4]!9 ~@5", I: "~@2 [b3,d4,f#4]!9 ~@5", J: "~@2 [a3,c#4,f#4]!9 ~@5",
  K: "~@2 [d3,a3] [d4,a4] [d3,a3] [d4,a4] [d3,a3,d5] ~ [d3,a3] [d4,a4] [d3,a3] [d4,a4] [d3,a3] [d4,a4] [d3,a3,d5] ~", // D5
  L: "~@2 [a2,e3] [a3,e4] [a2,e3] [a3,e4] [a2,e3,c#5] ~ [a2,e3] [a3,e4] [a2,e3] [a3,e4] [a2,e3] [a3,e4] [a2,e3,c#5] ~", // A5 A A5 A
  M: "~@2 [b2,f#3] [b3,f#4] [b2,f#3] [b3,f#4] [b2,f#3,b4] ~ [b2,f#3] [b3,f#4] [b2,f#3] [b3,f#4] [b2,f#3] [b3,f#4] [b2,f#3,b4] ~", // B5
  N: "~@2 [g2,d3] [g3,d4] [g2,d3] [g3,d4] [g2,d3,g4] ~ [g2,d3] [g3,d4] [g2,d3] [g3,d4] [g2,d3] [g3,d4] [g2,d3,g4] ~", // G5
  O: "~@2 [a2,e3] [a3,e4] [a2,e3] [a3,e4] [a2,e3,a4] ~ [a2,e3] [a3,e4] [a2,e3] [a3,e4] [a2,e3] [a3,e4] [a2,e3,a4] ~", // A5
  P: "~@2 [c#4,e4,g#4]!9 ~@5", Q: "~@2 [g#3,b3,d#4]!9 ~@5", R: "~@2 [a3,c#4,e4]!9 ~@5", S: "~@2 [b3,d#4,g#4]!9 ~@5",
  T: "[c#4,e4] c#4 [c#4,e4] c#4 [c#4,e4] c#4 [c#4,e4] c#4 [c#4,e4] ~@7", // C#m
})).s("gm_synth_bass_1").gain(0.33).pan(0.3)

// bass · synth bass 1 · "SYNTH BAS"
const bass = note(`<
  ~@4 A B C D@3 E F G@2 H I J K L M N O P Q N O R@2 D@2 E F G@2 H I J K L M N O P Q N O R@2 S O N@2 S O N@2 T O N@2 U O
  N@2 V W X@2 V W Y@2 Z AA AB@2 AC P AD P AC P AD P AE AF R@2 AG AF R@2 AH AF R@2 AI AF R@2 AE AF R@2 AG AF R@2 AH AF
  R@2 AI AF R@2 AE AF R@2 AG AF R@2 AH AF R@2 AI AF R@2 AJ
>`.pickRestart({
  A: "d2@3 ~ d2@3 ~ c2 ~ d2@2 ~@2 c2@2", B: "d2@2 ~@2 d2@3 ~ c2 ~ d2@3 ~ c2 ~", C: "d2@2 ~@2 d2@2 ~@2 c2@2 d2@3 ~ c2 ~",
  D: "d2@2 ~@2 d2@3 ~ c2 ~ d2@3 ~ c2@2", E: "a1@2 ~@2 a1@3 ~ g1@2 a1@3 ~ g1@2", F: "a1@3 ~ a1@4 g1@2 a1@3 ~ f#1@2",
  G: "b1@3 ~ b1@4 a1@2 b1@3 ~ a1@2", H: "f#1@3 ~ f#1@3 ~ e1@2 f#1@3 ~ e1@2", I: "f#1@3 ~ f#1@4 e1@2 f#1@3 ~ e1@2",
  J: "g1@3 ~ g2@4 g1@2 g2@3 ~ g1@2", K: "a1@3 ~ a2@4 a1@2 a2@4 a1@2", L: "d2@3 ~ d2@3 ~ c2@2 d2@4 c2@2",
  M: "d2@3 ~ d2@4 c2@2 d2@3 ~ c2@2", N: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  O: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~", P: "b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  Q: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", R: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~",
  S: "b1 ~ b1 ~ d2@2 b1 ~ b1 ~ b1 ~ b1 ~ f#2 ~", T: "b1 ~ b1 ~ d2@2 b1 ~ b1 ~ b1 ~ b1 ~ f#2@2",
  U: "b1 ~ b1 ~ d2@2 b1 ~ b1 ~ b1 ~ b1@2 f#2@2", V: "d1", W: "a1", X: "[b1@13 ~@3]/2", Y: "[b1@7 ~]/2", Z: "g1@15 ~",
  AA: "d2", AB: "[a1@27 ~@5]/2", AC: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~",
  AD: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~", AE: "~@2 c#2 ~ e2@2 c#2 ~ c#2 ~ c#2 ~ c#2 ~ g#2 ~",
  AF: "g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~ g#1 ~", AG: "c#2 ~ c#2 ~ e2@2 c#2 ~ c#2 ~ c#2 ~ c#2 ~ g#2 ~",
  AH: "c#2 ~ c#2 ~ e2@2 c#2 ~ c#2 ~ c#2 ~ c#2 ~ g#2@2", AI: "c#2 ~ c#2 ~ e2@2 c#2 ~ c#2 ~ c#2 ~ c#2@2 g#2@2",
  AJ: "b1 c#2@2 b1 c#2@3 ~",
})).s("gm_synth_bass_1").gain(0.56)

// chords · piano
const piano = note(`<
  ~@64 A B C@2 A B C@2 D E F@2 ~@8 G H I@2 G H I@2 G H I@2 G H I@2 G H I@2 G H I@2 G H I@2 G H I@2 G H I@2 G H I@2 G H
  I@2 G H I@2 J
>`.pickRestart({
  A: "[d2,d3,a3,d4,f#4]", B: "[a2,a3,c#4,e4]", C: "[b2,f#3,b3,d4]/2", D: "[g2,b3,d4,g4]", E: "[d2,a3,d4,f#4]",
  F: "[a2,d4,e4,a4]/2", // Asus4
  G: "[c#4,e4,g#4] ~ [c#4,e4,g#4]!2 ~ [c#4,e4,g#4]!2 ~ [c#4,e4,g#4]!2 ~ [c#4,e4,g#4]!2 ~ [c#4,e4,g#4] ~", // C#m
  H: "[b3,d#4,f#4] ~ [b3,d#4,f#4]!2 ~ [b3,d#4,f#4]!2 ~ [b3,d#4,f#4]!2 ~ [b3,d#4,f#4]!2 ~ [b3,d#4,f#4] ~", // B
  I: "[a3,c#4,e4] ~ [a3,c#4,e4]!2 ~ [a3,c#4,e4]!2 ~ [a3,c#4,e4]!2 ~ [a3,c#4,e4]!2 ~ [a3,c#4,e4] ~", // A
  J: "[b3,f#4,b4]@2 [c#4,g#4,c#5]@3 ~ [b3,f#4,b4]@2 [c#4,g#4,c#5]@5 ~@3, ~@8 b3 ~@7", // B5 C#5 B5 C#5
})).s("gm_piano").gain(0.33).pan(0.7)

// other · string ensemble 1 · "ARCHI"
const string_ensemble_1 = note(`<
  ~@40 A ~ B C ~@2 D E ~@3 F G ~@2 F G ~@2 F H ~@2 F ~@7 I J K@3 L M N O P Q N R ~@3 S T ~@2 S T ~@2 S U ~@2 S ~@3 S T
  ~@2 S T ~@2 S U ~@2 S ~@3 S T ~@2 S T ~@2 S U ~@2 S V
>`.pickRestart({
  A: "[b3,b4,b5] ~ [b3,b4,b5] ~ [d4,d5,d6] ~ [b3,b4,b5] ~ [b3,b4,b5] ~ [e4,e5]@2 ~@4, ~@10 e6 ~@5", // B D B E
  B: "[b3,b4,b5] ~ [b3,b4,b5] ~ [d4,d5,b5,d6] ~ [b3,b4,b5] ~ [b3,b4,b5] ~ [e4,e6] ~@5, ~@5 e5 ~@2", // B G B E
  C: "[b3,b4,b5] ~ [b3,b4,b5] ~ [d4,d5,d6] ~ [b3,b4,b5] ~ [b3,b4,b5] ~ [f#4,f#5]@2 ~@4, ~@10 f#6 ~@5", // B D B F#
  D: "[b3,b4,b5] ~ [b3,b4,b5] ~ [b4,b5,b6]@2 [b3,b4,b5] ~ [b4,b5] ~ [a4,a5,a6]@2 [b3,b4,b5] ~ [b3,b4,b5] ~, ~@4 b3 ~@3", // B A B
  E: "[g4,g5,g6]@2 [b3,b4,b5] ~ [b3,b4,b5] ~ [f#4,f#5,f#6]@2 [b3,b4,b5] ~ [b3,b5] ~ [e4,e5,e6]@2 [d4,d5,d6]@2, ~@5 b4 ~@2", // G B F# B E D
  F: "b3 d4 f#4 d5", G: "b4@11 ~@5", H: "b4@3 ~", I: "[b3,b4] [d4,d5] f#5 [d5,d6], ~@4 f#4@3 ~", J: "[b4,b5]",
  K: "[[a4,a5]@47 ~]/3", // A
  L: "[c#4,c#5,c#6] ~ [c#4,c#5]@2 [e4,e5,e6]@2 [c#4,c#5,c#6] ~ [c#4,c#5,c#6]@2 [f#4,f#5,f#6]@2 ~@4, ~@2 c#6 ~@13", // C# E C# F#
  M: "[c#4,c#5,c#6] ~ [c#5,c#6] ~ [e4,e5,e6]@2 [c#4,c#5,c#6] ~ [c#5,c#6]@2 [g#4,g#5,g#6]@2 ~@4, ~@2 c#4@2 ~@4 c#4 ~@7", // C# E C# G#
  N: "[c#4,c#5,c#6] ~ [c#4,c#5,c#6] ~ [e4,e5,e6]@2 [c#4,c#5,c#6] ~ [c#4,c#5,c#6]@2 [f#4,f#5,f#6]@2 [c#4,c#5,c#6] ~ [c#4,c#5]@2, ~@14 c#6 ~", // C# E C# F# C#
  O: "[e4,e5,e6]@2 [c#4,c#5,c#6] ~ [c#4,c#5,c#6] ~ [g#4,g#5,g#6]@2 [c#4,c#5,c#6] ~ [c#4,c#5,c#6]@2 [e4,e5,e6]@2 ~@2", // E C# G# C# E
  P: "[c#4,c#5,c#6] ~ [c#4,c#5]@2 [e4,e5,e6]@2 [c#4,c#5,c#6] ~ [c#4,c#5,c#6]@2 [g#4,g#5,g#6]@2 ~@4, ~@2 c#6 ~@13", // C# E C# G#
  Q: "[c#4,c#5,c#6] ~ [c#4,c#5,c#6] ~ [e4,e5,e6]@2 [c#4,c#5,c#6] ~ [c#4,c#5,c#6]@2 [f#4,f#5,f#6]@2 ~@4", // C# E C# F#
  R: "[e4,e5,e6]@2 [c#4,c#5,c#6] ~ [c#4,c#6] ~ [g#4,g#5,g#6]@2 [c#4,c#5,c#6] ~ [c#4,c#5,c#6]@2 [e4,e5,e6]@2 ~@2, ~@2 c#5 ~@5", // E C# G# C# E
  S: "c#4 e4 g#4 e5", T: "c#5@11 ~@5", U: "c#5@3 ~", V: "[b3,b5]@2 [c#4,c#6]@3 ~ [b3,b5]@2 [c#4,c#6]@5 ~@3",
})).s("gm_string_ensemble_1").gain(0.35).pan(0.7)

// chords · pad halo · "HALO PAD"
const pad_halo = note("<~@10 A@2 B@4 C D@3 ~@8 E@4 B@4 C D@3 ~@24 F G H@2 I G J@2 K L M@2 N@8 ~@49>".pickRestart({
  A: "[a3@31 ~]/2", B: "[[b3,d4]@31 ~ [a#3,c#4]@32, f#4@61 ~@3]/4", C: "[g3,c4,d4,g4]",
  D: "[[d4,e4,a4]@47 ~, a3 ~@2]/3", E: "[a4@32 a3@31 ~, [d4,e4]]/4", F: "[a3,d4,f#4]", G: "[c#3,a3,c#4,e4,a4]",
  H: "[[b2,b3,d4,f#4]@15 ~]/2", I: "[d3,a3,d4,f#4]", J: "[b2,b3,d4,f#4]/2", K: "[g3,b3,d4,g4]",
  L: "[f#3,a3,d4,f#4]@15 ~", M: "[[a2,d4,e4,a4]@31 ~]/2", N: "[c#4@16 b3@16 a#3@16 b3@15 ~, e4@63 ~]/4",
})).s("gm_pad_halo").gain(0.43).pan(0.4)

// chords · synth strings 2 · "SYN.STRIN"
const synth_strings_2 = note(`<
  ~@20 A B C@2 D E F@2 ~@12 A B C@2 D E F@2 G@4 H@4 I@4 J@4 ~@20 K@4 L@4 M@4 N@4 K@4 L@4 M@4 N@4 K@4 L@4 M@4 N@4 ~
>`.pickRestart({
  A: "[g3,d4,b4,d5,f#5]", B: "[a#3,a#4,f#5]@15 ~, c#5@13 ~@3", C: "[[b3,b4]@8 b5@3 ~ a5@4, [d5,f#5]@31 ~]/2",
  D: "[g4,b4,d5,g5]", E: "[f#4,a4,d5,f#5]@15 ~", F: "[~ a4, [d5,e5,a5]]/2",
  G: "[[b3,d4]@15 ~ [a3,c#4]@16 [g3,b3,d4]@32, f#4@3 ~]/4", // Bm A G
  H: "[[b3,d4]@16 [a3,c#4,e4]@15 ~ b3@31 ~, f#4@3 ~, ~@32 g3@29 ~@3]/4", // Bm A
  I: "[[b3,d4]@15 ~ [a3,c#4,e4]@15 ~ g3@30 ~@2, f#4@3 ~, ~@31 b3@31 ~@2]/4", // Bm A
  J: "[[b3,d4]@15 ~ [a3,c#4]@15 ~ [g3,b3]@32, f#4@3 ~]/4", K: "[[c#4,e4]@15 ~ [b3,d#4]@16 [a3,c#4,e4]@32, g#4@3 ~]/4",
  L: "[[c#4,e4]@16 [b3,d#4,f#4]@15 ~ c#4@31 ~, g#4@3 ~, ~@32 a3@29 ~@3]/4", // C#m B
  M: "[[c#4,e4]@15 ~ [b3,d#4,f#4]@15 ~ a3@30 ~@2, g#4@3 ~, ~@31 c#4@31 ~@2]/4", // C#m B
  N: "[[c#4,e4]@15 ~ [b3,d#4]@15 ~ [a3,c#4]@32, g#4@3 ~]/4", // C#m B A
})).s("gm_synth_strings_2").gain(0.35).pan(0.3)

// chords · synth strings 2 · "SYN.STRIN" · soft notes
const synth_strings_2_soft = note(`<
  ~@23 A ~@19 A ~@4 B@2 ~@4 C@2 ~@2 C@2 ~ D E@2 ~@20 F@2 ~@4 G@2 ~@2 G@2 ~ H I@2 F@2 ~@4 G@2 ~@2 G@2 ~ H I@2 F@2 ~@4 G@2
  ~@2 G@2 ~ H I@2 ~
>`.pickRestart({
  A: "~@7 b4@8 ~", B: "[~@15 e4@16 ~]/2", C: "[d4@31 ~]/2", D: "e4@15 ~", E: "d4/2", F: "[~@15 f#4@16 ~]/2",
  G: "[e4@31 ~]/2", H: "f#4@15 ~", I: "e4/2",
})).s("gm_synth_strings_2").gain(0.14).pan(0.3)

// chords · electric guitar clean · "CLEAN GT"
const electric_guitar_clean = note("<~@4 A@2 ~@60 B@2 ~@2 B@2 ~@44 C@2 ~@15>".pickRestart({
  A: "[~@6 a4@25 ~, ~ d4@15, ~@4 g4@27 ~]/2", B: "[~@7 e4@8 ~, ~@5 b3@10 ~, ~@6 d4@9 ~]/2",
  C: "[~@14 f#4@13 ~@5, ~@5 c#4@9 ~@2, ~@12 e4@15 ~@5]/2",
})).s("gm_electric_guitar_clean").gain(0.51).pan(0.6)

// other · pan flute · "FLUTE"
const pan_flute = note("<~@67 [~@2 f#4@2 a4@2 d5@2 c#5@2 a4@2 f#4@3 ~] ~@3 [~ f#4 a4 d5 c#5 a4 f#4@2] ~@61>")
  .s("gm_pan_flute").gain(0.57).pan(0.4)

// other · distortion guitar · "DISTORTIO"
const distortion_guitar = note("<~@76 A B C B A B D B ~@48 E>".pickRestart({
  A: "c#3@15 ~", B: "b2@15 ~", C: "a#2", D: "a#2@15 ~", E: "[b1,b2]@2 [c#2,c#3]@3 ~ [b1,b2]@2 [c#2,c#3]@6 ~@2",
})).s("gm_distortion_guitar").gain(0.5).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@4 A@60 B@3 C B@3 C B@2 A@58 D>".pickRestart({
  A: "x!4", B: "x", C: "x!2 ~@6", D: "x!2 ~ x!2 ~@3",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@20 A@7 B ~@12 A@7 B A@16 ~@12 A@55 C ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@13 x!3",
})).gain(0.64)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@64 x ~@66 [x!13 ~@3] ~>").gain(0.29)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@7 A ~@19 B ~@11 C ~@7 D ~@3 E ~@3 F G ~@2 E ~@3 B ~@10 H I ~@11 E ~@3 F G ~@2 E ~@3 B ~@3 E ~@3 F G ~@2 E ~@3 B ~@3
  E ~@3 F G ~@2 E ~@5
>`.pickRestart({
  A: "~@11 x!2 ~@3", B: "~@3 x", C: "~@5 x!2 ~", D: "~@7 x!2 ~@3 x!3 ~", E: "~@7 x", F: "~@15 x", G: "x",
  H: "~@2 x!3 ~@3", I: "x ~@7 x ~@2 x!2 ~ x ~",
})).gain(0.57)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B C D@2 E F E@2 D G F@2 D A G C@8 H C@19 H C@3 H C@3 H C@3 H C@3 I J K L M N O P Q J R S T F@7 H C@3 H C@3 H C@3
  H C@3 H C@3 H C@3 H C@3 H C@3 H C@3 H C@3 H C@3 H C@3 ~
>`.pickRestart({
  A: "x ~ x!5 ~", B: "x ~ x!3 ~ x!2", C: "x!4", D: "x ~ x!6", E: "x ~ x ~ x ~ x!2", F: "x!8", G: "x!3 ~ x ~ x!2",
  H: "~ x!3", I: "~@2 x!5 ~ x!8", J: "x!5 ~ x!3 ~ x ~ x ~ x!2", K: "x ~ x!3 ~ x ~ x!5 ~ x ~", L: "x!11 ~ x ~ x!2",
  M: "~ x!2 ~ x ~ x!10", N: "x!5 ~ x!7 ~ x ~", O: "x ~@2 x!2 ~ x!3 ~@2 x!5", P: "x!7 ~ x ~ x ~ x ~ x!2",
  Q: "~ x ~@2 x ~ x ~ x ~ x ~ x ~ x ~", R: "~@2 x ~ x!9 ~ x ~", S: "x ~ x!3 ~ x ~ x!8", T: "x!7 ~",
})).gain(0.5)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@4 A B C D@2 E ~ E@2 D F ~@2 D A F ~@44 G H I J K L M N O H P Q R ~@56
>`.pickRestart({
  A: "~ x ~@5 x", B: "~ x ~@3 x ~@2", C: "~ x ~ x ~ x ~ x", D: "~ x ~@6", E: "~ x ~ x ~ x ~@2", F: "~@3 x ~ x ~@2",
  G: "~@7 x ~@8", H: "~@5 x ~@3 x ~ x ~ x ~@2", I: "~ x ~@3 x ~ x ~@5 x ~ x", J: "~@11 x ~ x ~@2", K: "~@3 x ~ x ~@10",
  L: "~@5 x ~@7 x ~ x", M: "~ x!2 ~@2 x ~@3 x!2 ~@5", N: "~@7 x ~ x ~ x ~ x ~@2", O: "~@2 x!2 ~ x ~ x ~ x ~ x ~ x ~ x",
  P: "~ x ~ x ~@9 x ~ x", Q: "~ x ~@3 x ~ x ~@8", R: "~@7 x",
})).gain(0.29)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@7 A ~@19 B ~@19 C ~@3 D ~@3 E ~@3 F ~@3 B ~@10 G H ~@3 I ~@3 J ~@3 D ~@3 E ~@3 F ~@3 B ~@3 D ~@3 E ~@3 F ~@3 B ~@3 D
  ~@3 E ~@3 F ~@5
>`.pickRestart({
  A: "~ x ~@2", B: "~@5 x ~@2", C: "x!2 ~@4 x ~@3 x ~@5", D: "~@5 x!2 ~", E: "~@13 x ~@2", F: "~@13 x!3",
  G: "x ~@2 x!2 ~@6 x!2 ~ x ~", H: "~@3 x!2 ~ x ~@9", I: "x!3 ~@5 x!3 ~@5", J: "~@3 x ~ x!2 ~",
})).gain(0.57)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@47 A ~@7 B ~@35 B ~@15 B ~@15 B ~@9>".pickRestart({
  A: "~ x ~@6", B: "~@7 x",
})).gain(0.29)

// drums · open hat
const open_hat = s("oh").struct("<~@20 [~ x ~ x ~ x ~ x]!44 ~@20 [~ x ~ x ~ x ~ x]!48 ~>").gain(0.5)

// drums · crash
const crash = s("cr").struct(`<
  ~@28 A ~@11 A ~@7 A ~@3 A ~@2 B ~@3 C ~@4 A ~@3 A ~@3 A ~ A ~ A D A E A@3 F A ~@3 A ~@2 B ~@3 C ~@4 A ~@3 A ~@2 B ~@3
  C ~@4 A ~@3 A ~@2 B ~@3 C ~@4 G
// … 12 more lines

More by Fiorello