Strudelify

Cose da grandi

Grandi

KeyF majorTempo107 bpm
0:00/0:00
// Cose da grandi — Grandi
// 107 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: Full arrangement: all 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/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 · fretless bass
const bass = note(`<
  A B C D E B F G H B I J H B K L E M N O P Q R@2 H B I S T U V W E M X O H Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM
  AN AO AP AQ AR AS AT AU AV AW AX AY AZ O BA BB AZ BC BD BE BF BG BH BI BJ BK AZ BL BM BN BO BP N BQ BR BS BT AQ BU BF
  BV BW BX BF BY BZ BX BF M BH BX CA CB CC CD BF BV BW BX BF BY AO ~
>`.pickRestart({
  A: "ab1@3 ~@3 ab1@7 ~ ab1@2", B: "bb1@4 ~@2 bb1@7 ~@3", C: "c2@5 ~ c2@7 ~ bb1 ~", D: "c2@5 ~ c2@7 ~@3",
  E: "ab1@4 ~@2 ab1@7 ~ ab1@2", F: "c2@5 ~ c2@7 ~ bb1@2", G: "c2@5 ~ bb1@2 c2@2 eb2@2 bb1@3 ~",
  H: "ab1@2 ~ ab1@3 ~ ab1", I: "c2@2 ~ c2@3 ~ bb1", J: "c2@4 ~@2 c2@7 ~@3", K: "c2@2 ~ c2@3 ~ g1",
  L: "c2@5 ~ c2@6 ~@2 bb1@2", M: "a1@4 ~@2 a1@9 ~", N: "bb1@4 ~@2 bb1@7 ~ bb1@2", O: "b1@4 ~@2 b1@9 ~",
  P: "ab1@5 ~ ab1@6 ~@2 ab1@2", Q: "bb1@5 ~ bb1@8 ~@2", R: "[c2@29 ~@3]/2", S: "c2@2 ~ c2@3 g2 c2",
  T: "ab1@3 ~@3 ab1@6 ~@2 ab1@2", U: "bb1@2 ~ bb1@4 ~", V: "c2@4 ~@2 c2@7 ~ bb1@2", W: "c2@4 ~@2 c2@5 ~ c2@2 g1@2",
  X: "bb1@5 ~ bb1@6 ~@2 bb1@2", Y: "bb1@4 ~@2 bb1@7 ~ g1@2", Z: "c2@5 ~ c2@6 c3@2 g2@2", AA: "c2@5 ~ c2 ~ c2@7 ~",
  AB: "f1@4 ~@2 f1@7 ~ f1@2", AC: "g1@4 ~@2 g1@6 c2@3 ~", AD: "c2@2 ~ c2@2 ~@2 g1",
  AE: "bb1@4 ~@2 bb1@3 ~@3 bb1@2 c2@2", AF: "f1@4 ~@2 f1@5 ~@3 f1@2", AG: "g1@3 ~@3 g1@4 ~@4 g1@2",
  AH: "ab1@2 ~ ab1@2 ~@3", AI: "bb1@4 ~@2 bb1@4 ~@2 bb1@2 c2 ~", AJ: "f1@3 ~@3 f1@4 ~@4 f1@2",
  AK: "g1@3 ~@3 g1@2 ~@2 g1@2 d2@2 g1@2", AL: "c2@2 ~ c2@2 ~@2 c2", AM: "bb1@2 ~ bb1@2 ~@3",
  AN: "ab1@4 ~@2 ab1@5 ~@3 ab1@2", AO: "bb1@4 ~@2 bb1@5 ~@5", AP: "~@8 c3 bb2 g3@4 c2!2, c1@7 ~", AQ: "c2",
  AR: "bb1@2 ~ bb1 f2@2 bb1@2", AS: "c2@4 ~@2 c2@7 ~ c2@2", AT: "d2@4 ~@2 d1@9 ~", AU: "d1@6 d2@6 c2@3 ~",
  AV: "bb1@4 ~@2 bb1@2 f2@2 bb1 ~ bb1@2 b1@2", AW: "c2@2 ~ c2@3 ~ c2", AX: "d2@6 d1@7 ~ d1@2",
  AY: "eb3@3 ~ e3@2 bb2@6 a2@2 f2@2", AZ: "bb1@2 ~ bb1@3 ~ bb1", BA: "c2@5 ~ c2@7 ~ c2@2", BB: "db2@6 a2@6 g2@3 ~",
  BC: "c2@2 ~ c2@3 a1 c2", BD: "d2@6 d1@7 a2 c3 a2", BE: "d3@3 ~ d3@4 c3@4 a2@3 ~", BF: "g1@4 ~@2 g1@2 d2@4 g1@3 ~",
  BG: "a1@4 ~@2 a1@2 e2@4 a1@3 ~", BH: "d1@5 ~ d1@6 d2@4", BI: "c2@2 ~ c2@3 bb1@2", BJ: "g1@2 ~ g1 d2@2 g2@2",
  BK: "a1@2 ~ a1 e2@2 a2@2", BL: "c2@5 ~ f3 ~ f3@2 e3@5 ~", BM: "g1@2 ~ g1 d2@2 g1@2", BN: "a1@4 ~@2 a1@5 ~ g2@4",
  BO: "d2@2 ~ d1@3 d2@2", BP: "c2@4 ~@2 c2@9 ~", BQ: "c2@4 ~@2 c2@5 ~ c2@3 ~", BR: "g1@5 ~ g1@4 bb1@2 d2@2 bb1 ~",
  BS: "g2@11 ~ d2@3 ~", BT: "bb1", BU: "~@2 g2!2 e3@8 d3@4", BV: "a1@2 ~ a1@5", BW: "d2@5 ~ d1@6 d2@4",
  BX: "c2@2 ~ c2@3 a1@2", BY: "a1@4 ~@2 a1@2 e2@2 a2 ~ a2@4", BZ: "bb1@4 ~@2 bb1@5 ~ bb1 ~ bb1@2", CA: "g1@15 ~",
  CB: "a1", CC: "bb1@15 ~", CD: "c2@7 f3 ~@2 f3@2 d3@3 ~",
})).s("gm_fretless_bass").gain(0.38)

