Strudelify
Senza di Me cover art

I Grandi Successi

Senza di Me

Anna Oxa

KeyA♭ majorTempo64 bpm
0:00/0:00
// Senza di Me — Anna Oxa
// 64 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 2/4 at bar 11, 4/4 at bar 11, 2/4 at bar 21, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 54 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(64/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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass
const bass = note("<~ A B C ~@17 D E F G H I J K L M G N O P Q R S@2 T U V W X U Y Z AA AB AC AD AE@2 ~>".pickRestart({
  A: "db2@3 db2@3 db2@3 db2@3 db2@2 db2 ~", B: "bb1@3 bb1@2 ~ bb1@3 bb1@2 ~ bb1@2 bb1 ~", C: "ab1 ~",
  D: "ab1@7 ab1 eb2@7 eb2", E: "db2@2 db2@4 ~ db2 bb1@2 bb1 ~@2 bb1@3", F: "ab1@7 ab1 g1@5 g2@2 g1",
  G: "db2@3 db2@3 db2@3 db2@3 db2@4", H: "ab1", I: "db2", J: "f1 eb1", K: "db2@8 d2@7 ~",
  L: "ab1@2 ab1@5 ab1 c2 ~ c2@6", M: "f1 ~ f1@4 ~ f1 eb1 ~ eb1@5 eb1", N: "ab1 c2", O: "db2 ab1", P: "f1 c2",
  Q: "db2 eb2", R: "f1 db2", S: "[bb1@8 eb2@16 eb1@7 ~]/2", T: "eb1@2 eb1 ~@5 ab1@6 ~ ab1",
  U: "eb2@2 eb2@4 ~ eb2 db2@2 db2@4 ~ db2", V: "bb1@2 bb1!2 bb2 f2 bb1@2 ab1@2 ab1@4 ~ ab1",
  W: "eb2@2 eb2@5 eb2 db2@3 c2@3 bb1@2", X: "~ eb2@3 eb2 ~ eb2!2 ab1@7 ab1",
  Y: "bb1@2 bb1@2 bb2 bb1@3 ab1@2 ab1@4 ~ ab1", Z: "g1 ~ g1@6 db2@3 db2@3 db2@2",
  AA: "~ db2@3 bb1@3 bb1@3 bb1@2 ~ bb1@3", AB: "eb2@2 ~ eb2@3 eb2@2 ~ eb2@3 eb2@2 eb2@2", AC: "ab1@2 db2 eb2",
  AD: "ab1@8 ~ db2@4 eb2@3", AE: "[~ ab1@8 db2@5 eb2@4 ab1@10 ~@4]/2",
})).s("gm_fretless_bass").gain(0.7)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~ A B@2 ~@6 C@4 D@3 E F@3 G H I J@2 K L M N O P@2 Q R S T U@2 V W@2 X@5 Y@3 Z AA@2 ~
>`.pickRestart({
  A: "[db4,f4]@3 [eb4,g4]@3 [f4,ab4]@3 [eb4,g4]@3 [db4,f4]@2 [eb4,g4]@2, db2", // Db Eb Fm Eb Db Eb
  B: "[[db4,f4]@3 [eb4,g4]@3 [f4,ab4]@3 [eb4,g4]@3 [db4,f4]@2 g4@2 ab4@7 ~@9, bb1@14 eb4@9 ~@9, ~@4 ab1 ~@3]/2", // Db Eb Fm Eb Db
  C: "[~@8 ab4@8 g4@8 f4@8 bb3@8 c4@4 ab4@4 g4@4 bb3@2 ~@2 [db4,f4]@3 [eb4,g4]@3 [f4,ab4]@2, ~ eb4@2 db4@2 eb4@2 ~]/4", // Db Eb Fm
  D: "[~ [eb4,g4]@3 [db4,f4]@4 eb4@8 g3@8 db4@8 ~@12 ab3@4, ~ c4@2 ab3@2 f3, ~@8 c4@3 ~]/3", // Eb Db
  E: "~@4 c4@3 ~ db4@8, g3@7 ab3@7 ~@2",
  F: "[[bb3,eb4]@8 c4@7 ~ db4@3 [eb4,g4]@2 ~ ab4@2 d4@7 ~ db4@16, ~@8 f4@11 ~@2 f4@26 ~]/3", G: "ab4 g4, eb4",
  H: "f4 bb3, db4", I: "c4 ab4 g4@2, eb4",
  J: "[[db4,f4]@3 [eb4,g4]@3 [f4,ab4]@3 [eb4,g4]@3 [db4,f4]@2 g4@2 ab4@16, ~@7 eb4@9]/2", K: "db4",
  L: "[c4,f4] [bb3,eb4]", M: "db4@7 ~ d4@8, f4", N: "[eb4,ab4] [e4,g4]", O: "c4 ab4 [eb4,g4]@2, f4 ~",
  P: "[[db4,f4]@3 [eb4,g4]@3 [f4,ab4]@3 [eb4,g4]@3 [db4,f4]@2 g4@2 ab4@8 g4@8, ~@7 eb4@9]/2", Q: "[db4,f4] ab3@3",
  R: "f3@2 g3 c4", S: "db4 eb4", T: "f4@11 g4@3 ab4@2", U: "[f4@4 db4@8 g4@3 ~, ~@8 f4@21 ~@3]/2", V: "~ [eb4,ab4]",
  W: "[[g4,bb4]@2 ab4@2 db4@2 c4 ab4, ~ f4@2 eb4]/2", // Gm
  X: "[[g4,bb4]@7 ~ [db4,f4]@3 [c4,eb4]@3 db4@6 f4@4 ~@12 bb4@4 ab4@8 db4@8 ab4@8 g4@8 [db4,f4]@3 [eb4,g4]@3 [f4,ab4]@2, ~@7 bb3@2 ~ ab4@6 g4@4 f4@8 ~@12, ~@6 eb4@3 ~@5 eb4@4 ~@2]/5", // Gm Db Cm Db Eb Fm
  Y: "[~ [eb4,g4]@3 [d4,f4]@3 [eb4,g4]@3 [f4,ab4]@3 [eb4,g4]@2 ~ db4@3 [eb4,g4]@3 [f4,ab4]@2 [eb4,g4]@3 ~ [db4,f4]@2 g4@2 ab4@8 g4@4 [db4,f4]@4, ~@15 f4@3 ~@12 eb4@14 ~@4]/3", // Eb Dm Eb Fm Eb Fm Eb Db
  Z: "c4@8 g4@5 [db4,f4]@3, eb4@3 ~", AA: "[~ c4@8 g4@5 [db4,f4]@5 [eb4,ab4]@9 ~@4, ~ eb4@13 ~@18]/2",
})).s("gm_string_ensemble_2").gain(0.3)

// other · harpsichord
const harpsichord = note(`<
  ~ A@2 B ~@9 C D ~@4 E ~ F G F H I ~@3 J K L G M N O P Q ~ R S T U V W X Y Z L ~ AA ~ AB ~
