Strudelify
Una rosa blu cover art

1998 · Una Rosa Blu

Una rosa blu

Michele Zarrillo

KeyE♭ majorTempo58 bpm
0:00/0:00
// Una rosa blu — Michele Zarrillo
// 58 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 alto sax (copy of ch 16 piano)
// 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(58/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@2 D E F G H I J K L M N O P Q R S T U V W X Y F Z AA AB AC AD AE AF AG AH AI AJ AK AL@2 AM AN AO AP AQ AR AS
  AT AU@4 AV AW AV AX AY AZ BA BB BC BD BA BE AV BF AY AZ AV AW AV AX AY AZ AY BG@2
>`.pickRestart({
  A: "~@3 a1", B: "b0@7 d1 g1@7 a1", C: "[d2@6 ~ g2@2 a2@2 b2@14 b0@6 ~]/2", D: "b1@7 a1 a1@8", E: "g1@8 gb1 ~ gb1@6",
  F: "b1@6 g1 b1 b0@7 ~", G: "e1@7 gb2 g2 d3 b2@6", H: "a1@4 ~ g1 gb1 e1@9", I: "g1@4 ~ d2 a2 g2@4 d2@3 g1@2",
  J: "e1 a1", K: "d2@5 ~ a1@2", L: "b1@7 a1@5 d2@4", M: "g1 ~ g1@2 ~ g1 d2 g2@4 d2 g2@3 g1", N: "d2@4 b1@3 g1@5 a1@4",
  O: "d1@6 g1 d2@4 ~ f1@4", P: "bb1@4 ~@3 bb1 ~ bb1 bb1@4 ~ f1", Q: "bb1@4 ~@3 bb1 ~ bb1 bb1@4 f1@2",
  R: "bb1@4 ~@3 bb1 ~ bb1 bb1@5 ab1", S: "g1@7 bb1@2 f1@2 bb1@3 bb0@2", T: "eb1@7 ab1@3 g1 eb1@5", U: "d1@7 g1@4 b1@5",
  V: "c2 bb1", W: "db2@4 g1@4 d2@4 a1@3 ~", X: "b1@7 b1 a1@7 ~", Y: "g1@5 ~@2 g1 gb1@6 a1 gb1",
  Z: "e1@5 b0 d1 e1 ~ e1 g1@2 e1@4", AA: "a1@4 ~ a1 g1 gb1 e1!2 e1@5 e1",
  AB: "g1@4 ~@3 g1 d3 b2 a2 g2 [g2,b2]@4, ~@8 g2@3 ~@5", AC: "e1@7 a1 a1@7 d2", AD: "d2@3 d2 ~ a1 g1 d1@4 f1 f1@4",
  AE: "bb1@2 f1 bb1@2 ~@2 bb1 ~ bb1 bb1@4 ~ f1", AF: "bb1@2 f1 bb1@2 ~@2 bb1 ~ bb1 bb1@3 f2 g2 c3",
  AG: "bb2@5 f2@2 bb1 ~ bb1 bb1@5 ab2", AH: "g2@6 bb2@3 f2 bb2 bb1 bb1@3 bb0",
  AI: "eb1@2 bb0 eb1@2 g1 bb1 [eb2,ab3]@5 f3 eb3@3", AJ: "d2@7 g1@4 b1@4 c2", AK: "c2@7 g1 g1@7 bb1",
  AL: "[bb1@4 ~@2 eb2@2 [ab1,ab2]@15 ~ c2@4 ~@3 c2]/2", AM: "bb1@7 ~ ab1@4 ~@3 ab1",
  AN: "g1 ~ g1@3 ab1 bb1 eb2 ab1@6 ~ b1", AO: "c2@3 g1 c1@2 c1@2 f1@5 eb2 f2 ab2",
  AP: "f2@2 ~ c2@3 f1 ~ bb1@4 ~@2 ab1 g1", AQ: "f1@8 ab1@7 eb2", AR: "ab2 eb2 db2@2 ab1@3 ~ f1@6 ~ f1",
  AS: "bb1@8 eb2@6 ~ eb2", AT: "bb1@2 eb1 ~ bb1@3 bb1 c2@7 bb1",
  AU: "[bb1@4 eb2@4 ab1 ~ ab1@2 ~ eb2 f2 ab2@5 ab1@3 bb1 eb2@4 c2@3 f1@26 ~@7]/4",
  AV: "c1@2 c1@2 ~@3 eb1 ab1!2 ab1@5 bb1", AW: "eb1@2 eb1@2 ~@3 f1 bb1!3 f1@2 eb1 eb1@2",
  AX: "eb1@2 eb1@2 ~ eb1 f1 bb1@6 f1 eb1 d1", AY: "c1@2 c1@2 ~@3 eb1 ab1 eb1 ab1@5 bb1",
  AZ: "eb1@2 eb1@2 ~ eb1 f1 eb1 bb1 f1 bb1 f1 eb1 f1 eb1 d1", BA: "c1@2 c1@2 ~ eb1 f1 c2 ab1@2 ab1@5 bb1",
  BB: "eb1@2 eb1@2 ~ eb2 c3 bb2@5 bb1@3 ~", BC: "c2@6 ~ eb1 ab1!2 ab1@5 bb1",
  BD: "eb1@2 eb1@2 ~ bb0 f1 bb1@3 ~ bb1 f1!2 eb1 ~", BE: "eb1@2 eb1@2 ~ eb1 c2 bb1@2 ab1 g1 f1!2 eb1!2 d1",
  BF: "eb1@2 eb1@2 ~ eb1 f1 bb1@2 f1@3 ~ eb1 d1!2", BG: "[eb1@2 eb1@2 ~ eb1 ~ bb1@2 f1@2 bb0@13 ~@8]/2",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · string ensemble 1
const string_ensemble_1 = note("<~@2 A B@2 ~@7 C D E F G ~@2 H I J K L M ~@16 N@5 O@4 P@4 Q@22 R@3>".pickRestart({
  A: "[gb3,b3,d4]", B: "[[gb3,a3,d4]@7 [a3,db4,e4]@13 ~@12]/2", C: "~@3 gb3",
  D: "[gb3,b3,d4]@7 [g3,c4,d4]@5 [gb3,a3,d4]@4", E: "[g3,b3,d4]@7 [g3,bb3,d4]@9",
  F: "[gb3,a3,d4]@4 [a3,d4]@3 [g3,a3,d4]@5 [a3,d4]@4", G: "[g3,a3,d4]@7 [gb3,d4]@5 [g3,eb4]@4", H: "[c4,eb4,ab4]",
  I: "[d4,f4,bb4]@6 ~ [c4,eb4,ab4]@5 [d4,f4,bb4]@3 ~", J: "[eb4,g4,bb4]@15 ~", K: "[d4,f4,bb4]@7 [d4,f4]@5 [d4,g4]@3 ~",
  L: "[c4,eb4] [d4,g4]", M: "[e4,a4] [a3,g4] [d4,gb4] [a3,e4]",
  N: "[~ c4 bb3 c4 [d4,f4] eb4 [bb3,e4] ab3@2 [bb3,d4], ~ eb4@3 ~ c4@4 ~, ~ g3@2 ab3@3 ~ f4@3]/5", // Dm Bbdim Bb
  O: "[ab3@2 ~@4 c5@2 d5@2 [d4,eb4,g4]@3 [g3,bb3,d4] [g3,c4,eb4]@2, [c4,eb4]@3 f4@2 ~@3, ~@2 ab4@6 bb4@5 ~@3]/4", // Ebmaj7 Gm Cm
  P: "[[ab3,db4,eb4]@4 [g3,bb3,eb4]@4 [ab3,c4,eb4]@7 [ab3,b3,eb4]@9 [g3,bb3,eb4]@4 [bb3,eb4,g4]@3 [ab3,c4,eb4,f4]@25 ~@8]/4", // Absus4 Eb Ab Abm Eb Fm7
  Q: "[c2 ab2 eb2 [bb2,f3,d4], [g3,eb4]@3 ~, c4 bb3]/2", // Bb Cm
  R: "[c2@8 ab2@8 eb2@7 [bb2,f3]@16 ~@9, [g3,eb4]@23 ~@25, c4@16 bb3@23 ~@9]/3", // Bb5 Cm
})).s("gm_string_ensemble_1").gain(0.26)

// chords · pad warm
const pad_warm = note("<A@3 B@2 ~@20 C@2 ~@13 D@2 ~@10 E ~@26>".pickRestart({
  A: "[[b3,gb5,b5]@7 [d4,a5,d6]@5 [e4,b5,e6]@6 ~@6]/3", B: "[~@11 e5@19 ~@2]/2", C: "[b4@7 db5@7 ~ d5@7 ~@10]/2",
  D: "[~ [eb5,f5,bb5,bb6]@2 ~]/2", E: "~ [c5,g5]@7",
})).s("gm_pad_warm").gain(0.09)

// chords · pad warm · soft notes
const pad_warm_soft = note("<A@3 B@2 ~@74>".pickRestart({
  A: "[gb7@7 a7@5 b7@6 ~@6]/3", B: "[~@11 e7@19 ~@2]/2",
})).s("gm_pad_warm").gain(0.06)

// other · synth brass 2
const synth_brass_2 = note("<~@60 A B C@2 D@3 E@2 F G@2 H I@5 ~>".pickRestart({
  A: "f4@5 ~@3", B: "~ f4", C: "[~ bb4, g4@19 ~@13]/2",
  D: "[gb4 ~@12 bb4@10 c5@6 bb4@2 g4@9 d5@8, g4@15 ~@25 db5 ~@7]/3", E: "[bb4@11 c4@2 c5@10 f5@7 ~ c5]/2",
  F: "bb4 ~ bb4@11 c5@3", G: "[c4 g4@9 bb4@3 ab4@2 bb4@8 ab4 g4@2 ~ [g4,ab4] f4@4]/2",
  H: "[d4,eb4] eb4@7 [d4,eb4] [f4,g4,ab4] [bb4,c5] ~@4 c5, ~ d4 ~@8 d5@4 ~@2", // Ebmaj7 Fm Bbsus2
  I: "[bb4@7 f5@14 eb5 c5 ~ eb5@7 g4@8 ab4@2 bb4@2 ab4@2 f4 ab4 g4@7 c4 c5@7 bb4 bb3@8 ~@9, ~@24 d5 ~@55]/5",
})).s("gm_synth_brass_2").gain(0.56)

// other · orchestral harp · Fsus2 Ab5 Fm
const orchestral_harp = note("<~@52 [~@9 [f3,g3] [ab3,eb4] [f4,g4,ab4] eb5 f5 g5 ab5] [c5 ~@15] ~@25>")
  .s("gm_orchestral_harp").gain(0.36)

// other · french horn
const french_horn = note("<~@40 A@2 B C D E@3 ~@31>".pickRestart({
  A: "[~@8 eb4@15 ~@5 g3@4]/2", B: "d4@6 eb4@2 bb3@3 ab3@3 eb4@2", C: "f4@5 g4@6 ~@5", D: "~@7 c4",
  E: "[f4@3 g4@3 [eb4,ab4]@2 ab4@16 bb4@16 ~@8, ~@8 d4@7 ~@33]/3", // Ab5
})).s("gm_french_horn").gain(0.49)

// other · piano
const piano = note("<~@20 A B C ~@4 D@2 ~@3 E F G@2 H B C ~@40>".pickRestart({
  A: "~@9 d4!4 c4 bb3 eb4", B: "~@2 d4 eb4@2 d4 eb4 [bb3,d4] ~@2 d4 eb4 f4 eb4 c4 d4", C: "~ d4!5 eb4 ~@9",
  D: "[~@2 b3 db4 d4@2 b3 a3@2 a3!2 b3 db4@2 a3 g3@2 ~@15]/2", E: "~@15 f4",
  F: "~@2 eb4 f4@2 eb4 [eb4,f4] d4 ~ f4 eb4 f4 g4 f4 d4 eb4", // Ebsus2
  G: "[~@2 d4 eb4@2 f4 [d4,eb4] c4 ~ eb4!5 d4 eb4@3 d4 eb4@2 d4 eb4 ~@2 eb4!4 d4 c4 bb3]/2", // Ebmaj7
  H: "~ bb3!2 ab3 bb3!2 g3 ~@2 d4!4 c4 bb3 eb4",
})).s("gm_piano").gain(0.05)

// chords · epiano2
const epiano2 = note(`<
  ~@5 A B C D E F G@2 H I J K L M N O P Q R S A B C T U V W X Y Z AA AB P Q R AC ~@8 AD AE@4 ~@5 AF ~@5 AF ~@5 AF ~@5
  AG@2
