Strudelify
Io sono vivo cover art

1979 · Viva

Io sono vivo

Pooh

KeyB♭ minorTempo120 bpm
0:00/0:00
// Io sono vivo — Pooh
// 120 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 143 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): tk4.
setcpm(120/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 · "tk1"
const piano = note(`<
  ~ A B C D@2 E B C F ~@19 G H I@2 J@2 K@2 L M N O P Q R ~@23 E B C F ~ E B C F ~@19 G H I@2 J@2 K@2 L M N O P Q R ~@12
  A B C D@2 ~@2 A B C D@2 ~@2 A B C D@2 ~@2
>`.pickRestart({
  A: "[db4,f4,c5] ~ [db4,f4,c5] ~ [db4,f4,db5] ~ [db4,f4]@8 [db4,f4] ~, ~@3 bb4@5", // Dbmaj7 Db
  B: "[db4,f4,c5] ~ [db4,f4,c5] ~ [db4,f4,db5] ~ [db4,f4,bb4]@3 ~ [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,f4,c5]@2", // Dbmaj7 Db Bbm Db Bbm Dbmaj7
  C: "~@2 [db4,f4,db5] ~ [db4,f4,c5] ~ [db4,f4,bb4]@3 ~ [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,gb4,c5]@2", // Db Dbmaj7 Bbm Db Bbm Gb
  D: "[~@2 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [db4,gb4,bb4]@26]/2", // Gb5 Gb
  E: "[db4,f4,c5] ~ [db4,f4,c5] ~ [db4,f4,db5] ~ [db4,f4,bb4]@7 ~ [db4,f4] ~", // Dbmaj7 Db Bbm Db
  F: "~@2 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [db4,gb4,bb4]@10", G: "[f5,ab5,db6] [eb5,ab5,c6]",
  H: "[db5,f5,bb5]@8 [c5,eb5,ab5]@7 ~", // Bbm Ab
  I: "[[bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [c4,eb4]@2 [bb3,d4,g4]@2 [eb4,g4]@3 ~ [d4,f4]@4 f3@2 ~@4 f4@2 f3@2, f3@2 f3@2 ~ f3@2 bb3@4 ~ bb3@3 ~, ~@3 f4@2 ~@8 d4@2 ~]/2", // Bb Cm Gm Eb Dm
  J: "[[bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [f3,c4,eb4]@2 [bb3,d4,g4]@2 [eb4,g4]@3 ~@3 f3@2 d4@2 ~@4 bb4@4, f4@4 f3@2 f4@4 ~@4 bb3@7 ~ bb3@9 ~, ~@9 [d4,f4]@2 ~ d4@3 ~, ~@13 f4@2 ~]/2", // Bb F7 Gm Eb Dm
  K: "[[bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [bb3,d4] ~ [f3,c4,eb4]@2 [bb3,d4,g4]@2 [bb3,eb4,g4]@4 [d4,f4] ~ bb3@2 [d4,f4]@2 f3@2 ~@2 f4@4, [f3,f4]@2 f3 f4@2 ~@4 f3@2 bb3@4 ~, ~@13 d4@2 ~]/2", // Bb F7 Gm Eb Dm F
  L: "[g4,bb4,eb5] [f4,bb4,d5] [eb4,g4,c5] [d4,f4,bb4]", M: "[bb3,eb4,g4] [bb3,d4,f4] [g3,bb3,eb4]@2",
  N: "[f2,a3,c4,f4]", O: "[ab2,c4,eb4,ab4]@15 ~", P: "[a3,c4,f4], f2@7 ~", Q: "[ab2,c4,eb4,ab4]",
  R: "[f2,a3,c4,f4]@15 ~", // F
})).s("gm_piano").gain(0.32).pan(0.4)

// chords · pad warm · "tk2"
const pad_warm = note(`<
  ~ A@5 B@5 C@2 D@2 C@6 E@2 F@2 G@2 F@2 ~@2 H@6 ~@2 I J I J K ~ L@5 M@2 N O P Q L@5 M@2 N O P Q L@5 B@5 C@2 D@2 C@6 E@2
  F@2 G@2 F@2 ~@2 H@6 ~@2 I J I J K ~ L@5 M@2 N O P Q L@5 M@2 L@5 M@2 L@5 M@2
>`.pickRestart({
  A: "[[db4,f4,bb4]@23 [db4,gb4,bb4]@16 ~]/5", B: "[[db4,f4,bb4]@43 ~@3 [db4,gb4,bb4]@24 ~@10]/5", C: "[ab3,db4,f4]/2",
  D: "[[ab3,db4,f4]@31 ~]/2", E: "[db4,gb4,bb4]/2", F: "[eb4,ab4,c5]/2", G: "[gb4,b4,eb5]/2",
  H: "[~@42 d5@5 ~, [f3,bb3,d4], ~@22 f4@25 ~, ~@34 bb4@13 ~]/6", I: "[f3,f4,a4,c5]", J: "[ab3,ab4,c5,eb5]",
  K: "[f3,f4,a4,c5]@15 ~", L: "[[db4,f4,bb4]@46 [db4,gb4,bb4]@33 ~]/5", M: "[c4,f4,ab4]/2", N: "[eb4,gb4,bb4]",
  O: "[c4,eb4,ab4]", P: "[db4,f4,ab4]", Q: "[c4,f4,a4]@7 ~",
})).s("gm_pad_warm").gain(0.22)

// bass · electric bass pick · "tk3"
const bass = note(`<
  A B@3 C D B@3 C E F G F G F G F G F H I J K L M N K O P Q B@6 R S T U T U V W B@3 C X V@2 Y Z AA AB B@3 C X V@2 Y Z AA
  AB B@3 C D B@3 C E F G F G F G F G F H I J K L M N K O P Q B@6 R S T U T U V W B@3 C X V@2 Y Z AA AB B@3 C X V@2 B@3 C
  X V@2 B@3 C AC ~@2
>`.pickRestart({
  A: "~@7 ab2", B: "bb1 ~ bb1 ~ bb1 ~ bb1 ~", C: "gb1 ~ gb1 ~ gb1 ~ gb1 ~", D: "gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@3 ~",
  E: "gb1@2 ~@2 gb1@2 ~@2 gb1@2 ~@2 gb1@2 ab1 bb1", F: "db2!2 ~@4 ab1 bb1 db2!2 ~@4 ab1 bb1",
  G: "db2!2 ~ db2 ~ eb2 db2@7 ~ ab1 bb1", H: "db2!2 ~ db2 ~ eb2 db2@7 ~ db2 eb2",
  I: "gb2!2 ~@4 db2 eb2 gb2!2 ~@4 db2 eb2", J: "gb2!2 ~ gb2 ~ ab2 gb2@7 ~ eb2 f2",
  K: "ab2!2 ~@4 eb2 f2 ab2!2 ~@4 eb2 f2", L: "ab2!2 ~ ab2 ~ bb2 ab2@7 ab2 a2 bb2",
  M: "b2!2 ~@4 gb2 ab2 b2!2 ~@4 gb2 ab2", N: "b2!2 ~ b2 ~ db3 b2@7 b2 bb2 a2", O: "ab2!2 ~ ab2 ~ bb2 ab2@7 ~ ab2 bb2",
  P: "db2 c2", Q: "bb1 ab1", R: "eb2 d2 c2 bb1", S: "g1 f1 eb1 eb2", T: "f1 ~ f2 ~ f1 ~ f2 ~ f1 ~ f2 ~ f1!2 gb1 g1",
  U: "ab1 ~ ab2 ~ ab1 ~ ab2 ~ ab1 ~ ab2 ~ ab1!2 g1 gb1", V: "f1 ~ f2 ~ f1 ~ f2 ~ f1 ~ f2 ~ f1 ~ f2 ~",
  W: "f1 ~ f2 ~ f1 ~ f2 ~ f1@4 ~@2 bb2@2", X: "gb1@2 ~@2 gb1@2 ~@2 eb1@2 ~@2 eb1@3 ~",
  Y: "eb1 ~ eb2 ~ eb1 ~ eb2 ~ eb1 ~ eb2 ~ eb1 ~ eb2 ~", Z: "ab1 ~ ab2 ~ ab1 ~ ab2 ~ ab1 ~ ab2 ~ ab1 ~ ab2 ~",
  AA: "db1 ~ db2 ~ db1 ~ db2 ~ db1 ~ db2 ~ db1 ~ db2 ~", AB: "f2 ~ f2 ~ f2 ~ f2 ~ f2@7 ~", AC: "gb1 ~@7",
})).s("gm_electric_bass_pick").gain(0.61)

// other · overdriven guitar · "tk4"
const overdriven_guitar = note(`<
  ~@5 A ~ B ~@20 C ~@16 D E F G@2 H@2 ~@3 I D E F G@2 H@2 ~@3 I J ~@3 A ~@21 K ~@17 D E F G@2 H@2 ~@3 L D E F G@2 H@2 D
  E F G@2 H@2 D E F G@2 ~@2
>`.pickRestart({
  A: "c5 [c5,db5] bb4 ab4 bb4 [bb4,c5] ab4 f4 gb4 [gb4,ab4] f4 db4 eb4 [eb4,f4] db4 ab3", B: "~@12 bb4 ~@3",
  C: "~@15 bb3", D: "~ bb3!2 ab3 ~@2 ab3 db4!3 c4 ~ ab3 ~ bb3@2", E: "~ bb3!2 ab3 ~ f3 ab3 ~ bb3 ~@5 bb3 f3",
  F: "~ ab3 ~@5 ab3 db4!2 c4 ~ ab3 ~@3", G: "[bb3 ~ bb3 ab3 f3 ~ ab3 bb3 db4!2 c4 ~ ab3 ~ bb3@9 ~@9]/2",
  H: "[~ f3!2 ~ f3!4 ab3!2 f3 ~ eb3 ~ f3@4 f3!2 ~ ab3 ~@2 eb3 ~ f3@4 ~@2]/2", I: "~@5 eb5@2 ~", J: "~@12 [f4,bb4] ~@3",
  K: "ab3 ~@15", L: "~@5 eb4@2 ~, ~@10 eb5 ~@5",
})).s("gm_overdriven_guitar").gain(0.17).pan(0.3)

// other · overdriven guitar · "tk4" · soft notes
const overdriven_guitar_soft = note("<~@5 [~@4 c5 ~@11] ~@65 [~@4 c5 ~@11] ~@71>")
  .s("gm_overdriven_guitar").gain(0.1).pan(0.3)

// chords · distortion guitar · "tk5"
const distortion_guitar = note(`<
  A B C D E F G H I@3 J K J K J K J L@2 M N O P Q R S P T@8 U V W X Y X Y Z AA AB AC AD@3 AE AF AG AH AI ~ AB AC AD@3 AE
  AF AG AH AI ~ AJ C D E F G C I@3 J K J K J K J K J M N O P Q R S AK AL AM AN U@6 V W X Y X Y Z AA AO AC AD@3 AP AF AG
  AH AI ~ AB AC AD@3 AP AF AB AC AD@3 AP AF AB AC AD@3 ~@2
>`.pickRestart({
  A: "~ db5", B: "[db4,f4,bb4] ~@3 [f4,bb4] ~ [f4,a4,bb4] [f4,bb4] a4!2 [db4,ab4] ~ [db4,f4,bb4] bb4 ~@2",
  C: "[db4,f4,bb4] ~@3 [db4,f4] bb4 ~ bb4 a4 [f4,bb4] ab4 g4 [db4,f4,bb4] ~ c5 ~", // Bbm Db Bb5 Bbm
  D: "[db4,f4,bb4] ~ gb4 ~ [db4,f4,bb4] ~ [a4,bb4] [f4,bb4] a4 [a4,bb4] [db4,ab4] ~ [db4,f4,bb4] ~@2 gb4, ~@7 [gb3,bb3,db4,gb4]", // Bbm Bbmaj7 Bb5 Bbmaj7 Db5 Bbm Gb
  E: "[db3,gb3,bb3,db4,gb4]@15 ~", F: "eb5 [eb5,f5] db5 c5 ~ [db5,eb5] c5 bb4 c5 [c5,db5] bb4 ab4 bb4 [bb4,c5] ab4 c4",
  G: "[db4,f4,bb4] ~@3 [f4,bb4] ~ [f4,a4,bb4] [f4,bb4] a4!2 [db4,ab4] ~ [db4,f4,bb4] bb4 ~@2, bb3 ~@3", // Bbm Bb5 Bbmaj7 Bb5 Db5 Bbm
  H: "[db4,f4,bb4] ~@3 [db4,f4] bb4 ~ bb4 a4 [f4,bb4] ab4 g4 [db4,f4] ~ c5 ~", // Bbm Db Bb5 Db
  I: "[[db4,f4,bb4] ~ gb4 ~ [db4,f4,bb4] ~ [a4,bb4] [f4,bb4] a4 [a4,bb4] [db4,ab4] ~ [db4,f4,bb4] ~@33 ab2 bb2, ~@7 [gb3,bb3,db4,gb4]@17]/3", // Bbm Bbmaj7 Bb5 Bbmaj7 Db5 Bbm Gb
  J: "db3!2 ~@2 [ab3,db4]!2 ab2 bb2 db3!2 ~@2 [db4,f4]!2 ab2 bb2", K: "db3!2 ~ db3 ~ eb3 db3@7 ~ ab2 bb2",
  L: "[db3!2 ~ db3 ~ eb3 db3@7 ~ ab2 ~ db3!2 ~@2 [ab3,db4]!2 ab2 bb2 db3!2 ~@2 [db4,f4]!2 ab2 bb2, ~@15 bb2@8 ~@9]/2", // Db5 Db
  M: "db3!2 ~ db3 ~ eb3 db3@7 ~ db3 eb3", N: "gb3!2 ~@2 [db4,gb4]!2 db3 eb3 gb3!2 ~@2 [gb4,bb4]!2 db3 eb3",
  O: "gb3!2 ~ gb3 ~ ab3 gb3@7 ~ eb3 f3", P: "ab3!2 ~@2 [eb4,ab4]!2 eb3 f3 ab3!2 ~@2 [ab4,c5]!2 eb3 f3",
  Q: "ab3!2 ~ ab3 ~ bb3 ab3@7 ab3 a3 bb3", R: "b3!2 ~@2 [gb4,b4]!2 gb3 ab3 b3!2 ~@2 [b4,eb5]!2 gb3 ab3",
  S: "b3!2 ~ b3 ~ db4 b3@7 b3 bb3 a3",
  T: "[ab3!2 ~ ab3 ~ bb3 ab3@7 ~@3 db3@8 c3@8 bb2@8 ab2@8 bb2!2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,eb4] bb2 [bb2,c4] [bb2,bb3] [bb2,c4] bb2 [bb2,g3] [bb2,f3] bb2!2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,eb4] bb2 [bb2,c4] [bb2,bb3] [bb2,c4] bb2 [bb2,g3] [bb2,f3] bb2!2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,eb4] bb2 [bb2,c4] [bb2,bb3] [bb2,c4] bb2 [bb2,g3] [bb2,f3] bb2!2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,eb4] bb2 [bb2,c4] [bb2,bb3] [bb2,c4] bb2 [bb2,g3] [bb2,f3] bb2!2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,eb4] bb2 [bb2,c4] [bb2,bb3] [bb2,c4] bb2 [bb2,g3] [bb2,f3], ~@7 ab3@57]/8", // Bb Eb5 Bbsus2 Bb Bbsus2 Eb Bb5 Bb …
  U: "bb2!2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,bb3] bb2 [bb2,eb4] bb2 [bb2,c4] [bb2,bb3] [bb2,c4] bb2 [bb2,g3] [bb2,f3]", // Bb Eb5 Bbsus2 Bb Bbsus2 Eb Bb5
  V: "eb3@3 ~ d3@4 c3@4 bb2@4", W: "g2@2 f2@2 eb2@3 ~", X: "f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3!2 gb3 g3",
  Y: "ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3 ~ ab3!2 g3 gb3", Z: "[f3,c4]@5 ~@3", AA: "eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5@7 ~",
  AB: "[db4,f4,bb4] ~@3 [f4,bb4] ~ [f4,bb4]!2 a4!2 [db4,ab4] ~ [db4,f4,bb4] bb4 ~@2", // Bbm Bb5 Db5 Bbm
  AC: "[db4,f4,bb4] ~@3 [db4,f4] bb4 ~ [f4,bb4] a4 [f4,bb4] ab4 g4 [db4,f4,bb4] ~ [db4,c5] ~", // Bbm Db Bb5 Bbm Dbmaj7
  AD: "[[db4,f4,bb4] ~ gb4 ~ [db4,f4,bb4] ~ [a4,bb4] [f4,bb4] a4 [a4,bb4] [db4,ab4] ~ [db4,f4,bb4] ~ gb4 gb4@21 ~@4 [eb3,bb3,bb4]@8, ~@7 [gb3,bb3,db4]@12 ~ [eb4,gb4]@3 ~]/3", // Bbm Bbmaj7 Bb5 Bbmaj7 Db5 Bbm Eb5 Gb …
  AE: "[ab3,c4,f4,ab4,c5]@6 ~@2 [f4,c5] f4 [g4,c5] ~ [f4,ab4,c5] f4 ~@2", // Fm F5 C5 Fm
  AF: "[f4,ab4,c5] ~@3 [ab4,c5] f4 ~ f4!3 eb5 d5 [f4,ab4,c5] ~ ab4 ~", // Fm Ab Fm
  AG: "[eb4,gb4,bb4] ~@3 [eb4,bb4] ~ eb4 [eb4,bb4] eb4!2 [f4,bb4] ~ [eb4,gb4,bb4] eb4 ~@2", // Ebm Eb5 Bb5 Ebm
  AH: "[c4,eb4,ab4] ~@3 [c4,ab4] ~ c4 [c4,ab4] c4!2 [db4,ab4] ~ [c4,eb4,ab4] c4 ~@2", // Ab Fm Db5 Ab
  AI: "[f4,ab4,db5] ~@3 [f4,db5] ~ f4 [f4,db5] f4!2 [gb4,db5] ~ [f4,ab4,db5] f4 ~@2", // Db Gb5 Db
  AJ: "[db4,f4,bb4] ~@3 [f4,bb4] ~ [f4,a4,bb4] [f4,bb4] a4!2 [db4,ab4] ~ db4 bb4 ~@2", // Bbm Bb5 Bbmaj7 Bb5 Db5
  AK: "~ ab3 ~@2 [eb4,ab4]!2 eb3 f3 ab3!2 ~@2 [ab4,c5]!2 eb3 f3", AL: "ab3!2 ~ ab3 ~ bb3 ab3@7 ~ ab3 bb3", AM: "db3 c3",
  AN: "bb2 ab2", AO: "[db4,f4,bb4] ~@3 [f4,bb4] ~ [f4,bb4] bb4 a4!2 [db4,ab4] ~ [db4,f4,bb4] bb4 ~@2",
  AP: "[ab3,c4,f4,ab4]@7 ~ [f4,c5] f4 [g4,c5] ~ [f4,ab4,c5] f4 ~@2", // Fm F5 C5 Fm
})).s("gm_distortion_guitar").gain(0.25).pan(0.7)

// chords · distortion guitar · "tk5" · soft notes
const distortion_guitar_soft = note(`<
  ~ A B C ~ D A B C ~@22 E@6 ~@8 F G C ~@2 H I J K L ~ F G C ~@2 H I J K L ~ A B C ~ D A B C ~@22 E@6 ~@8 F G C ~@2 H I
  J K L ~ F G C ~@2 H I F G C ~@2 H I F G C ~@4
>`.pickRestart({
  A: "~@8 f4 [e4,f4] ~@6", B: "~@4 bb4 ~ [a4,bb4] [db4,f4] ~ [g4,ab4] [c4,db4] ~@3 db4 ~", C: "~@7 db4 ~@8",
  D: "~@4 db5 ~@11", E: "~@9 d4 ~@3 bb3 ~@2", F: "~@8 f4!2 ~@6", G: "~@4 bb4 ~ bb4 db4 ~@2 db4 ~@5", H: "~@9 c5 ~@6",
  I: "~@4 f4 ~ f4 [ab4,c5] ~ c5 ab4 ~@5", J: "~@6 bb4 ~ bb4!2 ~@6", K: "~@6 ab4 ~ ab4!2 ~@6", L: "~@6 db5 ~ db5!2 ~@6",
})).s("gm_distortion_guitar").gain(0.11).pan(0.7)

// other · pad new age · "tk7"
const pad_new_age = note(`<
  ~ A B C D ~ A B C D ~@57 E F G H ~ A B C D ~@46 A B C D ~@3 A B C D ~@3 A B C D ~@3
>`.pickRestart({
  A: "c5 ~ c5 ~ db5 ~ bb4@7 ~ f4 ~", B: "c5 ~ c5 ~ db5 ~ bb4@3 ~ ab4 ~ bb4 ~ c5@2",
  C: "~@2 db5 ~ c5 ~ bb4@3 ~ ab4 ~ bb4 ~ c5@2", D: "~@2 db5 ~ c5 ~ bb4@9 ~",
  E: "[db4,f4,c5] ~ [db4,f4,c5] ~ [db4,f4,db5] ~ [db4,f4,bb4]@7 ~ [db4,f4] ~", // Dbmaj7 Db Bbm Db
  F: "[db4,f4,c5] ~ [db4,f4,c5] ~ [db4,f4,db5] ~ [db4,f4,bb4]@3 ~ [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,f4,c5]@2", // Dbmaj7 Db Bbm Db Bbm Dbmaj7
  G: "~@2 [db4,f4,db5] ~ [db4,f4,c5] ~ [db4,f4,bb4]@3 ~ [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,gb4,c5]@2", // Db Dbmaj7 Bbm Db Bbm Gb
  H: "~@2 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [db4,gb4,bb4]@10", // Gb5 Gb
})).s("gm_pad_new_age").gain(0.22)

// chords · pad poly · "tk9"
const pad_poly = note(`<
  ~ A B C D@2 A B C E@2 F@2 G ~ F@2 G ~ F@2 H@4 I@2 J@2 K L M@6 N O P Q R S T@2 A B U@2 V W@2 X S Y Z A B U@2 V W@2 X S
  Y Z A B C AA ~ A B C AB@2 F@10 H@4 I@2 J@2 K L M@6 N O P Q R S T@2 AC B AD@3 W@2 X S Y Z AC B AD@3 W@2 AC B AD@3 W@2
  AC B AE@3 ~@2
>`.pickRestart({
  A: "[db4,f4,c5] ~ [db4,f4,c5] ~ [db4,f4,db5] ~ [db4,f4,bb4]@7 ~ [db4,f4] ~", // Dbmaj7 Db Bbm Db
  B: "[db4,f4,c5] ~ [db4,f4,c5] ~ [db4,f4,db5] ~ [db4,f4,bb4]@3 ~ [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,f4,c5]@2", // Dbmaj7 Db Bbm Db Bbm Dbmaj7
  C: "~@2 [db4,f4,db5] ~ [db4,f4,c5] ~ [db4,f4,bb4]@3 ~ [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,gb4,c5]@2", // Db Dbmaj7 Bbm Db Bbm Gb
  D: "[~@2 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [db4,gb4,bb4]@26]/2", E: "[~@4 [db4,gb4,c5] ~ [db4,gb4,bb4]@25 ~]/2",
  F: "db2/2", G: "db2 ~@15", H: "[~ ab2, gb2]/4", I: "b2/2", J: "ab2/2", K: "[f4,ab4,db5] [eb4,ab4,c5]",
  L: "[db4,f4,bb4]@8 [c4,eb4,ab4]@7 ~", M: "[[bb3,d4,f4]@47 ~]/6",
  N: "[g4,bb4,eb5]@3 ~ [f4,bb4,d5]@4 [eb4,g4,c5]@3 ~ [d4,f4,bb4]@3 ~", // Eb Bb Cm Bb
  O: "[bb3,eb4,g4]@3 ~ [bb3,d4,f4]@4 [g3,bb3,eb4]@8", P: "[f2,a3,c4,f4]", Q: "[ab2,c4,eb4,ab4]@15 ~",
  R: "[a3,c4,f4], f2@7 ~", S: "[ab2,c4,eb4,ab4]", T: "[[f2,a3,c4,f4]@31 ~]/2",
  U: "[~@2 [db4,f4,db5] ~ [db4,f4,c5] ~ [db4,f4,bb4]@3 ~ [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,gb4,c5,db5]@4 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [gb4,bb4]@2 ~@8, ~@7 gb5@5 ~@4, ~@7 bb4@4 db4@5]/2", // Db Dbmaj7 Bbm Db Bbm Gb Gb5 Gb
  V: "~ [eb3,bb3,eb4,bb4]", W: "[[f3,c4,f4,ab4]@31 ~]/2", X: "[eb3,bb3,eb4,gb4]", Y: "[db3,ab3,db4,f4]",
  Z: "[f3,c4,f4,a4]@7 ~", AA: "~@2 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [db4,gb4,bb4]@9 ~",
  AB: "[~@2 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [db4,gb4,bb4]@25 ~]/2", // Gb5 Gb
  AC: "[db4,f4,c5] ~ [db4,f4,c5] ~ [db4,f4,db5] ~ [db4,f4,bb4]@7 ~ db4@2, ~@14 f4 ~", // Dbmaj7 Db Bbm
  AD: "[~@2 [db4,f4,db5] ~ [db4,f4,c5] ~ [db4,f4,bb4]@4 [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,gb4,db5]@4 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [db4,gb4,bb4]@16 ~@2 [bb3,eb4,gb4,bb4]@8, ~@7 bb4@4 ~@13]/3", // Db Dbmaj7 Bbm Db Bbm Gb5 Gb Ebm
  AE: "[~@2 [db4,f4,db5] ~ [db4,f4,c5] ~ [db4,f4,bb4]@4 [db4,f4,ab4] ~ [db4,f4,bb4] ~ [db4,gb4,db5]@4 [db4,gb4,db5] ~ [db4,gb4,c5] ~ [db4,gb4,bb4]@16 ~@10, ~@7 bb4@4 ~@13]/3", // Db Dbmaj7 Bbm Db Bbm Gb5 Gb
})).s("gm_pad_poly").gain(0.36).pan(0.6)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@11 A B A B A B A B A B A B A B A B A B A B ~@46 A B A B A B A B A B A B A B A B A B A B ~@46
>`.pickRestart({
  A: "~@7 x", B: "~ x ~@6",
})).gain(0.22)

// drums · snare
const snare = s("sd").struct(`<
  ~ A@4 B A@4 B ~@20 A@3 C A@4 ~@6 A@4 B A@4 B D A@4 B A@4 B D A@4 B A@4 B ~@20 A@3 C A@4 ~@6 A@4 B A@4 B D A@4 B A@6 B
  A@7 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@4 x ~@7 x ~ x!2", D: "~ x!2 ~ x ~ x ~ x ~@7",
})).gain(0.55)