>`.pickRestart({
  A: "f5@2 ~ eb5@2 ~ f5@2 ~ eb5@2 ~ f5@2 [eb5,g5] ~, db5 ~@2 g5 ~@2 ab5 ~@2 g5 ~@2 db5 ~@3", B: "[eb5,ab5]@3 ~@13",
  C: "~@8 db4@2 ~ eb4@2 ~ f4@2", D: "~ eb4@2 ~ db4@2 eb4 ~ c4@2 ~@6", E: "db4 ~@2 eb4 ~@2 f4 ~ f4 ~@7",
  F: "c5 ~@7 bb4 ~@7", G: "ab4 ~@15", H: "db4 ~@2 eb4 ~@2 f4 ~@2 eb4 ~@2 db4 ~ eb4 ~", I: "f4 ~@15",
  J: "ab4 c5 ab4 eb5 ~@4 g4 c5 g4 g5 ~@4", K: "ab4 c5 ab4 f5 ~@4 g4 bb4 g4 eb5 ~@4",
  L: "f4 ~@2 g4 ~@2 ab4 ~@2 g4 ~@2 f4 ~ g4 ~", M: "db6 ~@7 c6 ~@2 ab5 ~@4", N: "~ c6 f5 c6 ~@5 g5 c5 g5 ~@4",
  O: "db5 ab5 db5 ab5 ~@4 bb4 eb5 bb4 eb5 ~@4", P: "f4 ~@7 db4 ~@2 eb4 ~@2 f4 ~", Q: "d4 ~@15",
  R: "~@8 ab4 eb5 ab4 eb5 ~@4", S: "bb4 ~ eb5 ~@5 ab4 db5 ab4 db5 ~@4", T: "f4 ~ bb4 ~@5 ab4 eb5 ab4 eb5 ~@4",
  U: "g4 ~ eb5 ~@5 db5 ~@2 c5 ~@2 bb4 ~", V: "~ eb5 ~@6 ab4 ~@3 eb5 ~@3", W: "g4 ~@3 eb5 ~@3 ab4 ~@3 db5 ~@3",
  X: "f4 ~@4 bb4 ~@2 ab4 ~@3 eb5 ~@3", Y: "g4 ~@3 eb5 ~@3 f4 ~@2 g4 ~@2 ab4 ~",
  Z: "~ g4 ~@2 f4 ~@2 g4 ~@2 ab4 ~@2 g4 ~@2", AA: "~@4 ab6 ~@11", AB: "~@3 ab3@7 ~@6",
})).s("gm_harpsichord").gain(0.21).pan(0.3)

// other · harpsichord · soft notes
const harpsichord_soft = note("<~@33 A B ~@10 C ~@4 D E ~@2>".pickRestart({
  A: "~@9 ab5 eb6 ~@5", B: "f5 ~@7 c5 ~@7", C: "~@3 f4!2 ~ f4 ~@9", D: "~ ab5 ~ eb6 ~@12", E: "~@2 ab4 eb5 ab5 ~@11",
})).s("gm_harpsichord").gain(0.11).pan(0.3)

// other · overdriven guitar
const overdriven_guitar = note(`<
  ~ A B C ~@17 D E D F G@2 H I J K L M ~@3 N O@2 P Q R S@2 T U V W L X ~@4
