Strudelify

Liberatemi

Biagio Antonacci

KeyD minorTempo70 bpm
0:00/0:00
// Liberatemi — Biagio Antonacci
// 70 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 79 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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 B@2 C D E ~@73>".pickRestart({
  A: "~@5 [b5,eb6,gb6]!2 ~", B: "[~@3 [f2,ab2,c3]@6 [eb5,gb5,bb5]!2 ~@4 [g3,b3,d4]]/2",
  C: "[g3,b3] ~@3 [eb6,ab6,b6]!2 ~@2", D: "~ [c2,e2,g2]@5 [bb5,d6,f6]!2",
  E: "~@3 [eb3,gb3,bb3] [eb3,bb3] [eb3,gb3,bb3]@2 ~", // Ebm Eb5 Ebm
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<A@2 B@3 C ~@73>".pickRestart({
  A: "[~@14 [b5,eb6,gb6]@11 ~@7]/2", B: "[~@8 d4 [g3,b3,d4]@5 [eb6,ab6,b6]@7 ~@3, ~ [eb5,gb5,bb5]@2 ~@5]/3",
  C: "~@4 gb3 ~@3, [bb5,d6,f6]@5 ~@3", // Bb
})).s("gm_piano").gain(0.15)

// bass · electric bass finger · "basso"
const bass = note(`<
  ~@6 A B C@2 D E D E D E F G D E D E H I J K@6 D E D E D E H I J L@5 M N O P Q R O P S@2 T@8 U M V W X W X W X W Y Z AA
  ~@3
>`.pickRestart({
  A: "g1 ~ g1 ~ f1 ~ f1 ~ e1 ~ e1 ~ e1 ~ e1 ~", B: "f1 ~ f1 ~ e1 ~ e1 bb1 ~@2 bb1 ~ bb1 ~ bb1 ~",
  C: "[g1 ~ g1 ~ bb1 ~ bb1 ~ c2 ~ c2 ~ c2 ~ c2 f2@2 g2!2 d2 g1 ~@2 f2@2 g2!2 d2 g1 ~@3]/2",
  D: "d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~ d1 ~", E: "f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ e1 ~ e1 ~",
  F: "bb1 ~ bb1 ~ a1 ~ a1 ~ g1 ~ g1 ~ f1 ~ f1 ~", G: "eb2 ~ eb2 ~ d2 ~ d2 ~ c2 ~ c2 ~ c2 ~ c2 ~",
  H: "bb1 ~ bb1 ~ a1 ~ a1 ~ g1 ~ g1 ~ f1 ~ f1 ~, ~@8 b5@5 ~@3", I: "eb2 ~ eb2 ~ d2 ~ d2 ~ c2 ~ c2 ~ bb1 ~ bb1 ~",
  J: "ab1 ~ ab1 ~ g1 ~ g1 ~ f1 ~ f1 ~ eb1 ~ eb1 ~",
  K: "[d1 ~ d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1@2 ~ d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1@2 ~ d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1]/6",
  L: "[d1 ~ d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1@2 ~ d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1@2 ~ a1 c2 d2!2 ~ d2 ~ d2 a1 c2 d2!2 ~ d2]/5",
  M: "bb1!2 f1 g1 bb1!2 ~ bb1 ~ bb1 f1@2 bb1!2 ~@2", N: "g1!2 d1@2 g1!2 ~@10", O: "g1!4 f1!3 c2!9",
  P: "d2!4 c2!3 bb1!9", Q: "g1!4 bb1!4 c2!8", R: "d2!4 c2!3 d2!8 ~",
  S: "[g1!4 bb1!4 c2!7 f2@2 g2!2 d2 g1 ~@2 f2@2 g2!2 d2 g1 ~@3]/2",
  T: "[~@2 d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1@2 ~ d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1@2 ~ d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1@2 ~ d1 ~ d1 f1 g1 d1@2 ~ d1 ~ d1 f1 g1 f1@2 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 ~ f1 g1 a1 d1]/8",
  U: "~@2 a1 c2 d2!2 ~ d2 ~ d2 a1 c2 d2!2 ~ d2", V: "g1!2 d1@2 g1!2 ~@2 bb1!8", W: "eb1!8 f1!8", X: "f1!8 bb1!8",
  Y: "f1!7 ab1 bb1!4 ab1!3 eb2", Z: "eb2!8 f2!4 eb2!3 db2", AA: "db2!8 bb1!4 db2!4",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · lead 2 sawtooth · "sytnt"
const lead_2_sawtooth = note("<~@9 A@6 ~@2 B@2 A@2 ~@4 C@5 D@2 A@4 ~@4 C@6 E ~@8 C@8 F@2 G ~@13>".pickRestart({
  A: "[~@15 [f4,g4] ~ [g4,a4,d5]!2 ~@4 [g3,c4]@2 [g3,a3,d4]!2 ~@5, ~@15 c5@2 ~@6 f3 ~@8]/2", // Fsus2 Gsus2 C5 Gsus2
  B: "[~@15 [f4,g4] ~ [g4,a4,d5]!2 ~@4 [g3,c4]@2 [g3,a3,d4] [g3,a3] ~@5, ~@15 c5@2 ~@6 f3 ~@8]/2", // Fsus2 Gsus2 C5 Gsus2
  C: "[a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~", // D5
  D: "[[a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] [f4,g4] ~ [g4,a4,d5]!2 ~@4 [g3,c4]@2 [g3,a3,d4]!2 ~@5, ~@15 c5@2 ~@6 f3 ~@8]/2", // D5 Fsus2 Gsus2 C5 Gsus2
  E: "[a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~ [a4,d5,a5] ~@7", // D5
  F: "[d5,d6] ~ [d5,d6] ~ [d5,d6] ~ [d5,d6] ~ [d5,d6] ~ [d5,d6] ~ [d5,d6] ~ [d5,d6] ~", // D
  G: "[d5,d6] ~ [d5,d6] ~ [d5,d6] ~ [d5,d6] ~@9", // D
})).s("gm_lead_2_sawtooth").gain(0.22).pan(0.7)

// chords · synth strings 1 · "synt archi"
const synth_strings_1 = note(`<
  ~@6 A B@3 C ~@5 D@2 ~@4 E F G H@5 I@7 E F G H@6 J K L M N K L M O ~@18 P@4 ~@2
>`.pickRestart({
  A: "[g4,bb4]@4 [f4,a4]@3 [c4,e4,g4]@9, d4@7 ~@9", // Gm F C
  B: "[[f4,a4]@4 [e4,g4]@3 f4@9 g4@4 f4@3 [g3,e4]@7 ~ [g3,d4]@14 ~@3, c4@6 ~ [bb3,d4]@15 ~ f4 ~@24]/3", // F Em C G5 Bb
  C: "[c3,d3] d3 ~@14", D: "[bb2@2 [a2,a3]@2 [g2,g3]@2 bb3@2 g3@4 a3@2 g3 ~, bb3 ~@11 bb2@12 c3@6 ~@2]/2",
  E: "[bb2,bb3] [a2,a3] [g2,g3] [f2,f3]", F: "[eb2,eb3] [d2,d3] [c2,c3] [bb1,bb2]",
  G: "[ab1,ab2]@4 [g1,g2]@4 [f1,f2]@4 [eb1,eb2]@3 ~", // Ab G F Eb
  H: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~", // D5
  I: "[[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~@4 [f4,g4] ~ [g4,a4,d5]!2 ~@4 [f3,g3,c4] ~ [g3,a3,d4]!2 ~@4 [f3,g3,c4]@14 ~@2 [f4,g4] ~ [g4,a4,d5]!2 ~@4 [f3,g3,c4] ~ [g3,a3,d4]!2 ~@4 [f3,g3,c4]@14 ~@2 [f4,g4] ~ [g4,a4,d5]!2 ~@4 [f3,g3,c4] ~ [g3,a3,d4]!2 ~@4 [f3,g3,c4]@14 ~@3, ~@15 c5@2 ~@30 c5@2 ~@30 c5@2 ~@31]/7", // D5 Fsus2 Gsus2 Fsus2 Gsus2 Fsus2 Gsus2 Fsus2 …
  J: "[d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~ [d5,a5,d6] ~@7", // D5
  K: "[d4,bb4]@4 a4@3 [e4,g4]@9, f4@3 ~@5, ~@4 c4@11 ~", L: "[f4,a4]@4 [e4,g4]@3 [bb3,f4]@9, c4@6 ~ d4@7 ~@2",
  M: "g3@4 f4@3 [c4,e4,g4]@9, [bb3,d4]@3 ~@5", N: "[f4,a4]@4 [e4,g4]@3 [f4,a4]@7 ~@2, c4@7 ~", O: "~ [g1,g2]@13 ~@2",
  P: "[~@8 [f4,db5]@4 c5@3 [g4,bb4]@9 [ab4,c5]@4 [g4,bb4]@3 [db4,ab4]@9 bb3@4 ab4@3 [eb4,g4,bb4]@10 ~@7, ~@4 ab4@3 ~@25, ~@12 eb4@11 ~ eb4@6 ~ f4@7 ~@2 [db4,f4]@6 ~@18]/4", // Db Gm Ab Gm Db5 Eb Db
})).s("gm_synth_strings_1").gain(0.38)

// chords · string ensemble 1 · "archi"
const string_ensemble_1 = note("<~@65 A B C D E B F B G ~ H@4>".pickRestart({
  A: "~@8 [f3,ab3,db4]!7 [g3,bb3,eb4]", B: "[g3,bb3,eb4]!8 [ab3,c4,f4]!3 [ab3,c4,eb4] [ab3,c4,f4]!3 [ab3,c4,eb4]",
  C: "[ab3,c4,f4]!3 [ab3,c4,eb4] [ab3,c4,f4]!2 [ab3,c4,eb4]!2 ~ [db4,f4,bb4]!3 [db4,f4,ab4]!3 [bb3,eb4,g4]", // Fm Ab Fm Ab Bbm Db Eb
  D: "[bb3,eb4,g4]!7 ~ [f4,ab4,c5]!3 [eb4,g4,bb4] [f4,ab4,c5]!3 [eb4,g4,bb4]", // Eb Fm Eb Fm Eb
  E: "[f4,ab4,c5]!2 [f4,ab4]!3 [f4,g4,bb4] [ab4,c5] ~ [f3,ab3,db4]!7 [g3,bb3,eb4]", // Fm Gm7 Ab Db Eb
  F: "[ab3,c4,f4]!3 [ab3,c4,eb4] [ab3,c4,f4]!2 [ab3,c4,eb4]!2 [f3,ab3,db4]!7 [g3,bb3,eb4]", // Fm Ab Fm Ab Db Eb
  G: "[ab3,c4,f4]!3 [ab3,c4,eb4] [ab3,c4,f4]!2 [ab3,c4,eb4]!2 ~@8", H: "[~@14 eb2@11 bb1@31 ~@8]/4",
})).s("gm_string_ensemble_1").gain(0.54).pan(0.4)

// other · pad sweep · "sweep pad"
const pad_sweep = note(`<
  ~@18 A B A B ~@3 C D@5 A B A B A B ~@3 C B C B E F G H I J K H I J ~ C L@6 M@4 ~@3 N@5 ~@2 O@3
>`.pickRestart({
  A: "d3, d4@7 ~", B: "f3@3 e3", C: "d3", D: "[f3@6 ~ d3@8 f3@6 e3@2 d3@8 f3@6 e3@2 ~, ~@3 e3 ~@16]/5",
  E: "d3, e3@9 ~@7, g2 ~@15", F: "bb2", G: "g2@9 ~@7", H: "g3@4 f3@3 c3@9", I: "d3@4 c3@2 bb2@9 ~",
  J: "g2@4 bb2@3 c3@9", K: "d3@4 c3@3 d3@8 ~", L: "[f3@6 ~ d3@8 f3@6 e3@2 d3@8 f3@6 e3@2 d3@8 f3, ~@3 e3 ~@20]/6",
  M: "[~@10 e3@4 d3@16 bb2@16 g2@9 ~@9, ~@14 e3@9 ~@41, ~@14 g2 ~@49]/4",
  N: "[~@10 bb3@8 eb3@8 f3@15 ~ bb3@8 eb3@8 f3@15 ~@7]/5", O: "[~ [db4,f4,bb4]@4 ~]/3",
})).s("gm_pad_sweep").gain(0.48).pan(0.6)

// chords · lead 1 square · "Square Wav"
const lead_1_square = note("<~@5 A B C D@2 ~@6 E@2 ~@4 F G H@2 I@4 J ~@6 F G H@2 I@2 J ~@21 K@8 ~@6>".pickRestart({
  A: "~@9 [d5,f5]!3 d5 [e5,g5] a5@2, ~@14 f5 ~", // Dm Em
  B: "[g5,bb5]@4 [f5,a5]@3 [e5,g5]@2 [c5,e5]!4 [d5,e5,f5] [e5,g5]@2, ~@14 d5 ~", // Gm F Em C Dm Em
  C: "[f5,a5]@4 [e5,g5]@3 d5@2 [bb4,d5]!4 [c5,e5] [d5,f5]@2, ~@7 f5 ~@6 c5 ~", // F Em Bb C Dm
  D: "[[e5,g5]@4 [d5,f5]@3 e5@2 [c5,e5]!2 [d5,f5] c5 d5 [a4,c5] [a4,d5]@14 ~@3, ~@7 c5 ~@3 a4@2 ~@2 c5 ~@16]/2", // Em Dm C Dm Am D5
  E: "[~@2 [c4,e4]@2 bb3@2 f4@2 g4@2 [f4,bb4]@2 f4@2 e4 ~, ~@4 d4@6 ~@2 c5@3 ~]/2", // C Bb5
  F: "[d4,f4] [c4,e4] [bb3,d4] [d4,f4]", G: "[d4,g4]@2 [f4,bb4]@2 c5@2 d5 ~, ~@8 g4@7 ~",
  H: "[[c4,eb4]@4 [bb3,d4]@4 ab3@4 eb4@2 ~ [a4,c5]@2 [a4,c5,d5] [a4,d5] ~ [a4,d5] ~ [a4,d5] [a4,c5]@2 [a4,c5,d5] [a4,d5] ~ [a4,d5] a4 [a4,d5] [a4,c5], ~@4 c4@3 ~@9]/2", // Cm Bb Am D7 D5 Am D7 D5 …
  I: "[d5 [a4,d5]!2 ~ [a4,d5] a4 [a4,d5]!2 c5 [g5,bb5]!4 [f5,a5] ~ [a4,c5]@2 [a4,c5,d5] [a4,d5] ~ [a4,d5] ~ [a4,d5] [a4,c5]@2 [a4,c5,d5] [a4,d5] ~ [a4,d5] a4 [a4,d5] [a4,c5]]/2", // D5 Gm F Am D7 D5 Am D7 …
  J: "d5 [a4,d5]!2 ~ [a4,d5] a4 [a4,d5]!2 c5 [g5,bb5]!4 [f5,a5] ~@2", // D5 Gm F
  K: "[~@8 [f4,ab4,db5]@7 [g4,bb4]@9 c5@15 ~ [f4,ab4,db5]@7 [g4,bb4]@9 c5@15 ~ [f4,ab4,db5]@7 [g4,bb4]@9 c5@15 ~ [f4,ab4,db5]@7 [g4,bb4]@9 c5@8]/8", // Db Gm Db Gm Db Gm Db Gm
})).s("gm_lead_1_square").gain(0.22).pan(0.6)

// chords · lead 1 square · "Square Wav" · soft notes
const lead_1_square_soft = note("<~@8 A ~@16 B C B C B C ~@9 B C B C ~@21 D@7 E@2 ~@5>".pickRestart({
  A: "d5 ~@10 e5@2 a4 ~@2", B: "~@3 a4 ~ a4 ~@5 a4 ~@4", C: "~@3 a4 ~@9 ab5 ~@2",
  D: "[~@15 eb5@8 ~ [ab4,f5]@15 ~@8 eb5@8 ~ [ab4,f5]@15 ~@8 eb5@8 ~ [ab4,f5]@15 ~@8 eb5]/7", // Db
  E: "[~@8 [ab4,f5]@15 ~@9]/2", // Db
})).s("gm_lead_1_square").gain(0.12).pan(0.6)

// chords · overdriven guitar · "oversdrive"
const overdriven_guitar = note(`<
  ~@5 A B C D@2 E F G F G F H I G F G F J K L M N M N M O G F G F G F J K L M N M N P Q R S T U V S T W@2 X Y@2 Z@3 AA@2
  P Q AB AC AD AC AE AF AG AH AI AJ AK@2 AL AM
>`.pickRestart({
  A: "~@9 [d4,f4]!4 [e4,g4] [f4,a4]@2", B: "[g4,bb4]@4 [f4,a4]@3 [e4,g4]@2 [c4,e4]!4 [d4,e4,f4] [d4,e4,g4]@2",
  C: "[f4,a4]@4 [e4,g4]@3 [d4,f4]@2 [bb3,d4]!4 [c4,e4] [c4,d4,f4]@2", // F Em Dm Bb C Dm7
  D: "[[e4,g4]@4 [d4,f4]@3 [c4,e4]@2 [c4,e4]!2 ~ c4 [a3,d4] [a3,c4] f3@2 g3!2 d3 g2 ~@2 f3@2 g3!2 d3 g2 ~@3, d4 ~@10 [a3,d4,e4,f4]@2 ~@2 [a3,d4]@14 ~@3, ~@15 c4 ~@16]/2", // Em Dm C D5 Am Dm D5
  E: "[c3,d3,f3] [c3,d3]!15", F: "[c3,f3]!12 [c3,e3]!4", G: "[c3,d3]!16", H: "[d4,f4] [c4,e4] bb3 f4, e4 ~@7 d4@7 ~",
  I: "g4@4 bb4@4 f4@4 e4@3 ~, d4@7 ~ c5@7 ~", J: "[d3,f3] [c3,e3] [bb2,d3] [d3,f3]",
  K: "[d3,g3]@2 [f3,bb3]@2 c4@2 d4 ~, ~@8 g3@7 ~", L: "[c3,eb3]@2 [bb2,d3]@2 ab2@2 eb3 ~, ~@4 c3@3 ~",
  M: "~ [d3,f3]!3 d3 f3 [d3,f3] [d3,g3]@2 d3!4 [d3,f3] [d3,g3] [d3,g3,a3]", // Dm G5 Dm G5 Dsus4
  N: "~ d3 [d3,a3] d3 [d3,a3] [d3,f3,a3] [d3,f3] [d3,g3,a3] f3 d3 [g4,ab4] [g4,bb4] ~ [f4,a4]@2 ~, ~@6 [g4,bb4] ~", // D5 Dm Dsus4 Abmaj7 Gm F Gm
  O: "~ d3 [d3,a3] d3 [d3,a3] [d3,f3,a3] [d3,f3] [d3,g3,a3] f3 d3 ~@6", P: "[d3,a3]!8 ~ [d3,a3]!7",
  Q: "[d3,bb3]!5 ~ [d3,bb3]!10", R: "[d3,g3,c4]!8 ~@8", S: "[d4,f4,bb4]@3 ~ [d4,f4,a4]@2 ~ [c4,e4,g4] g4 [c4,e4,g4]!7",
  T: "[c4,f4,a4]@4 [c4,e4,g4]@2 ~ [bb3,d4,f4] [d4,f4] [bb3,d4,f4]!7", // F C Bb Dm Bb
  U: "[bb3,d4,g4]@4 [bb3,d4,f4]@2 ~ [g3,c4,e4] ~ [g3,c4,e4]!6 ~", // Gm Bb C
  V: "[c4,f4,a4]@4 [c4,e4,g4]@3 [c4,f4,a4] d4 [d4,f4,a4] [c4,f4,a4]!5 ~", // F C F Dm F
  W: "[[bb3,d4,g4]@4 [bb3,d4,f4]@2 ~ [g3,c4,e4] ~ [g3,c4,e4]!6 f3@2 g3!2 d3 g2 ~@2 [eb3,f3]@2 g3!2 d3 g2 ~@3]/2", // Gm Bb C Ebsus2
  X: "d4!4 [d4,f4] d4!3 a4@2 d5 d5@3 ~@2", // Dm
  Y: "[c4!5 d4@2 [bb3,d4] f4 [d4,f4] bb4 [f4,bb4] d5@3 g5@3 f5 [d5,e5] [bb4,c5] [g4,a4] [e4,f4] [c4,d4] [a3,bb3,c4] [f3,g3] [bb3,c4] [d4,f4] [c4,d4] [f4,g4] [bb4,b4,c5] [d5,f5]]/2", // Bb Dm Bb5 Dsus2 Bbsus2 Gsus2 Fmaj7 Csus2 …
  Z: "[a5@3 a5!2 ~ g5 [d5,f5] f5@4 d5@8 ~@2 c4 [a3,e4]@2 [e4,f4] d4@7 a3 [a3,d4]!4 ~ [d4,a4]@8 ~, ~@21 a3@2 ~@2 a3@8 ~@6 e4 ~@8]/3", // Dm A5 Fmaj7 D5
  AA: "[~ a3 d4 ~ a3!2 [a3,d4] [a3,e4]@2 [a3,e4,f4] [a3,d4]@4 ~ [d4,a4]@6 g4 ~ a4!4 c5 c5@2 ~@2]/2", // D5 A5 Fmaj7 D5
  AB: "[d3,g3,c4]!8 [db3,ab3]!8", AC: "[eb3,bb3]!8 [f3,c4]!8", AD: "[f3,c4]!8 [db3,ab3]!8",
  AE: "[f3,c4]!8 f3@5 g3@2 ab3", AF: "g3@4 eb3@3 ~ c4@8", AG: "~ eb4 ab4 eb4 c5@3 ~ f5@5 eb5 c5 ~",
  AH: "bb4@4 bb4 ab4 ~ bb4 c5 eb5 ~ c5 f5 [c5,eb5] f5 [c5,eb5]", // Cm
  AI: "[bb4,b4] [f4,ab4] [f4,ab4,bb4,b4,c5] [f4,ab4,bb4] [f4,ab4,bb4,b4] [g4,ab4,bb4,b4,c5] [g4,ab4,bb4,c5] ~ [bb4,db5]@4 [ab4,c5]@3 [g4,bb4], ~@12 bb4 ~@3", // Bmaj7 Fm Bb7 Fdim C7 Bbm Ab Gm
  AJ: "~ [eb4,g4]!4 [f4,ab4] [gb4,g4,bb4] ~ [ab4,c5]@4 [g4,bb4]@2 ~ [f4,ab4]", // Eb Fm Gb Ab Gm Fm
  AK: "[~ [db4,f4]!4 [eb4,g4] [f4,ab4] ~ [g4,bb4]@4 [f4,ab4]@3 ~@9 f5@4 eb5 ~ c5 bb5, ~@15 [eb4,g4]@11 ~@6]/2", // Db Eb Fm Gm Fm Eb
  AL: "a5 ab5 [g5,bb5] [g5,ab5] [eb5,f5] [c5,f5] [c5,eb5] [c5,db5,d5,eb5] [db5,eb5] [b4,c5] ~ bb4 a4 ab4 ~ g4", // Gm Abmaj7 Ebsus2 F5 Cm Dbsus2 Cmaj7
  AM: "gb4 ~ f4@5 ~@9",
})).s("gm_overdriven_guitar").gain(0.27).pan(0.6)

// chords · synth bass 2 · "synt bass2"
const synth_bass_2 = note("<~@55 A B C D@3 E F ~@6 G@3 H I J K L M N>".pickRestart({
  A: "~@2 d4!4 [d4,f4] d4!3 a4@2 d5 d5@3", B: "~@2 c4!5 d4@2 [bb3,d4] f4 [d4,f4] bb4 [f4,bb4] d5@2",
  C: "~ g5@3 f5 [d5,e5] [bb4,c5] [g4,a4] [e4,f4] [c4,d4] [a3,bb3,c4] [f3,g3] [bb3,c4] [d4,f4] [c4,d4] [f4,g4]", // Dsus2 Bbsus2 Gsus2 Fmaj7 Csus2 Am Fsus2 Bbsus2 …
  D: "[[bb4,b4,c5] d5 a5@3 a5!2 ~ g5 [d5,f5] f5@4 d5@8 ~@2 c4 [a3,e4]@2 [e4,f4] d4@7 a3 [a3,d4]!4 ~ [d4,a4]@7, ~@23 a3@2 ~@16 e4 ~@6]/3", // Dm A5 Fmaj7 D5
  E: "~@4 d4 ~@2 a3 [a3,d4] [a3,e4]@2 [a3,e4,f4] [a3,d4]@4", F: "~ [d4,a4]@6 g4 ~ a4!4 c5 c5@2",
  G: "[~@10 f3@5 g3@2 ab3 g3@4 eb3@3 ~ c4@8 ~ eb4 ab4 eb4 c5@3 ~ f5@5 eb5]/3",
  H: "c5 ~ bb4@4 bb4 ab4 ~ bb4 c5 eb5 ~ c5 f5 [c5,eb5]", // Cm
  I: "f5 [c5,eb5] [bb4,b4] [f4,ab4] [f4,ab4,bb4,c5] [f4,ab4,bb4] [f4,ab4,bb4,b4] [g4,ab4,bb4,b4,c5] [g4,ab4,bb4,c5] ~ [bb4,db5]@4 [ab4,c5]@2", // Cm Bmaj7 Fm Bb7 Fdim C7 Bbm Ab
  J: "~ [g4,bb4] ~ [eb4,g4]!4 [f4,ab4] [g4,bb4] ~ [ab4,c5]@4 [g4,bb4]@2", // Gm Eb Fm Gm Ab Gm
  K: "~ [f4,ab4] ~ [db4,f4]!4 [eb4,g4] [f4,ab4] ~ [g4,bb4]@4 [f4,ab4]@2", L: "~@8 f5@4 eb5 ~ c5 bb5, ~ [eb4,g4]@10 ~@5",
  M: "a5 ab5 [g5,bb5] [g5,ab5] f5 [c5,f5] [c5,eb5] [c5,db5] [db5,eb5] [b4,c5] ~ bb4 a4 ab4 ~ g4", N: "gb4 ~ f4@5 ~@9",
})).s("gm_synth_bass_2").gain(0.09).pan(0.6)

// chords · synth bass 2 · "synt bass2" · soft notes
const synth_bass_2_soft = note("<~@58 A B@2 C ~@11 D E ~@2 F ~>".pickRestart({
  A: "~ f5 ~@14", B: "[~@11 a3@8 ~@13]/2", C: "~@3 a3 ~@2 a3 ~@9", D: "~@4 b4 ~@9 bb4 ~", E: "~@8 gb4 ~@7",
  F: "~@4 eb5 ~@2 [d5,eb5] ~@8", // Ebmaj7
})).s("gm_synth_bass_2").gain(0.06).pan(0.6)

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

// drums · rim
const rim = s("rim").struct("<~@78 [~@9 x ~@6]>").gain(0.64)

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

// drums · clap
const clap = s("cp").struct("<~@43 [~@13 x ~@2] ~@6 [~@13 x ~@2] ~@22 [~@5 x ~@10] ~@4 [~@9 x ~@6]>").gain(0.57)

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

// … 50 more lines

More by Biagio Antonacci