Strudelify

Se ci sarai

Lunapop

KeyC majorTempo80 bpm
0:00/0:00
// Se ci sarai — Lunapop
// 80 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 6, 4/4 at bar 6, 2/4 at bar 38, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 16 distortion guitar (copy of ch 15 distortion guitar)
// note: Full arrangement: all 76 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(80/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(`<
  A B C D@2 E F G H G I J K L M N O G M P@2 Q R S T Q U V W X Y X Z AA AB AC AD AE AF AG AH AI AF AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW AX AY AZ BA BB BA BB BA BB BC BD BE BF BG BH BI BJ@2
>`.pickRestart({
  A: "c2@8 e2@7 ~", B: "f2 g1", C: "c1@8 e2@7 ~", D: "[f2@7 f2 g1@16 c2@8]/2", E: "e2@7 ~ f2@8",
  F: "g1@3 g1 f2 ~ [a#1,c2,c#2] g#1 c2@7 ~", G: "e1 ~ e1@5 ~ f1@7 ~", H: "g1 ~ g1@5 ~ c2@7 ~",
  I: "g1 ~ g1@2 ~ g1!2 a1 c2@7 b1", J: "e2 ~ e2@5 ~ f1@6 ~@2", K: "g1!2 g1@3 g1 g1@2 c2@8", L: "e1 ~ e1@5 e1 f1@7 ~",
  M: "g1 ~ g1@2 ~ g1!2 a1 c2@7 ~", N: "e2 ~ e2@6 f1@7 ~", O: "g1 ~ g1@2 ~@2 g1 a1 c2@7 ~",
  P: "[e1 ~ e1@5 ~ f1@2 f1@2 f1@2 c2 ~ f2@2 e2 [a1,a#1,b1,c2,c#2] g2@2 d2@2 c2@7 c2, ~@15 d2@2 ~@3 g1 ~@11]/2",
  Q: "e2 b1 e2@2 e2@2 b1@2 f1@4 f1@3 d1", R: "g1 d1 g1@2 g1 ~ g1 a1 c2@7 c1", S: "e1!2 e1@4 c1@2 f1@2 f1@2 f1@2 d1@2",
  T: "g1!2 g1@2 g1!3 a1 c2@4 c2@3 c2", U: "g1!2 g1@2 g1 a1 c2 a1 c2@4 c2@3 c1", V: "e1!2 e1@4 c1@2 f1@2 f1@2 f1@3 d1",
  W: "g1!2 g1@2 g1 a1 c2 a1 c2@2 c2!2 c2@2 c2 b1", X: "e2 b1 e2@2 e2@2 b1@2 f1@2 f1@2 f1@2 f1 d1",
  Y: "g1 d1 g1@2 g1!3 a1 c2@2 c2@2 c2@2 c2 b1",
  Z: "g1!2 d2@2 d#2 [c2,c#2] [f#1,g1,g#1,a1] [c#1,d1,d#1,f1] [b0,c1] ~@7, ~@4 c2@3 ~", AA: "e2 ~ e2@6 f1@6 ~ f1",
  AB: "g1 ~ g1@2 ~ g1!2 a1 c2@7 a1", AC: "e2 ~ e2@6 f1@4 f1@3 ~", AD: "g1 ~ g1@9 g1 c2 [g#1,a1,b1] [f1,f#1,g1] ~",
  AE: "c2@8 e1 ~ e1@5 e1", AF: "f1@7 ~ g1 ~ g1@2 ~ g1!2 a1", AG: "c2@7 ~ e2 ~ e2@6", AH: "f1@7 ~ g1 ~ g1@2 ~@2 g1 a1",
  AI: "c2@7 ~ e1 ~ e1@5 ~", AJ: "f1@2 f1@2 f1@2 c2 ~ f2@2 [d2,d#2,e2] [a1,a#1,b1,c2] g2@2 d2@2, ~@7 d2@2 ~@3 g#1 ~@3",
  AK: "c2@7 c2 e2 b1 e2@2 e2@2 b1@2", AL: "f1@4 f1@3 d1 g1 d1 g1@2 g1 ~ g1 a1", AM: "c2@7 c1 e1!2 e1@4 c1@2",
  AN: "f1@2 f1@2 f1@2 d1@2 g1!2 g1@2 g1!3 a1", AO: "c2@4 c2@3 c2 e2 b1 e2@2 e2@2 b1@2",
  AP: "f1@4 f1@3 d1 g1!2 g1@2 g1 a1 c2 a1", AQ: "c2@4 c2@3 c1 e1!2 e1@4 c1@2",
  AR: "f1@2 f1@2 f1@3 d1 g1!2 g1@2 g1 a1 c2 a1", AS: "c2@2 c2!2 c2@2 c2 b1 e2 b1 e2@2 e2@2 b1@2",
  AT: "f1@2 f1@2 f1@2 f1 d1 g1 d1 g1@2 g1!3 a1", AU: "c2@2 c2@2 c2@2 c2 b1 e2 b1 e2@2 e2@2 b1@2",
  AV: "f1@2 f1@2 f1@2 f1 d1 g1!2 d2@2 [d#2,e2,f2] [a#1,c2,c#2] a1 [d1,f1]", AW: "c2@6 ~@2 e2 ~ e2@6",
  AX: "f1@2 f1@2 f1@3 f1!3 f1@2 ~ f1!3", AY: "g#1@4 g#1@3 f1 g#1!2 g#1@2 g#1 g1@3",
  AZ: "c1@11 g1 c2 [a1,b1] [d#1,e1,f1,f#1,g1] [a#0,c#1]", BA: "d2@7 d1 f#1!2 f#1@4 d1@2",
  BB: "g1@2 g1@2 g1@2 e1@2 a1!2 a1@2 a1!3 b1", BC: "d2@4 d2@3 d2 f#2 c#2 f#2@2 f#2@2 c#2@2",
  BD: "g1@4 g1@3 e1 a1!2 a1@2 a1 b1 d2 b1", BE: "d2@4 d2@3 d1 f#1!2 f#1@4 d1@2",
  BF: "g1@2 g1@2 g1@3 e1 a1!2 a1@2 a1 b1 d2 b1", BG: "d2@2 d2!2 d2@2 d2 c#2 f#2 c#2 f#2@2 f#2@2 c#2@2",
  BH: "g1@3 g1 g1@3 g1!2 ~ g1@2 g1@2 a1@2", BI: "a#1@4 a#1@3 ~ a#1 ~ a#1@2 [c2,c#2] [a#1,b1] [f#1,g1,g#1] [e1,f1]",
  BJ: "[d1@5 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.72)

// bass · electric bass finger · soft notes
const bass_soft = note("<~@6 A ~@13 B ~@11 C ~@3 D ~@7 E ~@11 F G ~@2 H ~@12 I J ~>".pickRestart({
  A: "~@5 e2 [b1,d2,d#2] [f1,f#1,g1,a1] [d#1,e1] ~@7", B: "~@2 [d2,d#2] ~ g#1 ~@11",
  C: "~@4 [e2,f2] [a#1,b1,d2] ~ e1 ~@8", D: "~@13 a#1 ~ g1", E: "~@11 c#2 g1 ~@3",
  F: "~@13 [b1,d2] [f#1,g1,g#1] [c#1,d#1,e1]", G: "c1 ~@15", H: "~@13 [g#1,a#1] ~ [b0,c1,d1]", I: "~@13 a1 ~@2",
  J: "d#1 ~@15",
})).s("gm_electric_bass_finger").gain(0.48)

// other · overdriven guitar
const overdriven_guitar = note("<~@32 A B C B D@2 ~@38>".pickRestart({
  A: "~@8 c4@3 d4@3 e4@2", B: "e4@3 e4@3 d4@2 c4@3 d4@3 e4@2", C: "e4@3 e4@3 g4@2 c4@3 d4@3 e4@2", D: "[d4@3 ~]/2",
})).s("gm_overdriven_guitar").gain(0.8)

// chords · synth strings 1
const synth_strings_1 = note("<A B A C@2 ~@71>".pickRestart({
  A: "[g4,c5] [g#4,b4], e4", B: "[f4,a4,c5]@2 [b4,d5] b4, ~ [f4,a4]", C: "[[f4,a4,c5] [g4,b4,d5]@2 ~]/2",
})).s("gm_synth_strings_1").gain(0.18)

// other · string ensemble 2
const string_ensemble_2 = note("<~@12 A B@2 C D C D C E ~@16 F G F H F H F H ~@31>".pickRestart({
  A: "~ [c4,c5]", B: "[[b3,b4]@8 [a3,a4]@6 ~ a4@4 [g3,g4]@2 [c4,c5]@2 [b3,b4] [c4,c5]@8, ~@14 [b3,b4]@5 ~@13]/2",
  C: "[b3,b4] [a3,a4]", D: "[b3,b4] [c4,c5]", E: "[b3,b4] ~", F: "[c4,c5] [b3,b4]",
  G: "[a3,a4]@6 ~ a4@4 [g3,g4]@2 [c4,c5]@2 [b3,b4], ~@6 [b3,b4]@5 ~@5", H: "[a3,a4] [b3,b4]",
})).s("gm_string_ensemble_2").gain(0.4)

// chords · piano
const piano = note(`<
  A B C D@4 E@4 F@4 G@4 F@4 E@4 H@4 E@4 I@2 J K L M N O P Q J K L M N O R Q J K L M S T U V W X W X W X Y Z AA AB AC AD
  AE AF@2
