Strudelify

Cosi ti vorrei

Pooh

KeyB♭ majorTempo98 bpm
0:00/0:00
// Cosi ti vorrei — Pooh
// 98 bpm, 4/4, key A# 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 12 lead 1 square (copy of ch 3 acoustic guitar steel); ch 7 overdriven guitar (copy of ch 9 guitar harmonics)
// note: Full arrangement: all 96 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 26.
setcpm(98/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 · epiano1
const epiano1 = note(`<
  ~ A@2 B C D@2 E F A@2 B C D@2 E G H I J K L M N O@3 P Q@2 R@2 S T A@2 B C D@2 E F A@2 B C D@2 E G H I J K L M N O@3 P
  Q@2 R@2 S T A@2 B C D@2 E F A@2 B C D@2 E F A@2 B C D@2 E U E U V@3
>`.pickRestart({
  A: "[~@10 c3@5 ~@11 c5@2 [f5,a5]@3 ~, [c4,eb4,g4,bb4]@5 ~ [eb4,g4,bb4,c5]@9 [c4,f4]@7 [c5,f5]@2 f3@6 ~@2, ~@2 c3@7 ~@7 f2@16, ~@16 a4@4 f3@2 a4@9 ~, ~@9 c3@7]/2", // F Cm7 F5
  B: "~@4 [bb3,f4]@2 f4@3 ~@3 [f4,a4,d5]@2 f3@2, bb2@15 ~, [bb3,d4,f4]@4 ~@2 [bb3,d4]@9 ~, ~@2 f3@6 ~ f3@5 ~@2, ~@3 a4@3 ~@2", // Bb5 Dm Bb
  C: "~@6 [eb4,bb4] bb3, [eb4,g4,bb4,d5]@5 ~ [bb5,d6]@9 ~, ~ bb3@4 bb3@2 ~, ~@7 [eb5,g5]@8 ~", // Eb5 Ebmaj7 Bb Eb
  D: "[~@4 c4@2 [c4,eb4,g4,bb4]@2 g3@2 ~@2 g3@2 ~@10 f3@2 f4 ~@3 f3@2, c3@7 ~ f2@8, [eb4,g4,bb4]@3 ~@2 [g4,bb4,c5,eb5]@2 ~ a4@6 [f4,c5,f5]@2, c4@4 ~@11 [c4,f4]@5 f3@2 [c4,f4,c5]@5 ~@5, ~ g3@3 ~@5 c3@7]/2", // Cm7 Eb Cm7 F5
  E: "~@12 f3@3 ~, [bb2,bb3,d4,f4,a4]@15 ~, ~ f3@5 ~@2, ~@3 [bb4,d5,f5,a5]@5", // Bbmaj7
  F: "[gb4,a4]@3 [gb4,a4,d5]@5, [d2,d3,d4]", G: "[d4,gb4,a4]@5 ~ [c4,f4]@6 [c4,eb4]@4, [d2,d3], ~@3 [gb3,a3]@5",
  H: "~@6 g5@9 ~, [g2,g3,d4,g4,bb4]@15 ~", I: "~@3 [c5,eb5]@2 ~@3, [c3,g4]@15 ~, ~ g3@5 ~@2, ~@6 g5@9 ~",
  J: "[f4,a4]@3 [a4,eb5]@5, [f3,c5]", K: "f4@2 f4 ~@3 bb3@2, [a4,d5]@15 ~, ~@6 bb4@9 ~, ~@10 f4@5 ~",
  L: "~@6 [eb5,g5,bb5]@9 ~, [eb3,g4]@15 ~", M: "~@6 [c5,eb5,g5,a5]@9 ~, [c3,g4,a4]@15 ~",
  N: "~@6 a3 ~, [d3,d4,gb4,a4,c5]@7 ~, ~ a3@2 ~, ~@5 d5@2 ~", // D7
  O: "[~@6 a4@8 ~ g5@16 ~ [eb4,g4]@6 ~@6 g3@3 ~, [g3,d5]@14 ~@17 c4@7 [c4,g4,bb4]@9 ~, ~@2 g4@5 ~@17]/3", // Eb G5 C7
  P: "f4@2 ~@3 [f5,g5,c6]@3, [f3,g4], c5@3 c5@5, ~ f4@3", // Fsus2
  Q: "[bb2@4 ~@6 bb4@4 ~@8 g4@9 ~, d5@10 ~@5 g4@7 ~@10, ~@6 bb5@8 ~@2 d5@15 ~]/2",
  R: "[~@3 [c5,eb5,g5,a5]@4 ~@3 d4 [d4,a4,c5]@5, [c3,c4,eb4,g4]@14 ~ [d4,gb4]@6 ~@11, ~@16 d3@15 ~, ~@8 a4@3 ~@5, ~@18 a3@13 ~]/2", // Am7b5 D7 Cm D
  S: "g4@4 a4@2 ~@4 [bb4,d5]@5 ~, g2@15 ~, bb4@5 ~@3, ~@6 [a4,c5]@9 ~", // Bb Am
  T: "g5@4 ~@2 [g2,g6]@9 ~, g2@3 ~@5, ~@4 g5@11 ~", U: "[g4,bb4]@3 [g4,bb4,d5]@5, [eb2,eb3,d4]",
  V: "[~ [bb2,bb3,d4,f4,a4]@32 ~@15]/3", // Bbmaj7
})).s("gm_epiano1").gain(0.27)

// chords · epiano1 · soft notes
const epiano1_soft = note(`<
  ~@2 A B C ~ D E ~@2 A B C ~ D E ~ F G H I J K L@2 M N O P@2 Q R S T ~ A B C ~ D E ~@2 A B C ~ D E ~ F G H I J K L@2 M
  N O P@2 Q R S T ~ A B C ~ D E ~@2 A B C ~ D E ~@2 A B C ~ D E ~ E ~@4
>`.pickRestart({
  A: "~@6 c5 f3", B: "~@2 d4 ~@2 f4 ~@2", C: "eb3@15 ~", D: "~@3 a4", E: "~@14 d4 ~", F: "~@6 [d5,bb5]@9 ~",
  G: "~@12 g3@3 ~, [c4,eb4,bb4]@15 ~, ~@5 [c5,eb5,bb5]@3", H: "~@6 f4@9 ~, ~@2 c4@13 ~",
  I: "~@2 bb3 ~, bb2@15 ~, ~ bb3@3 ~@4, ~@3 f4@2 ~@3", J: "~@2 bb3@13 ~, [eb4,bb4]@15 ~",
  K: "~@2 g3@13 ~, [c4,eb4]@15 ~", // Cm
  L: "[~@6 d6@2 ~ d6@5 ~@4 d4@6 ~@4 d4@3 ~, ~@15 bb4@11 bb4@4 ~@2, ~@15 g4@5 ~@4 d4@4 ~@4]/2", M: "[g3,bb5,d6,g6]@15 ~",
  N: "~@6 eb4@9 ~, c3@15 ~, ~ g3@2 ~", O: "~ c4@3 c4@4",
  P: "[~@28 bb3@3 ~, bb4@10 d5@4 eb4@5 ~ eb4@11 ~, ~@4 bb2@10 ~@2 eb3@15 ~, ~@4 bb3@2 bb3@2 ~ bb3@5 ~@2, ~@26 bb4@5 ~]/2",
  Q: "~@2 g3@5 ~, a4@7 ~", R: "~@6 gb4@9 ~", S: "~@4 g4@11 ~", T: "bb5",
})).s("gm_epiano1").gain(0.16)

// bass · fretless bass
const bass = note(`<
  ~ A B C D A B C E A B C D A B C F G@2 H@2 I J K L M N H@2 I J K L O A B C D A B C E A B C D A B C F G@2 H@2 I J K L M
  N H@2 I J K L O A B C D A B C E A B C D A B C E A B C D A B C P C Q R@3
>`.pickRestart({
  A: "~ c3!3 ~ c2 c2@4 c2 ~ c3@4, c2 ~@3", B: "~ f2!3 ~ f1 f1@4 f1 ~ f2@4, f1 ~@3",
  C: "~ bb2!3 ~ bb1 bb1@4 f2@2 bb2 g2 f2 ~, bb1 ~@3", D: "eb2 ~@2 bb2!2 ~ eb3@3 ~ [bb2,eb3]@6, ~ eb2@9 ~@6",
  E: "d2@6 c3@4 d3!3 a2 d2@2", F: "d2@6 c3@4 d3!2 d3@4",
  G: "[g1!2 ~@4 g2@8 c2@8 eb3@2 f3 ~ eb3 ~ c3@2 c3@2, ~@2 g1@11 ~@19]/2",
  H: "[f2!2 f2@4 f1@8 bb1@6 ~@2 f2@2 bb2 ~ g2 ~ f2 g2 f2@2]/2", I: "eb2@3 bb2@3 db3@8 bb2 b2",
  J: "c3@2 g2@2 c2 ~ c2@8 c3 db3", K: "d3@6 d2@4 a2@2 d2 ~ d2@2", L: "g2@9 ~ c2 ~ c2 db2 d2@2", M: "g1",
  N: "c2@6 eb3@2 f3 ~ eb3 ~ c3@2 c3@2", O: "g1@3 g1@5", P: "eb2@6 c3@4 eb3!3 bb2 f2@2",
  Q: "eb2@6 c3@4 eb3!3 ~ f2@2, ~@14 bb2 ~", R: "[~ bb1@35 ~@12]/3",
})).s("gm_fretless_bass").gain(0.45)

// other · acoustic guitar steel
const acoustic_guitar_steel = note("<~@73 A B C@2 D E F G H I J K L M N O P Q R S T@3>".pickRestart({
  A: "~@10 a4@2 bb4 a4 g4 eb4", B: "d4 d5!2 ~@2 a4 ~ g4 gb4@8, ~@3 d5@2 ~@11, ~@2 eb5 ~@5",
  C: "[~ g4 ~ g4!2 a4 ~ bb4 ~ d5 ~ f5 ~@2 f5@8 a4 bb4 c5 bb4 a4 g4 f4 eb4 d4 c4, ~@4 c5 ~@11]/2",
  D: "d4@2 a3 bb3 c4 d4 eb4 f4 g4 a4 d4 eb4 f4 g4 a4 ~", E: "bb4@6 bb4 c5 bb4 ~ bb4 c5 bb4 a4 bb4@2",
  F: "eb5 d5 c5 bb4 c5 d5 eb5 f5 g5 a4 bb4 c5 d5 eb5 f5 ~", G: "f5@6 eb5 d5 c5 bb4 a4 g4 f4 eb4 d4 c4",
  H: "~@2 a3 bb3 c4 d4 eb4 f4!2 ~ f4 f4@2 f4 f4@2", I: "gb4!2 ~ gb4!2 ~ gb4 gb4@9", J: "g4@2 ~ g4 ~ g4!6 ~ g4@4",
  K: "~ f4 g4 a4 bb4 c5 d5 ~ eb5 f5 ~ f5@5", L: "~@2 d5 eb5 c5 d5 bb4 c5 a4 [a4,bb4] g4 a4 bb4 c5 d5 f5",
  M: "eb5 [c5,d5] bb4 [a4,c5] bb4 [g4,a4] f4 [eb4,g4] f4 [d4,eb4] c4 [eb3,g3,bb3] [d3,f3]@2 [eb3,g3]@2", // Csus2 Am Gsus2 Eb Ebmaj7 Eb Dm Eb
  N: "g3 [bb3,c4] d4 [f4,g4] bb4@2 a4 ~ bb4 a4 g4 a4 bb4 c5 c5@2", O: "~@2 a4 bb4 g4@2 f4 ~@3 f4 [g4,a4] bb4 c5 d5 f5",
  P: "d5 f5!2 ~@3 d5 eb5 d5@2 c5 bb4 a4 bb4 c5 d5",
  Q: "~ eb5 d5 c5 bb4 a4 c5 bb4 a4 g4 f4 d4 ~ [g4,bb4] f5 eb5, ~@6 eb4 ~", // Gm
  R: "d5 bb4 g4 f4 g4 f4 d4 c4 bb3 a3 g3@4 f3 g3", S: "bb3 c4 ~ bb3 a3 ~ bb3 a3 f3 g3 a3 bb3 c4 ~ d4 f4",
  T: "[~ d4 f4 ~ [f4,g4] ~ f4@30 ~@12]/3", // Fsus2
})).s("gm_acoustic_guitar_steel").gain(0.64).pan(0.4)

// chords · vibraphone
const vibraphone = note(`<
  A B@2 C@2 D@3 E B@2 C@2 D@3 F G@4 H@4 I@3 J K@4 A B@2 C@2 D@3 E B@2 C@2 D@3 F G@4 H@4 I@3 J K@4 A B@2 C@2 D@3 E B@2
  C@2 D@3 F ~@13
>`.pickRestart({
  A: "~@10 [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~", // Gm
  B: "[[g4,bb4]@3 ~ [eb4,g4] ~ [eb4,g4]@3 ~ [d4,f4] ~ [eb4,g4] ~ [c4,eb4]@7 ~@5 [f4,a4] ~ [f4,a4] ~ [f4,a4] ~]/2", // Gm Eb Dm Eb Cm F
  C: "[[f4,a4]@4 [d4,f4] ~ [d4,f4]@4 [a3,c4] ~ [bb3,d4] ~ [g3,bb3]@6 ~@6 [eb4,g4] ~ [eb4,g4] ~ [eb4,g4] ~]/2", // F Dm Am Bb Gm Eb
  D: "[[eb4,g4]@4 [c4,eb4] ~ [c4,eb4]@3 ~ [bb3,d4] ~ [c4,eb4] ~ [bb3,d4]@4 [a3,c4]@3 ~@5 [bb3,d4]@2 [c4,eb4] ~ [eb4,g4]@4 [d4,f4]@8 ~@6]/3", // Eb Cm Bb Cm Bb Am Bb Cm …
  E: "[d4,gb4]@5 ~@5 [gb4,a4] ~ [gb4,a4] ~ [gb4,a4] ~", F: "[d4,gb4] ~@3",
  G: "[~@4 d4 ~ d4 ~ d4 ~ g4@4 f4@4 eb4@2 ~@6 d4@2 eb4@2 d4@4 c4 ~@3 c4 ~ c4@4 f3@2 d4@5 ~@13]/4",
  H: "[~@4 bb3 ~ bb3 ~ bb3 ~ eb4@3 ~ d4@4 c4@2 ~@6 b3@2 c4 ~ d4@4 c4 ~@3 c4@6 d3@2 bb3@4 ~@14]/4",
  I: "[~@4 d4 ~ d4 ~ d4@2 g4@4 f4@4 eb4 ~@7 d4@2 eb4@2 f4@4 g4 ~@7 f4 ~ f4 ~ f4 g4]/3", J: "~ c4 d4 ~@13",
  K: "[~@4 bb3 ~ bb3 ~ bb3@2 eb4@4 d4@4 c4 ~@7 b3@2 c4 ~ d4@4 c4 ~@7 gb4 ~ gb4 ~ g4@15 ~@3]/4",
})).s("gm_vibraphone").gain(0.64)

// other · accordion
const accordion = note("<~@9 A B C D E F G H ~@25 A B C D E F G H ~@46>".pickRestart({
  A: "g4@6 bb4@6 g4@3 f4, gb4 ~@11 gb4 ~@3", B: "f4@15 ~, g4 ~@15", C: "f4@6 a4@6 f4@3 [eb4,f4], ~@6 ab4 ~@9",
  D: "eb4@15 ~", E: "eb4@3 g4@3 eb4@2, ~@6 gb4 ~@9", F: "f4, e4 ~@15", G: "a4@3 f4@5, ab4 ~@15", H: "a4, ab4 ~@15",
})).s("gm_accordion").gain(0.23)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@2 A ~ B ~ C ~ D E F ~@3 G ~ H ~@18 A ~ B ~ C ~ D E F ~@3 G ~ H ~@18 A ~ B ~ C ~ D ~@21
>`.pickRestart({
  A: "~@4 a4 ~@11", B: "~@2 eb4 ~@13", C: "~@2 c4 ~ a4 ~@11", D: "a4@5 ~ a4 ~@9", E: "~@6 c4 ~@9",
  F: "~@2 [c4,f4] ~@13", G: "~@2 c4 ~@13", H: "a4@5 ~ [a3,d4]@5 ~ a3@4",
})).s("gm_electric_guitar_jazz").gain(0.07).pan(0.1)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A B C D E F G H I J K L M N O P Q R S T U V W X Y R S T U V W X Y A B C D E F G H I J K L M N O P Q R S T U V W X Y
  R S T U V W X Y A B C D E F G H A B C D E F G H A B C D E F G Z G Z AA@3
>`.pickRestart({
  A: "[c4,g4,bb4,eb5] ~@2 [c4,g4] [c4,g4,bb4,eb5]@2 [c4,g4,bb4,eb5]@2 bb4 [c4,g4,bb4,eb5] [c4,g4]@2 [c4,g4]@2 [c4,g4,bb4] [c4,g4,bb4,eb5], ~ [c4,g4,bb4,eb5]@2 ~@13, ~ [bb4,eb5] ~@3 [bb4,eb5]@2 ~", // Cm7 C5 Cm7 C5 C7 Cm7 Eb5
  B: "[c4,f4,a4,eb5]!2 [c4,f4]@2 [c4,f4]@2 [c4,f4,a4,eb5]@3 [c4,f4,a4] [c4,f4,a4]@2 [c4,f4,a4,eb5]@2 eb5 [c4,f4,a4,eb5], ~@2 [a4,eb5]@4 ~@3 eb5@3 ~@4", // F7 F5 F7 F F7 Adim
  C: "[d4,f4,a4,d5] [a4,d5] [d4,f4,a4,d5] [d4,f4,a4] [d4,f4,a4,d5]@2 [d4,f4,a4,d5]@2 d4!2 d4@2 [d4,f4,d5]@2 [d4,f4,a4] [d4,f4,a4,d5], ~@9 [f4,a4,d5]@3 ~@4", // Dm D5 Dm
  D: "[eb4,g4,bb4,d5] [eb4,g4,bb4] [g4,bb4] [eb4,g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4,d5]@2 [g4,bb4,d5] eb4 eb4@2 [eb4,g4,bb4,d5]@2 [g4,bb4,d5] [eb4,g4,bb4,d5], ~@2 d5@4 ~@3 [g4,bb4,d5]@3 ~@4", // Ebmaj7 Eb Gm Eb Ebmaj7 Gm Ebmaj7 Gm …
  E: "~ eb5 [c4,g4,bb4,eb5] [c4,g4,bb4] [c4,g4,bb4,eb5]@2 [c4,g4,bb4,eb5]@2 [bb4,eb5] [c4,g4] [c4,g4]@2 eb5@2 ~ c4, [c4,g4,bb4,eb5]@2 ~@7 [bb4,eb5]@3 [c4,g4,bb4]@4, ~@7 eb5", // Cm7 C7 Cm7 Eb5 C5 Cm7 Eb5 C7
  F: "[c4,f4,a4,eb5] [c4,f4,a4] [f4,a4] [c4,f4] [c4,f4]@2 [c4,f4,a4,eb5]@2 eb5 [c4,f4,a4,eb5]@3 [c4,f4,a4,eb5]@2 ~ [c4,f4], ~ eb5@2 ~@5, ~@3 a4@3 ~@8 [f4,a4,eb5]@2", // F7 F F5 F7 F5 F7
  G: "[d4,f4,a4,d5]@2 [f4,a4,d5] [d4,f4,a4] ~ d4 d5@2 d5 ~ d4@2 [d4,f4,a4,d5]@2 [a4,d5] [d4,f4,a4,d5], ~@4 [f4,a4,d5]@2 [d4,f4,a4]@3 [f4,a4,d5]@3 ~@4", // Dm D5 Dm
  H: "[d4,gb4,c5,d5]@2 [d4,gb4,c5,d5] [gb4,c5] ~ d4 [d4,gb4,c5,d5]@2 [gb4,c5,d5] [d4,gb4,c5,d5]@3 ~ c5 [d4,gb4,c5]@2, ~@3 [d4,d5]@3 ~@6 [d4,gb4,c5,d5]@2 ~@2, ~@4 [gb4,c5]@2 ~@7 d5@3", // D7 Gbdim D7 D D7 Gbdim
  I: "[c4,g4,bb4,eb5]@2 ~ c4 [g4,bb4,eb5]@2 [g4,bb4,eb5]@3 [g4,bb4] [c4,g4,bb4]@2 [c4,g4,bb4,eb5]@2 ~ [c4,g4], ~@2 [c4,g4,bb4,eb5]@2 c4@5 eb5@3 ~@2 [g4,bb4,eb5]@2", // Cm7 Eb Gm C7 Cm7 C5 Cm7 Eb
  J: "eb5@2 ~ [c4,f4] [c4,f4,a4,eb5]@2 [c4,f4,a4,eb5]@2 [f4,a4,eb5] [c4,f4] [c4,f4]@2 [f4,a4,eb5]@2 [f4,a4,eb5]@2, [c4,f4,a4] ~@2 c4, ~@2 eb5@2 ~@5 [a4,eb5]@3 ~@4", // F5 F7 F5 F7 F Adim
  K: "[d4,f4,a4,d5]!2 [d4,f4,a4]!2 [d4,f4,a4]@2 [d4,f4,a4,d5]@2 [f4,a4,d5] [d4,f4,a4,d5]@3 [d4,f4,a4,d5]@2 [d4,f4,a4,d5] [d4,f4,a4], ~ d5@2 ~@5", // Dm
  L: "~ eb4 [eb4,g4,bb4,d5] [eb4,g4] [eb4,g4]@2 [g4,bb4,d5]@2 [g4,bb4,d5] [g4,bb4] [eb4,g4,bb4]@2 [eb4,g4,bb4,d5] bb4 [eb4,g4,bb4]@2, [eb4,g4,bb4,d5]@2 ~ [bb4,d5]@3 eb4@3 d5@3 ~ d5@3", // Ebmaj7 Eb Gm Eb Ebmaj7 Eb Ebmaj7 Bb
  M: "[c4,g4,bb4,eb5] [g4,bb4,eb5] ~ c4 [c4,g4,bb4,eb5]@2 [c4,g4,bb4,eb5]@2 [c4,g4]!2 [c4,g4,bb4]@2 [c4,g4,bb4,eb5]@2 [g4,bb4,eb5] [c4,g4,bb4], ~ [c4,g4,bb4,eb5] ~@2 eb5@2 ~@2, ~@4 bb4 ~@3", // Cm7 Eb Cm7 C5 C7 Cm7 Eb C7 …
  N: "~@2 [f4,a4,eb5] [c4,f4,a4] [c4,f4,a4]@2 [c4,f4,a4,eb5]@2 [f4,a4,eb5] [c4,f4,a4] [c4,f4,a4]@2 [c4,f4,a4,eb5]@2 [f4,a4,eb5] [c4,f4,a4], [c4,f4,a4,eb5]@2 ~ eb5@3 ~@3 eb5@3 ~@4, ~ [c4,f4]@2 ~@13", // F7 F F7 F F7 F F7 F5
  O: "[d4,f4,a4,d5]@2 [d4,f4,a4,d5] [d4,f4,a4] [d4,f4,a4,d5]!2 [d4,f4,a4,d5]@2 ~ [d4,f4] [d4,f4,a4,d5]@2 ~ d4 [d4,f4,a4,d5] [d4,f4,a4], ~@4 [d4,f4,a4,d5] ~ [d4,f4,a4,d5] ~", // Dm
  P: "[d4,gb4,c5,d5]!2 ~ [c4,f4,c5]@3 [eb4,gb4,c5,eb5]@2", // D7 F5 Cdim
  Q: "[d4,g4,bb4,d5]@3 [d4,g4] [d4,g4,bb4,d5]@2 [g4,bb4,d5] [d4,g4,bb4,d5] ~ [d4,g4] [d4,g4,bb4,d5]@2 ~ [d4,g4,bb4,d5]!2 ~", // Gm G5 Gm G5 Gm
  R: "[c4,g4,bb4,eb5]@2 ~ [c4,g4,bb4,eb5] [c4,g4,bb4,eb5]@2 [bb4,eb5] [c4,g4,bb4,eb5]!3 [c4,g4,bb4,eb5]@2 [g4,bb4,eb5] ~ [c4,g4] ~, ~@13 [c4,g4,bb4,eb5]@2 ~", // Cm7 Eb5 Cm7 Eb C5 Cm7
  S: "[c4,f4,a4,eb5] ~@2 [c4,f4] [c4,f4,eb5]@3 [c4,f4,a4,eb5] [f4,a4,eb5] [c4,f4,a4,eb5] [c4,f4,a4]@2 [a4,eb5] [c4,f4,a4,eb5]!2 ~, ~ [c4,f4,a4]@2 ~@13, ~ eb5 ~@6", // F7 F5 F7 F Adim F7 F
  T: "[d4,f4,a4,d5]@3 [d4,f4,a4,d5] [d4,f4,a4,d5]@3 [d4,f4,a4,d5] [f4,a4,d5] [d4,f4,a4,d5] [d4,f4,a4,d5]@2 [a4,d5] [d4,f4,a4,d5] [f4,a4,d5]@2", // Dm D5 Dm
  U: "[eb4,g4,bb4,d5] ~ [g4,bb4,d5] ~ [eb4,g4,bb4,d5]@2 [bb4,d5] [eb4,g4,bb4,d5] ~ eb4 [eb4,g4,bb4,d5]@2 [g4,bb4,d5] [eb4,g4,bb4,d5]@3", // Ebmaj7 Gm Ebmaj7 Bb Ebmaj7 Gm Ebmaj7
  V: "[c4,g4,a4,eb5]@2 [c4,g4,a4,eb5] c4 [c4,g4]@2 [g4,a4,eb5] [c4,g4,a4,eb5] ~ [c4,g4,a4] [c4,g4,a4,eb5]@2 ~ [c4,g4,a4] ~@2, ~@4 [a4,eb5] ~@8 eb5@3", // Am7b5 C5 Am7b5 Am7 Am7b5 Am7 Adim
  W: "[d4,gb4,c5,d5]@2 ~ [d4,gb4,c5,d5] [d4,gb4,c5,d5]@2 [gb4,c5,d5] [d4,gb4,c5,d5]@2 [d4,gb4,c5,d5] [d4,gb4,c5,d5]@2 [gb4,c5,d5] [d4,gb4,c5,d5] [d4,gb4,c5,d5]@2", // D7
  X: "[d4,g4,bb4,d5] ~@2 [d4,g4,bb4,d5] [g4,bb4,d5] ~@2 [d4,g4,bb4,d5] ~ [d4,g4] [d4,g4,bb4,d5]@2 [g4,bb4,d5] [d4,g4,bb4,d5] [g4,bb4,d5]@2, ~@4 d4@3 ~@9", // Gm G5 Gm
  Y: "[d4,g4,bb4,d5]", // Gm
  Z: "[eb4,g4,bb4,d5]@2 [eb4,g4,bb4,d5] [g4,bb4] ~ eb4 [eb4,g4,bb4,d5]@2 [g4,bb4,d5] [eb4,g4,bb4,d5]@3 ~ bb4 [eb4,g4,bb4]@2, ~@3 [eb4,d5]@3 ~@6 [eb4,g4,bb4,d5]@2 ~@2, ~@4 [g4,bb4]@2 ~@7 d5@3", // Ebmaj7 Gm Ebmaj7 Gm Ebmaj7 Eb Ebmaj7 Gm
  AA: "[~@2 bb4@35 ~@11, [bb2,f3]@35 ~@13, ~ [bb3,d4,f4,d5]@35 ~@12]/3", // Bb5 Bb
})).s("gm_electric_guitar_clean").gain(0.05).pan(0.9)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~@3 A ~@5 B ~ C D E ~@2 F G H I J K L M N ~ H I J K L M N ~@3 A ~@5 B ~ C D E ~@2 F G H I J K L M N ~ H I J K L M N
  ~@3 A ~@7 A ~@7 A ~@10
