Strudelify

Come dirsi ciao

Anna Oxa

KeyB♭ majorTempo127 bpm
0:00/0:00
// Come dirsi ciao — Anna Oxa
// 127 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 16 piano (copy of ch 5 choir aahs)
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/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(`<
  ~@2 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB M AC O AD Q AE AF AG U V W X Y AH AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW AX AY@2 AZ BA BB BC BD BE E J G BF I J BG BF M AC O AD Q AE AF AG U V W X Y AH AI AJ AK AL AM
  AN AO AP AQ AR AS AT AU AV AW AX AY@2 AZ BA BB BC BD BE BH BI G BJ BH J BK BL BH BI G BM BH J BN BO BH BI G BP BQ@3
>`.pickRestart({
  A: "bb2@6 bb2 f2", B: "g2@3 g2", C: "gb2@3 gb2", D: "ab2@3 ab2 ab2@4", E: "bb1@7 ~ bb1 ~ bb1@4 f1@2",
  F: "g1@7 ~ g1 ~ g1@5 ~", G: "db2@6 ab1 ~ db2 ~ db2@3 ~ ab1@2", H: "eb2@2 bb2@2 f3@2 eb3@2 bb2@2 f2@2 eb2@3 ~",
  I: "bb1@6 ~@2 bb1 ~ bb1@3 ~ f1@2", J: "g1@6 f1@2 g1@2 f1@2 g1@3 ~", K: "db2@6 ab1 ~ db2 ~ db2@4 ~@2",
  L: "eb2 bb2 f3 eb3@2 bb2 g2@2", M: "ab1@4 ~@4 ab1 ~ ab1@3 ~ ab1@2", N: "b1@4 ~@2 db2@2 db2 ~ db2@6",
  O: "b1@8 bb1 ~ bb1@5 ~", P: "ab2@2 eb2@2 ab2@2 gb2@6 eb2@3 ~", Q: "ab1@5 ~ ab1 ~ ab1 ~ ab1@3 ~ db2 ~",
  R: "db2@7 ~ db2 ~ db2@6", S: "b1@7 ~ bb1 ~ bb1@3 ~ bb1 ~", T: "ab1@7 ~ ab1@2 f1@2 g1@3 ~",
  U: "f1@7 ~ f1 ~ f1@3 ~ ab1@2", V: "db2@5 ~ db2 ~ db2 ~ db2@3 ~ db2@2", W: "a1@3 g2!2 eb2!2 bb1",
  X: "ab1@5 ~ eb1@2 ab1@2 f1@2 g1@4", Y: "f1@6 ~@2 f1 ~ f1@3 ~ ab1@2", Z: "db2@4 ~@2 db2@3 ~ db2@3 ~ db2@2",
  AA: "b1@5 ~ db2@5 ~ db2@3 ~", AB: "ab1@2 eb2@2 ab2@4 gb2@3 ~@5", AC: "b1@4 ~@2 db2@2 db2 ~ ab2@6",
  AD: "ab2@2 eb2@2 ab2@4 gb2@7 ~", AE: "db2@5 ~ db2@2 ab2@2 db2@5 ~", AF: "b1@3 ~ b1@3 ~ bb1 ~ bb1 ~ bb1@3 ~",
  AG: "ab1@5 ~ ab1@3 ~ g2@2 eb2@2 c2@2", AH: "d2@4 ~@2 db2@7 ~ db2@2", AI: "gb2@4 gb1@3 ~ gb2@2 f2@2 db2 ~ db2@2",
  AJ: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", AK: "bb1@7 ~ bb1 ~ bb1@2 ~@2 bb1 ~", AL: "g1@3 f1 g1 f1 g1@2",
  AM: "eb1@5 ~ eb1 ~ eb1 ~ eb1@3 ~ f1@2", AN: "bb1 f1 bb1@2 a1@2 gb1@2", AO: "g1@5 ~@3 g1 ~ g1@5 ~",
  AP: "e1@5 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2", AQ: "f1@2 c2@2 f2@2 eb2@7 ~ eb2@2", AR: "d2@6 c2@3 ~ c2@2 g2@2 c2@2",
  AS: "bb1@5 ~@3 bb1 ~ bb1@2 ~@2 bb1@2", AT: "g1@6 ~@2 g1@2 f1@2 c2@3 ~", AU: "eb1@5 ~@3 eb1 ~ eb1@3 ~ eb1@2",
  AV: "f1@2 eb2@2 f2@4 gb2@3 ~ gb1@3 ~", AW: "g1@4 ~@4 g1 ~ g1@3 ~ d1@2", AX: "f1@4 ~@2 f1 ~ f1@2 bb1@2 c2@2 f2@2",
  AY: "[db1@2 ~ bb1 eb2 d2 db2 c2@2 bb2 d3@2 c3 bb2 g2@2]/2", AZ: "f1@5 ~ f1 ~@3 f1 ~@3 f1 ~",
  BA: "f1@5 ~ f1 ~@3 f1 ~@5", BB: "f1@4 f2@2 f1 ~@3 f1 ~@3 d1@2", BC: "f1 ~ f1@2 f2@2 f1@2 ~@2 f1 ~@3 f1 ~",
  BD: "f1@4 f2@2 f1@2 ~@2 f1 ~@3 f1 ~", BE: "f1 g2@2 f2@2 d2@3", BF: "eb2@4 ~@2 eb2@2 ~@2 eb2@2 db2@3 ~",
  BG: "db2@6 ab1 ~ db2 ~ db2@3 ~ db2@2", BH: "bb1@5 ~ bb1 ~ bb1 ~ bb1@4 f1@2", BI: "g1@6 ~@2 g1@2 f1@2 g1@3 ~",
  BJ: "eb2@2 ab2@2 gb2@2 f2@2 eb2 ~ eb2@2 f2@3 ~", BK: "db2@6 ab1 ~ db2 ~ db2@2 g2@2 ab2@2",
  BL: "~@2 eb2 ~ ab2@3 ~ eb2 ~ eb2@2 c2@2 ab1@2", BM: "eb2@4 ~@2 bb1 ~ eb2 ~ eb2@2 f2@3 ~",
  BN: "db2@6 ab1 ~ db2 ~ db2@2 ~@2 db2@2", BO: "eb2@6 bb1@2 eb2 ~ eb2@2 c2@2 ab1@2", BP: "eb2!2 ~ eb2 ~ eb2 ~ eb2",
  BQ: "bb0/3",
})).s("gm_fretless_bass").gain(0.38)

