Strudelify
Dammi solo un minuto cover art

L'ultimo abbraccio

Dammi solo un minuto

Pooh

KeyF majorTempo100 bpm
0:00/0:00
// Dammi solo un minuto — Pooh
// 100 bpm, 4/4, key F 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: duplicate parts dropped: ch 3 distortion guitar (copy of ch 9 overdriven guitar)
// note: Full arrangement: all 122 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 30.
setcpm(100/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 · piano
const piano = note(`<
  ~ A@3 B@4 C D@6 E@4 F@6 G@2 H@6 I@4 J@2 K L M N@7 J@2 K L M N@7 O P@5 Q@8 K L M R@3 S T@8 U K L M V@6 W@8 X@4 W@8 Y@2
>`.pickRestart({
  A: "[~@4 f3@6 c4@2 ~@2 [c4,f4,a4]@4 f3@2 [d4,f4,a4]@9 ~ [d4,f4,a4]@4 d3 ~ [bb2,bb3,d4,f4,bb4]@7 ~ [c3,c4,e4,g4] ~ [c4,e4,g4] ~, ~@4 [f4,a4]@9 ~@35, ~@4 c4@5 ~@3 f3@6 ~@2 d3@12 ~@14 c3@2]/3", // F Dm Bb C F
  B: "[~@2 [f3,c4,f4,a4]@18 c4@6 c4@3 ~@3 f3@3 ~ [d3,d4,f4,a4]@10 [d3,d4,f4,a4]@4 d3 ~ bb2@4 d4@2 bb2 ~ [c3,c4,e4,g4] ~ [c3,c4,e4,g4] ~, ~@20 [f3,f4,a4]@9 ~ [c4,f4,a4]@5 ~@17 [f4,bb4]@7 ~@5, ~@52 d4@3 ~@9]/4", // F Dm C F Bb5
  C: "~@2 [c3,c4,e4,g4] ~ [f3,c4,f4,a4]@10 c4@2", // C F
  D: "[f4@2 eb4 ~ [bb2,bb3,d4]@8 [db3,a3,db4,e4]@8 [a3,d4]@4 ~@2 a3@2 ~@6 a3@2 [c4,e4]@3 ~ g3@3 ~@21 c4@3 ~ [f4,a4,c5]@8 ~@6 e3@2 a3@6 ~@2 [db4,e4,g4,a4]@4, ~@4 f3 ~@15 d2@16 ~@32 [f2,f3]@16 ~@12, ~@5 f4@2 d4@2 ~@3 c4@2 c4@2 ~@3 [c4,f4,a4,c5]@2 [db4,e4,g4,a4]@2 ~, ~@24 d3@12 c3@16 c3@15 ~@17 a2@12, ~@30 a3@2 f4@4 ~@8 [e4,g4]@8 [e4,g4,c5]@8 [e4,g4,c5]@7 ~@23 a3@6]/6", // Bb A D5 C F A7 F A7 …
  E: "[e4@2 ~@16 f3@2 [db4,bb4]@6 ~@4 [db4,bb4,db5]@5 ~ f3@6 ~@8 f3@2 db4@3 ~@5 [db4,e4,g4,a4,db5]@4, ~@2 e4@18 f4@3 ~@3 f4@9 ~ [f4,a4,c5]@9 ~@7 [e4,g4,a4]@8 ~@4, ~@2 [f4,a4]@10 [d4,f4,a4]@8 bb3@8 bb3@7 ~@7 f3@8 ~@2 a2@12, ~@4 d3@16 bb2@15 ~ f2@17 ~@11, ~@26 [db4,bb4]@4 ~@14 [c4,f4,a4]@9 ~@5 a3@6]/4", // Gb A7 F A7 F Dm Gb F
  F: "[[db4,e4,g4] ~@5 [f4,a4]@4 f4@2 ~@2 [f4,a4,f5]@4 a3@3 ~@4 b2 ~@2 bb3 ~@2 [d4,f4]@3 [f4,g4]@4 c4@3 ~ [e4,g4]@4 [bb3,c4,e4,g4,bb4]@2, ~ [f4,a4]@5 ~@4 a4@4 ~@4 b3 ~@2 a3@5 bb2@8 c3@8 [c3,c5]@6, ~ d4@4 d4@5 ~@2 f4@2 ~@4 [f4,a4]@8 ~@4 a3@4 ~@7 g3@7, ~@4 d3@16 [f3,e5]@16 b2@10 d4@6 [d4,f4]@6 [d4,f4]@4 ~@6 c4@3 ~@5 [f4,g4]@9 ~@11, ~@26 c4@10 d4@8 b3@8 ~@6 [bb3,a4]@10 ~@15 c4@9 ~@4]/6", // Dbdim F Dm Fsus2 Em C7 F C …
  G: "[~@2 c3@2 f3@6 ~@2 f4@4 f4@4 [db4,g4]@3 ~@5 [db4,e4,g4,a4,db5]@4, ~ [f2,c5]@4 a2@3, ~ [f4,a4]@2 [c4,a4]@2 [e4,a4]@2 ~, ~@5 f3@5 a3@3 a3@3, ~@6 db4 ~]/2", // Dbdim A7 F5 F A5
  H: "[[e4,g4]@2 ~@10 f4@6 f4@2 [db4,f4]@3 ~ [db4,f4] ~ [db4,f4,bb4]@2 ~@6 c3@2 f3@6 ~@2 c4@4 ~@2 f3@2 db4@3 ~@9 g4@2 ~@10 [d4,f4,a4]@8 f4@4 f4@2 ~@4 [f4,a4]@2, ~ [d4,f4,a4]@4 a3@5 [bb3,bb4]@3 ~ bb3@2 ~@5 f3@4 ~@3 db4 a3@4 ~@4 a3@5 ~@3 [f4,a4]@2 ~, ~@4 d3@16 bb2@13 ~@3 [f2,c5]@16 a2@14 ~@2 d3@16 [c3,f5]@12, ~@6 [d4,a4]@4 ~@5 [db4,f4,db5]@3 [f4,a4]@4 [f4,a4]@4 g4@6 ~@10 [a4,c5]@3 c5@3, ~@24 c4@2 [e4,a4]@4 [db4,e4,a4,db5]@3 [d4,f4]@5 ~@4 c4@4 c4@2]/6", // Em Db Bbm Dm F Dm Bb F …
  I: "[~@4 b3@2 b3@2 ~@2 [b3,f4]@8 b2 ~ bb3@3 ~ bb3@2 ~@4 [d4,a4]@6 c4@4 c4@4 [c4,f4,g4]@7 ~ [c4,e4,g4]@5 ~@7, ~@4 [b2,a3]@15 ~ bb2@16 c3@15 ~ c3@12, ~@4 a4@7 ~@15 d4@4 ~@6 [f4,g4]@8 ~@20, ~@4 [d4,f4]@4 d4@11 ~ [d4,f4]@6 [bb3,f4]@10 ~@28, ~@7 a3@2 ~@7]/4", // Bdim D5 Csus4 C B7 Fsus2 Dm Bb5
  J: "[~@4 [c4,f4,a4]@4 [c4,d4,g4]@2 [c4,f4,bb4]@4 [c4,f4,a4]@2 [c4,g4]@2 [d4,f4]@2 ~@2 d4@2 [d4,g4]@2 [d4,f4,bb4]@3 d4 [d4,a4]@2, ~@4 f3@15 ~ d3@12, ~@4 f2@11 ~@17]/2", // F Csus2 Fsus4 F C5 Dm G5 Bb …
  K: "[d4,g4]@2 [d4,f4]@2 ~@2 bb3@2 [d4,f4]@2 bb2@2 [c3,c4,e4,g4] ~ [c3,c4,e4,g4]@2, ~ bb2 ~@2", // G5 Dm C
  L: "~@6 c4 ~ [c4,f4,a4] ~ [c4,f4,c5]@2 ~@2 [c4,f4,a4] ~, ~ [c4,f4,a4]@2 ~@3 f3@2, ~ f2@3", // F F5 F
  M: "[c4,f4] ~ [c4,f4]@2 [c4,g4] [c4,f4,bb4] f3 [c4,f4,a4], ~ f3@5 ~@2, ~ f2@2 ~", // F5 C5 Fsus4 F
  N: "[[c4,g4]@2 ~@6 [d4,g4]@2 [d4,f4,bb4]@2 ~@2 [d4,f4,a4]@2 [d4,g4]@2 ~@6 [d4,f4]@2 bb3@2 [c3,c4,e4] ~ [c3,c4,e4]@4 ~@4 c4@2 f4@2 [c4,f4,c5]@2 ~@2 c4 ~ f4@2 eb4@2 [bb3,bb4]@8 [a2,e4]@7 ~@13 f4@4 c4@3 ~@15 c4@5 ~@5, ~ [d4,f4]@2 a3@5 ~@3 f3@2 ~@9 f3@2 ~@10 d3@6 ~@2 c3@6 g3@2 [c3,e4,c5]@6, ~@4 d3@12 ~@4 bb2@6 ~@10 f2@11 ~@21 [e4,f4]@7 ~ e4@6 ~@2 e4@6 ~@2 e4@6 d4@4 ~@10, ~@6 c4@3 [d4,f4]@2 ~@6 [c4,f4,a4]@2 ~@4 a4@2 ~ [d4,f4]@2 ~@6 a4@12 g4@10, ~@36 d4@5 ~@3 c4@5 ~@7]/7", // C5 G5 Bb Dm G5 Dm C F5 …
  O: "~@2 [f3,f4,a4,c5]@3 ~ [c4,f4,a4]@2, ~@2 f2@5 ~, ~@5 f3@3", // F
  P: "[f4 ~@3 [db4,g4]@3 ~@5 [db4,e4,g4,a4,db5]@6 ~@2 [d4,f4,a4]@6 ~@2 f4@6 f4@2 [db4,f4]@3 ~ [db4,f4]@2 ~@8 c3@2 f3@6 ~@2 c4@4 ~@2 f3@2 db4@3 ~@5 [db4,e4,a4,db5]@4, ~@2 a2@7 ~ d3@8 bb2@8 [f2,c5]@8 [a2,g4]@6, ~ [e4,a4]@2 ~@10 [f4,a4]@2 [f4,a4]@2 [e4,a4]@2 ~, ~@2 a3@3 a3@4 ~@4 a3@5 bb3@4 bb3@4 ~@3 f3@4 ~@4 a3@3, ~@4 db4@2 ~@8 [d4,a4]@4 ~@3 [db4,f4]@2 [db4,f4,db5]@3 ~@6 c4@2 ~@2 db4@2 ~@2]/5", // Dbdim A7 Dm Db A F5 A7 A5 …
  Q: "[g4@2 ~@10 [f4,a4]@8 f4@4 f4@2 ~@4 [f4,a4]@4 b3@2 ~@6 [b3,f4]@8 b2 ~ bb3@3 ~ bb3@2 ~@4 [d4,a4]@6 c4@4 c4@4 [c4,g4]@6 g3@2 ~@8 c4@4 c4@4 [c4,f4,a4]@4 [c4,d4,g4]@2 [c4,f4,bb4]@4 [c4,f4,a4]@2 [c4,g4]@2 [d4,f4]@2 ~@2 d4@2 [d4,g4]@2 [d4,f4,bb4]@3 d4 [d4,a4]@2, ~@2 [d4,f4]@10 d4@4 ~@4 c4@8 c4@6 [d4,f4]@5 ~ d4@11 ~ [d4,f4]@6 d4@4 ~@6 g4@8 ~@52, ~@4 d3@16 [c3,f5]@14 ~@2 [b2,a3]@15 ~ bb2@16 c3@15 ~ [c2,e4,a4]@8 [c2,e4,a4]@8 f2@11 ~@17, ~@10 a3@10 [a4,c5]@6 [g4,c5]@8 a4@7 ~@19 a3@8 ~@16 c3@6 c3@10 f3@15 ~ d3@12, ~@13 [f4,a4]@2 ~@4 b3@2 ~@8 [bb3,f4]@5 ~@10 c4@2 ~@18]/8", // F Bdim D5 C5 F Csus2 Fsus4 F …
  R: "[[c4,g4]@2 ~@6 [d4,g4]@2 [d4,f4,bb4]@2 ~@2 [d4,f4,a4]@2 [d4,g4]@2 ~@6 [d4,f4]@2 bb3@2 [c3,c4,e4] ~ [c3,c4,e4]@4 ~@4 c4@2 f4@2 [c4,f4,c5]@2 ~@2 a4@2, ~ [d4,f4]@2 a3@5 ~@3 f3@2 ~@9 f3@2, ~@4 d3@12 ~@4 bb2@6 ~@10 f2@11 ~, ~@12 c4@6 [d4,f4]@4 ~@12 [c4,f4,a4]@4 ~@8 c4 ~]/3", // C5 G5 Bb Dm G5 Dm C F5 …
  S: "f4 eb4 [bb3,bb4]@4 [a2,e4]@2, ~ [d4,f4] ~@2", // Bb A5 Dm
  T: "[~@16 f4@4 c4@3 ~@5 g4@8 ~@12 c4@4 ~@12 f2@4 ~@12 e2@4 ~@4 a3@4 ~@4 a3@3 ~ [db2,bb4]@15 ~ [c4,f4,a4]@4 [c4,d4,g4]@2 [c4,f4,bb4]@4 [c4,f4,a4]@2, ~ a4@6 ~@25, ~@4 d3@12 ~@4 c3@12 ~@4 [c2,c3]@16 f2@8 ~@8 e2@8 ~@8 d2@15 ~@17 [f2,f3]@12, ~@4 [e4,f4]@7 ~ e4@6 ~@2 e4@6 ~@2 e4@6 ~@2 [e4,a4]@8 [e4,a4]@8 ~@8 [c4,f4,a4]@8 ~@8 [a3,db4,e4]@8 ~@8 [d4,f4]@7 ~ [db4,f4]@13 ~@15, ~@8 d4@10 ~@6 c4@10 ~@6 c4@8 ~@8 f3@9 ~@7 e3@8 ~@8 d3@11 ~@29]/8", // Gb F Csus2 Fsus4 F C F Fmaj7 …
  U: "[c4,g4]@2 [d4,f4]@2 ~@2 d4@2 [d4,g4]@2 [d4,f4,bb4]@3 d4 [d4,a4]@2, ~ d3@3", // C5 Dm G5 Bb D5
  V: "[[c4,g4]@2 ~@6 [d4,g4]@2 [d4,f4,bb4]@2 ~@2 [d4,f4,a4]@2 [d4,g4]@2 ~@6 [d4,f4]@2 bb3@2 [c3,c4,e4] ~ [c3,c4,e4]@4 [d4,gb4,a4]@2 d4@3 ~@5 a3@4 ~@4 g3@6 d4@2 ~@2 [d4,g4,b4]@4 g3@2 [e4,g4,b4]@9 ~ [e4,g4,b4]@4 e3 ~ [c3,c4,e4,g4,c5]@7 ~ [d3,d4,gb4,a4] ~ [d4,gb4,a4] ~, ~ [d4,f4]@2 a3@5 ~@3 f3@2 ~@5 d3@7 ~@5 g3@3 ~ e3@6 ~@7 d3, ~@4 d3@12 ~@4 bb2@6 ~@13 a3@3 [d5,gb5,a5]@6 ~@48, ~@12 c4@6 [d4,f4]@4 ~@14 [gb4,a4]@7 ~@9 [g4,b4]@9 ~@35, ~@40 d4@8 ~@4 d4@5 ~@39]/6", // C5 G5 Bb Dm G5 Dm C D …
  W: "[~@2 [g3,d4,g4,b4]@18 g3@6 d4@2 ~@2 [d4,g4,b4]@4 g3@2 [e4,g4,b4]@9 ~ [e4,g4,b4]@4 e3 ~ [c3,c4,e4,g4,c5]@7 ~ [d3,d4,gb4,a4] ~ [d4,gb4,a4] ~, ~@20 [g4,b4]@9 ~@35, ~@20 d4@5 ~@3 g3@6 ~@2 e3@12 ~@14 d3@2]/4", // G Em C D G
  X: "[~@2 [g3,d4,g4,b4]@18 g3@6 d4@2 ~@2 [d4,g4,b4]@4 g3@2 [e4,g4,b4]@9 ~ [e4,g4,b4]@4 e3 ~ [c3,c4,e4,g4,c5]@7 ~ [d3,d4,gb4,a4] ~ [d3,d4,gb4,a4] ~, ~@20 [g4,b4]@9 ~@35, ~@20 d4@5 ~@3 g3@5 ~@3 e3@12 ~@16]/4", // G Em C D G
  Y: "[~ [g3,d4,g4,b4]@9 ~@6]/2", // G
})).s("gm_piano").gain(0.2)

// other · lead 5 charang
const lead_5_charang = note(`<
  ~ A B C D E B C F G@2 H@3 ~@23 I J K@3 J L@2 ~@4 I J K@3 J L@2 ~@16 I J K@3 J L@2 ~@8 I J K@3 J M@3 N O P Q N O R S N
  O P Q N O R S N O P Q N O R T
>`.pickRestart({
  A: "~@2 f4@2 g4 bb4@2 a4", B: "g4 f4@3 g4 bb4@2 a4", C: "g4 f4@3 f4@2 g4!2",
  D: "~@2 a4@5 f3 f5 [c5,d5] a4 g4@2 c4 d4 c4", E: "f4 d4 c4 [g3,a3] f4@4 g4@2 bb4@4 a4@2, ~@4 f3 ~@11", F: "~ a4@6 c4",
  G: "[f4 eb4 d4@4 db4@4 d4@2 a3@2 d4@2]/2", H: "[f4@2 e4@4 g4@4 bb4@7 ~@7]/3", I: "~ f3@3", J: "e3 d3@3",
  K: "[c3@4 bb2@8 c3@6 ~@6 c3 d3 ~ g3 a3 c4 d4 f4 g4 a4 c5 d5 f3@12, ~@9 f3@4 f3@5 c5@5 ~]/3",
  L: "[c3@2 d3@4 c3@3 f2@6 ~]/2",
  M: "[c3@4 d3@8 c3@6 d3@6 ~ e3 g3 a3 b3 d4 e4 g4 a4 b4 d5 e5 [g4,d5]@4 a4@2 c5@4 b4@2, ~@2 d3 ~]/3", // G5
  N: "a4 g4@3 a4 c5@2 b4", O: "a4 g4@3 g4@2 a4!2", P: "~@2 b4@5 g3 g5 e5 d5 b4 g4 e4!2 d4",
  Q: "b4 g4 e4 d4 g4@4 a4@2 c5@4 b4@2", R: "~@2 b4@5 g3 g5 [d5,e5] b4 [ab4,a4] g4 d4 e4 d4",
  S: "g4 e4 d4 [a3,b3] g4@4 a4@2 c5@4 b4@2", T: "g4 e4 d4 [a3,b3] ~@12",
})).s("gm_lead_5_charang").gain(0.21).pan(0.8)

// chords · string ensemble 2
const string_ensemble_2 = note("<~ A@8 B@5 ~@23 C@2 D@8 E F@3 G@8 H@2 ~@12 C@2 G@8 H@2 ~@4 I@7 J K@24 ~>".pickRestart({
  A: "[~@2 [f3,c4]@8 [d3,d4]@8 [bb2,bb3,d4,f4]@4 [c3,e4,g4]@3 ~@17 d3@8 bb3@4 c4@8 ~@2, ~ [f4,a4]@8 ~@2 c4@10 d4@6 c3 ~@4, ~@25 f4@29 e4@4 ~@6, ~@25 a4@25 ~@14]/8", // F5 D Bb C F
  B: "[~@6 [a2,db4]@4 [d3,d4,f4]@8 e4@15 ~@7]/5", C: "[~ f3@4 d4@3, ~ [a3,f4]@7]/2",
  D: "[~@4 [bb3,d4,f4]@8 [e4,g4]@6 a4@17 ~ c5@16 f4@16 [bb3,f4]@8 [e4,g4]@6 [f3,f4,a4]@18 [d4,f4]@8 e4@8 d4@12, ~@12 c4@39 ~ d4@24 c4@23 ~@9 a3@20, ~@9 f3@17 ~@38, ~@9 a4@8 ~@15]/8", // Bb Em Bb5 Em F Dm
  E: "~@3 g4", F: "[~ [c4,e4,g4,c5]@2 [c4,e4,g4,c5]@2 f3@4 d4@3, ~@5 [a3,f4]@7]/3",
  G: "[~@4 [bb3,d4,f4]@8 [e4,g4]@6 a4@17 ~ c5@16 f4@16 [bb3,bb4]@8 [e4,g4]@6 [f3,f4,a4]@18 [bb3,d4,f4]@8 [db4,e4]@8 [d4,f4]@12, ~@12 c4@39 ~ d4@24 c4@23 ~@9 a3@20, ~@9 f3@17 ~@38, ~@9 a4@8 ~@15]/8", // Bb Em Bb Em F Bb Dbm Dm
  H: "[~ [c4,e4]@4 ~@3]/2", // C
  I: "[~@4 f3@16 d4@16 [bb3,d4,f4]@8 [e4,g4]@6 a4@17 ~ c5@16 f4@16 [bb3,bb4]@8 [c4,e4,g4]@4, ~@4 [a3,f4]@32 ~@8 c4@39 ~ d4@24 ~@4, ~@25 f3@17 ~@14, ~@17 a4@8 ~@3]/7", // Bb Em Bb C Dm
  J: "~ [d4,gb4,a4]@7", // D
  K: "[~@2 [g3,d4]@8 [e3,e4]@8 [c3,c4,e4,g4]@4 [d3,gb4,a4]@3 [g3,g4,b4]@9 [g3,d4]@8 [e3,e4]@8 [c3,c4,e4,g4]@4 [d3,gb4,a4]@3 [g3,g4,b4]@7, ~ [g4,b4]@8 ~@2 d4@6 [g4,b4]@8 ~@2 d4@5]/8", // G5 E C D G G5 E C …
})).s("gm_string_ensemble_2").gain(0.31)

// chords · string ensemble 2 · soft notes
const string_ensemble_2_soft = note("<~@4 A@3 B@7 ~@31 C@4 ~@73>".pickRestart({
  A: "[~ f3@17 ~@6]/3",
  B: "[~@2 bb2@4 ~@2 c3@2 [f3,a4]@6 [eb3,eb4]@2 [bb2,bb3]@4 a3@11 ~ [c3,c4,g4]@15 ~@7, ~@6 g4@4 f4@8 d4@3 ~ e4@4 ~@30]/7", // F Eb Bb C5
  C: "[~@4 bb3@7 ~ db4@8 f4@16 ~@8 g3@8 ~@12, ~@9 [c4,e4]@4 ~@3]/4", // C
})).s("gm_string_ensemble_2").gain(0.21)

// other · distortion guitar
const distortion_guitar = note("<~ A B C D E B C F G@2 H@3 ~@23 I J K@3 J L@2 ~@3 M ~@73>".pickRestart({
  A: "~@2 f4@2 g4 bb4@2 a4", B: "g4 f4@3 g4 bb4@2 a4", C: "g4 f4@3 f4@2 g4!2",
  D: "~@2 a4@5 f3 f5 [c5,d5] a4 g4@2 c4 d4 c4", E: "f4 d4 c4 [g3,a3] f4@4 g4@2 bb4@4 a4@2, ~@4 f3 ~@11", F: "~ a4@6 c4",
  G: "[f4 eb4 d4@4 db4@4 d4@2 ~@2 d4@2]/2", H: "[f4@2 e4@4 g4@4 bb4@7 ~@7]/3", I: "~ f3@3", J: "e3 d3@3",
  K: "[c3@4 bb2@8 c3@6 ~@6 c3 d3 ~ g3 a3 c4 d4 f4 g4 a4 c5 d5 f3@12, ~@9 f3@4 f3@5 c5@5 ~]/3",
  L: "[c3@2 d3@4 c3@3 f2@6 ~]/2", M: "~@6 [g4,c5] ~",
})).s("gm_distortion_guitar").gain(0.14).pan(0.3)

// other · distortion guitar · soft notes · Asus2 Em D7 Em D7 Em
const distortion_guitar_soft = note(`<
  ~@10
  [~@2 a3 ~]
  ~@37
  [~@13 [a3,b3] [e3,f3,g3] [a2,b2,c3,d3]]
  [[e2,f2,g2] [a1,b1,c2,d2] [e1,f1,g1] ~@13]
  ~@72
>`).s("gm_distortion_guitar").gain(0.09).pan(0.3)

// bass · electric bass pick
const bass = note(`<
  ~ A B C@2 D E F@2 G@2 H@3 ~@11 I@5 J@2 K@2 L M@3 N O@3 N P@2 Q@2 R@2 S N T@3 N P@2 U@2 V@7 W@2 X@2 Y Z@3 N T@3 N P@2
  U@2 AA@3 ~@3 AB N T@3 N AC@2 AD AE AF@2 AG AE AF@2 AG AE AF@2 AG AE AF@2 AG AE AF@2 AG AE AF@2 AH
>`.pickRestart({
  A: "~ f2@3", B: "f2@2 d2 d2@5", C: "[c2@4 bb1@8 c2@6 f2@4 c2@2 f2@4 f2 c2 f2@2]/2", D: "c2 f1 f2@6",
  E: "f2@2 d2 d2@2 d2@3", F: "[c2@2 ~@2 bb1@8 c2@6 c2 d2 f2@6 c3@2 f3@2 c3@2]/2",
  G: "[f3@2 bb1@4 db2@4 d2@2 a2 ~ d3@2]/2", H: "[a2 c3@2 g3@2 c4@4 ~@3]/3",
  I: "[~@4 f2@16 e2@16 d2 ~@3 d2@10 d2@2 db2@16 c2@8 c2@4]/5", J: "[c2@4 db2 ~@3 db2@10 db2@2 d2@8 d3 ~ a2 ~]/2",
  K: "[d2@4 c2 ~@3 c2@10 c2 ~ b1@6 b1@2 d2@2 ~@2]/2", L: "g2 ~ a2 ~ bb2@8 f3@4", M: "[bb2 c3@2 g2@2 c2@4 f2@3]/3",
  N: "e2@2 d2 d2@5", O: "[c2@2 bb1@3 bb1 c2@3 f2@9 f2@6]/3", P: "[c2@2 bb1@3 bb1 c2@3 f2@3 ~ c3 f3 c3]/2",
  Q: "[f3@4 bb1@8 db2@6 db2 ~ d2@8 d3@2 a2@2]/2", R: "[d2@4 c2@6 c2@2 c3@6 c3 g2 c2 ~ c2@3 ~ c2@2 ~@2 c2@2]/2",
  S: "c2@2 f2@3 f2 f2@2", T: "[c2@4 bb1@6 bb1@2 c2@6 ~@6 f3@8 a2@2 g2 ~ f2@12, ~@3 f2@3 ~@2]/3",
  U: "[f2@4 bb1@8 db2@6 db2 ~ d2@4 a2 ~@3 d3@4]/2",
  V: "[a2@4 ~@16 c2@16 f2@7 ~ f2@8 e2@16 d2 ~@3 d2@10 d2@2 db2@16 c2@8 f2@2 c2@2, ~ c3@8 ~@19]/7",
  W: "[f2@2 c2@2 db2 ~@3 db2@10 db2@2 d2@8 d3@2 a2@2]/2", X: "[d2@4 c2 ~@3 c2@10 c2 ~ b1@4 d2@4 g2 ~@3]/2",
  Y: "a2 ~ bb2@4 f3@2", Z: "[bb2@4 ~@4 g3 ~@3 g3@6 g3@2 c4@2 g3@4 c3@4 c2@6 f2@6 f2@2 f2@4, ~ c3@4 ~@7]/3",
  AA: "[a2 ~@4 c2@4 ~@3, ~ c3@8 ~@3]/3", AB: "~@2 f2@3 f2 f2@2",
  AC: "[c2@4 bb1@6 bb1@2 c2@6 c2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~]/2", AD: "d2 ~ e2 ~ g2@12", AE: "g2@2 e2 e2@5",
  AF: "[d2@4 c2@8 d2@6 g2@4 d2@2 g2@4 g2 d2 g2@2]/2", AG: "d2 g1 g2@6", AH: "d2 g1 ~@6",
})).s("gm_electric_bass_pick").gain(0.34)

// other · overdriven guitar
const overdriven_guitar = note("<~@25 A@6 B@2 C@3 ~@21 D@2 E@8 B@2 C@3 ~@9 D@2 F@3 ~@36>".pickRestart({
  A: "[~ a3@2 c4@2 a3@2 db4@2 d4@2 f4@2 db4@2 f4@2 f4@2 a4@2 g4 a4 f4]/6", B: "[e4 d4@2 a4@2 g4 a4 f4]/2",
  C: "[e4 d4@8 ~@3]/3", D: "[f4 d4@2 db4@2 d4 a3 d4]/2",
  E: "[f4@2 e4@4 g4@4 bb4@7 ~ a3@4 c4@4 a3@4 db4@4 d4@4 f4@4 db4@4 f4@4 f4@4 a4@4 g4@2 a4@2 f4@2]/8",
  F: "[f4@2 e4@4 g4@4 bb4@7 ~@7]/3",
})).s("gm_overdriven_guitar").gain(0.13)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@37 A B C D@2 E@2 F ~@3 G@2 B C D@2 E@2 F ~@16 H B C D@2 E@2 F ~@8 A B C D@2 E@2 I J K L M@2 N@2 O P K L M@2 N@2 O P
  K L M@2 N@2 O ~
>`.pickRestart({
  A: "~ f3@2 [a3,c4,f4]", B: "e3 d3@2 [a3,d4,f4]", C: "c3@3 ~ bb2@5 ~@7",
  D: "[~@2 [a3,c4,f4]@18 f3@7 ~ [a3,c4,f4]@4]/2", E: "[e3@2 d3@4 ~@2 c3@2 bb2@3 ~ c3@2, ~@3 [a3,d4,f4]@2 ~@3]/2",
  F: "~ [a3,c4,f4]@7", G: "[~@4 [g3,c4]@5 ~ f3@4 [a3,c4,f4]@2, ~ [g3,d4]@3 ~@12, ~ c3@4 ~@3, ~@3 e3@6 ~@7]/2",
  H: "~@3 [a3,c4,f4]", I: "~ [d4,gb4]@2 gb4 ~@2 gb4!2, ~ a3@7", J: "[d4,gb4,a4] ~ [d4,gb4,a4] ~ g3@8 [b3,d4,g4]@4",
  K: "gb3 e3@2 [b3,e4,g4]", L: "d3@3 ~ c3@5 ~@7", M: "[~@2 [b3,d4,g4]@18 g3@7 ~ [b3,d4,g4]@4]/2",
  N: "[gb3@2 e3@4 ~@2 d3@2 c3@3 ~ d3@2, ~@3 [b3,e4,g4]@2 ~@3]/2", O: "~ [b3,d4,g4]@7", P: "~ g3@2 [b3,d4,g4]",
})).s("gm_electric_guitar_clean").gain(0.24)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note("<~@48 A ~@11 B@2 ~@34 C ~@25>".pickRestart({
  A: "~ e3@2 ~@5", B: "[~@4 [g3,c4]@5 ~@7, ~ [g3,d4]@3 ~@12, ~ e3@2 e3@6 ~@7, ~ c3@4 ~@3]/2",
  C: "~@3 [d4,a4] [d4,gb4,a4]!2 [d4,a4]!2", // D5 D D5
})).s("gm_electric_guitar_clean").gain(0.15)

// other · lead 5 charang
const lead_5_charang_2 = note(`<
  ~@49 A B C@3 B D@2 ~@16 A B C@3 B D@2 ~@8 A B C@3 B E@3 F G H I F G J K F G H I F G J K F G H I F G J L
>`.pickRestart({
  A: "~ f3@3", B: "e3 d3@3",
  C: "[c3@4 bb2@8 c3@6 ~@6 c3 d3 ~ g3 a3 c4 d4 f4 g4 a4 c5 d5 f3@12, ~@9 f3@4 f3@5 c5@5 ~]/3",
  D: "[c3@2 d3@4 c3@3 f2@6 ~]/2",
  E: "[c3@4 d3@8 c3@6 d3@6 ~ e3 g3 a3 b3 d4 e4 g4 a4 b4 d5 e5 [g4,d5]@4 a4@2 c5@4 b4@2, ~@2 d3 ~]/3", // G5
  F: "a4 g4@3 a4 c5@2 b4", G: "a4 g4@3 g4@2 a4!2", H: "~@2 b4@5 g3 g5 e5 d5 b4 g4 e4!2 d4",
  I: "b4 g4 e4 d4 g4@4 a4@2 c5@4 b4@2", J: "~@2 b4@5 g3 g5 [d5,e5] b4 [ab4,a4] g4 d4 e4 d4",
  K: "g4 e4 d4 [a3,b3] g4@4 a4@2 c5@4 b4@2", L: "g4 e4 d4 [a3,b3] ~@12",
})).s("gm_lead_5_charang").gain(0.18).pan(0.3)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@9 A B C ~@34 D ~@11 D ~@23 D ~@13 E ~@25>".pickRestart({
  A: "~ x!2 ~@3 x ~", B: "~ x!2 ~@5", C: "~ x ~@6", D: "~ x ~@3 x ~@2", E: "~@2 x ~ x!2 ~ x",
})).gain(0.15)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@3 ~ A@6 ~@14 A@11 ~ A B A ~ A B A@5 ~ A B A ~ A B A@5 ~ A@13 B A ~ A B A@5 ~@5 A B A ~ A B A C D A@2 ~ A B A@3 B A
  E A B A ~ A@3 ~ A@3 ~@2
>`.pickRestart({
  A: "~@3 x", B: "~@3 x ~@8 x ~@3", C: "~@2 x!6", D: "x!2 ~@4 x ~", E: "~@3 x ~@2 x ~",
})).gain(0.37)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A B ~@34 C B ~@6 A B ~@2 D B ~@6 E ~@11 A B ~@2 D B ~@14 D B ~@6 A B ~@3 F ~@3 F ~@2 G B ~@2 A B ~@2 A B
>`.pickRestart({
  A: "~@6 x ~@8 x", B: "~@2 x!2 ~@12", C: "~@6 x!2 ~@7 x", D: "~@3 x!2 ~@3", E: "~@7 x", F: "~ x ~@6", G: "~@15 x",
})).gain(0.26)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@4 A ~@43 A ~@23 A ~@27 A ~@15 A ~@3 A ~>".pickRestart({
  A: "~@7 x ~@8",
})).gain(0.15)

// drums · hihat
const hihat = s("hh").struct(`<
  A B ~@7 B ~@15 C D@10 ~@4 B ~@4 B ~@2 E ~@3 B ~@4 B ~@3 A D@11 B ~@2 B ~@4 B ~@10 B ~@29
>`.pickRestart({
  A: "~ x!3", B: "x", C: "~@3 x", D: "x!4", E: "~ x ~@2",
// … 46 more lines

More by Pooh