>`.pickRestart({
  A: "[db4,f4]@3 [eb4,g4]@3 [f4,ab4]@3 [eb4,g4]@3 [db4,f4]@2 [eb4,g4]@2", // Db Eb Fm Eb Db Eb
  B: "[db4,f4]@3 [eb4,g4]@3 [f4,ab4]@3 [eb4,g4]@3 [db4,f4]@2 [db4,g4]@2", C: "[eb4,ab4]@9 ~@7", D: "ab3 eb4 g3@2",
  E: "f3 db4 f3@2", F: "f3@3 g3@3 ab3@3 g3@3 f3@2 g3@2", G: "[ab3@23 ~@9]/2", H: "[f3,c4] [eb3,bb3]",
  I: "[db3,ab3] [f3,bb3]", J: "ab3 g3", K: "f3 c4 bb3@2", L: "f4@3 g4@3 ab4@3 g4@3 f4@2 g4@2", M: "ab4 ~",
  N: "f3@8 f4@3 g4@3 ab4@2", O: "bb4/2", P: "bb3 ~ bb3 ~@5 ab3@4 eb4@4", Q: "g3 eb4 f3@2",
  R: "bb3@6 ab3 bb3 c4@4 eb4@4", S: "[g3@8 db4@3 c4@3 bb3@6 eb4!2 ~ eb4 ab3@4 eb4@4]/2", T: "g3 eb4 db4@2",
  U: "bb3@2 ab3 eb4", V: "g3@8 f4@3 g4@3 ab4@2", W: "~ g4@3 f4@3 g4@3 ab4@3 g4@3", X: "ab4@13 ~@3",
})).s("gm_overdriven_guitar").gain(0.23).pan(0.6)

// other · orchestra hit
const orchestra_hit = note("<~@39 [eb4!2 ~@6] ~@14>").s("gm_orchestra_hit").gain(0.71)

// chords · piano
const piano = note(`<
  ~ A B C D E F G H I@3 J K L M N O P Q R S T U V W@2 X Y Z AA AB AC AD AE AF AG AH@2 AI AJ AK AL@2 AM AN AO AP AQ AR@5