// chords · pad warm
const pad_warm = note(`<
  A@8 B@4 C@4 D@4 E F G@2 B@4 C@4 D@4 H F I@2 J@2 K@2 L@4 M@2 N O P O Q@2 ~@8 R@4 F S T@2 U V W X U V U X Y@2 W X U Z
  AA@2 U AB ~ AC AD AE@2 U AF@2 Z AG AH@4 AI@2 AJ AC AD AE@2 U AF@2 ~
>`.pickRestart({
  A: "[[ab3,c4,eb4] [bb3,d4,f4] [c4,d4,eb4,g4]@2 [ab3,c4,eb4] [bb3,d4,f4] [c4,d4,eb4]@2, c5, g4 ~ g4@2]/8", // Ab Bb Cm Ab Bb Cm
  B: "[[ab3,c4,eb4] ~ d5 d4, g4@3 g4@5, ~ [bb3,d4,f4,bb4] [c4,eb4]@2]/4", // Ab Bb Cm
  C: "[[ab3,c4,eb4]@2 [bb3,f4]@2 d5@2 ~ bb4, g4, ~ d4@3, ~ bb4@2 c5, ~ [c4,eb4]]/4", // Ab Bb5 Cm
  D: "[[ab3,eb4] a3 bb4 [g4,b4], c4 d4, ~ f4@2 ~]/4", E: "[eb4,c5] ~@3, ab4", F: "[f4,bb4,d5]", G: "[eb4,g4,c5,d5]/2",
  H: "[eb4,ab4,c5]", I: "[f4@2 e4 eb4, [c4,g4,c5]]/2", J: "[[ab3,c4] [g3,b3,d4], eb4]/2", K: "[g3,bb3,d4,eb4]/2",
  L: "[[ab3,c4] [g3,b3,d4] ab3 [bb3,d4,f4], eb4@3 ~, ~ c4]/4", M: "[[ab3,c4] [g3,b3,d4], eb4, ~@4 c4 ~@3]/2",
  N: "[g3,bb3,d4,eb4]", O: "[bb3,c4,d4,f4]", P: "[ab3,c4,eb4]", Q: "[c2,g3,c4,d4,eb4]/2",
  R: "[[bb3,f4] b3 c5 [a4,db5], d4 e4, ~ g4@2 ~]/4", S: "[g4,c5,e5]", T: "[g4@2 gb4 f4, [d4,a4,d5]]/2",
  U: "[bb3,d4,f4]", V: "[a3,db4,e4,f4]", W: "[a3,d4,e4,f4]", X: "[g3,c4,e4]", Y: "[[bb3,d4] [a3,db4,e4], f4]/2",
  Z: "[c4,e4,g4]", AA: "[a3,bb3,d4,f4]/2", AB: "[g3,c4,e4]@3 ~", AC: "[bb3,d4,f4]@15 ~", AD: "[a3,db4,e4,f4]@15 ~",
  AE: "[[d4,g4] [c4,f4], a3@31 ~]/2", AF: "[[a3,db4,e4] [bb3,d4], f4@31 ~]/2", AG: "~@2 bb3@13 ~, [f3,d4]",
  AH: "[[db4,e4,f4]@16 [d4,g4]@14 [c4,f4]@17 [bb3,d4]@17, a3@46 ~ f3@15 ~@2]/4", // Db G5 F5 Bb
  AI: "[[a3,e4]@7 ~ [a3,bb3,d4]@8, f4, db4 ~]/2", AJ: "[g3,c4,e4]@15 ~",
})).s("gm_pad_warm").gain(0.08).pan(0.3)