>`.pickRestart({
  A: "[c4,e4,g4]@2 ~@4 c4 ~@3 e4@2 ~@2 [g#4,d5]@2, [c3,c5]@7 ~ e3@8, ~@2 c4@2 c4@2 ~@3 g#4@3 c5@4, ~@3 [g4,d5]@4 d5@5 g#4 e4@3, ~@3 e4@2 [e4,e5]@2 g#4@2 b4@7", // C G#dim C G5 E
  B: "[f3,f4,a4,c5]@2 [f4,a4] ~@3 f3 ~@5 g3@2 [g3,f4,b4]@2, ~@2 c5@5 ~@2 d5@7, ~@3 d5@4 e5@9, ~@3 [f4,a4]@2 [f4,a4,e5]@2 [f4,a4]@2 [f4,a4]@2 [a4,c5]@5, ~@4 f3@2 ~@2 g3@2 g3 f4@3 ~@2", // F G7 F Fmaj7 F Am
  C: "[e4,g4]@2 ~@10 g#4!2 [e4,g#4,d5] ~, c3@7 d5@3 e4@3 e5@2 ~, c5@2 c4!2 e3@4, ~@2 c4 g4@2 [g4,c5,e5]@2 g#4@2 c5@6 ~, ~@3 [e4,d5]@5 ~ g#4@3 d5@2 ~@2", // Em E7 C E7
  D: "[a4@2 ~@4 f4@2 ~@4 g4@5 ~@2 [g4,b4]@2 ~ d4 ~ [c4,e4]@4 ~@2 g4 ~ b3@2 ~@3 [e4,g#4,b4,d5]@2 ~ [f3,c4,f4,a4,c5]@2 ~ [f4,a4]@2 ~ [f3,c4] ~ [g3,d4]@2 ~@4 [g3,d4] ~ [c4,e4,g4]@2 ~ [e4,g4]@3 c4 g4, f3@8 [g3,d4]@6 ~@3 [g4,b4] d4 e5@4 ~@5 c4@3 g#4@2 ~@3 b3@3 ~@12 [f4,a4]@4 ~@3 c4@2 ~@4, c5@4 f4@2 ~@3 g4@3 g5@11 ~@8 d5@6 ~@6 c5@4 ~@17, ~@2 f4 a4@2 [a4,c5,e5]@3 [b4,d5]@3 d5@6 f5@6 ~@6 e4@2 [e4,b4]@4 [e4,g#4,b4]@2 ~@8 [f4,a4,d5]@2 [g4,b4]@6 [g4,b4]@2 ~@9, ~@3 d5@5 ~@2 b4@7 d5@4 [g4,b4,d5]@2 ~ [c3,g4,c5]@7 ~@11 [f3,c4]@4 ~@4 [g3,d4]@2 [g3,d4]@2 ~@2 [c3,c5]@7 ~]/4", // G C E7 F F5 G5 C Em …
  E: "[g#4 [g#4,d5]@2 ~ e4@2 e4 [g#4,d5] [f3,c4]@2 ~@2 [f4,c5] ~ c4 ~@2 d5@2 d5@2 [g4,d5]@2 ~ [c4,g4]@4 ~@2 c5 ~@2 g#4@2 ~ e4@2 [e4,g#4,c5] b4 f4@4 ~@2 a4 ~@2 g4@2 ~@2 [g4,b4,d5]@2 ~ c4@4 c4@2 ~ [e4,g4,c5], [e3,e5]@7 ~ [f4,c5]@4 ~ [f4,c5]@2 ~@2 g4@4 ~@7 c4@3 g#4@2 b4@6 ~@6 f4@2 g4@2 ~@2 [g4,b4]@2 ~@11, ~@3 [g#4,d5]@4 ~ a4@7 ~@4 a4@4 ~@6 g4@2 d5@4 ~@12 b4@4 f5@4 ~@9, ~@10 [f3,c4]@5 [g3,d4]@8 ~ [c3,e4,c5]@7 ~ e3@7 ~ [f3,a4,c5]@7 ~ g3@7 ~ [c3,e4,g4,c5]@8, ~@32 e4@2 ~ [g#4,d5]@4 ~@5 c4@4 ~@4 d4@3 ~@9]/4", // G#dim F5 G5 C5 Eaug G C E …
  F: "[e4 ~@3 [e4,g#4,d5]@4 [c4,f4,a4,c5]@4 [c4,a4]@2 c4 ~ d4@2 ~@2 [g4,b4]@2 d4 [e4,g4,c5] [c4,e4]@4 ~@2 g4 ~ b3@2 ~@3 [e4,g#4,b4,d5]@2 ~ [f3,c4,f4,a4,c5]@2 ~ [f4,a4]@2 ~ [f3,c4] ~ [g3,d4]@2 ~@4 [g3,d4] ~ [c4,e4,g4]@2 ~ [e4,g4]@3 c4 g4, b4@8 ~@23 d5@6 ~@6 c5@4 ~@17, g#4@4 ~@11 [g4,b4]@5 ~@9 e4@2 [e4,b4]@4 [e4,g#4,b4]@2 ~@8 [f4,a4,d5]@2 [g4,b4]@6 [g4,b4]@2 ~@9, ~ e4@3 ~@14 d4@4 ~@6 c4@3 g#4@2 ~@3 b3@3 ~@12 [f4,a4]@4 ~@3 c4@2 ~@4, ~@2 [e3,b3]@6 f3@7 ~ g3@7 ~ [c3,g4,c5]@7 ~@11 [f3,c4]@4 ~@4 [g3,d4]@2 [g3,d4]@2 ~@2 [c3,c5]@7 ~]/4", // E7 F G C E7 F F5 G5 …
  G: "[g#4 [g#4,d5]@2 ~ e4@2 e4 [g#4,d5] [f3,c4]@2 ~@2 [f4,c5] ~ c4 ~@2 d5@2 d5@2 [g4,d5]@2 ~ [c4,g4]@4 ~@2 c5 ~@2 g#4@2 ~ e4@2 [e4,g#4,c5] b4 f4@4 ~@2 a4 ~@2 g4@2 ~@2 [g4,b4,d5]@2 ~ c4@4 c4@2 ~ [e4,g4,c5], [e3,e5]@7 ~ [f4,c5]@4 ~ [f4,c5]@2 ~@2 g4@4 ~@7 c4@3 g#4@2 b4@6 ~@6 f4@2 g4@2 ~@2 [g4,b4]@2 ~@11, ~@3 [g#4,d5]@4 ~ a4@7 ~@4 a4@4 ~@6 g4@2 d5@4 ~@12 b4@4 f5@4 ~@9, ~@10 [f3,c4]@5 [g3,d4]@8 ~ [c3,e4,c5]@7 ~ e3@7 ~ [f3,a4,c5]@7 ~ g3@7 ~ [c3,e4,g4,c5]@8, ~@32 e4@2 ~ [g#4,d5]@4 ~@5 c4@4 ~@4 d4@3 ~@7 c4@2]/4", // G#dim F5 G5 C5 Eaug G C E …
  H: "[e4 ~@3 [e4,g#4,d5]@4 [c4,f4,a4,c5]@4 [c4,a4]@2 c4 ~ d4@2 ~@2 [g4,b4]@2 d4 [e4,g4,c5] [c4,e4]@4 ~@2 g4 ~ b3@2 ~@3 [e4,g#4,b4,d5]@2 ~ [f3,c4,f4,a4,c5]@2 ~ [f4,a4]@2 ~ [f3,c4] ~ [g3,d4]@2 ~@4 [g3,d4] ~ [c4,e4,g4]@2 ~ [e4,g4]@3 c4 g4, b4@8 ~@23 d5@6 ~@6 c5@4 ~@17, g#4@4 ~@11 [g4,b4]@5 ~@9 e4@2 [e4,b4]@4 [e4,g#4,b4]@2 ~@8 [f4,a4,d5]@2 [g4,b4]@6 [g4,b4]@2 ~@9, ~ e4@3 ~@14 d4@4 ~@6 c4@3 g#4@2 ~@3 b3@3 ~@12 [f4,a4]@4 ~@3 c4@2 ~@4, ~@2 b3@6 f3@7 ~ g3@7 ~ [c3,g4,c5]@7 ~@11 [f3,c4]@4 ~@4 [g3,d4]@2 [g3,d4]@2 ~@2 [c3,c5]@7 ~]/4", // E7 F G C E7 F F5 G5 …
  I: "[e4 ~@3 [e4,g#4,d5]@4 [c4,f4,a4,c5]@4 [c4,a4]@2 c4 ~ d4@2 ~@2 [g4,b4]@2 d4 g4 ~@6 [g3,d4]@2, b4@8 ~@15 [b4,d5]@2 f5@7, g#4@4 ~@11 [g4,b4]@5 ~@5 d5@3 [g3,d4]@2 ~@2, ~ e4@3 ~@14 d4@4 ~@3 [g4,b4]@2 e5@5, ~@2 b3@6 f3@7 ~ g3@7 ~ [g3,d4]@2 d4 [g4,b4]@2 [g4,b4,d5]@3]/2", // E7 F G G5 Bm G G5 G …
  J: "[c4,e4]@4 ~@2 g4 ~ b3@2 ~@3 [e4,g#4,b4,d5]@2 ~, [c3,g4,c5]@7 g#4@2 ~@3 b3@3 ~, ~@4 c4@3 [e4,b4]@4 [e4,g#4,b4]@2 ~@3, ~@5 e4@2 d5@6 ~@3", // C E7 C5 E5 E
  K: "[f3,c4,f4,a4,c5]@2 ~ [f4,a4]@2 ~ [f3,c4] ~ [g3,d4]@2 ~@4 [g3,d4] ~, ~@2 [f3,c4]@3 [f4,a4,d5]@2 [g4,b4]@6 [g4,b4]@2 ~, ~@3 c5@4 ~@3 [g3,d4]@2 [g3,d4]@2 ~@2, ~@11 [f4,a4]@4 ~", // F F5 G5 F5 Dm G G5 F
  L: "[c4,e4,g4]@2 ~ [e4,g4]@3 c4 g4 g#4 [g#4,d5]@2 ~ e4@2 e4 [g#4,d5], [c3,c5]@7 ~ [e3,e5]@7 ~, ~@2 c4@2 ~@7 [g#4,d5]@4 ~", // C Em G#dim C E G#dim
  M: "[f3,c4]@2 ~@2 [f4,c5] ~ c4 ~@2 d5@2 d5@2 [g4,d5]@2 ~, a4@7 ~@2 g4@4 ~@3, [f4,c5]@4 ~ [f4,c5]@2 ~@4 a4@4 ~, ~@2 [f3,c4]@5 [g3,d4]@8 ~", // F5 G5 F5 G5
  N: "[c4,g4]@4 ~@2 c5 ~@2 g#4@2 ~ e4@2 [e4,g#4,c5] b4, [c3,e4,c5]@7 ~ e3@7 ~, ~@4 c4@3 g#4@2 b4@6 ~, ~@5 g4@2 d5@4 ~@5, ~@8 e4@2 ~ [g#4,d5]@4 ~", // C5 Eaug C G#dim
  O: "f4@4 ~@2 a4 ~@2 g4@2 ~@2 [g4,b4,d5]@2 ~, [f3,a4,c5]@7 g4@2 ~@2 [g4,b4]@2 ~@3, ~@4 c4@4 g3@7 ~, ~@5 f4@2 b4@4 f5@4 ~, ~@12 d4@3 ~", // G F G
  P: "c4@4 c4@2 ~ [e4,g4,c5] e4 ~@3 [e4,g#4,d5]@4, [c3,e4,g4,c5] b4, ~@2 g#4 ~, ~@9 e4@3 ~@4, ~@5 [e3,b3]@3", // C E7 C E5
  Q: "[c4,f4,a4,c5]@4 [c4,a4]@2 c4 ~ d4@2 ~@2 [g4,b4]@2 d4 [e4,g4,c5], f3@7 [g4,b4]@5 ~@4, ~@8 g3@7 ~, ~@5 d4@2 ~", // F G C G
  R: "c4@4 c4@2 ~ [e4,g4,c5] e4 ~@3 [e4,g#4,d5]@4, [c3,e4,g4,c5] b4, ~@2 g#4 ~, ~@9 e4@3 ~@4, ~@5 b3@3", // C E7 C
  S: "[c3,g3,e4,g4]@2 ~@4 [c3,g3] ~@3 [e3,b3]@2 ~@2 [g#4,d5]@2, c5@5 ~@2 d5@5 ~ e5@2 ~, ~@2 [c3,g3]@2 [c3,g3]@2 ~@2 [e3,b3]@2 ~@2 [e3,b3,g#4,d5]@2 [e3,b3] ~, ~@3 [e4,d5]@4 ~@2 g#4@3 ~@4, ~@3 g4@2 [g4,c5,e5]@2 g#4@2 c5@6 ~", // C C5 E5 G#dim C5 E5 E7 E5 …
  T: "[f3,c4,f4,a4]@2 ~@12 [f3,c4] ~, c5@10 [f3,c4] [f4,a4]@2 [f4,a4,d5]@2 ~, ~@2 [f3,c4]@2 [f3,c4]@2 [f3,c4] [f4,a4]@2 d5@3 [f3,c4]@2 ~@2, ~@3 d5@5 [f3,c4] [f4,a4]@2 c5@4 ~, ~@3 [f4,a4]@2 [f4,a4,e5]@2 e5@8 ~", // F F5 F Dm F5 F F5 F …
  U: "[g#3,c4,f4]@2 ~@2 [g#3,c4]@2 [g#3,c4,f4]@2 ~@3 f4 [g#3,c4,f4,d#5]@2 [g#3,c4,f4,d5] ~, c5@6 c5@9 ~, ~ [g#3,c4] ~@2 [g#3,c4]!2 ~@2, ~@3 d5@11 ~@2, ~@3 f4@3 ~@3 f4@2 ~@5", // Fm G# Fm Fm7 Dm7b5 G#
  V: "[c3,c4,e4,g4,c5]", // C
  W: "[d4,f#4,a4]@2 ~ [f#4,a4]@3 d4 a4 a#4 [a#4,e5]@2 ~ f#4@2 f#4 [a#4,e5], [d3,d5]@7 ~ [f#3,f#5]@7 ~, ~@2 d4@2 ~@7 [a#4,e5]@4 ~", // D F#m A#dim D F# A#dim
  X: "[g3,d4]@2 ~@2 [g4,d5] ~ d4 ~@2 e5@2 e5@2 [a4,e5]@2 ~, b4@7 ~@2 a4@4 ~@3, [g4,d5]@4 ~ [g4,d5]@2 ~@4 b4@4 ~, ~@2 [g3,d4]@5 [a3,e4]@8 ~", // G5 A5 G5 A5
  Y: "[d4,a4]@4 ~@2 d5 ~@2 a#4@2 ~ f#4@2 [f#4,a#4,d5] c#5, [d3,f#4,d5]@7 ~ f#3@7 ~, ~@4 d4@3 a#4@2 c#5@6 ~, ~@5 a4@2 e5@4 ~@5, ~@8 f#4@2 ~ [a#4,e5]@4 ~", // D5 F#aug D A#dim
  Z: "g4@4 ~@2 b4 ~@2 a4@2 ~@2 [a4,c#5,e5]@2 ~, [g3,b4,d5]@7 a4@2 ~@2 [a4,c#5]@2 ~@3, ~@4 d4@4 a3@7 ~, ~@5 g4@2 c#5@4 g5@4 ~, ~@12 e4@3 ~", // A G A
  AA: "d4@4 d4@2 ~ [f#4,a4,d5] f#4 ~@3 [f#4,a#4,e5]@4, [d3,f#4,a4,d5]@2 a#4 ~, ~@3 d4 c#5@4, ~@9 f#4@3 ~@4, ~@5 [f#3,c#4]@3", // D F#7 D F#5
  AB: "[d4,g4,b4,d5]@4 [d4,b4]@2 d4 ~ e4@2 ~@2 [a4,c#5]@2 e4 [f#4,a4,d5], g3@7 [a4,c#5]@5 ~@4, ~@8 a3@7 ~, ~@5 e4@2 ~", // G A D A
  AC: "[d4,f#4]@4 ~@2 a4 ~ c#4@2 ~@3 [f#4,a#4,c#5,e5]@2 ~, [d3,a4,d5]@7 a#4@2 ~@3 c#4@3 ~, ~@4 d4@3 [f#4,c#5]@4 [f#4,a#4,c#5]@2 ~@3, ~@5 f#4@2 e5@6 ~@3", // D F#7 D5 F#5 F#
  AD: "[g3,d4]@2 [g3,d4]@2 [g3,d4,g4,b4,d5]@2 ~@4 g3@2 [g3,g4]@2 [a3,a4] ~, [g4,b4,d5]@4 ~@2 [g3,d4]@2 [g3,d4]@2 d4@5 ~, ~@7 [g4,b4,d5]@2 [b4,d5]@6 ~, ~@9 g4@3 ~@4", // G5 G A G G5 G Bm
  AE: "[a#3,d4]@4 [a#3,d4,g4,a#4]@2 ~@2 [a#3,d4]@2 [a#3,d4]@2 [a#3,d4,g4,a#4,e5]@2 [a#3,d4] ~, ~@4 d5@11 ~, ~@3 [a#3,d4] ~@4, ~@7 f5@8 ~, ~@7 [g4,a#4]@5 ~@4", // A# Gm A# Em7b5 A# Gm
  AF: "[[d3,a3,d4,f#4,a4,d5]@3 ~]/2", // D
})).s("gm_piano").gain(0.64)

// chords · piano · soft notes
const piano_soft = note(`<
  ~ A ~ B@2 C D E ~ E F G ~ C D E ~ E ~ G ~ C D E ~ E F H ~ C D E ~ E F H I J ~ K ~ L ~ M N J ~ K ~ L ~ O N J ~ K ~@5 P
  ~ P ~ P ~ Q ~@2 R S ~@4