>`.pickRestart({
  A: "[gb3,b3,d4]@7 ~ [a3,db4,gb4]@7 ~", B: "[g3,b3,d4]@7 ~ [gb3,a3,d4]@8", C: "[b3,d4,g4]@8 [b3,eb4,gb4]@7 ~",
  D: "[b3,d4,g4]@3 [g3,b3,d4]", E: "[a3,db4,e4]@7 [b3,d4,g4]@9", F: "~@7 d5@9, [g3,b3,d4], ~@3 g4@5",
  G: "[[e3,b3,d4,gb4]@7 ~@4 a4@4 ~ [gb4,a4]@8 ~@4 [gb3,a3,db4,d4]@4, ~@8 [a3,db4,e4]@7 d4@9 ~@8, ~@16 e4 ~@15]/2", // Bm Gbm Dmaj7 A
  H: "[gb3,b3,d4]@7 [e3,g3,c4]@4 ~ [d3,gb3,c4]@4", I: "[d3,g3,b3]@7 [d3,g3,bb3]@8 ~",
  J: "[a3,d4]@3 ~ [gb3,a3,d4]@3 [g3,a3,d4]@4 ~ [a3,db4]@4", K: "~@3 g3@4 gb3@5 [g3,bb3,eb4]@4, [a3,d4]@3 ~",
  L: "~@9 bb4@7, [bb3,d4,f4]", M: "[bb3,c4,eb4,g4]@11 ~ [c4,eb4,g4]@3 ~", N: "[c4,eb4,ab4]@11 ab4@2 eb4@3, bb3",
  O: "[d4,f4,bb4]@6 ~ [c4,eb4,ab4]@4 ~ [d4,f4,bb4]@3 ~", P: "[eb4,g4,bb4]@7 ~",
  Q: "[d4,f4,bb4]@6 ~ [a3,f4]@5 [b3,g4]@4", R: "[c4,eb4,g4]@3 c4@2 g3@2 ~ [bb3,d4,g4]@3 bb3@2 g3@3",
  S: "a4@4 g4@3 ~ [d4,gb4]@4 [db4,e4]@4, [db4,e4] a3", T: "[b3,d4,g4]@3 [b3,d4,g4]", U: "[db4,e4,a4] [b3,d4,g4]",
  V: "~@7 g5@9, [b3,d4,g4], ~@3 d5@5", W: "[e3,b3,d4,gb4]@7 ~@4 a4@4 ~, ~@8 [a3,db4,e4]@7 ~",
  X: "[d4,gb4,a4]@3 [g3,bb3,eb4]", Y: "[bb3,d4,f4]", Z: "[bb3,c4,eb4,g4]", AA: "[bb3,c4,eb4,ab4]",
  AB: "[d4,f4,bb4]@6 [c4,eb4,ab4]@6 [d4,f4,bb4]@3 ~", AC: "[c4,eb4,ab4] ~", AD: "~ [g3,c4,eb4]",
  AE: "[[f3,ab3,db4]@4 [eb3,g3,db4]@4 [eb3,ab3,c4]@7 [eb3,ab3,b3]@8 ~ [bb3,eb4]@3 ~ [g3,bb3,eb4]@3 [f3,bb3,eb4]@25 ~@8]/4", // Db Eb7 Ab Abm Eb5 Eb Ebsus2
  AF: "~@7 [bb5,d6]@2 [bb5,eb6]@2 [bb5,f6]@5", AG: "[~@7 [bb5,d6]@2 bb5@2 [bb5,f6]@13 ~@8, ~@9 eb6@6 ~@17]/2",
})).s("gm_epiano2").gain(0.39).pan(0.3)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A@5 B C D E F G H I J K L M N O N P Q R S T U@2 V W X Y Z@2 N O N AA AB R AC@2 AD AE AF AG@2 AE AF AH AI@5 AJ@23 AK@2
>`.pickRestart({
  A: "[~@53 a4@2 [a2,db4]@2 [b2,d4]@2 [db3,e4]@13 ~@8, b2@8 g2@8 d3@7 db4@6 db4@4 gb3@6 db4@6 db4@4 a3@7 ~@24, ~ gb3@6 db4@6 db4@4 a3@7 a2@8 b2@8 g2@8 d3@8 ~@24, ~@2 db4@3 a4@5 ~ a4@4 a4@4 d4@6 d4@5 d4@3 ~ db4@3 a4@6 a4@4 a4@4 d4@4 ~@25, ~@3 d4@5 ~ d4@4 ~ d4@4 db4@3 a4@5 ~ e4@4 e4@2 ~@2 d4@6 d4@5 d4@4 db4@5 ~@25]/5", // A Bm Dbm
  B: "b3 ~ b3 d4@2 b3@2 db4@8 ~", C: "g3 ~ g3 b3@2 g3@2 a3@2 d3@6 ~",
  D: "~@3 g4@2 ~@6 gb4@2 ~@3, ~ g3@3 ~@5 a3@2 ~@5, ~ d4 ~@3 b3 ~@2",
  E: "~@3 g4@2 d4@2 g3@2 d3@2 ~@5, ~ g3@3 ~@12, ~ d4 ~@6", F: "~ g3 b3 db4@2 a4@2 ~@2 d4@2 a4@2 ~@3",
  G: "~ g3 b3 d4@2 g4@3 ~ b3@2 g4@3 ~@2", H: "b3 ~ b3 d4@2 b3@2 db4@2 a3@2 a4@5", I: "a4@8 ~@4 db4 d4 e4@2",
  J: "d4@2 db4 d4@2 a4@2 c4@2 d4@2 g4@2 d4@2 ~", K: "g3@2 b3 d4@2 g4@2 bb3@2 d4@2 g4@2 d4@2 ~",
  L: "[a3,d4]@3 ~ [a3,d4]@2 ~ [g3,d4]@4 ~ [a3,db4]@4", M: "[a3,d4]@3 g3@2 a3 g3 gb3@4 ~ eb4@3 ~",
  N: "c4@2 bb3 f3@2 c4@2 bb3@2 f3@2 c4@2 bb3 f3@2", O: "c4@2 bb3 g3@2 c4@2 bb3@2 g3@2 c4@2 bb3 f3@2",
  P: "d4@2 bb3 f3@2 d4 ~ eb4@5 f4@4", Q: "~@3 bb3@2 g3@2 ab3@2 bb3@2 g3@3 bb3@2, g4@7 ~@9",
  R: "d4@2 c4 bb3@2 ~@2 a3@2 c4@2 b3@2 g4@3, f4@7 ~@9, c4 ~@5 f3@2 ~@8", S: "[eb4,g4]@7 ~ [d4,g4]@7 ~",
  T: "a4@4 g4@3 ~ [d4,gb4]@3 ~ [db4,e4]@3 ~, [db4,e4]@7 ~@9", // D Dbm
  U: "[d4@2 db4 d4@2 a4@2 db4@2 d4@2 a4@2 db4@2 d4@3 ~ a4@2 g4 ~ a3@2 d4@2 a4@2 d4@2 ~]/2",
  V: "~ g3@2 d4@2 g4 ~@3 a3@2 b3@2 gb4@2 ~", W: "~@2 g3 b3@2 g4@2 d4@4 b3!2 d4@2 ~",
  X: "~@2 b3 db4@2 a4@2 g4@2 d4@2 ~@2 d4 a3 b3, ~@11 a4@5", Y: "d4@2 b3 d4 ~ g4@2 a3@2 b3@2 g4@2 b3 d4 ~",
  Z: "[e4@2 g3 d4@2 e4@2 db4 e4@2 a3 db4@2 e4@2 ~ gb4@3 g3@2 a3 g3 gb3@5 ~@4, ~@15 d4@4 ~@13]/2",
  AA: "d4@2 bb3 f3@2 ~ eb4@6 f4@4", AB: "~@3 bb3@2 g3@2 ab3@2 bb3@2 g3@3 bb4@2, g4@7 ~@9",
  AC: "[eb4@3 c4@2 eb4@3 d4@2 ~@3 g4@2 ~ [c4,eb4]@8 ~@8, g4@7 ~ g4@5 ~@19, ~@11 d4@4 ab3@9 ~@8]/2", // Cm
  AD: "~@8 ab5@3 g5@3 f5@2", AE: "f5@2 ~ eb5@3 d5@2 d5@3 c5@3 bb4@2", AF: "bb4@2 [bb4,c5] ab4@3 g4@2 g4@3 f4@3 eb4 ~",
  AG: "[f4@6 ~ [f4,g4] ab4@13 ~@3 ab5@3 g5@3 f5@2]/2", AH: "~ d4@5 ~ [eb4,f4] ~@2 g4 bb4 ~ g4 bb4@2, ~ d4",
  AI: "[~@8 eb4@2 d4 eb4@2 bb4@2 db4@2 eb4@2 ab4@2 eb4@2 ~ ab3@2 c4 eb4@2 ab4@2 b3@2 eb4@2 ab4@2 eb4@2 ~ [bb3,eb4]@3 ~ [bb3,eb4]@2 ~ [ab3,eb4]@25 ~@8]/5", // Eb5 Ab5
  AJ: "~ eb4 d4 eb4@2 bb4@2 d4@2 eb4@2 bb4@2 d4 eb4 bb4", AK: "[~ eb4 d4 eb4@2 bb4@2 d4@2 eb4@2 bb4@13 ~@8]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.43).pan(0.3)

// other · acoustic guitar nylon
const acoustic_guitar_nylon_2 = note("<~ A B@3 ~@36 C D E F@2 D E G ~@4 H I@6 J@6 I@6 K@7>".pickRestart({
  A: "~@12 a3 b3 d4 a3", B: "[b3@9 ~@4 a4 e4 gb4@8 ~@9 b5@3 ~@3 a5@10, ~@9 e5@4 ~@3]/3", C: "~@8 f5@3 eb5@3 d5 ~",
  D: "d5@3 c5@3 bb4 ~ bb4@3 ab4@3 g4@2", E: "g4@2 [g4,ab4] f4@3 eb4@2 eb4@3 d4@3 c4@2",
  F: "[e4@7 [d4,e4] f4@12 ~@4 f5@3 eb5@3 d5@2]/2", G: "~@7 [c4,d4] bb3@8", H: "~@12 bb3 c4 eb4 bb3",
  I: "[c4@7 ~@6 bb4 f4 g4@6 ~@2 d4@2 eb4@2 [eb4,f4]@2 d4 bb3 c4@5 ~@2 eb4 c4@4 ~@2 bb4 f4 g4@6 ~@2 [d4,f4]@2 [eb4,g4] ~ [f4,g4,ab4] ~ [eb4,g4] [d4,f4]!2 ~@6 [f4,c5] [eb4,g4]@6 ~ bb4 c4@8 ~@5 bb3 c4 eb4 bb3, ~@39 bb3 ~@23 g4@5 ~@3 [d4,f4] ~@24]/6", // Ebsus2 Dm Eb Fm Eb Dm F5 Eb …
  J: "[c4@7 ~@6 bb4 f4 g4@6 ~@2 d4@2 eb4@2 [eb4,f4] ~ d4 bb3 c4@5 ~@2 eb4 c4@4 ~@2 bb4 f4 g4@6 ~@2 [d4,f4]@2 [eb4,g4] ~ [f4,g4,ab4] ~ [eb4,g4] [d4,f4]!2 ~@6 [f4,c5] [eb4,g4]@6 ~ bb4 c4@8 ~@5 bb3 c4 eb4 bb3, ~@39 bb3 ~@23 g4@5 ~@3 [d4,f4] ~@24]/6", // Ebsus2 Dm Eb Fm Eb Dm F5 Eb …
  K: "[c4@7 ~@6 bb4 f4 g4@6 ~@2 d4@2 eb4@2 [eb4,f4] ~ d4 bb3 c4@5 ~@2 eb4 c4@4 ~@2 bb4 f4 g4@6 ~@2 [d4,f4]@2 [eb4,g4] ~ [f4,g4,ab4] ~ [eb4,g4] [d4,f4]!2 ~@6 [f4,c5] [eb4,g4]@6 ~ bb4 c4@8 [bb3,d4]@2 [bb3,eb4]@2 [bb3,f4]@13 ~@8, ~@39 bb3 ~@23 g4@5 ~@3 [d4,f4] ~@40]/7", // Ebsus2 Dm Eb Fm Eb Dm F5 Eb …
})).s("gm_acoustic_guitar_nylon").gain(0.72).pan(0.6)

// other · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_3 = note("<~@3 A B ~@43 C ~@8 D@2 ~@4 D@2 ~@4 D@2 ~@4 D@2 ~@2>".pickRestart({
  A: "~@11 gb5 ~@4", B: "b4@3 [gb5,gb6]@3 a4@10", C: "~ bb3@5 ~@10", D: "[~@11 eb4 ~@3 eb4@5 ~@12]/2",
})).s("gm_acoustic_guitar_nylon").gain(0.4).pan(0.6)

