Strudelify
Grande grande grande cover art

Del Mio Meglio Boxset

Grande grande grande

Mina

KeyE♭ majorTempo96 bpm
0:00/0:00
// Grande grande grande — Mina
// 96 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 88 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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("<~@28 A B ~@16 C D ~@16 E F G H ~@6 E F G H ~@6 E F G H>".pickRestart({
  A: "[ab1,gb3,bb3,db4]@5 ~ [ab1,gb3,bb3,db4]@9 ~", B: "[ab1,gb3,bb3,db4]@5 ~ [ab1,gb3,bb3,db4]@10",
  C: "[a2,g3,b3,d4]@5 ~ [a2,g3,b3,d4]@8 ~@2", D: "[a2,g3,b3,d4]@2 ~ [a2,g3,b3,d4]@4 ~",
  E: "[bb2,ab3,c4,eb4]@5 ~ [bb2,ab3,c4,eb4]@8 ~@2", F: "[bb2,ab3,c4,eb4]@2 ~ [bb2,ab3,c4,eb4]@4 ~",
  G: "~@8 [bb3,db4,f4] ~ [bb3,db4,f4] ~@3 [bb3,db4,f4] ~", H: "~@2 [bb3,db4,f4] ~@3 [bb3,db4,f4] ~ [bb3,db4,f4]@2 ~@6",
})).s("gm_piano").gain(0.32)

// bass · fretless bass
const bass = note(`<
  A B C D E@2 ~@7 F G H I J K L M N O P Q R S T U@2 V W X Y Z AA AB AC AD AE AF AG AH AI AE AJ AK AL AM AN AO AP AQ AR
  AS AT AU AV AW AX AY AZ AV BA BB BC BD BE AW AX AY AZ AV BA BB BC BD BE AW AX AY AZ AV BA BB BC BD BE
>`.pickRestart({
  A: "db2@6 ~ db1 db1@5 ~ db2 g1", B: "ab1@6 ~ eb1 ab1@6 b1 c2", C: "db2@6 ~ ab1 db1@5 ~ db2 g1",
  D: "ab1@7 ~ e1 f1 ab1@3 eb1 gb1 ab1", E: "[db2@27 ~@5]/2", F: "~@8 e1 f1 ab1@3 eb1 gb1 ab1", G: "db2@14 ~ [ab1,db2]",
  H: "db1@7 ~", I: "eb1@7 bb1 ab1@7 ~", J: "eb1@7 ~ ab1@6 ~ db2", K: "eb2@13 ~ bb1 a1", L: "ab1@7 ~",
  M: "db2@13 ~@2 ab1", N: "db1@15 ~", O: "ab1@2 ~ ab1 ~@2 ab1@4 ~@4 eb2 d2", P: "db2@3 ab1 ~ db1@5 ~ ab1 db2@3 e1",
  Q: "gb1@2 ~ gb1 ~ db1 gb1@6 ~@3 db1", R: "gb1@2 ~ gb1 ~ db1 gb1@6 ~@2 b1 c2", S: "db2@6 ~ db1 db1@6 ~ ab1",
  T: "db2@6 ~ ab1 db1@7 ~", U: "[ab1@4 ~@2 ab1@5 ~ eb1 gb1 ab1@6 ~@2 ab1@8 ~@2]/2", V: "db2@6 ~ db2 db2@4 ~@2 b1 bb1",
  W: "a1@6 ~ a1 a1@8", X: "d2@6 ~ d2 d2@6 ~ a1", Y: "d2@6 ~ a1 d1@5 ~@2 d2", Z: "e1@6 ~ e1 a1@6 ~ a1",
  AA: "e1@6 ~ a1 a1@6 ~ a1", AB: "e1@5 ~@2 e1 e1@6 ~ e1", AC: "a1@6 ~ e1 a1@6 ~@2", AD: "d2@6 ~ a1 a1@6 ~ d1",
  AE: "d1@6 ~ a1 d2@6 ~ a1", AF: "a1@6 ~ a1 a1@6 ~ a1", AG: "d1@6 ~ a1 d2@6 ~ gb1", AH: "g1@5 ~@2 g1 g1@6 ~ d1",
  AI: "g1@6 ~ g1 g1@7 ~", AJ: "d1@6 ~ d1 d1@5 ~ g1 ab1", AK: "a1@5 ~ a1@9 ~", AL: "a1@4 ~@2 a1@9 ~",
  AM: "d1@6 ~ d1 d1@7 ~", AN: "bb1@6 ~ bb1 bb1@8", AO: "eb2@6 ~ eb2 eb2@6 ~ bb1", AP: "eb2@6 ~ bb1 eb1@5 ~@2 eb2",
  AQ: "f1@6 ~ f1 bb1@6 ~ bb1", AR: "f1@6 ~ bb1 bb1@6 ~ bb1", AS: "f1@5 ~@2 f1 f1@6 ~ f1", AT: "bb1@6 ~ f1 bb1@6 ~@2",
  AU: "eb2@6 ~ bb1 bb1@6 ~ eb1", AV: "eb1@6 ~ bb1 eb2@6 ~ bb1", AW: "bb1@6 ~ bb1 bb1@6 ~ bb1",
  AX: "eb1@6 ~ bb1 eb2@6 ~ g1", AY: "ab1@5 ~@2 ab1 ab1@6 ~ eb1", AZ: "ab1@6 ~ ab1 ab1@7 ~",
  BA: "eb1@6 ~ eb1 eb1@5 ~ ab1 a1", BB: "bb1@5 ~ bb1@9 ~", BC: "bb1@4 ~@2 bb1@9 ~", BD: "eb1@7 ~ eb1@2 eb1@2 ~@2 eb1@2",
  BE: "~ eb1 ~ eb1 eb1@4",
})).s("gm_fretless_bass").gain(0.64)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B A C D E D E F@2 G@2 D H D E F@2 G@2 D@2 I@5 E J K D L M N O@2 P@2 M@2 Q@5 N R S M T U V W@2 X@2 U@2 Y@5 V Z AA AB
  AC Y@5 V Z AA AB AC Y@5 V Z AA AB AD