// chords · piano
const piano = note(`<
  ~ A@4 B@2 ~@8 C D ~ E F G H I@2 ~@2 J K@2 L ~ M N O P Q R S T U ~@16 V W X@2 Y Z@3 AA@2 AB ~ AC AD AE@2 AF AG AH@2 AI
  AJ AK AL AM AN AO@2 AP AQ AR@2 AS AT@2 ~@8 AU AV AW ~@13
>`.pickRestart({
  A: "[~@30 eb4@14 ~@2 d4@6 eb4@2 d4@9 ~, ~@12 d5@15 ~ c5@16 bb4@19 ~, ~@7 g4@8 ~@17]/4",
  B: "[~@3 c2@5, ~@2 eb4@29 ~, ~@4 d4@27 ~, ~@6 g3@25 ~]/2", C: "~@4 c5 d5 eb5 f5", D: "g5@3 ~", E: "d5@3 ~, db5 ~@15",
  F: "db5 d5@12 ~@3", G: "eb5@3 ~", H: "d5 ~", I: "[d5 eb5 d5@6 ~@2 d4 eb4 d4@13 ~@7, c1@15 ~, [c2,c3]@25 ~@7]/2",
  J: "~ [c4,d4]@7, c3, ~ [eb3,g3]@15", K: "[~@8 [ab3,bb3,eb4]@7 ~, ~@10 g3@11 ~@11, ~@3 d4 c4@4, ~@13 g4@10 ~@9]/2",
  L: "[f3,bb3,c4,d4]@13 ~@3", M: "~@7 g4, c2, ~@3 g3@5, ~ c4, ~@3 d4", N: "[ab2,ab3,bb3,c4,eb4]",
  O: "c4 ~@5 f4@9 ~, [a2,f3], ~@2 a3@13 ~, ~@4 c4@11 ~", P: "[bb2,f3,bb3,c4,d4]",
  Q: "[g3,eb4]@3 [f3,d4]@5, [b2,b3]@15 ~", R: "[ab3,c4,eb4,g4]@9 ~ [eb4,g4]@6, ~@10 [ab3,c4]@3 ~@3",
  S: "[bb3,d4,f4]@13 ~@3", T: "c2@9 ~@3 c3@4, [g3,c4,f4]@15 ~, ~@5 c2@3",
  U: "[g3,c4,e4]@8 [c3,g3,bb3,eb4]@7 ~, c2@15 ~", V: "[bb2,f3,bb3]", W: "~ [g3,c4]@3, c3, c2@13 ~@3",
  X: "[~@10 [c4,e4,g4]@4 [d4,f4,a4]@9 ~ e4 ~@3 a3 c4 g3 a3, d2, d3@23 d3@2 f4@4 ~@3, ~@27 d3@5]/2", Y: "[bb2,f3]",
  Z: "[~@12 c4@7 ~@3 f3@16 ~@2 d5@2 e5@2 f5@2 g5@2, c2@5 ~@19, ~@2 f3@7 ~@15, ~@6 g3@13 ~@29]/3",
  AA: "[d4@4 d4 ~ f4@7 ~@3 d4@4 ~@2 f4@7 ~ f5@2, [bb3,a5]@13 ~@3 b3@13 ~@3, f4@6 ~@8 g5@15 ~@3, ~@20 d4@9 ~@3]/2", // Bbmaj7
  AB: "~@3 e4@5, [e4,e5]@7 ~@9, ~ c4@3", AC: "[bb2,bb3]@6 bb3@4 ~@2 bb2@3 ~, d4@5 [f3,bb3,d4]@3, f3@2 ~ bb2@3 ~@2",
  AD: "[c3,c4,e4]@3 g3@2 d4@3, g3@2 ~ [c4,e4]@5, ~@3 c3@3 ~@2", // C
  AE: "[[d4,a4]@6 [a3,d4,a4]@4 [d3,g3,a3,d4,a4]@3 d3@3 d4@6 a3@2 [d2,d3,a3,d4,f4]@7 ~, d2@3 ~, d3@5 ~@3 [d3,gb3,a4]@4 ~@4, a3@2 ~@11 g3@11 ~@8, ~@8 a3 ~@7]/2", // D5 Dsus4 Dm D
  AF: "[bb3,d4,f4]@4 [bb3,c4,d4,f4] ~@5 [bb3,c4,f4]@6, [bb2,f3] ~@9 d4 ~@5", AG: "~@2 [a3,db4,f4] ~@2 [a3,db4,e4]@2 ~",
  AH: "[d3@3 ~@6 g4@3 ~@2 [e4,g4]@9 ~ [f4,a4]@2 [e4,g4]@2 f4 ~@3, [a3,c4,e4]@6 ~ c4@5 ~@4, ~@3 f4@3 ~@10]/2", // Em F Em Am
  AI: "[bb3,d4,f4]@3 e4@3 d4@2, bb2@7 ~", AJ: "[a3,f4]@6 a3@3 ~@3 f4@3 ~, db4@15 ~, ~@6 e4@9 ~",
  AK: "d4@3 e4@2 d4@2 ~, [bb2,f4]@7 ~, ~@6 bb3@3 ~@7", // Bb5
  AL: "~@2 a3@2 c4 ~ [f4,a4] ~ [f4,a4]@2 e4@2 [d4,f4]@2 ~@2, c2@11 ~@5, ~@2 g3@9 ~@5, ~@6 g4@4 g4 ~@5", // F Dm
  AM: "[bb3,d4,f4]@5 ~ [d4,f4]@6 [f4,a4]@3 ~, ~@3 bb3@2 ~@3", AN: "[a3,db4,f4,g4]@5 ~ [a3,db4,g4]@9 ~, ~@6 f4@7 ~@3",
  AO: "[[a3,c4,e4]@5 ~ [a3,e4]@12 ~@4 c4@8 ~@2, ~@3 c4@7 a3@5 ~]/2", AP: "f4@3 f4@3 ~@2, [bb3,c4,d4]@13 ~@3",
  AQ: "[c4,d4,e4,g4]@13 ~@3", AR: "[~@10 d5@2 f4@2 ~@8 d4@9 ~, [a3,bb3,d4]@7 ~@9, f4@6 ~ a4@7 ~@2]/2",
  AS: "[f3,bb3,c4,d4]@7 ~", AT: "[[g3,c4,d4,e4]@25 ~@7]/2",
  AU: "[a5,a6]@8 ~@2 [d6,d7]@2 ~ [a5,a6]@2 ~, [bb3,d4,f4]@7 ~", AV: "[a3,db4,f4]@7 g5, [db6,db7]@8 ~@6 g4 ~",
  AW: "[f4,g4,g5]@3 f5@5, [a3,c4,e4]@15 ~, ~@3 f4@3 ~@2", // Fsus2 Am
})).s("gm_piano").gain(0.13).pan(0.6)