// chords · percussive organ
const percussive_organ = note("<~@17 A B C D E F G H ~@8 I J K L M N O P@2 ~@37>".pickRestart({
  A: "[bb4,f5]@15 ~", B: "[c5,g5]@15 ~", C: "[c5,ab5]@15 ~", D: "[f5,bb5]@6 ~ eb5@5 f5@4", E: "g5", F: "f5@3 g5",
  G: "eb5 d5", H: "a5@4 g5@4 gb5@4 e5@3 ~", I: "[bb4,d5,f5]@15 ~", J: "[c5,eb5,g5]@15 ~", K: "[c5,ab5,c6]@15 ~",
  L: "[d5,f5,bb5]@3 [c5,eb5,ab5]@3 [d5,f5,bb5]@2", M: "eb5@7 eb6@9, [g5,bb5]", N: "bb5@7 bb5@5 [b5,g6]@4, d6, f6@3 ~",
  O: "[g5,c6,eb6]@8 [g5,bb5,d6]@7 ~", P: "[[eb5,ab5,c6] [ab5,c6,eb6,f6]@2 ~]/2",
})).s("gm_percussive_organ").gain(0.15).pan(1)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~@25 A B ~ C D E ~@6 F G ~@40>".pickRestart({
  A: "[b3,gb4,b4]@9 ~@7", B: "~@3 a4@2 g4@2 ~@9", C: "[e4,g4,b4]@13 ~@3", D: "[db4,a4]@7 ~ [b3,g4]@7 ~",
  E: "[d4,b4]@6 ~ g5@9, ~@3 d5@5", F: "~@3 bb2@2 g3@2 ab3@3 [g3,bb3]@2 [f3,eb4]@2 bb4@2",
  G: "f4@3 ~@9 g4@4, ~@11 b3@4 ~",
})).s("gm_electric_guitar_jazz").gain(0.49)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B ~ A C A D E F A G D H I J E@5 K L@2 A C A M N F O P E@3 Q E K L@2 R S@3 O S T O@2 U V W D A@3 O A@3 O A O A O
  A@5 X A@5 Y ~