>`.pickRestart({
  A: "c4@2 ~@3 c4@3 eb4@2 ~ c4@2 db4@3, ~ f3@3 ~@4, ~@3 ab3@5 ~@2 ab3@6",
  B: "f4@2 ~ db4@2 eb4@3 db4@2 ~ bb3@5, ~@2 bb3@6 ~@2 gb3@3 ~@3", C: "bb3@7 ~ e3 f3 ab3@3 eb3 gb3 ab3",
  D: "~@2 ab3 ~ ab3 ~@2 ab3 ~@2 ab3 ~ ab3 ~@2 ab3, db3!2, ~ db4@4 f3@3 ~@5 f3@3, ~@3 f4@5 ~ c4@2 ~@3 c4@2, ~@6 db4@4 ~ f4@5",
  E: "~@2 ab3 ~ ab3 ~@2 ab3 ~@2 ab3 ~ ab3 ~@2 ab3, db3@6 db4@4 ~ f4@5, ~ db4@4 f3@3 db3@8, ~@3 f4@5 ~ c4@2 ~@2 f3@3, ~@7 c4",
  F: "~@2 bb3 ~@2 bb3 ~@4 ab3 ~@2 ab3 ~ c4, eb3@8 ab2@7 ~, ~ db4@2 ab4@3 gb4@4 ~ gb4@4 ~, ~@4 db4@2 ~ db4@2 c4@2 ~ c4@2 eb4@2",
  G: "[~@2 bb3 ~@2 bb3 ~@4 bb3 ~@2 bb3 ~@4 ab3 ~@2 ab3 ~ c4 ~@2 ab3 ~@2 ab3 ~ c4, eb3@8 eb3@8 ab2@7 ~ ab2@7 ~, ~ db4@2 ab4@3 gb4@4 ~ ab4@3 gb4@4 ~ gb4@4 ~@4 gb4@4 ~, ~@4 db4@2 ~ db4@2 db4@2 ~ db4@2 ~ db4@2 c4@2 ~ c4@2 eb4@3 c4@2 ~ c4@2 eb4@2]/2",
  H: "[eb3,bb3,db4,ab4]@2 [eb3,bb3,db4,ab4]@2 [eb3,bb3,db4,ab4]@2 [eb3,bb3,db4,ab4]@9 ~", // Ebsus4
  I: "[~ gb4 b3 ~@6 gb4 b3 ~@23 bb3 ~@7 bb3 ~@23 ab3 ~ ab3 ~@2 ab3 ~@2 ab3 ~ ab3 ~@2 ab3, ab2@7 ~ ab2@8 db3@8 db3@8 gb2@7 ~ gb2@7 ~ gb2@7 ~ gb2@8 db3@8 db3@8, ~@3 eb4@2 gb3@2 b3@2 ~@3 b3@2 eb4@2 ~ ab4@2 f4@2 ab3@2 b3@2 ~ db4@2 b3@2 f4@2 ~ gb4@2 f4@2 gb3@2 bb3@2 ~@3 bb3@2 db4@2 ~ a4@2 eb4@2 gb3@2 gb4@3 db4@2 a3@2 db4@2 ~ db4@4 f3@3 ~@5 f3@3, ~@4 b3@2 eb4@2 ~@3 eb4@2 gb3@2 b3@2 ~ db4@2 b3@2 f4@2 ~ ab4@2 f4@2 ab3@2 b3@2 ~@3 bb3@2 db4@2 ~ gb4@2 f4@2 gb3@2 bb3@2 ~ db4@2 a3@2 db4@2 ~ a4@2 eb4@2 gb3@2 gb4@3 ~ f4@5 ~ c4@2 ~@3 c4@2, ~@70 db4@4 ~ f4@5]/5",
  J: "[eb3,bb3,db4,ab4]@4 ~@2 [eb3,bb3,db4,ab4]@9 ~", K: "[ab2,gb3,bb3,db4]@2 ~ [ab2,gb3,bb3,db4]@5",
  L: "~@2 e3 ~ e3 ~@2 e3 ~@2 e3 ~ e3 ~@2 e3, a2!2, ~ a3@4 db3@3 ~@5 db3@3, ~@3 a4@5 ~@3 g4@5, ~@6 a3@2 ~ a3@2 ~@3 a3@2",
  M: "~@2 a3 ~ a3 ~@2 a3 ~@2 a3 ~ a3 ~@2 a3, d3!2, ~ d4@4 gb3@3 ~@5 gb3@3, ~@3 gb4@5 ~ db4@2 ~@3 db4@2, ~@6 d4@4 ~ gb4@5",
  N: "~@2 a3 ~ a3 ~@2 a3 ~@2 a3 ~ a3 ~@2 a3, d3@6 d4@4 ~ gb4@5, ~ d4@4 gb3@3 d3@8, ~@3 gb4@5 ~ db4@2 ~@2 gb3@3, ~@7 db4",
  O: "~@2 b3 ~@2 b3 ~@4 a3 ~@2 a3 ~ db4, e3@8 a2@7 ~, ~ d4@2 a4@3 g4@4 ~ g4@4 ~, ~@4 d4@2 ~ d4@2 db4@2 ~ db4@2 e4@2",
  P: "[~@2 b3 ~@2 b3 ~@4 b3 ~@2 b3 ~@4 a3 ~@2 a3 ~ db4 ~@2 a3 ~@2 a3 ~ db4, e3@8 e3@8 a2@7 ~ a2@7 ~, ~ d4@2 a4@3 g4@4 ~ a4@3 g4@4 ~ g4@4 ~@4 g4@4 ~, ~@4 d4@2 ~ d4@2 d4@2 ~ d4@2 ~ d4@2 db4@2 ~ db4@2 e4@3 db4@2 ~ db4@2 e4@2]/2",
  Q: "[~ g4 c4 ~@6 g4 c4 ~@23 b3 ~@7 b3 ~@23 a3 ~ a3 ~@2 a3 ~@2 a3 ~ a3 ~@2 a3, a2@7 ~ a2@8 d3@8 d3@8 g2@7 ~ g2@7 ~ g2@7 ~ g2@8 d3@8 d3@8, ~@3 e4@2 g3@2 c4@2 ~@3 c4@2 e4@2 ~ a4@2 gb4@2 a3@2 c4@2 ~ d4@2 c4@2 gb4@2 ~ g4@2 gb4@2 g3@2 b3@2 ~@3 b3@2 d4@2 ~ bb4@2 e4@2 g3@2 g4@3 d4@2 bb3@2 d4@2 ~ d4@4 gb3@3 ~@5 gb3@3, ~@4 c4@2 e4@2 ~@3 e4@2 g3@2 c4@2 ~ d4@2 c4@2 gb4@2 ~ a4@2 gb4@2 a3@2 c4@2 ~@3 b3@2 d4@2 ~ g4@2 gb4@2 g3@2 b3@2 ~ d4@2 bb3@2 d4@2 ~ bb4@2 e4@2 g3@2 g4@3 ~ gb4@5 ~ db4@2 ~@3 db4@2, ~@70 d4@4 ~ gb4@5]/5",
  R: "[e3,b3,d4,a4]@4 ~@2 [e3,b3,d4,a4]@9 ~", S: "[a2,g3,b3,d4]@2 ~ [a2,g3,b3,d4]@5",
  T: "~@2 f3 ~ f3 ~@2 f3 ~@2 f3 ~ f3 ~@2 f3, bb2!2, ~ bb3@4 d3@3 ~@5 d3@3, ~@3 bb4@5 ~@3 ab4@5, ~@6 bb3@2 ~ bb3@2 ~@3 bb3@2",
  U: "~@2 bb3 ~ bb3 ~@2 bb3 ~@2 bb3 ~ bb3 ~@2 bb3, eb3!2, ~ eb4@4 g3@3 ~@5 g3@3, ~@3 g4@5 ~ d4@2 ~@3 d4@2, ~@6 eb4@4 ~ g4@5",
  V: "~@2 bb3 ~ bb3 ~@2 bb3 ~@2 bb3 ~ bb3 ~@2 bb3, eb3@6 eb4@4 ~ g4@5, ~ eb4@4 g3@3 eb3@8, ~@3 g4@5 ~ d4@2 ~@2 g3@3, ~@7 d4",
  W: "~@2 c4 ~@2 c4 ~@4 bb3 ~@2 bb3 ~ d4, f3@8 bb2@7 ~, ~ eb4@2 bb4@3 ab4@4 ~ ab4@4 ~, ~@4 eb4@2 ~ eb4@2 d4@2 ~ d4@2 f4@2",
  X: "[~@2 c4 ~@2 c4 ~@4 c4 ~@2 c4 ~@4 bb3 ~@2 bb3 ~ d4 ~@2 bb3 ~@2 bb3 ~ d4, f3@8 f3@8 bb2@7 ~ bb2@7 ~, ~ eb4@2 bb4@3 ab4@4 ~ bb4@3 ab4@4 ~ ab4@4 ~@4 ab4@4 ~, ~@4 eb4@2 ~ eb4@2 eb4@2 ~ eb4@2 ~ eb4@2 d4@2 ~ d4@2 f4@3 d4@2 ~ d4@2 f4@2]/2",
  Y: "[~ ab4 db4 ~@6 ab4 db4 ~@23 c4 ~@7 c4 ~@23 bb3 ~ bb3 ~@2 bb3 ~@2 bb3 ~ bb3 ~@2 bb3, bb2@7 ~ bb2@8 eb3@8 eb3@8 ab2@7 ~ ab2@7 ~ ab2@7 ~ ab2@8 eb3@8 eb3@8, ~@3 f4@2 ab3@2 db4@2 ~@3 db4@2 f4@2 ~ bb4@2 g4@2 bb3@2 db4@2 ~ eb4@2 db4@2 g4@2 ~ ab4@2 g4@2 ab3@2 c4@2 ~@3 c4@2 eb4@2 ~ b4@2 f4@2 ab3@2 ab4@3 eb4@2 b3@2 eb4@2 ~ eb4@4 g3@3 ~@5 g3@3, ~@4 db4@2 f4@2 ~@3 f4@2 ab3@2 db4@2 ~ eb4@2 db4@2 g4@2 ~ bb4@2 g4@2 bb3@2 db4@2 ~@3 c4@2 eb4@2 ~ ab4@2 g4@2 ab3@2 c4@2 ~ eb4@2 b3@2 eb4@2 ~ b4@2 f4@2 ab3@2 ab4@3 ~ g4@5 ~ d4@2 ~@3 d4@2, ~@70 eb4@4 ~ g4@5]/5",
  Z: "[f3,c4,eb4,bb4]@4 ~@2 [f3,c4,eb4,bb4]@9 ~", AA: "[bb2,ab3,c4,eb4]@2 ~ [bb2,ab3,c4,eb4]@5",
  AB: "~@2 bb3 ~ bb3 ~@2 bb3 [g3,db4,f4] ~ [g3,db4,f4] ~@3 [g3,db4,f4]@2, eb3@15 ~, ~ eb4@4 g3@3 ~@8, ~@3 g4@5 ~@8, ~@3 eb4 ~@4", // Gm7b5
  AC: "~@2 [g3,db4,f4]@2 ~@2 [g3,db4,f4] ~ [g3,db4,f4]@4 [g3,db4,f4]@3 ~", // Gm7b5
  AD: "~@2 [g3,db4,f4]@2 ~@2 [g3,db4,f4] ~ [g3,db4,f4]@4 ~@4", // Gm7b5
})).s("gm_acoustic_guitar_nylon").gain(0.42).pan(0.6)

// other · flute
const flute = note("<~@27 A ~@2 B C ~@2 D E F@2 G H ~@5 I J@2 ~@14 K@2 L ~@7 K@2 L ~@7 K@2 L ~@3>".pickRestart({
  A: "[bb3,bb4] [c4,c5]", B: "f5 ~ ab5@6 f5 ~ ab5@3 ~@2 bb5, ~@7 b5", C: "a5 ab5 g5 e5@9 ~@4", D: "~@2 a5@2 g5 a5@3",
  E: "g5@3 a5@3 e5@10", F: "[~@4 a4@27 ~]/2", G: "gb6@3 e6@3 d6@2", H: "db6@3 a5@5", I: "gb5@2 g5@3 ~ a5@8 ~@2",
  J: "a5/2", K: "[~@14 g5@4 ab5@4 bb5@9 ~]/2", L: "bb5@3 ~ eb6 ~ bb5@10",
})).s("gm_flute").gain(0.24).pan(0.4)

// other · harmonica
const harmonica = note("<A@2 B@2 ~@27 C D E@3 ~@4 F@2 G H ~@44>".pickRestart({
  A: "[ab6@23 ~ gb6@3 f6@3 db6@2]/2", B: "[~ ab5@8 ~@7]/2", C: "~ a4 gb5 e5", D: "gb5@7 ~",
  E: "[~@4 a4@4 g5@5 ~ gb5@4 g5@16 ~@14]/3", F: "[~@5 d5 ~ a4@3 ~@6, ~@10 db5 ~@21]/2", G: "~@14 [bb4,b4] ~",
  H: "bb4 ~@7",
})).s("gm_harmonica").gain(0.22)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@49 A B@2 C@6 ~@7 D ~@9 D ~@9 D ~@2>".pickRestart({
  A: "f5 g5 ab5 bb5, bb1", B: "[eb4 d4 c4 d4, [eb2,bb3,g4]]/2",
  C: "[[c4,eb4] [bb3,d4] [c4,eb4] [bb3,d4] eb4@2 bb2@2 [eb2,bb3,g4]@4, ab4@2 ~, f2 d4, ~@32 c4@31 ~@33]/6", D: "bb5",
})).s("gm_string_ensemble_2").gain(0.19).pan(0.7)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  A@4 ~@28 B@4 C@4 D@2 E@2 F@2 G@2 H I J K L M N O P Q R@2 S@2 T@2 U@2 ~ V W@2 S@2 T@2 U@2 ~ V W@2 S@2 T@2 U@2 ~ X
>`.pickRestart({
  A: "[[db2,f4,ab4,c5] [ab1,gb4,bb4,db5] [db2,f4,ab4,c5] [ab1,db4,gb4,bb4], ab3]/4", // Dbmaj7 Gb Dbmaj7 Gb
  B: "[a6@46 ~@8 g5@9 ~, a5@27 ~@5, ~@23 g6@9]/4", C: "[a5,a6]/4", D: "[e4 gb4 g4 a4, c4, [a2,e3,g3] [d2,a3,e4]]/2",
  E: "[[gb4,b4] [f4,bb4], [g2,d3,d4]]/2", F: "[d3,a3,d4,gb4]/2", G: "[d4 e4, [a1,a2,g3,b3]]/2", H: "~@2 d5 e5",
  I: "f5 g5 ab5 bb5, [bb1,f3,bb3,d4]", J: "eb5 f5", K: "g5 bb5", L: "c6 g5", M: "bb5 f5", N: "g6 f6", O: "eb6 f6",
  P: "g6@3 f6@3 eb6@2", Q: "d6@3 bb5@5", R: "[f4 g4 ab4 bb4, db4, [bb2,ab3] [eb2,f4]]/2",
  S: "[[g4,c5]@8 [gb4,b4]@7 ~, [ab2,eb4]@31 ~]/2", T: "[[eb2,bb2,bb3,d4,f4,g4]@31 ~]/2",
  U: "[eb4@3 d4, [bb1,f3,c4,ab4]]/2", V: "[eb2,bb3,g4,db5,f5]", W: "[f4 g4 ab4 bb4, db4@31 ~, [bb2,ab3] [eb2,f4]]/2",
  X: "[eb2,bb3,g4,db5,f5]@3 ~", // Eb7
})).s("gm_string_ensemble_2").gain(0.24).pan(0.3)