// chords · piano · soft notes
const piano_soft = note("<~@65 A B ~ C D E F G H I J K L M N ~@35>".pickRestart({
  A: "g4@13 ~@3", B: "g4, c4 ~@3", C: "~@2 f3 f3@2 ~@3", D: "~@2 g3 ~@3 c3@2, ~@5 g3@3", E: "~@4 a3@2 ~@7 [a3,d4,a4]@3",
  F: "~ a3@2 d4 ~@4", G: "~@6 bb2 ~", H: "[a2,e3] ~@3", I: "~@2 d3 ~@3 d3 ~", J: "~@12 [g3,d4] ~@3",
  K: "f3@2 ~@4 bb3@6 f3 ~ f3 ~", L: "a2@6 ~@6 a3@3 ~", M: "f3@3 ~ f3@3 ~@3 bb3@2 f3@2 ~@2", N: "c3@5 ~@3",
})).s("gm_piano").gain(0.06).pan(0.6)

// chords · epiano2
const epiano2 = note(`<
  ~ A@4 B@2 ~@8 C D ~ E F G H I@2 ~@3 J@2 ~@2 K L M N O P Q R S T U V@2 W@2 X@2 Y Z AA AB AC AD AE AF AG AH AI@2 AJ AK@3
  AL@2 AM ~ AN AO AP@2 AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE@2 BF BG@2 BH BI BJ BK BL BM BN@2 BO@2 BP@2 BQ@2 BR
  BS BH BI BJ BK BL BM BT@2
>`.pickRestart({
  A: "[~@30 eb4@14 ~@2 d4@6 eb4@2 d4@9 ~, ~@12 d5@15 ~ c5@16 bb4@19 ~, ~@7 g4@8 ~@17]/4",
  B: "[~@3 c2@5, ~@2 eb4@29 ~, ~@4 d4@27 ~, ~@6 g3@25 ~]/2", C: "~@4 c5 d5 eb5 f5", D: "g5@3 ~", E: "d5@3 ~, db5 ~@15",
  F: "db5 d5@12 ~@3", G: "eb5@3 ~", H: "d5 ~", I: "[d5 eb5 d5@6 ~@2 d4 eb4 d4@13 ~@7, [c2,c3]@25 ~@7]/2",
  J: "[~ c4, ~@10 g3@11 ~@11, ~@3 d4 ~@4, ~@13 g4@10 ~@9]/2", K: "~@7 g4, ~@3 g3@5, ~ c4, ~@3 d4",
  L: "[ab2,ab3,bb3,c4,eb4]", M: "c4 ~@5 f4@9 ~, [a2,f3], ~@2 a3@13 ~, ~@4 c4@11 ~", N: "[bb2,f3,bb3,c4,d4]",
  O: "[g3,eb4]@3 [f3,d4]@5, [b2,b3]@15 ~", P: "[ab3,c4,eb4,g4]@9 ~ [eb4,g4]@6, ~@10 [ab3,c4]@3 ~@3",
  Q: "[bb3,d4,f4]@13 ~@3", R: "[g3,c4,f4]@15 ~", S: "[g3,c4,e4]@7 ~ [g3,c4,eb4]@7 ~",
  T: "[ab2,ab3,c4,eb4] ~@5 c4 ~, ~@3 [ab3,bb3,d4]@4 ~", U: "[g3,b3]@3 [g3,b3,d4]@4 ~, eb4@7 ~",
  V: "[~@14 g3 bb3, g3@13 bb3@2 ~, [bb3,d4]@25 d4@6 ~, ~@16 f4@15 ~, ~@24 eb4@7 ~]/2", // Bb
  W: "[~@12 c4@8 ~@2 g3@6 [g3,d4]@3 ~, [ab3,eb4]@5 ~@3, c4@12 ~@10 [b3,eb4]@9 ~, ~@3 d4@7 ~@6]/2", // G5 Ab5 B
  X: "[~ [bb3,c4,d4,f4], ab3, c4 ~, g4@3 eb4@5, eb4@3 f4@5 ~@8]/2", Y: "[ab3,eb4]@3 [ab3,d4,eb4]@4 ~, c4@7 ~",
  Z: "[g3,b3]@3 [g3,b3,d4]@5, eb4", AA: "~@12 g4@3 ~, [g3,bb3,d4]@15 ~, ~@6 eb4@9 ~", AB: "[bb3,d4,f4]",
  AC: "[ab3,bb3,c4,eb4]", AD: "[bb3,c4,d4,f4]@7 ~", AE: "~@4 eb4@11 ~, [c2,c3,g3,c4]",
  AF: "~@9 f4@4 c4@3, d4@7 ~, ~ g4@13 ~@2, ~@5 c4@8 ~@3", AG: "[bb2,f3,bb3]", AH: "~@2 [g3,c4]@5 ~, [c2,c3]@7 ~",
  AI: "[~@10 [c4,e4,g4]@4 [d4,f4,a4]@9 ~ e4 ~@3 a3 c4 g3 a3, d2, d3@23 d3@2 f4@4 ~@3, ~@27 d3@5]/2", // C Dm
  AJ: "bb2@15 ~, f3@11 ~@5",
  AK: "[~@12 c4@7 ~@3 f3@16 ~@2 d5@2 e5@2 f5@2 g5@2, c3@5 ~@19, ~@2 f3@7 ~@15, ~@6 g3@13 ~@29]/3",
  AL: "[d4@2 ~ f4@3 ~@2 d4@2 ~ f4@4 f5, [bb3,a5]@13 ~@3 [b3,g4]@13 ~@3, f4@6 ~@8 g5@15 ~@3, ~ d4 ~@3 d4 ~@2]/2", // Bbmaj7 Em
  AM: "c4@2 ~ e4@3 ~@2, [e4,e5]@7 ~@9, ~ c4 ~@2", // E
  AN: "[bb2,bb3]@6 bb3@4 ~@2 bb2@3 ~, d4@5 [f3,bb3,d4]@3, f3@2 ~ bb2@3 ~@2", // Bb
  AO: "[c3,c4,e4]@3 g3@2 [g3,d4]@3, g3@2 ~ [c4,e4]@5, ~@3 c3@3 ~@2", // C G5 C
  AP: "[[d4,a4]@6 [a3,d4,a4]@4 [d3,g3,a3,d4,a4]@3 [d3,d4,a4]@3 d4@6 a3@2 [d2,d3,a3,d4,f4]@7 ~, d2@3 ~, d3@5 ~@3 [d3,gb3,a4]@4 ~@4, a3@2 ~@11 g3@11 ~@8, ~@8 a3 ~@7]/2", // D5 Dsus4 D5 Dm D
  AQ: "[bb3,d4,f4]@4 [bb3,c4,d4,f4] ~@5 [bb3,c4,f4]@6, [bb2,f3] ~@9 d4 ~@5", AR: "~@2 [a3,db4,f4] ~@2 [a3,db4,e4]@2 ~",
  AS: "~@10 g4@4 [c4,e4,g4] ~, [d3,a3,c4,e4]@7 ~, ~@3 f4@4 ~", AT: "~@4 [f4,a4] [e4,g4] f4@2",
  AU: "[d4,f4] ~@5 e4@6 d4@4, bb2, bb3@5 ~ bb3@10", AV: "[a3,f4]@6 a3 ~@5 f4@4, db4, ~@3 e4@5",
  AW: "d4@3 bb3 ~ d4@3, bb2@7 ~, f4 ~@5 e4@5 ~@5, ~ f3",
  AX: "~@3 [f4,a4]!2 [e4,g4] [d4,f4]@2, c3, c2@11 ~@5, ~ a3@7, ~@4 c4@7 ~@5", // F Em Dm
  AY: "[bb3,d4,f4]@3 f4@3 [f4,a4]@2, ~@3 bb3@5, ~@6 d4 ~@9", AZ: "[a3,db4,f4,g4]@3 [a3,db4,f4,g4]@5",
  BA: "[c4,e4]@6 [a3,c4,e4] ~@9, a3 ~@15", BB: "~@3 c4@5, ~ a3@3", BC: "f4@3 f4@5, [bb3,d4], c4 ~@15",
  BD: "[c4,d4,e4,g4]", BE: "[f4@10 ~@12 d4@9 ~, [a3,bb3], d4@7 a4@9, ~@5 d5@7 ~@4, ~@3 f4@5]/2", BF: "[f3,bb3,c4,d4]",
  BG: "[[g3,c4,e4], d4 ~@31]/2", BH: "[bb2,bb3,c4,d4,f4]@3 [bb2,bb3,c4,d4,f4]@5",
  BI: "[a2,db4,e4]@3 [a2,db4,e4]@5, f4 ~@5 f4@4 ~@6", BJ: "[a3,e4,f4] ~@15, [d3,c4]",
  BK: "[c3,g3,c4,d4,g4]@15 ~, e4 ~@15", BL: "[bb2,bb3,c4,d4,f4]@3 bb2@3 bb2@2, ~@3 [bb3,c4,d4,f4]@5",
  BM: "[a3,f4]@5 ~ a2@2, [db4,e4], a2@3 ~, ~@5 a3@3", // Dm Dbm
  BN: "[[bb2,bb3,c4,d4,f4]@14 d4@10 ~@4 [c4,g4]@3 ~, ~@7 [c4,g4]@7 ~@2, ~@14 e4@12 e4@5 ~, ~@14 c3@8 ~@2 d4@7 ~]/2", // Bb C5
  BO: "[[bb2,bb3,c4,d4,f4]@6 bb2@6 ~@6 a3@3 ~@5 a3@2 [a2,g4]@4, ~@3 [bb3,c4,d4,f4]@6 [db4,e4,f4]@4 [db4,e4,f4]@3, ~@4 a2@2 a2 ~]/2", // Bb A7 Bb Db
  BP: "[[d3,a3,c4,e4,f4]@3 a3@2 ~@10 g4, ~@3 [c4,e4]@6 c4@7, ~@3 d3@3 ~@2 c3 d4@3 c3 d4@3, ~@5 a3@4 g4@6 ~, ~@9 e4@5 [c3,e4]@2]/2", // Dm7 C
  BQ: "[[bb2,bb3,c4,d4,f4]@3 ~@3 bb2 ~@2 a3@2 ~@3 a2@2, ~@6 [c4,d4,f4]@7 ~ f4@18, ~@3 bb3@2 bb3@2 [db4,e4]@6 ~@3, ~@4 bb2@2 ~ a3@2 ~@4 [a3,db4,e4,g4]@3, ~@4 a2 ~ a2 ~]/2", // Bb Dm7 Dbm A7
  BR: "~@5 [bb3,c4,d4,f4]@3, bb2@2 bb2 ~, ~ [bb3,d4,f4]@4 ~@3", // Bb
  BS: "c3@3 ~@2 [c4,d4,e4,g4]@2 ~, [g3,c4,d4,e4,g4]@5 ~@3, ~@6 c3@9 ~", // C
  BT: "[[bb2,bb3,c4,d4,f4]@14 [c4,d4,e4,g4]@9 ~@9, ~@7 c3@2 ~@7]/2", // Bb C
})).s("gm_epiano2").gain(0.11).pan(0.4)