>`.pickRestart({
  A: "~ f3 ~@6", B: "[~@7 d4 d4 ~ d4 ~@5, ~@14 g3@9 ~@9]/2", C: "~@2 [e3,b3]@2 e3@3 ~@9, e3 ~@7, ~ g#4@2 ~@13",
  D: "~@6 c4 ~", E: "~ e4 ~@6", F: "~@7 c4", G: "~@12 [f4,c5]@3 ~", H: "~@2 e3@6 ~@4 [f4,c5]@3 ~", I: "~@5 g3 ~@2",
  J: "~@10 [e3,b3]@2 e3@3 ~, ~@4 e3 ~@3, ~@9 g#4@2 ~@5", K: "~@2 c4 ~@2 e4 ~@2", L: "~@5 e4 ~@2", M: "~@3 c4 ~@4",
  N: "~@4 [f4,c5]@3 ~@9", O: "~@3 c4 ~ e3@3", P: "~@2 d4 ~@2 f#4 ~@2", Q: "~@5 f#4 ~@2", R: "~@4 [g4,d5]@3 ~@9",
  S: "~@10 [f#3,c#4]@2 f#3@3 ~, ~@4 f#3 ~@3, ~@9 a#4@2 ~@5", // F#5
})).s("gm_piano").gain(0.32)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B A C D E F E F E F E F E F E F E F E G H I H I H I H I H I H I H I H J A K A K A K A K L M L M L M L M L M L M L N
  O P Q R Q R Q R Q R Q R Q S T U ~
>`.pickRestart({
  A: "[e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]!2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2", // C E
  B: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2 [d3,g3,d4,g4]!2 [d3,g3,d4,g4]@2 [d3,g3,d4,g4]@2 [d3,g3,d4,g4]!2", // F G5
  C: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2 [d3,g3,b3,g4]!2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]!2 [d3,g3,b3,g4]@2", // F G
  D: "[d3,g3,b3,g4]!2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]!4 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]!2", // G C
  E: "[e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]@2 [e3,g#3,b3,e4]!2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2", // E F
  F: "[d3,g3,b3,g4]!2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]!2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]@2 [e3,g3,c4,e4]!2", // G C
  G: "[d3,g3,b3,g4]!2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2", // G C
  H: "[g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]!2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2", // E F
  I: "[g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]!2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2", // G C
  J: "[g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]!4", // G
  K: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]@2 [f3,a3,c4,f4]!2 [d3,g3,b3,g4]!2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]@2 [d3,g3,b3,g4]!2", // F G
  L: "[g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]@2 [g3,c4,e4]!2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]@2 [g#3,b3,e4]!2", // C E
  M: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2 [g3,b3,g4]!2 [g3,b3,g4]@2 [g3,b3,g4]@2 [g3,b3,g4]!2", // F G
  N: "[a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!4 [a3,c4,f4]@2 [a3,c4,f4]@2 [a3,c4,f4]!2", // F
  O: "[g#3,c4,f4]@2 [g#3,c4,f4]@2 [g#3,c4,f4]@2 [g#3,c4,f4]!2 [g#3,c4,f4]@2 [g#3,c4,f4]@2 [g#3,c4,f4]@2 [g#3,c4,f4]!2", // Fm
  P: "[g3,c4,e4]", // C
  Q: "[a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]@2 [a3,d4,f#4]!2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]!2", // D F#
  R: "[b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]!2 [a3,c#4,a4]!2 [a3,c#4,a4]@2 [a3,c#4,a4]@2 [a3,c#4,a4]!2", // G A
  S: "[b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]!4 [b3,d4,g4]@2 [b3,d4,g4]@2 [b3,d4,g4]!2", // G
  T: "[a#3,d4,g4]@2 [a#3,d4,g4]@2 [a#3,d4,g4]@2 [a#3,d4,g4]!2 [a#3,d4,g4]@2 [a#3,d4,g4]@2 [a#3,d4,g4]@2 [a#3,d4,g4]!2", // Gm
  U: "[a3,d4,f#4]", // D
})).s("gm_acoustic_guitar_steel").gain(0.23)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@21 A B A B A B A B A B A B A B A C@2 ~@7 D E D E D E D E D E D E D F G ~ H I H I H I H I H I H J ~@3
>`.pickRestart({
  A: "~ [e2,b2,e3] ~@14", B: "d3!2 d3@2 d3@2 d3@2 ~@8", C: "[d3!2 d3@2 d3@2 d3@26]/2", D: "~@9 [e2,b2,e3] ~@6",
  E: "~@8 d3!2 d3@2 d3@2 d3@2", F: "~@7 [g2,g3]", G: "~@13 [g2,g3]@3", H: "~@9 [f#2,c#3,f#3] ~@6",
  I: "~@8 e3!2 e3@2 e3@2 e3@2", J: "~@7 [a2,a3]",
})).s("gm_distortion_guitar").gain(0.56).pan(0.1)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A B@5 C B@3 D B@3 E B C B@5 F B@3 G B H B I B@3 J B@3 I B K B@5 L B@3 M B N I O B@9 L B@2 P ~@2
>`.pickRestart({
  A: "~@5 x!3 ~@4 x ~@2 x", B: "~@4 x ~@2 x ~@4 x ~@2 x", C: "~@4 x!2 ~@6 x ~@2 x", D: "~@6 x!2 ~@4 x ~@2 x",
  E: "~@4 x ~@7 x ~@2 x", F: "~@4 x!2 ~ x ~@4 x ~@2 x", G: "~@3 x!2 ~ x!2 ~@4 x ~@2 x", H: "~@4 x ~ x!2 ~@4 x ~@2 x",
  I: "~@4 x ~@2 x ~@4 x ~@3", J: "~@4 x ~@2 x ~@6 x!2", K: "~@4 x ~@2 x ~@4 x!2 ~@2", L: "~@4 x ~@2 x ~@4 x!2 ~ x",
  M: "~@4 x ~@2 x ~@3 x!2 ~ x!2", N: "~@4 x ~@2 x ~@4 x ~ x!2", O: "~ x", P: "~@4 x ~@2 x ~@4 x!4",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@28 A ~@7 B ~@15 B ~@6 B C ~@9 B ~@5>".pickRestart({
  A: "~@3 x ~@4", B: "~@7 x", C: "~@12 x!3 ~",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@20 A ~ B ~@13 C ~@7 D ~ E ~@13 F ~@15>".pickRestart({
  A: "~ x ~@4 x ~@9", B: "~@7 x ~@8", C: "~@13 x ~@2", D: "~@9 x ~@4 x ~", E: "~@15 x", F: "~@5 x ~@2",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C D B D B D B D B D B D B D B D B D B D B D B D ~ D B
  D B D B D B D B D B D E ~
>`.pickRestart({
  A: "~@5 x!3", B: "x!8", C: "x!4 ~ x!3", D: "~ x!7", E: "x!12 ~@4",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@16 A ~@3 B ~ C ~@17 D ~@3 E ~ F ~@29>".pickRestart({
  A: "~ x ~@2", B: "x ~@4 x ~@10", C: "~@3 x ~@4", D: "~@3 x", E: "~@8 x ~@4 x ~@2", F: "~@7 x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
// … 13 more lines

More by Lunapop