// other · trumpet
const trumpet = note("<~@42 A B ~@8 C D ~@12 E F ~@8 E F G H@2 ~@5 E I>".pickRestart({
  A: "~@14 b4 ~", B: "e5@2 ~@2 e5@2 d5@3 ~@7", C: "~@4 bb4@2 ~@2 ab4@2 bb4@3 ~@3", D: "f4 ab4 ~ c5 ~ ab4 bb4@8 ~@2",
  E: "~@4 bb4 c5 ~ db5", F: "~@2 eb5@2 ~@2 c5@2 db5@7 ~", G: "eb5@7 ~",
  H: "[f5@2 eb5@2 ~@2 c5@2 ~@2 bb4@3 ~ eb5@16 ~@2]/2", I: "~ eb5 ~ c5 db5@2 ~@2",
})).s("gm_trumpet").gain(0.5).pan(0.7)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@3 A B ~@3 C D ~@3 A E ~ C D ~@2 F G H I J K ~@2 L@2 ~@8 M N O P Q R ~@12 S T U V W X ~@6 Y V W X ~@6 Y V W X ~@6
>`.pickRestart({
  A: "~@8 e2 f2 ab2@3 eb2 gb2 ab2", B: "db2@13 ~@3", C: "~@3 bb4!2 c5!2 db5", D: "db5 c5!2 bb4!2 ab4@3", E: "db2",
  F: "f4@3 eb4@3 db4@2", G: "c4@3 ab3@5", H: "[eb4,ab4] [b3,eb4,ab4]@4 ~ [eb4,ab4] [b3,eb4,ab4]@8 ~",
  I: "eb4 [b3,eb4,ab4]@4 ~ [eb4,ab4] [b3,eb4,ab4]@4 [b3,eb4,ab4] ~ [b3,eb4,ab4]@2 ~", // Abm Ab5 Abm
  J: "[bb3,db4,ab4] [bb3,db4,ab4]@3 ~@2 [bb3,db4,ab4] [bb3,db4,ab4]@4 [bb3,db4,eb4,f4] ~ [bb3,db4,f4]@2 ~", // Bbm7 Bbm
  K: "[eb4,ab4] [a3,eb4,ab4]@4 ~ [a3,eb4,ab4] [a3,eb4,ab4]@4 [a3,eb4,ab4] ~ [a3,eb4,ab4]@3", // Ab5 Ab
  L: "[[gb3,bb3,db4]@5 ~@7 eb2 gb2 ~@2 [gb3,bb3,db4]@5 ~ [gb3,bb3,db4]@10, ~@3 [gb3,bb3,db4]@4 ab2@8 ~]/2", // Gb
  M: "gb4@3 e4@3 d4@2", N: "db4@3 a3@4 ~", O: "~@3 [g3,c4,e4]@4 ~", P: "[gb3,c4,d4]@5 ~ [gb3,c4,d4]@8 ~@2",
  Q: "[gb3,b3,d4]@2 ~ [gb3,b3,d4]@4 ~", R: "[bb3,d4,f4]@5 ~ [bb3,d4,f4]@7 ~@3", S: "g4@3 f4@3 eb4@2", T: "d4@3 bb3@4 ~",
  U: "[ab3,f4]@5 ~ [ab3,db4,f4]@8 ~@2, db4 ~@15", V: "[g3,db4,f4]@5 ~ [g3,db4,eb4]@9 ~",
  W: "[g3,c4,eb4]@2 ~ [g3,c4,eb4] ~@2 [g3,c4,eb4]@9 ~", X: "[gb3,b3,eb4]@5 ~ [gb3,b3,eb4]@9 ~",
  Y: "~@3 [ab3,db4,f4]@4 ~", // Db
})).s("gm_electric_guitar_jazz").gain(0.11).pan(0.8)

// chords · percussive organ
const percussive_organ = note(`<
  A B A C ~@4 D@2 ~@4 E@8 F G H I J@2 ~@16 K L ~@16 M@2 N@2 O P ~@4 M@2 N@2 O Q ~@4 M@2 N@2 O P