// other · electric guitar clean
const electric_guitar_clean = note("<~@22 A@2 B ~@13 C D E ~@11 F G ~@30 C D E ~@11 F G ~@37>".pickRestart({
  A: "[~@6 g3@4 ab3@4 g3@4 ab3@4 eb4@9 ~, f2 ~]/2", B: "[bb3,eb4]@15 ~", C: "~@6 g3@3 ~ ab3@3 ~ g3 ~, f2",
  D: "g3 ab3 g3 ab3@3 eb4@2", E: "[bb3,bb4]@11 ~@5", F: "~@2 a3@2 c4@2 a3 ~@3 a3@2 c4@2 a3 ~",
  G: "~@2 a3 ~ c4@2 a3 ~@9",
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.6)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I F G H J K L M N K L M N O P Q R O P S T K L M N K L M N O P Q R O U V W X Y Z AA AB AC AD@2 X Y Z
  AA AB AE AF AG AH AI AH AI AH AI F G H I F G H J K L M N K L M N O P Q R O U V W X Y Z AA AB AC AD@2 X Y Z AA AB AE AF
  AG AH AI AH AI AH AI F G H I F G H J F G H I F G H J F G H I ~@3
>`.pickRestart({
  A: "~@14 [bb2,f3,bb3,d4,f4]!2", // Bb
  B: "[bb2,f3,bb3,d4,f4]@2 [bb2,f3,bb3,d4,f4]@3 [bb2,f3,bb3,d4,f4] bb2 f2, ~@3 [f3,bb3,d4,f4]", // Bb
  C: "[f3,bb3,c4]@4 [f3,bb3,c4,f4]@6 [f3,bb3,c4,f4]@2 [f3,bb3,c4,f4]@2 [f3,bb3,c4,f4]!2, g2@3 g2", // Fsus4
  D: "[gb3,bb3,db4]@4 [gb3,bb3,db4,f4]@6 [gb3,bb3,db4,f4]@2 [gb2,gb3,bb3,db4,f4]@2 [gb3,bb3,db4,f4]!2, gb2@3 ~", // Gb Gbmaj7
  E: "[ab2,ab3,db4,eb4,ab4]@6 [ab2,ab3,c4,eb4,ab4]@2 [ab2,ab3,c4,eb4,ab4]@6 [f3,bb3,d4,f4]!2", // Absus4 Ab Bb
  F: "[f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]@3 [f3,bb3,d4,f4] f3 f2, ~@3 [bb3,d4,f4]", // Bb
  G: "[g2,f3,bb3,c4]@2 [f3,bb3,c4,f4]@3 [f3,bb3,c4,f4]!3", // Gm7 Fsus4
  H: "[ab3,db4,eb4,ab4]@2 [ab3,db4,eb4,ab4]@3 [ab3,db4,eb4,ab4]!3", // Absus4
  I: "[bb3,eb4,ab4,bb4]@6 [bb3,eb4,g4,bb4]@2 [bb3,eb4,g4,bb4]@4 [bb3,eb4,g4,bb4]@2 [f3,bb3,d4,f4]!2", // Ebsus4 Eb Bb
  J: "[bb3,eb4,ab4,bb4]@3 [bb3,eb4,g4,bb4] [bb3,eb4,g4,bb4]@2 [bb3,eb4,g4,bb4]!2", // Ebsus4 Eb
  K: "[ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]!2 [ab3,c4,eb4,ab4]@2", // Ab
  L: "[ab3,db4,eb4,ab4]@2 [ab3,db4,eb4,ab4]@2 [ab3,db4,eb4,ab4]!2 [ab3,db4,eb4,ab4]@2", // Absus4
  M: "[gb3,b3,eb4,gb4]@2 [gb3,b3,eb4,gb4]@2 [gb3,bb3,db4,gb4]!2 [gb3,bb3,db4,gb4]@2", // B Gb
  N: "[ab3,c4,eb4,ab4]@2 [ab3,c4,eb4,ab4]@3 [ab3,c4,eb4,ab4] [ab3,c4,eb4,ab4]@2", // Ab
  O: "[f3,ab3,c4,f4]@4 [f3,ab3,c4,f4] ~ [f3,ab3,c4,f4]@4 [f3,ab3,c4,f4] ~ [f3,ab3,c4,f4]@4", // Fm
  P: "[f3,ab3,db4,f4]@4 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4]@4 [f3,ab3,db4,f4] ~ [f3,ab3,db4,f4]@4", // Db
  Q: "[eb3,bb3,eb4,g4]@4 [eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4]@4 [eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4]@4", // Eb
  R: "[ab3,db4,f4,ab4]@4 [ab3,db4,f4,ab4] ~ [ab3,c4,eb4,ab4]@4 [ab3,c4,eb4,ab4] ~ [g3,c4,eb4,g4]@4", // Db Ab Cm
  S: "[gb3,b3,eb4,gb4]@4 [gb3,b3,eb4,gb4]@2 [ab3,db4,f4,ab4]@4 [ab3,db4,f4,ab4] ~ [ab3,db4,f4,ab4]@4", // B Db
  T: "[ab3,c4,eb4,ab4] ~ [ab3,c4,eb4,ab4] ~ [ab3,c4,eb4,ab4] ~ [ab3,c4,eb4,ab4] ~ [ab3,c4,eb4,ab4]@2 ~@6", // Ab
  U: "[f3,bb3,d4,f4]@4 [f3,bb3,d4,f4] ~ [f3,bb3,db4,f4]@4 [f3,bb3,db4,f4] ~ [f3,bb3,db4,f4]@4", // Bb Bbm
  V: "[gb3,bb3,db4,gb4]@4 [gb3,bb3,db4,gb4]@2 [gb3,bb3,db4,gb4]@4 [gb3,bb3,db4,gb4] ~ [gb3,bb3,db4,gb4]@4", // Gb
  W: "[eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4] ~ [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4]@2", // Eb
  X: "[f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]!2 [f3,bb3,d4,f4]@2", // Bb
  Y: "[f3,bb3,c4,f4]@2 [f3,bb3,c4,f4]@2 [f3,bb3,c4,f4]!2 [f3,bb3,c4,f4]@2", // Fsus4
  Z: "[eb3,bb3,eb4,f4]@2 [eb3,bb3,eb4,f4]@2 [eb3,bb3,eb4,f4]!2 [eb3,bb3,eb4,f4]@2", // Ebsus2
  AA: "[f3,bb3,d4,f4]@2 [f3,bb3,d4,f4]@2 [d3,a3,d4,gb4]!2 [d3,a3,d4,gb4]@2", // Bb D
  AB: "[g3,bb3,d4,g4]@2 [g3,bb3,d4,g4]@2 [g3,bb3,d4,g4]!2 [g3,bb3,d4,g4]@2", // Gm
  AC: "[g3,c4,e4,g4]@2 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]!2 [g3,c4,e4,g4]@2", // C
  AD: "[f3,a3,c4,f4]@2 [f3,a3,c4,f4] [f3,a3,c4,f4]@2 [f3,a3,c4,f4] [f3,a3,c4,f4]@2", // F
  AE: "[a3,d4,f4,a4]@2 [a3,d4,f4,a4]@2 [a3,d4,f4,a4]!2 [a3,d4,f4,a4]@2", // Dm
  AF: "[bb3,eb4,g4,bb4]@2 [bb3,eb4,g4,bb4]@2 [bb3,eb4,g4,bb4]!2 [bb3,eb4,g4,bb4]@2", // Eb
  AG: "[g3,c4,e4,g4]@2 [g3,c4,e4,g4]!6", // C
  AH: "[f3,bb3,d4,f4]@2 [f3,bb3,d4,f4] [f3,bb3,d4,f4]@2 [f3,bb3,d4,f4] [f3,bb3,d4,f4]@2", // Bb
  AI: "[eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4] [eb3,bb3,eb4,g4]@2 [eb3,bb3,eb4,g4] [eb3,bb3,eb4,g4]@2", // Eb
})).s("gm_acoustic_guitar_steel").gain(0.26)

// chords · rock organ
const rock_organ = note(`<
  ~@2 A@4 B@2 C@2 B@2 C@2 D E F D@2 E F G H@2 I J K@2 L M D E F D@2 E F G H@2 I J N O P Q R@2 S T@3 U V R@2 S W@2 X Y@2
  Z@2 AA AB AA AB AC@2 C@2 B@2 C@2 D E F D@2 E F G H@2 I J N O P Q R@2 S T@3 U V R@2 S W@2 X Y@2 Z@2 AA AB AA AB AC@2
  C@2 B@2 C@2 AD@12 AE@3
>`.pickRestart({
  A: "[d5@2 c5@2 ~@3 c5, [f5,bb5]@3 [eb5,ab5], ~@4 db5@3 ~]/4", B: "[d5 c5, [f5,bb5]]/2",
  C: "[db5@2 ~ g5, eb5, ab5@3 ~, ~ bb4]/2", D: "[ab4,eb5]@15 ~", E: "[ab4,db5]@15 ~", F: "[gb4,b4]@7 ~ [ab4,db5]@7 ~",
  G: "[ab4,eb5]", H: "[c5@16 db5@15 ~, f4@31 ~]/2", I: "[eb5,bb5]@15 ~", J: "[f5,ab5]@5 ~ [eb5,ab5]@6 [eb5,g5]@4",
  K: "[c5 db5, f4@31 ~]/2", L: "[b4,eb5]@5 ~ [db5,f5]@9 ~", M: "[eb5,ab5]@9 ~@7", N: "[f4,c5]",
  O: "[d5,f5]@6 [db5,f5]@9 ~", P: "[db5,gb5]@15 ~", Q: "[eb5,g5]@15 ~", R: "[bb4@16 c5@15 ~, f5@31 ~]/2",
  S: "[bb4,eb5]@15 ~", T: "[[bb4,f5]@7 ~ gb5@8 ~@16 e5@16, ~@8 d5@23 ~@17, ~ g5@2]/3", U: "f5@6 eb5@9 ~, c5@15 ~",
  V: "d5@6 c5@9 ~, db5 ~@15", W: "[[bb4,f5]@7 ~ gb5@8 g5@16, ~@8 d5@23 ~]/2", X: "[d5,f5]",
  Y: "[eb5@7 ~@2 c6@7, g5, ~@7 e5@9]/2", Z: "[d5 eb5, bb5]/2", AA: "d5, bb5 ~@15", AB: "eb5",
  AC: "[d5 c5, f5, bb5 ~@31]/2", AD: "[~@8 a5@8 g5@8 f5@8 ab5@8 gb5@7 ~ f5@8 g5@8, bb5, d5@31 ~ eb5@32]/4",
  AE: "[~ [d5,f5]@47, bb5]/3", // Dm
})).s("gm_rock_organ").gain(0.19).pan(0.4)

// chords · piano
const piano = note(`<
  ~@6 A@2 B@2 A@2 B@2 C D ~@14 E F ~@36 A@2 B@2 A@2 B@2 G D ~@42 H I A@2 B@2 A@2 B@2 A@2 B@2 ~@3
>`.pickRestart({
  A: "[[bb4,f5,bb5]@4 [bb4,f5,a5]@3 ~ [bb4,f5] ~ [bb4,d5,bb5]@3 ~ [bb4,g5,bb5]@5 ~ [f5,bb5]@4 [bb4,bb5] ~ [bb4,bb5]@2 ~@2 bb4 c5, ~@14 f5 ~@5 bb4@2 ~@2 d5@2 ~@6]/2", // Bb5 Bbmaj7 Bb5 Bb Eb Bb5 Bb
  B: "[[bb4,db5,bb5]@3 ~ c5@2 [bb4,db5,bb5]@4 ~@2 [eb5,bb5] f5 [bb4,eb5,bb5]@6 ~@12, ~@4 bb5 ~@7 bb4@2 ~@18]/2", // Bbm Eb5
  C: "[eb6,ab6] ~ [eb6,ab6] ~ [eb5,ab5] ~@3 [eb5,ab5] ~ [eb5,ab5] ~ [eb5,ab5] ~ ab5 ~", // Ab5
  D: "[eb5,ab5] ~ eb5 ~ [eb5,ab5] ~ [ab5,eb6]@4 ~@6", // Ab5
  E: "[eb6,ab6] ~ [eb6,ab6] ~ [eb5,ab5] ~ eb5 ~ [eb5,ab5] ~ [eb5,ab5] ~ [eb5,ab5] ~ ab5 ~", // Ab5
  F: "[eb5,ab5] ~ [eb5,ab5] ~ [eb5,ab5] ~ [ab5,eb6]@4 [eb5,ab5] ~@5", // Ab5
  G: "[eb6,ab6] ~ [eb6,ab6] ~ ab5 ~ eb5 ~ [eb5,ab5] ~ [eb5,ab5] ~ [eb5,ab5] ~ ab5 ~", H: "ab4@7 ~ gb4@7 ~",
  I: "f4@7 ~ eb4@4 ~@4",
})).s("gm_piano").gain(0.33).pan(0.7)

// chords · piano · soft notes
const piano_soft = note("<~@14 A B C ~@13 D E C ~@43 F B C ~@58>".pickRestart({
  A: "~@6 [eb5,ab5] ~@7 eb5 ~", B: "~@2 ab5 ~@7 [eb5,ab5] ~ [eb5,ab5] ~ [eb5,ab5] ~", C: "[gb5,b5] ~",
  D: "~@6 ab5 ~@7 eb5 ~", E: "~@12 [eb5,ab5] ~ [eb5,ab5] ~", F: "~@4 eb5 ~ ab5 ~@7 eb5 ~",
})).s("gm_piano").gain(0.16).pan(0.7)

// chords · distortion guitar
const distortion_guitar = note(`<
  A B ~@3 C D@2 E F D@2 E G ~@14 H I J@2 ~ K L@2 ~@16 M N ~@6 O P ~@5 C D@2 E F D@2 E Q ~@22 M N ~@6 O P ~@5 C D@2 E F
  D@2 E R D@2 E F D@2 E R D@2 E F S@3
>`.pickRestart({
  A: "[c5,g5] [c5,e5] [c5,g5] [c5,e5] [c5,g5] [c5,e5] [c5,g5] ~ [c5,f5] ~ [c6,e6,g6] ~@2 [c6,e6,g6] [c5,f5] [a4,c5]", // C5 C C5 C C5 C C5 F5 …
  B: "[b4,f5] c5 ~ f5 [db6,g6] [b4,f5] ~ [d6,ab6] [b4,f5]!2 [d6,ab6] [b4,f5] ~ [d6,ab6] f5 ~", C: "~@14 [f4,bb4]!2",
  D: "[[f4,bb4]@31 ~]/2", E: "[eb4,ab4]@15 ~", F: "eb4@6 g4@2 g4@5 ~ [f4,bb4]!2, ab4@5 ~@11",
  G: "eb4@6 g4@2 g4@5 ~@3, ab4@5 ~@11", H: "[b3,eb4]@6 [db4,f4]@4 [db4,f4] ~ [db4,f4] ~ [eb3,ab3] ~",
  I: "[eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3] ~ [eb3,ab3,eb4] ~@3 [ab3,eb4]@2 [ab3,eb4]!2", // Ab5
  J: "[eb4@31 ~, ab3@27 ~@5]/2", K: "~@14 [ab3,eb4]!2", L: "[eb4@31 ~, ab3@7 ~]/2", M: "f3@3 eb3@5", N: "d3@6 c3@9 ~",
  O: "eb3@5 ~ eb3 ~ eb3@2 d3@2 db3@2 c3@2",
  P: "~@2 [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~ [g3,c4] ~", // C5
  Q: "eb4@6 bb4@2 [eb4,bb4]@5 ~@3, ab4@5 ~@11", R: "eb4@6 bb4@2 [eb4,bb4]@5 ~ [f4,bb4]!2, ab4@5 ~@11", S: "[f4,bb4]/3",
})).s("gm_distortion_guitar").gain(0.29).pan(0.8)

// chords · distortion guitar · soft notes
const distortion_guitar_soft = note("<A B ~@7 C ~@3 C ~@57 C ~@45 C ~@7 C ~@7 C ~@3>".pickRestart({
  A: "~@7 [c5,gb5] ~ [c5,gb5] ~ [c5,gb5]!2 ~@3", B: "~ a4 [b4,f5] b4 ~@2 [a4,c5] ~@5 [b4,f5] ~ b4 [b4,f5]",
  C: "~@8 eb4@5 ~@3",
})).s("gm_distortion_guitar").gain(0.15).pan(0.8)

// other · celesta
const celesta = note(`<
  ~@15 A ~@15 A ~@14 B C ~@6 B C ~@21 A ~@14 B C ~@6 B C ~@12 D E F G D E F G D E F G D E F G ~@7
>`.pickRestart({
  A: "~@6 [ab5,eb6]@3 ~@7", B: "~@14 bb5 ~", C: "~@4 a5 ~@3 f5 ~ d5 ~@3 bb4 ~", D: "bb4 a4", E: "g4@8 f4@7 ~",
  F: "ab4@8 gb4@7 ~", G: "f4@7 ~ eb4@5 ~@3",
})).s("gm_celesta").gain(0.24).pan(0.3)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@46 A@4 B C D@2 E@4 B F G H ~@30 A@4 B C D@2 E@4 B F G H ~@14 I J K L M N@2 O M J K L P@3
>`.pickRestart({
  A: "[f5@56 ~ gb5@7]/4", B: "g5", C: "c5", D: "[f5@31 ~]/2", E: "[f5@7 gb5]/4", F: "a5", G: "bb5", H: "c6",
  I: "bb5@8 a5@7 ~", J: "g5 f5", K: "ab5 gb5", L: "f5 eb5", M: "bb5 a5", N: "[g5@8 f5@7 ab5@8 ~ gb5@8]/2",
  O: "f5@8 ~ eb5@6 ~", P: "[~ d4@46 ~, bb5]/3",
})).s("gm_string_ensemble_2").gain(0.27)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A@7 B A@15 C A@15 D A@7 E A@7 F A@5 E A@7 B A@15 D A@7 E A@7 D A@5 E A@7 D A@3 E A@3 F A@3 G ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~ x!2 ~", D: "~@4 x ~@3 x ~@3 x!2 ~@2", E: "~@4 x ~@7 x!2 ~@2", F: "~ x!3",
  G: "~@4 x ~@3 x!2 ~@2 x ~@3",
})).gain(0.71)

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

More by Anna Oxa