>`.pickRestart({
  A: "x ~@6 x!2 ~@7", B: "x ~ x ~@4 x ~ x ~ x ~@4", C: "x ~@3 x!2 ~@2", D: "x ~ x ~@4 x ~ x!2 ~@5",
  E: "x ~@6 x ~ x!2 ~@5", F: "x ~@5 x!2 ~@8", G: "x ~ x ~@4 x ~@8", H: "x ~ x ~@4 x ~ x ~ x ~@3 x",
  I: "x ~@3 x ~@2 x ~@4 x ~@3", J: "x ~ x ~@4 x ~@3 x ~@4", K: "x ~@6 x ~@3 x ~@4", L: "x!2", M: "x ~ x ~@5 x!2 ~@6",
  N: "x ~@6 x!2 ~ x ~@5", O: "x ~@6 x!2 ~@6 x", P: "x ~ x ~@4 x!2 ~@7", Q: "x ~@2 x ~@2 x ~@4 x ~@4", R: "~@8 x ~@6 x",
  S: "x ~@7 x ~@6 x", T: "x ~ x ~@5 x ~@6 x", U: "x ~@7 x ~ x ~@4 x", V: "~@7 x!2 ~@6 x", W: "~@2 x ~@4 x ~ x!2 ~@5",
  X: "x!2 ~@3 x ~@2", Y: "x ~@6 x ~ x ~ x ~@4",
})).gain(0.56)

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

// drums · rim
const rim = s("rim").struct("<~@17 [~ x ~ x]!8 ~@54>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@2 A B C A@12 ~@8 A@15 B C A@29 D A@5 B ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "~@4 x ~@4 x ~@6",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@16 A ~@7 B ~@7 C ~@3 C ~@4 D ~@7 E ~@3 F ~@11 C ~@5 C ~@7>".pickRestart({
  A: "~@13 x ~@2", B: "~@13 x!2 ~", C: "~@7 x", D: "x!8 ~@8", E: "~@3 x ~@4", F: "~@7 x ~@5 x!2 ~",
// … 109 more lines

More by Michele Zarrillo