>`.pickRestart({
  A: "~@2 [c5,f5,ab5] ~@2 [c5,f5,ab5] ~@2 [c5,f5,ab5]@2 ~ [c5,f5,ab5] ~@2 [c5,f5,ab5]@2", // Fm
  B: "~@2 [bb4,db5,gb5] ~@2 [bb4,db5,gb5] ~@2 [bb4,db5,gb5]@5 ~ [bb4,db5,gb5] ~", C: "[gb4,bb4,db5]@7 ~",
  D: "[~ ab6@7]/2",
  E: "[[db5,f5] [c5,eb5] [bb4,db5] c5 db5 c5 db5 c5 db5@2 c5@2 ~ c5@3, ab5, ~@3 eb5@9 [db5,f5]@4, ~ gb5@2 ~]/8", // Db Cm Bbm Db
  F: "[ab4,b4,eb5,gb5]@3 [ab4,b4,eb5,gb5] ~@2 [ab4,b4,eb5,f5]@9 ~", G: "[ab4,b4,eb5,gb5]@8 [ab4,b4,eb5,f5]@7 ~",
  H: "[bb4,db5,f5,ab5]@3 [bb4,db5,f5,ab5] ~@2 [bb4,db5,f5,ab5]@9 ~", // Bbm7
  I: "[a4,db5,eb5,ab5]@3 [a4,db5,eb5,ab5] ~@2 [a4,db5,eb5,ab5]@10", // Amaj7
  J: "[ab4,c5,db5,f5]@4 [ab4,c5,db5,f5]@4 [ab4,bb4,db5,f5]@4 [ab4,bb4,db5,f5]@3 ~", // Dbmaj7 Bbm7
  K: "[a4,d5,gb5]@3 ~ [a4,d5,gb5]@3 ~ [a4,db5,e5,gb5]@3 ~ [a4,db5,e5,gb5]@3 ~", // D Gbm7
  L: "[a4,b4,d5,gb5]@3 ~ [a4,b4,d5,gb5]@3 ~ [a4,db5,e5,gb5]@3 ~ [a4,db5,e5,gb5]@2 ~@2", // Bm7 Gbm7
  M: "[d5@8 c5@8 d5@8 c5@7 ~, [g4,bb4]@31 ~]/2", N: "[ab4,c5,eb5]/2",
  O: "~@8 [bb4,db5,f5] ~ [bb4,db5,f5]@2 ~@2 [bb4,db5,f5]@2", // Bbm
  P: "~@2 [bb4,db5,f5]@2 ~@2 [bb4,db5,f5] ~ [bb4,db5,f5]@6 ~@2", // Bbm
  Q: "~@2 [bb4,db5,f5]@2 ~@2 [bb4,db5,f5] ~ [bb4,db5,f5]@7 ~", // Bbm
})).s("gm_percussive_organ").gain(0.07).pan(0.4)

// bass · electric bass pick
const bass_2 = note("<~@3 A B@2 ~@7 A ~@14 C@2 ~@58>".pickRestart({
  A: "~@8 e2 f2 ab2@3 eb2 gb2 ab2", B: "[db2@11 ~@5]/2", C: "[~@12 eb2 gb2 ab2@17 ~]/2",
})).s("gm_electric_bass_pick").gain(0.32).pan(0.1)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  ~@2 A ~@11 B ~@3 B ~@7 B ~@7 B ~ B@3 ~ B ~ B ~@9 A@2 B ~@2 B ~ A ~ A@2 ~@3 A ~ A@2 ~ A ~@14 A ~
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@15 x",
})).gain(0.24)

// drums · rim
const rim = s("rim").struct("<~@32 A@14 ~@2 A@3 ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A@6 ~@4 A@6 ~@4>".pickRestart({
  A: "~ x",
})).gain(0.64)

// drums · pedal hat
const pedal_hat = s("hh").struct("<A@3 B ~@10 A@14 C@2 A@16 C@2 A@16 C@2 A@8 C@2 A@8 C@2 ~@2>".pickRestart({
  A: "~ x ~ x", B: "x", C: "x ~@2 x ~@4",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct(`<
  A B A C ~@24 D@2 E@4 B F E B E B F E B E B E D@2 B G E@4 F H G B F@4 E B D@2 I J E K@2 B@3 D@2 L J E B M B E B D@2 L N
>`.pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "x ~@3 x ~@2 x!2 ~@3 x ~@3", C: "x", D: "x ~@2 x ~@4", E: "x!4",
  F: "x ~@3 x ~@3 x ~@3 x ~@2 x", G: "x ~@3 x ~@3 x ~@2 x!2 ~@3", H: "x ~@3 x ~@3 x ~@2 x!2 ~@2 x", I: "x ~@3 x!2 ~ x",
  J: "~ x ~ x!2 ~ x ~", K: "x ~@2 x!2 ~@3 x ~@3 x ~@3", L: "x ~ x ~ x!2 ~ x", M: "x ~@2 x!2 ~@2 x!2 ~@3 x ~@3",
  N: "~ x ~ x!2 ~@3",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@51 A ~ A ~ A ~ A ~ A ~ A ~ A ~@24>".pickRestart({
  A: "~ x",
})).gain(0.48)

// drums · shaker
const shaker = s("sh").struct("<~@50 [~@3 x ~@2 x!2 ~@8]!8 ~@10 [~@3 x ~@2 x!2 ~@8]!4 ~@6 [~@3 x ~@2 x!2 ~@8]!4 ~@6>")
  .gain(0.4)

// … 7 more lines

More by Mina