>`.pickRestart({
  A: "[db2,db3,ab3,db4,f4]@3 ~@3 [db4,f4,ab4]@2 db3 [bb3,eb4,g4]@2 ~@3 [db3,bb3,eb4,g4]@2, ~@3 [db3,bb3,eb4,g4]@2 db3@2 ~@4 db3@3 ~@2, ~ db2@2 [db2,ab3,db4,f4]", // Db Eb Eb7 Db
  B: "[bb2,ab3,db4,f4]@2 bb2 [bb2,bb3,eb4,g4]@3 [bb2,db4,f4,ab4]@2 bb2!4 [bb2,ab3,f4] ~ [bb2,bb3,eb4,g4]@2, ~@9 [bb3,eb4,g4]@3 db4@2 ~@2", // Bbm7 Eb Bbm7 Bb7 Eb
  C: "[c4,eb4,ab4]@8 ~@2 bb4@2 db4 ~ db4@2, ab2@3 ~ [db2,db3,bb3,eb4,g4]@2 [eb2,eb3,ab4]@2, ab3@4 ~@5 ab4@3 ~ f4@3", // Ab Eb7 Ab5
  D: "c4@3 c4@2 ~ ab2@2 ~@6 c3@2, [ab2,eb4,ab4]@5 [c4,eb4,ab4]@3 c2@8, ~@2 [c4,eb4,g4]!2, ~@5 c3@2 ~", // Ab5 Ab Cm
  E: "[ab3,db4]@2 ab3 ~@3 db3@2 [ab2,c4]@2 ~@4 ab2@2, db2@4 ~ ab2!2 ~, [db3,f4]@4 db3@2 ~@2 eb4@5 ~@3, ~@3 [ab3,db4]@2 [ab3,db4,f4]@3 ab3@8, ~@11 c4@2 [c4,eb4,ab4]@3", // Db5 Ab Db Db5 Db Ab
  F: "~@3 f3 c4 c3 ~ c3, f2 c2, [c4,f4,ab4]@4 [c4,f4,ab4]@4 [eb4,g4]@5 [c4,eb4,g4]@3, ~ f3@2 ~@3 c3 ~", // Fm Eb Cm
  G: "[db2,ab3,db4]@2 ~@5 bb3 eb2 ~@2 bb3@2 ~ eb3@2, [db3,f4]@2 db3!2 bb3 eb3 ~@2, ~@2 db2@6 ~ eb2@7, ~@3 ab3@2 [ab3,db4,f4]@3 [eb4,g4]@5 [bb3,eb4,g4]@3", // Db5 Db Eb
  H: "~@6 f2@2 [db2,db3,ab3,db4,f4]@2 db3 ~@3 [db4,f4,ab4]@2, f2@6 ~@5 [db2,bb3,eb4,g4]@5, [c4,f4,ab4]!2 ~@2, ~@2 f3@6 ~@5 db3@3", // Db Eb7 Fm
  I: "[[bb2,bb3,d4]@2 ~@5 eb3 eb3@6 ~@8 eb3@2 [ab2,c4]@2 ~ c4@2 ~@3 bb3@2 ~@4 [eb2,bb3,eb4,g4]@2 [db2,ab3]@2 ~@4 db3@2, f4@5 ~@11 db6@8 ~@7 eb3@2 ~ eb3@2 eb3@4 ~@3 ab3@2 [ab3,db4,f4]@3, ~ bb2!3 [eb2,f4,ab4]@8 ~ ab2@2 ab2 [eb2,eb4,g4]@3 ~@2 db2@3, ~@3 bb3@2 [bb3,d4,f4]@3 db4@4 ~@12 [ab3,eb4,ab4]@5 [c4,eb4,ab4]@3 ~@3 bb3@2 ~@3 [db4,f4]@4 db3@2 ~@2]/3", // Bb Ab Eb Db5 Db Fm7 Eb Bb …
  J: "[bb2,db4,f4] ~@2 bb2 ab2 ~@2 ab2, bb3 ~ bb2@2 bb2@2 ~@4 ab2@4 ~@2, ~@3 [bb3,db4]@2 [bb3,db4,f4]@3 [ab3,c4,eb4,ab4]@4 [ab3,c4,eb4,ab4]@4", // Bbm Ab
  K: "~@2 eb3@2 ~@3 bb3 [ab3,db4,f4]@2 db3 [db3,bb3,eb4,g4]@2 ~ [db3,db4,f4,ab4]@2, eb2@8 db2@5 db2@3, [bb3,eb4,g4]@5 [bb3,eb4,g4]@3 ~@8, ~@3 eb3 ~@4", // Db Eb7 Db Eb
  L: "~@3 db3 ~@2 db3@2 [ab2,ab3]@5 ab3@3, db2!2 [db2,ab3,db4,f4]@2 ~@4, ~ [db3,bb3,eb4,g4]@3 ~@4 [c4,eb4]@8", // Ab Db Eb7 Cm
  M: "eb4@3 ~@2 [eb4,g4,c5]@2 db4 ~@7 c4, [c2,c4] [db2,f4,ab4], g4@2 c3@2 ~ db3!3, ~@3 eb4@2 ~@3 db4@5 db4@3, ~@11 db5@5", // Cm C Db
  N: "c4@2 ~@2 eb4 [ab2,c4,eb4,ab4] [c4,eb4] f3 ~ f3 c4 ~@4 [c3,c4], [ab2,eb4,ab4]@5 ~@3 f2@6 f2@2, ~@2 ab3@2 ab3@2 [g3,g4]@2 ~@3 c4@2 c4@2 ~, ~@3 c4@2 ~@3 f4@3 [f4,ab4]@5, ~@3 f3", // Ab Cm C Ab5 G Fm
  O: "~@2 c4 ~@2 c4 [g3,c4,eb4,g4]@2 [db2,ab3]@2 ~@5 [eb2,bb3], c2@4 ~ db2@3, g4@3 ~@3 db3!2, [c4,eb4]@3 ~@8 ab3@2 [ab3,db4,f4]@3, ~ c3@3 c3@4 [db3,db4,f4]@5 ~@3", // Cm Db5 Eb5 Cm Db
  P: "~@2 bb3 ~@4 c4 c4@2 ~@5 ab3, [eb3,eb4,g4]@2 eb3!2 ~ f3 f3@2, bb3@2 ~ [bb3,eb4,g4]@2 [bb3,eb4,g4]@3 ~@3 c4@2 [c4,f4,ab4]@3, ~ eb2@7 [f2,f4,ab4]@6 f2@2", // Eb Fm
  Q: "[db2,ab3] ~ db3 ~@3 [db3,db4,f4,ab4]@2 [bb2,bb3,d4]@2 ~@5 [eb3,db4], [db3,db4,f4]@3 [bb3,eb4,g4]@5 f4@5 ~@3, ~ db2@2 db2@2 db2@3 ~@3 bb3@2 [bb3,d4,f4]@3, ~@2 db3 ~@2 bb2!3", // Db5 Db Bb Eb7 Db Eb Bb
  R: "ab4@2 ~ eb3, f4, eb3@3 ~@5, db4 ~ db5@2, eb2 ~@7",
  S: "[ab2,c4]@2 ~@3 [c4,eb4,ab4]@2 eb3 bb3@2 ~@5 db3, [ab3,eb4,ab4]@2 ab3@2 ~ eb3 eb3@2, ~ ab2@2 ~ [eb2,eb4,g4]@3 eb2, ~@3 c4@2 ~@6 bb3@2 [bb3,eb4,g4]@3", // Ab Ab5 Eb
  T: "[ab3,db4,f4]@2 ~@5 db4 [bb2,db4]@2 ~@5 c4, db2@8 ~@3 db4@2 [db4,f4,ab4]@3, ~ db3!3 ~ bb2!3, ~@3 [ab3,db4]@2 [ab3,db4,f4]@3 [f4,ab4]@5 ~@3", // Db Bbm Db Db5 Db Fm
  U: "c4@2 ~@3 [c4,eb4,ab4]@3 [g2,bb3,eb4]@2 ~@4 g2@2, ab2@4 ~ g2!2 ~, [eb4,ab4]@5 ~@3 g4@5 ~@3, ~@2 ab3@2 ab3@4 ~@3 bb3@2 [bb3,eb4,g4]@3, ~@3 c4@2 ~@11", // Ab Eb Ab5 Eb
  V: "[db2,db3,ab3,db4,f4]@2 ~ [db3,bb3,eb4,g4]@2 ~@4 [db3,bb3,eb4,g4]@2 db2 db3@2 [db3,bb3,eb4,g4]@2, ~@2 db2@3 db2@3 db2@2 ~@2 [db2,ab3,db4,f4]@4, ~@3 [db3,db4,f4,ab4]@2 ~@3", // Db Eb7 Db
  W: "[[ab2,ab3]@2 ~@4 ab2!3 ab2@2 ~@5 db4@3 db4@2 ~ db3@2 db3@3 ~@4 c4, c4@13 ab4 ab2@2 db2@7 ~@4 db5@3 db3@2, eb4@5 eb4@10 db3@3 ~@3 db4@7 db3 db4@3, ~@2 ab2@2 ab2@2 ~@2 [bb4,c5]@3 [bb4,c5]@5 [f4,ab4]@5 ab4@11, ~@3 ab3@2 ~@3 eb5@8 ~@8 db6@8]/2", // Ab Bbsus2 Fm
  X: "f2 ~@3 f3@4 [eb2,bb3]@2 eb2@3 ~@2 db3, [f4,ab4]@8 ~@5 [bb3,eb4,g4]@3, [f3,c4]@4 c4@2 ~@2 [eb3,eb4,g4]@5 ~@3, ~ f2@3 ~@3 eb2", // Eb5 Fm Eb F5 Eb
  Y: "ab3 ~@2 db3 ~ d3 ~ d3, [db2,db4,f4] db2 d2@2, ~@2 db3@3 [ab3,db4,f4]@3 [bb3,d4,f4]@4 [bb3,d4,f4]@4", // Db Bb
  Z: "[ab2,c4]@2 ab2@2 ab2@2 ~ c4 c2!2 ~ c4 c2!2 c4!2, [eb4,ab4] [c4,eb4,ab4] [c4,e4,g4] [e4,g4], ~@3 ab2 ~ c2 c4 c2", // Ab Ab5 Ab C Em
  AA: "f2@2 ~@4 f2@2 [eb2,bb3]@2 ~@5 [db3,ab3], [c4,f4,ab4]@4 [c4,f4,ab4]@4 [eb4,g4]@5 ~@3, ~ f2@2 ~@2 eb2!3, ~@11 bb3@2 [bb3,eb4,g4]@3", // Eb5 Db5 Fm Eb
  AB: "[db2,ab3,db4,f4]@2 db3 [db2,bb3,eb4,g4]@2 db3 [db2,db4,f4,ab4]@2 db3 ~@3 db3@2 [db2,db3,bb3,eb4,g4]@2, ~@9 [db2,bb3,eb4,g4]@2 db2@3 ~@2, ~@5 db3 [ab3,db4,f4]@2", // Db Eb7 Db Eb7 Db
  AC: "[ab2,c4]@2 ~@3 [c4,eb4,ab4]@2 c4 c4@2 ~ c4@2 ~ c3@2, [eb4,ab4]@5 ~@3 [eb4,g4]@5 [c4,eb4,g4]@3, ~ ab2!2 ~ c2@4, ~@3 c4@2 ~@5 c3@2 ~@4", // Ab Ab5 Eb Cm
  AD: "db2 ~@6 c4 ~@4 eb4 ~@2 c4, [f4,ab4]@3 db3 [ab2,ab4]@3 ab2, db3@3 db5@5 ~@2 ab3@2 ab3@4, db4@2 db4@3 db4@3 [c4,eb4]@4 ~ [c4,eb4,ab4]@3, ~ db2@7 ~@3 c4@2 ~@3", // Fm Ab Cm Ab
  AE: "c4@2 ~ c4@2 [c4,f4,ab4]@2 c4 c4@2 ~ c4@2 ~@2 ab3, [f2,f4,ab4]@5 ~@3 c2@8, ~@2 f3@6 [eb4,g4]@5 [c4,eb4,g4]@3, ~@5 c3 ~ c3", // Fm Eb Cm
  AF: "~@2 ab3 ~@4 bb3 eb2 ~@5 eb3 ~, db2@8 ~ eb2@6 ~, [ab3,db4,f4]@3 [ab3,db4,f4]@2 [ab3,db4,f4]@3 g4@5 ~@3, ~ db3@3 db3@2 db3@2 [eb3,bb3,eb4]@2 eb3@2 eb3@2 ~@2, ~@11 [bb3,eb4]@2 [bb3,eb4,g4]@2 ~", // Db Eb5 Eb
  AG: "c4@3 c4@2 [c4,f4,ab4]@2 ab3 [db2,db4]@2 db2 db2@2 ~ [db4,f4,ab4]@2, [f2,f4,ab4]@5 ~@3 [ab3,f4] ~@2 [bb3,eb4,g4]@5, ~@13 db2@3", // Fm Db Fm Db Eb
  AH: "[[bb2,bb3,d4,f4]@2 bb2 ~@3 bb2@2 [eb2,eb3,db4,f4,ab4]@16 [eb2,eb3,bb3,eb4,g4]@7 ~, ~@3 bb3@4 ~@25, ~@2 bb2 ~@13, ~@5 [d4,f4]@3 ~@24]/2", // Bb Db Eb Dm
  AI: "[eb2,eb3,db4,f4,ab4] ~ [eb2,eb3,db4,f4,ab4] ~@5 ab3@2 ~ ab3 ~ [c4,eb4,ab4]@3, ~@8 [c4,eb4,ab4]@5 ~@3, ~@8 ab2 ~ ab2@4 ~@2", // Db Ab
  AJ: "[eb2,bb3]@2 ~@2 bb3 ~ eb2 ~ [db2,ab3]@2 db2@2 db2 ab3 db2 ab3, [eb4,g4]@5 [bb3,eb4,g4]@3 [db4,f4]@5 [db4,f4]@3, ~ eb2@2 ~@5", // Eb5 Db5 Eb Db
  AK: "bb3@2 ~ bb3 bb2 ~ bb2 ~ ab2@2 ab2@2 [c4,eb4,ab4]@2 ~ c4, [db4,f4]@5 [bb3,db4,f4]@2 ~ [c4,eb4,ab4]@4 ~@4, bb2 ~ bb2@2 ~@10 ab2@2", // Ab Db Bbm Ab
  AL: "[eb2@2 eb2@3 [bb3,eb4,g4] eb2 ~ [db3,db4,f4,ab4]@3 [c3,c4,eb4,ab4]@3 [bb3,db4,f4]@4 ~@2 [eb3,db4,f4,ab4] eb3 [db4,ab4] [eb3,db4,f4,ab4] ~@2 ab2@2 ~ c4 ab2@2, [bb3,eb4,g4]@4 ~@10 bb2@6 ~@4 [c4,eb4]@5 [eb4,ab4]@3]/2", // Eb Db Ab Bbm Db Db5 Db Eb …
  AM: "eb2@2 eb2@2 eb2@2 eb2@2 db3@2 db3@2 db3 db4 db3 ~, [bb3,eb4,g4]@6 bb3 ~ [db4,f4,ab4]@5 [f4,ab4]@3", // Eb Db Fm
  AN: "bb2 ~ bb2@2 bb2 db4 bb2 db4 ~@2 ab2@2 ab2 c4 ~ c4, [db4,f4,ab4]@4 ~ [f4,ab4]@3 [eb4,ab4]@5 [eb4,ab4]@2 ~, ~@7 ab2", // Db Fm Ab5
  AO: "g2 ~ g2@2 ~ bb3 g2 ~ [db2,db4,f4]@3 [db2,eb4,g4]@3 [db2,f4,ab4]@2, [bb3,eb4,g4]@2 g2 ~@5, ~@5 [eb4,g4]@2 ~@9", // Db Eb7 Db Eb
  AP: "~ [db2,eb4,g4]@3 [bb2,d4,f4]@3 [c3,eb4,g4]@3 [bb2,f4,ab4]@3 [c3,eb4,g4]@3", // Eb7 Bb Cm Bb7 Cm
  AQ: "[eb2,db4,f4]@3 [eb2,eb4,g4]@3 [eb2,f4,ab4]@3 [eb2,eb4,g4]@3 [eb2,f4]@2 [eb4,g4]@2, ~@12 db4 ~ eb2 ~", // Db Eb Fm7 Eb Ebsus2 Eb
  AR: "[[eb4,ab4]@2 ~@4 c4@2 bb3 ~ [eb4,bb4]@2 db4@2 ~@2 c4@2 c4@3 ~@2 c4@2 [bb3,eb4] bb3 [bb3,eb4,bb4]@2 db4 ~ db4@2 c4@2 ~@4 c4@2 bb3 ~ bb3 [bb3,bb4]@2 ~ f4@2 db4@2 ab4@5 ab4@15 ~@9, ab2@8 [db2,g4]@4 [eb2,eb3,ab4]@4 [ab2,ab4]@8 ~ [db2,db3,g4]@4 [eb2,eb3,ab4]@4 [ab2,ab4]@8 [db2,db3,g4]@4 ~ [eb2,eb3,ab4]@5 [ab2,eb4]@20 ~@9, ~@2 c4@4 ~@3 ab4@3 ~@3 db4@2 ~@16 eb4@4 eb4@4 ~ eb4@4 db4@3 ~@2 c4@3 ~@26, ~@4 eb4@4 eb4@2 ~@4 f4@2 eb4@4 ~ eb4@4 ~ ab4@3 ~ f4@3 ~@2 c4@4 ~@4 ab4@3 ~@34]/5", // Ab5 Eb5 Bb Dbdim Ab5 Ab Dbdim Ab5 …
})).s("gm_piano").gain(0.56)

// chords · piano · soft notes
const piano_soft = note(`<
  ~ A B C D E@2 F@2 G@2 H I J K L M N O P Q R S T ~ U V W X Y Z AA AB AC AD AE AF AG ~ AH AI AG ~ AJ AK AL AM ~@2 AN AO
  ~ AP@2