// drums · low tom
const low_tom = s("lt").struct(`<
  A ~@4 A ~@4 B ~@20 C ~@6 D ~@5 E ~@4 A ~@5 F ~@4 A ~@5 F ~@4 A ~@4 B ~@20 C ~@6 D ~@5 E ~@4 A ~@5 F ~@4 A ~@6 A ~@9
>`.pickRestart({
  A: "~@13 x!3", B: "~@9 x!2 ~@2 x!3", C: "x", D: "~@3 x", E: "~@3 x!2 ~@3", F: "~ x",
})).gain(0.38)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B@2 C D A B@2 C D E F E F E F E F E F E F E F E F E F E F G H@2 I J@4 K@5 L A B@2 C D A B@2 C D M A B@2 C D A B@2
  C N M A B@2 O D A B@2 C D E F E F E F E F E F E F E F E F E F E F G H@2 I J@4 K@5 L A B@2 C D A B@2 C D M A B@2 C D A
  B A B@2 C D A B A B@2 C P ~@2
>`.pickRestart({
  A: "x!2 ~ x!5 ~ x ~ x!3 ~ x", B: "x!4 ~ x!7 ~ x ~ x", C: "x!4 ~ x!5 ~ x ~ x!3", D: "x!2 ~ x!3 ~ x!7 ~ x",
// … 88 more lines

More by Pooh