// chords · epiano2 · soft notes
const epiano2_soft = note(`<
  ~@55 A ~@10 B ~ C D E F G H I@2 J K L ~@13 M ~@3 N ~ O P@2 Q@2 ~ R S T ~ M ~@3 N ~@2
>`.pickRestart({
  A: "~@2 c3@2 ~@2 bb2 ~, ~@4 c3@3 ~", B: "g4@7 ~", C: "~@2 f3 f3@2 ~@3", D: "~@2 g3 ~@3 c3@2", E: "~@4 a3@2 ~@7 a3@3",
  F: "~ a3@2 d4 ~@4", G: "~@6 bb2 ~", H: "e3@8 e3@2 ~@2 e3@3 ~, a2 ~@3",
  I: "[~@14 g3@6 g3 ~@7 d4@4, ~@7 c3@9, ~@28 g3 ~@3]/2", J: "f3", K: "~@3 a3, a2", L: "f3@7 ~@3 bb3@6", M: "a3@3 a3@5",
  N: "~@5 f4@3", O: "~@6 c3@4 c3@5 ~", P: "[~@12 bb2@6 ~@3 a3@5 ~@3 a3@3]/2", Q: "[~@6 d3@3 ~@7]/2",
  R: "~@3 a3@2 ~@3, ~ a2 ~@2", S: "~@3 bb2", T: "~@5 g3@2 ~",
})).s("gm_epiano2").gain(0.05).pan(0.4)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@21 A@3 ~@16 B@2 C@2 D@4 E@2 F G H G I@2 J K L@6 ~@8 J M N O J M J O P@2 N O J Q R@2 J S ~@25
>`.pickRestart({
  A: "[~@15 f4@31 ~@2, ~@15 bb4@28 ~@5, ~@5 c5@8 ~@3, ~@15 d5@20 ~@13]/3", B: "[[ab3,c4] [g3,b3,d4], eb4]/2",
  C: "[g3,bb3,d4,eb4]/2", D: "[[ab3,c4] [g3,b3,d4] ab3 [bb3,d4,f4], eb4@3 ~, ~ c4]/4",
  E: "[[ab3,c4] [g3,b3,d4], eb4, ~@4 c4 ~@3]/2", F: "[g3,bb3,d4,eb4]", G: "[bb3,c4,d4,f4]", H: "[ab3,c4,eb4]",
  I: "[c2,g3,c4,d4,eb4]/2", J: "[bb3,d4,f4]", K: "[c4,e4,g4]@15 ~",
  L: "[[a3,d4]@32 bb3@14 ~@2 [c4,e4,g4]@15 ~ a3@31 ~, f4@48 ~@16 g3 ~@31, e4@30 ~@2 d4@31 [d4,e4,f4]@32 ~]/6", // D5 C Dm
  M: "[a3,db4,e4,f4]", N: "[a3,d4,e4,f4]", O: "[g3,c4,e4]", P: "[[bb3,d4] [a3,db4,e4], f4]/2", Q: "[c4,e4,g4]",
  R: "[a3,bb3,d4,f4]/2", S: "[g3,c4,e4]@3 ~",
})).s("gm_synth_strings_1").gain(0.06)

// other · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@22 A B ~@14 C@2 D E F ~ G H I@3 J ~@4 K@2 ~@14 L@2 M N O ~@5 P Q@3 ~@6 R S T U V W X Y@2 Z AA AB AC AD AE AF ~@9
>`.pickRestart({
  A: "~@3 g4@5", B: "~@2 f4@3 c4@11", C: "[~@7 g5@9]/2", D: "eb5@3 d5@3 ~@2", E: "~@13 g4 ~ ab4", F: "g4@13 ~@3",
  G: "~@13 g4 ab4 ~", H: "bb4@7 ~", I: "[c5@20 ~@12 g5@13 ~ d5 eb5, ~@15 c6@5 ~@4]/3", J: "[d5,g5]@13 ~ eb5 ~",
  K: "[c5@3 ~@9 f3 [eb3,g3] f3@15 ~@3]/2", L: "[a4@9 a5@7]/2", M: "f5@3 e5@5", N: "d5@6 db5@6 bb4@3 ~", O: "a4@3 ~@5",
  P: "a5@3 f5@9 ~ f5 g5 ~", Q: "[~@15 d5@22 ~ e4@2 d4@8]/3", R: "~@8 c4 e4 f4 a4 c5 e5 f5 a5",
  S: "c6 e6 f6 a6 e6@9 ~@3", T: "~@2 d6 e6 f6 a6 e6@7 d6 a5 ~", U: "f6@6 e6 a5 g6@5 ~ e6 a5",
  V: "a6@6 a6@4 e6 ~ e6 ~ e6 ~", W: "e6 f6 e6 a5@12 ~",
  X: "~@2 [g5,ab5] g5 [e5,f5] db5 bb4 g4 e5 db5 bb4 g4 a4 ~ g4 a4", // Abmaj7 Fmaj7
  Y: "[f4@2 e4 f4 d4@6 ~@2 e4 f4 ~ d4@8 ~@3 a3 [c4,d4] f4 ~ [d4,e4] f4]/2", Z: "[g4,ab4] a4@5 ~@10",
  AA: "~@2 bb4 ~ a4 ~ bb4 ~ a4 ~ bb4 ~ a4 ~ bb4 ~", AB: "a4 ~@9 e5 ~ e5 ~ e5 ~",
  AC: "e5 f5 e5 ~ d5 e5 d5 g4 c5 d5 c5 g4 bb4 c5 ~@2", AD: "a4 bb4 a4 f4 g4@6 ~@3 e4 f4 ~", AE: "e4@11 ~@2 f4 ~@2",
  AF: "d4",
})).s("gm_lead_2_sawtooth").gain(0.35).pan(0.7)

// other · lead 2 sawtooth · soft notes
const lead_2_sawtooth_soft = note(`<
  ~@22 A ~@15 B ~ C D ~@7 E F@2 ~@2 G ~@26 H ~ I ~@6 J ~@3 K ~@3 L ~ M N O ~@12
>`.pickRestart({
  A: "g4 ~@15", B: "~@12 g5 ~@3", C: "~@3 c5", D: "b4@3 ~", E: "~@13 d5 ~@2", F: "[d5@3 ~ c5@2 g4@13 ~@13]/2",
  G: "g3@3 ~", H: "e5@12 f5@3 ~", I: "~@5 f4 ~@10", J: "~@4 c4 ~@11", K: "~@11 a5 ~ a5 ~ a5", L: "~@12 e4 ~@3",
  M: "~@5 d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4", N: "~@13 g4 ~ g4", O: "~@3 g4 ~@11 g4",
})).s("gm_lead_2_sawtooth").gain(0.2).pan(0.7)

// … 188 more lines

More by Grandi