>`.pickRestart({
  A: "~@2 db2@2 ~@3 db3 ~@2 db3 ~@5", B: "~@5 bb2 ~@10", C: "~@6 ab2@2 ~@7 eb3, ~ ab3 ~@2",
  D: "~@2 ab3@2 ab3@3 c3@3 ~ c4 ~@4, ~@7 c4 ~@8", E: "[~@7 ab3 ~@7 f3@3 ~@5 [c3,c4] ~ c3 ~ c4@2 ~@3, ~@15 c4 ~@16]/2",
  F: "[~@3 db4@2 ~@2 eb2 eb3@2 ~@2 eb3@2 ~ f3@2 ~@6 [db2,db3] ~@8, ~@15 c4 ~@16]/2", // Db
  G: "[~@3 d4@2 ~@2 db4 ~@6 eb3 eb3@3 eb3@2 eb3@2 ~@6 ab3@3 c4, ~@3 db4@3 ~@2]/2", H: "~@5 bb3 ~@2 db3@2 db3@2 ~@4",
  I: "~@3 f4@2 ~@2 c4 ~@7 eb3", J: "~@2 eb3 ~ db3 ~@3, ~@4 bb3 ~@11", K: "~@15 [c3,c4], ~@7 ab2",
  L: "~@2 c3@2 ~@2 g3@2 db3 ~@7", M: "ab3 ~@6 [c4,eb4] ~@2 f3@2 ~@4", N: "~@3 [c4,eb4]@3 ~@10",
  O: "eb2 ~@6 f3 ~ f3 ~@6", P: "~@11 d4@2 ~@3", Q: "~@4 db4@2 ~ db4 ~ eb3@3 ~@2 eb2@2, ~ eb2@6 ~, ~@3 eb3 [db4,ab4]@4",
  R: "~@6 ab2@2 ~@7 ab3", S: "~@3 f4@2 ~@11", T: "~@11 eb4@2 ~@3",
  U: "~@10 bb4 ~ ab2@2 ~ db4, ~@5 ab3@11, ~@7 ab4@6 ~@3",
  V: "~@2 db3@2 ~@3 db5@2 ~ ab5@5 f3, ~@4 db3@2 ~ db2@9, ~@5 f4@11, ~@9 db5@2 ~@5",
  W: "~@6 c4@2 ~@4 eb3@3 ab3, ~@11 bb3@2 ~@3", X: "db3@2 ~ ab3@2 ~@2 [d3,bb3] d3@2 ~@2 d3@2 ~@2", Y: "~ c4 ~@6",
  Z: "~@7 c4 ~@8", AA: "db3 ~@7", AB: "~@6 ab2@2 ~@4 c3@2 ~ [c4,f4]", AC: "~@4 db3@2 ~@3 ab3 ~@6",
  AD: "~@4 f2@2 ~ c3 ~@4 c3@2 ~ db3, ~@3 f2 ~@4", AE: "db3 ~@14 [f3,c4]", AF: "~@2 f2!2 ~@4", AG: "~@7 bb3 ~@8",
  AH: "~@12 ab3@2 ab2 ~", AI: "~@7 eb2 ~@8", AJ: "~@6 f4 ~@5 ab2 ~@2 c4", AK: "~@6 eb4@2 ~@7 db4, ~@6 g4 ~@9",
  AL: "~@3 db4 ~@11 eb4", AM: "~@4 bb3 ~@2 db4 ~@8", AN: "~@9 bb3 ~ bb3@2 ~@3, ~@2 db3 ~", AO: "~@10 eb4 ~@5",
  AP: "[~@13 ab6@4 ~ ab6@5 ~@9, ~@6 c4@17 ~@9]/2",
})).s("gm_piano").gain(0.28)

// drums · kick
const kick = s("bd").struct("<~@21 A@17 B C D@2 E F D@2 E G A ~@5>".pickRestart({
  A: "x ~@6 x!2 ~@7", B: "~ x", C: "~@8 x ~@6 x", D: "x ~@7 x ~@6 x", E: "x ~@7 x ~@2 x ~@2 x ~", F: "~ x ~@6 x ~@6 x",
  G: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
})).gain(0.6)

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

// drums · low tom
const low_tom = s("lt").struct("<A B C ~@17 D ~@3 D ~ D ~ C ~ D@2 ~@3 D ~@3 E ~@3 F ~ G ~ H ~@6>".pickRestart({
  A: "~@15 x", B: "x ~@6 x", C: "~@14 x!2", D: "~@7 x", E: "x!2 ~@6", F: "~@5 x ~ x ~@8", G: "~@6 x!2 ~@8",
  H: "~ x!3 ~@9 x!3",
})).gain(0.68)

// drums · hihat
const hihat = s("hh").struct("<~@16 A ~ A ~@2 B@4 C@4 B@3 C@7 D B@2 E D B@2 E ~ B ~@5>".pickRestart({
  A: "~ x ~@2", B: "x!3 ~ x!3 ~ x!3 ~ x!3 ~", C: "~ x ~ x", D: "~@8 x!3 ~ x!3 ~", E: "x!3 ~ x!3 ~@9",
})).gain(0.38)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@21 A@4 ~@4 A@3 ~@7 B A@2 C B A@2 C ~ A ~@5>".pickRestart({
  A: "~@3 x ~@3 x ~@3 x ~@3 x", B: "~@11 x ~@3 x", C: "~@3 x ~@3 x ~@8",
})).gain(0.23)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A@2 ~@17 B ~@3 A ~ C ~ A ~ C A ~@3 C ~@3 D ~@3 E ~ F G H ~@6>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@12 x!3 ~", C: "~@13 x ~@2", D: "x!2 ~@6", E: "~ x ~@2", F: "~@3 x ~ x ~@10",
  G: "~@11 x ~@2 x ~", H: "~@7 x ~@2 x ~@5",
})).gain(0.6)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<[~@15 x] ~ [~@11 x ~@4] ~@17 [~@13 x ~@2] ~@26 [~ x ~@9 x!2 ~@3] ~@6>").gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@22 A ~@7 B ~@8 C ~ D E F ~@2 E G ~@6>".pickRestart({
  A: "~@13 x ~@2", B: "~@9 x ~@6", C: "~ x ~@6", D: "~@5 x ~@10", E: "~@8 x ~@2 x ~@2 x ~", F: "~ x ~@14",
  G: "~ x!2 ~ x ~@2 x ~@2 x ~@2 x!2 ~",
})).gain(0.45)

// … 25 more lines

More by Anna Oxa