>`.pickRestart({
  A: "~ d4 ~@6 f4 ~@3 a4@2 ~@2", B: "~ c4 ~@14", C: "~@8 d4 ~@7", D: "~@13 g4 ~@2", E: "~ c4 ~@12 c4 ~",
  F: "~@2 [d4,gb4,c5] ~@5, ~ d5@2 ~", G: "~@4 [d4,g4,bb4,d5] ~@3", H: "~@2 [g4,bb4,eb5] ~@13",
  I: "~@4 a4@3 ~@3 eb5@3 ~@3", J: "~@2 [a4,d5] ~@11 d4@2", K: "~@3 [eb4,g4] ~@4 [eb4,g4,bb4,d5]@2 ~@6",
  L: "~@8 [c4,g4,a4,eb5] ~@3 [g4,a4,eb5] ~ [c4,g4,a4] ~", M: "~@2 [gb4,c5,d5] ~@5 [c5,d5] ~@7",
  N: "~@2 [g4,bb4,d5] ~@3 [g4,bb4,d5] ~ [g4,bb4,d5] ~@7", // Gm
})).s("gm_electric_guitar_clean").gain(0.03).pan(0.9)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~ A@9 B A B A@3 ~ C@2 D@5 E C D@2 E C@3 ~ D A@15 ~ C@2 D@5 E C D@2 E C@3 ~ D A@26 ~@3
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@7 x ~@6 x ~", C: "~@7 x", D: "~@3 x ~@4", E: "~@3 x ~@3 x",
})).gain(0.32)

// drums · rim
const rim = s("rim").struct("<~@17 A@8 ~ A@7 ~@17 A@8 ~ A@7 ~@26 B ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~ A@15 B ~@16 C A@15 B ~@16 C A@25 B ~@3>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x ~@4",
})).gain(0.72)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@33 [~@2 x!3 ~@11] ~@32 [~@2 x!3 ~@11] ~@25 [~ x] ~@3>").gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<A ~@16 B C@7 D B C@6 ~@17 B C@7 D B C@6 ~@26 E ~@3>".pickRestart({
  A: "x!2", B: "~@4 x ~ x ~ x!2 ~@2 x ~ x ~", C: "x ~@3 x ~ x ~ x!2 ~@2 x ~ x ~", D: "~@7 x", E: "~@10 x!2 ~@4",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<A ~@16 B@8 ~ B@7 ~@17 B@8 ~ B@7 ~@30>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@13 x",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@33 [~@3 x ~@4] ~@32 [~@3 x ~@4] ~@29>").gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@32 A B ~@31 A B ~@25 C ~@3>".pickRestart({
// … 33 more lines

More by Pooh