Strudelify

Noi

Mina

KeyE♭ minorTempo83 bpm
0:00/0:00
// Noi — Mina
// 83 bpm, 4/4, key D# minor. 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 110 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(83/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(`<
  ~@36 A B A C A D E F A B A C A D E F A B A C A D E F ~@16 G B G H I J E K G B G H I J E K G B G H L M E N@2 O P@3 ~@5
>`.pickRestart({
  A: "ab1", B: "db2", C: "db2@31 ~", D: "db2@15 ~", E: "gb1@15 ~", F: "bb1@15 ~", G: "ab1@24 ab1@4 a1 bb1 b1 c2",
  H: "~@6 f3@9 ~, db2@31 ~", I: "ab1@23 ~ ab1@4 a1 bb1 b1 c2", J: "db2@24 db2@4 c2 b1 bb1 ab1",
  K: "~@6 bb2@9 ~, bb1@15 ~", L: "gb1@23 ~ gb1@4 g1 ab1 a1 ~", M: "bb1@24 db2@4 c2 b1 bb1 ab1", N: "[bb1 bb1@3]/2",
  O: "~ bb2@2 eb3@2 f3@3 eb3@3 db3@3 eb3@4 bb2@2 db3@3 ~ bb2@2 ab2@2 gb2 ~ gb2@2, eb3 ~@15",
  P: "[ab2@2 gb2 eb2 db2 bb1 ab1 gb1 ab1@2 eb1@38]/3",
})).s("gm_fretless_bass").gain(0.31)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@76 A@5 B@3 C@6 D@2 E@8 ~ F@8 ~>".pickRestart({
  A: "[gb3@31 f3@33 gb3@31 f3@32 gb3@16 ~ bb4@7 ~ b4@8, [bb4,eb5]@143 bb3@8 b3@9]/5", B: "[[db4,db5]@67 ~@29]/3",
  C: "[eb3@24 gb3@8 f3@32 eb3@24 gb3@8 f3@31 eb3@25 gb3@8 f3@23 [b3,b4]@9, ab5, eb5@187 ~@5]/6", // B
  D: "[~ bb5@45 ~@18, db4@23 ~@9, ~ db5@35 ~@28]/2",
  E: "[eb3@24 gb3@8 f3@32 eb3@24 gb3@8 f3@31 [gb3,db5,db6]@32 ~ gb4@31 ~@17 db4@16 d4@32, [eb5,ab5]@128 ~@31 [gb3,bb4,bb5]@32 [f4,f5]@65, ~@6 f3 ~]/8", // Gb5 Ab5 Gb F
  F: "[~ eb3@254 ~, [bb3,eb4,ab4]@255 ~]/8", // Ebsus4
})).s("gm_string_ensemble_2").gain(0.14)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@4 A B C D E@4 F@2 G@2 H@4 I J K@2 L@4 M@2 N@2 O@4 P Q@2 R@2 S T U V Q@2 R@2 S T W@2 X ~@6 I J K@2 Y@4 M@2 N@2 Z@4 P
  Q@2 R@2 S T U V AA@2 R@2 S T W@2 X ~@16
>`.pickRestart({
  A: "~@12 eb3@2 f3@2 gb3@2 f3@2 eb3@8 eb3 ~@3", B: "~@12 eb3@2 ~ f3@2 gb3@4 f3@2 eb3@4 ~ db3@3 ~",
  C: "f3@5 eb3@15 ab2@3 ~ ab2@4 gb2@4", D: "bb2@19 ~@13",
  E: "[~@10 eb3@2 eb3@2 f3@2 ~ gb3@3 ~ f3@3 eb3@4 ~ eb3@12 ~@3 eb3@2 f3@2 ~ gb3@3 f3@3 eb3@4 db3@3 ~ f3@6 eb3@16 ~@3 gb2@5 ab2@8 bb2@19 ~@8]/4",
  F: "[~@12 eb3@4 gb3@4 eb3@2 gb3@4 ~@6 bb3@5 ab3@21 ~@6, ~@30 eb3@5 ~@29]/2",
  G: "[~@18 db3@2 db3@2 ~ db3@2 db3@2 bb2@2 eb3@18 ~@17]/2",
  H: "[~@12 b2@3 ~ b2@4 ~ b2 ~ b2@3 ~ b2@3 ~ b2@4 ~ bb2@16 gb3@4 f3@4 eb3@12 gb3@4 eb3@12 gb3@4 eb3@29 ~@7]/4",
  I: "~@6 eb4 f4 gb4@2 f4 eb4@3 bb3 ~", J: "~@12 eb4@2 ~ f4@2 gb4@4 f4@2 eb4@4 ~ db4@3 ~",
  K: "[f4@6 eb4@18 ~ ab3@3 ~ ab3@7 bb3@18 ~@10]/2",
  L: "[~@12 eb4@2 f4@2 ~ gb4@3 ~ f4@3 eb4@4 ~ eb4@12 ~@2 gb4@3 eb4@3 gb4@7 ab4@5 bb4@7 gb4@15 ~@5 ab4@5 ab4@8 bb4@19 ~@8]/4",
  M: "[~@12 gb4@2 eb4@2 gb4@4 eb4@2 gb4@5 ab4@4 bb4@5 ab4@17 ~@11]/2", N: "[~@8 db4!5 bb3 eb4@9 ~@9]/2",
  O: "[~@12 b3@3 ~ b3@4 b3 ~ b3@3 ~ b3@3 ~@2 b3@4 ~ bb3@8 bb3@4 ~@4 gb4@4 f4@5 eb4@11 gb4@5 eb4@11 gb4@5 eb4@9 ~@2 gb4@3 ~ eb4@12 ~@8]/4",
  P: "[bb3,eb4]@27 ~@5", // Eb5
  Q: "[[ab3,f4]@4 [bb3,gb4]@2 [ab3,f4]@4 [bb3,gb4]@4 [ab3,f4]@5 ~ [f3,db4]@8 bb3@29 ~@7, ~@28 gb4@21 ~@15]/2", // Db Ebm Db Ebm Db
  R: "[[ab3,f4]@2 [bb3,gb4] [ab3,f4]@2 [bb3,gb4]@2 [ab3,f4]@3 [f3,db4]@4 [bb3,gb4]@12 ~@6]/2", // Db Ebm Db Ebm Db Ebm
  S: "[ab3,f4]@2 [bb3,gb4] [ab3,f4]@2 [bb3,gb4]@2 [ab3,f4]@3 eb4@3 [f3,db4]@3, ~@20 gb3@5 ~@7", // Db Ebm Db Ebm Db
  T: "[ab3,f4]@2 [gb3,eb4]@2 [f3,db4]@19 ~@5 [ab3,db4]@3 ~", // Db Ebm Db Db5
  U: "[ab3,f4]@2 [ab3,f4]@2 [bb3,gb4]@2 [b3,ab4]@3 [db4,bb4]@3 [bb3,gb4]@2 [ab3,f4]@2", V: "[bb3,gb4]@27 ~@5",
  W: "[[ab3,f4]@8 [bb3,gb4]@4 ~ [b3,ab4]@8 [ab3,f4]@8 gb4@30 f4@3 gb4@2, ~@29 bb3@22 ~@13]/2", X: "~ f4@22 ~@9",
  Y: "[~@12 eb3@2 f3@2 ~ gb3@3 ~ f3@3 eb3@4 ~ eb3@12 ~@2 gb3@3 eb3@3 gb3@7 ab3@5 bb3@7 gb3@15 ~@5 ab3@5 ab3@8 bb3@19 ~@8]/4",
  Z: "[~@12 b3@3 ~ b3@4 b3 ~ b3@3 ~ b3@3 ~@2 b3@4 ~ bb3@8 bb3@4 ~@4 [bb3,gb4]@4 [ab3,f4]@4 eb4@12 [bb3,gb4]@4 [gb3,eb4]@12 [bb3,gb4]@4 gb3@12 [bb3,gb4]@4 eb4@13 ~@7, ~@60 gb3@9 ~@23 eb4@9 ~@7 f3@10 ~@10]/4", // Ebm Db Ebm
  AA: "[[ab3,f4]@4 [bb3,gb4]@2 [ab3,f4]@4 [bb3,gb4]@4 [ab3,f4]@6 [f3,db4]@8 bb3@29 ~@7, ~@28 gb4@21 ~@15]/2", // Db Ebm Db Ebm Db
})).s("gm_electric_guitar_jazz").gain(0.24)

// chords · pad warm
const pad_warm = note(`<
  A@4 B@8 C D@4 E F@2 B@8 C D@4 E G@2 H@2 I@3 J K@2 H@2 I@3 J K@2 H@2 I@3 J K@2 B@8 C D@4 E G@2 H@2 I@3 J K@2 H@2 I@3 J
  K@2 H@2 L@2 M@2 N@3 O@8 ~
>`.pickRestart({
  A: "[~@31 [eb3,bb3,eb4]@96 ~, ~@31 gb3@88 ~@9]/4", B: "[eb3@32 db3@32 b2@31 [bb2,d4,f4,ab4]@33, [eb4,gb4,bb4]@3 ~]/4",
  C: "[ab3,eb4,gb4], b3@7 ~", // Ab7
  D: "[db4@15 b3@16 [gb3,bb3,db4,f4]@32 b2@23 bb2@9 [ab3,b3,eb4]@29 ~@4, ab4@32 ~@31 [b3,eb4]@29 ~@3 ab2@33, f4@28 ~@35 gb4@62 ~@3]/4", // Gbmaj7 Abm B
  E: "[bb3,d4,f4,ab4]@7 ~, bb2", // Bb7
  F: "[[eb3,eb4]@15 ~ db4@13 ~@2 [b2,b3,eb4]@16 ~@8 b4@9, [gb4,bb4]@46 ~ [bb3,d4,f4]@17, ~@15 db3@16 ~@16 db5@8 ~@9, ~@3 [bb2,ab4]]/2", // Eb B Gb Bb Bb7
  G: "[[eb3,eb4]@15 ~ db4@13 ~@2 [b2,b3,eb4]@16 ~ [bb2,ab4]@15 ~, [gb4,bb4]@46 ~ [bb3,d4,f4]@14 ~@3, ~@15 db3@16 ~@33]/2", // Eb B Bb7 Gb Bb
  H: "[[eb4,gb4,bb4]@31 ~ [eb4,f4,ab4]@31 ~, b3@31 ~]/2", // Ebm Fm7
  I: "[[b3,eb4,gb4,bb4]@30 ~@2 f4@30 ~@2 [b3,bb4]@31 ~, ~@31 [b3,eb4,ab4]@31 ~ [eb4,gb4]@31 ~@2]/3", // Bmaj7 Abm Ebm
  J: "[b3,eb4,f4,ab4]@15 ~", K: "[db4@30 ~ d4@30 ~@3, [bb3,f4,ab4]@31 ~]/2",
  L: "[[b3,eb4,gb4,bb4]@15 ~ f4@15 ~, ~@31 [b3,eb4,ab4]@31 ~@2]/2", M: "[db4@15 ~ d4@15 ~, [bb3,f4,ab4]@31 ~]/2",
  N: "[db4@30 ~ d4@57 ~@8, [bb3,f4,ab4]@11 ~]/3", O: "[eb2,ab3,bb3,db4,eb4,gb4]/8",
})).s("gm_pad_warm").gain(0.08)

// other · trombone
const trombone = note("<~@52 A@3 B C D E@3 ~@49>".pickRestart({
  A: "[~@18 gb4@3 ab4@3 bb4@4 a4@2 ~ gb4@2 ab4@3 ~ ab4@8 ~@5 b4@2 eb5@2 ~ f5@3 eb5@2 ~ b4@2 bb4@21 ~ ab4@2 ~ f4@2 e4 ~ eb4@2 d4@2, ~@30 ab4@2 ~@22 gb5@2 ~@4 db5@2 ~@25 gb4@2 ~@7]/3",
  B: "~ c4@2 b3@2 db4@3 eb4 ~ gb4 ~ bb4 ~ db5@4 bb4@2 gb4@2 eb4 ~ ab4@4 ~@2 f4@2, db4 ~@15",
  C: "f4@4 gb4@2 eb4@8 ~@4 f4@3 ~ gb4@2 eb4@6 ~@2",
  D: "~@2 f4@2 ~@2 gb4@2 eb4@2 ~ f4@2 ~@2 gb4@2 eb4@2 f4@2 ~ gb4@2 ab4@3 bb4@2 b4@2 ~",
  E: "[db5@3 eb5@2 f5@16 ~ eb5 ~ db5@13 ~ b4@2 bb4@2 gb4@2 ~ d4@3 db4@8 b3@3 bb3@2 ~@2 ab3@2 gb3@4 ab3@2 bb3@11 ~@14, ~@21 e5@2 d5@2 ~@71]/3",
})).s("gm_trombone").gain(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@3 ~ B@2 C D E@3 F G H I J K L M N B@2 C O P@3 F G H I J K L M Q R@6 S T U@2 V W X Y Z AA AB AC AD AE X AF Z AG B@2 C
  O P@3 F G H I J K L M Q R@6 S T U@2 V AH X Y Z AA AB AC AD AE AI AJ Z AK@4 ~@7
>`.pickRestart({
  A: "[~ eb2 ~, ~@28 eb5@3 ab3@41 ~@24, ~@29 bb4@3 ~@64, ~@5 gb4@11, ~@5 db4@7 ~@4]/3",
  B: "[~@4 gb3@4 bb2@24 ~@9 eb4@23, eb2@32 db3@31 ~, bb2@2 [gb3,bb3,eb4]@7 f3@7, ~@5 [gb3,bb3]@3]/2", // Ebm Gb
  C: "~@9 eb4@23, b2@29 ~@3, ~ eb3@7, ~ [gb3,bb3]@3", // Gb
  D: "~@6 [bb3,f4]@8 db3 eb3, bb2@27 ~@5, ~@4 d3@21 ~@7, ~@4 ab3@9 ~@3", // Bb5
  E: "[~@8 gb3@4 bb2@20 ~@41 eb4@11 [bb3,eb4]@12, eb2@4 ~ gb3@3 ~ gb3@3, bb2@12 [bb3,f4]@30 ~@2 [bb3,eb4]@25 ~@3 bb3@11 ~@13, ~@4 eb3@28 db3@31 ~ b2@32, ~@3 gb3@6 f3@7 ~ eb3@7]/3", // Eb5 Bb5 Eb5
  F: "~@3 [bb3,f4]@5, bb2, ~ d3@7, ~ ab3@3", G: "~@7 eb3, ab2, ~ eb3@6 ~, ~ gb3@3, ~@3 [b3,eb4]@5",
  H: "~@3 ab4@5, eb3 ~ db4@14, ~ f3@6 ~ f3@24", I: "~@14 ab2 bb2, gb2@31 ~, ~@4 db3@27 ~, ~ ab3@3, ~@12 [bb3,f4]@19 ~",
  J: "~@15 db4, b2@5 eb4@3, ~ eb3@5 bb2@2, ~@4 gb3@9 db3@3, ~@3 db4@4 gb3", K: "~@3 [b3,gb4]@5, ab2, ~ eb3@7, ~ gb3@3",
  L: "~@12 [bb3,f4]@17 ~@3, bb2@29 ~@3, ~@4 d3@25 ~@3, ~@8 ab3@21 ~@3", // Bb5
  M: "~@3 eb3 ~@3 db3, eb3@3 ~ db3@3 ~, ~ gb3@3 ~ gb3@3, ~ [bb3,eb4]@2 [bb3,eb4]", // Eb5
  N: "~@12 bb3@3 ~@2 db4@7 b3@7 ~, b2@15 bb2@16 ~, ~@4 eb3@11 ~ [d3,ab3]@16, ~@8 gb3@7 ~@17", // Ddim
  O: "~@12 ab2 bb2 db3 eb3, bb2@3 ~, ~@4 d3@21 ~@7, ~@4 ab3@9 ~@3, ~@3 [bb3,f4]@4 ~", // Bb5
  P: "[~@8 gb3@4 f4@12 ~@4 gb3@4 ~@44 [bb3,eb4]@7 ~ [bb3,eb4]@12, eb2@12 gb3@12 f4@8 ~@12 [bb3,eb4]@25 ~@27, bb2@3 bb3@7 gb3@6 ~@2 gb3@6, ~@4 eb3@28 db3@31 ~ b2@32, ~@3 bb2@5 ~ f3@7 ~ eb3@7]/3", // Eb5
  Q: "~@12 bb3@4 bb2@3 ~ db4@2 ~@2 db4@4 db4@4, b2@15 ~@4 bb2@4 bb2@9, ~@4 eb3@11 ~@5 [d3,ab3]@4 [d3,ab3]@8, ~@8 gb3@7 ~@7 db4@2 ~@8", // Ddim
  R: "[~@6 gb4@10 ~@12 b3 ~@2 db3 ~@6 gb4@6 ~@16 b3@2 ~@8 b3@4 ~@5 eb3 ~@14 b3@2, ab2@15 ~@7 f4@6 f4@4 ~@13 gb4@17 b3@6 gb3@2 gb4@4 b3 gb3 gb4@2 gb3@2 db3@16, ~@2 eb3@13 ~ db3@10 db3@5 ~ ab2@16 db3@16 ab2@17 ~@5 f4@6 f4@4, ~@8 gb3@22 ~@6 f3@18 f3@6 f3@4 ~@4 gb3@20 gb3@9 ~@3 f3@16 b3@4 f4@42 ~@6 b3@12 b3@8 ~@4, ~@6 b3@14 b3@8 ~ b3@7 b3@10 b3@6 b3@2 f4@5 f3@5 ~@2 eb3@11 b3@4 ~ f3@9 f3@5]/6",
  S: "~@7 bb3, gb2, ~ db3@7, ~@2 ab3@3 db4@3, ~@3 bb3@3 ab3@2",
  T: "~@6 db4@4 db4 ~ db4 db4@2 db4, bb2@23 ~ [bb2,d3,ab3]@7 ~, ~@4 d3@19 ~@9, ~@8 ab3@15 ~@9", // Bb7
  U: "[~@12 gb4@20 ~@8 b3@4 f4@8 f4@3 ~ [b3,f4]@8, ab2@15 ~@17, ~@4 eb3@26 ~@2 db3@23 [db3,f3]@9, ~@4 gb3@11 ~@3 f3@4 [f3,b3]@6 ~@4, ~@3 b3@7 ~@6]/2", // Bdim Db Fdim
  V: "~@2 b3 [gb3,b3,gb4]@3 [gb3,b3,gb4]@2, ab2, ~ gb3@2 ~@5", // B5
  W: "~@8 b3@4 b3@8 b3@4 ~ f4@7, db3@3 [db3,f3,b3], ~@4 f3@8 [f3,f4]@13 ~@7", // Db7 F
  X: "~@4 gb3@2 b3@4 ~@5 eb3, ab2, ~ eb3@2 eb3@4 gb3, ~@6 [gb3,gb4]@5 gb3@2 b3@3, ~@5 b3 gb4@2", // Gb
  Y: "~@7 b3, db3, ~@2 f3@9 f3@5, ~@2 b3@3 b3@2 ~, ~@3 f4@3 f4@2",
  Z: "~@2 ab3 [db3,ab3,db4]@3 ~ bb3, gb2, ~ db3@2 bb3@4 ~, ~@3 [db3,ab3,db4]", // Db5
  AA: "~@4 ab3@2 db4@4 db4 ~ db4 db4@2 db4, bb2@23 ~ [bb2,d3,ab3]@7 ~, ~ d3@2 [d3,ab3]@3 ~@2", // Bb7 Ddim
  AB: "~@2 gb3 [gb3,b3,gb4]@3 [gb3,b3,gb4]@2, ab2@15 ~, ~@2 eb3@13 ~", // B5
  AC: "~@8 b3@4 f4@8 f4@3 ~ [f3,b3,f4]@8, db3@23 db3@9, ~ f3@2 [f3,b3]@3 ~@2", // Fdim
  AD: "~@2 b3 [gb3,b3,gb4]@3 [gb3,b3,gb4]@2, ab2@3 ab2@5, ~ gb3@2 ~@5", // B5
  AE: "~@2 b3 b3@2 b3 [db3,f3,b3,f4]@2, db3@23 ~@9, ~ f3@2 [f3,f4]@3 ~@2", // Db7 F
  AF: "~@2 b3 [f3,b3,f4]@3 [f3,b3,f4]@2, db3@3 db3@5, ~ f3@2 ~@5", // Fdim
  AG: "~@4 ab3@2 db4@4 db4 ~ [bb2,d3,ab3,db4]@4, bb2@23 ~@9, ~ d3@2 [d3,ab3]@3 ~@2", // Bb7 Ddim
  AH: "~@8 b3@4 b3@8 b3@3 ~@2 f4@7, db3@23 ~ [db3,b3]@8, ~@4 f3@19 f3@9, ~@12 f4@13 ~@7", // Db7
  AI: "~@2 ab3 [db3,ab3,db4]@3 ~ bb3, gb2, ~ db3@2 bb3@4 ~, ~@3 [db3,db4], ~@25 ab3@7", // Db5 Db
  AJ: "~@4 ab3@2 db4@4 db4@2 db4 db4@2 db4, bb2@23 ~ [bb2,d3,ab3]@8, ~ d3@2 [d3,ab3]@3 ~@2", // Bb7 Ddim
  AK: "[~@2 ab3 ~@13 eb2@8 ~@8, bb2@60 eb5@3 ab3@41 ~@24, ~@2 d3@4 ~@2 [d3,ab3,bb3]@23 gb4@33, ~@61 bb4@3 ~@64, ~@31 db4@21 ~@12]/4", // Bb7
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.4)

// chords · piano
const piano = note(`<
  ~@21 A B@2 ~ C D E F G H I J K L M N O P Q N R@2 S N O P Q N R@2 S T U@2 V W X@3 Y@3 ~ Z@4 AA AB@2 AC AD ~@3 N O P Q N
  R@2 S N O P Q N R@2 S AE AF AG AH AI AJ AK AL ~@3 AM AN AO AN AP AQ AR
>`.pickRestart({
  A: "~@4 eb5 f5 gb5 bb5", B: "[eb5@9 ~@3 db6@2 bb5@12 ~@6]/2", C: "eb5@2 f5 ab5 gb5@2 db6@2", D: "eb6@25 ~@3 db6@4",
  E: "bb5@5 ~@3", F: "b4@11 ~ gb4@4", G: "f4@21 ~@3 b4@8", H: "bb4@21 ~@3 f4@8", I: "eb4@9 ~@3 bb4@4",
  J: "b4@18 ~@6 gb5@7 ~", K: "f5@5 ~ b4@2", L: "bb4@17 ~@3 bb4@4 eb5@4 f5@4", M: "gb5@2 ab5@2 bb5@11 ~",
  N: "~ bb4@3, bb5, ~ gb5@15, ~ eb5@7, ~@3 b4@13", O: "~@13 b5@3, ab5@2 ab4@3 db6@3, ~ f5@15, ~ db5@7, ~@3 bb4@13",
  P: "~@14 ab5 bb5, bb5@8 bb4@23 ~, ~@2 gb5@29 ~, ~@4 eb5@27 ~, ~@6 b4@25 ~",
  Q: "~ ab4@3, ab5, ~ f5@15, ~ db5@7, ~@3 bb4@13",
  R: "[~@5 ab4@3, ab5@4 ab4@15 bb4@13, ~@2 f5@30 ab5@31 ~, ~@2 db5@15 f5@15, ~@3 bb4@15 db5@14]/2", S: "bb4@6 bb5@9 ~",
  T: "eb6@5 ~@3 eb6@6 ~@18", U: "[~@11 ab4@2 bb4@2 ~ b4@3 db5@4 eb5@4 ~@3 gb5@3 ab5@4 bb5@5 ~@17 db6@3 b5@2]/2",
  V: "~ bb5@3 db6@3 b5@3 ab5@6 ~@10 bb5@3 ~ b5@2", W: "db6@3 ~ eb6@2 db6@3 ~ ab5@5 ~@17",
  X: "[gb5@2 ab5@3 ~ bb5@3 ab5@3 ~ db5@9 ~@6 ab5 ~@2 gb5@2 f5@2 gb5@2 ab5@2 bb5@2 ab5@2 db5@3 ~ db5 ~ db5@2 eb5@2 f5@2 gb5@2 f5@2 db5 ~ bb4@10 ~@25]/3",
  Y: "[~@8 eb5@7 ~ gb5@5 ~@3, ~@5 [gb4,ab4]@6 ~@5, ~@31 bb4@29 bb4@5 ~@31, ~@61 db5@4 ~@31, ~@21 eb5 ~@10]/3", // Gbsus2
  Z: "[eb6@6 ~@19 gb5@6 ~@69 d4@11 ~@15 bb3@2, ~@6 gb5@19 ~@6 gb5@2 eb6@17 ab5@34 eb6@12 d4@2 eb4@7 ~@23, ~@11 f6@27 gb5@30 eb6@10 db6@27 ~@23, ~@17 ab5@27 f6@26 gb5@35 ~@23, ~@19 db6@53 f6@33 ~@23]/4",
  AA: "~@7 eb7, b3@8 b4@2 eb5@2 gb5@3 bb5 b5@2 eb6@2 gb6@2 bb6@2 b6@2 db7@6, ~ eb4@15, ~ gb4@7, ~@3 bb4@13",
  AB: "[db7@27 ~@11 eb5@2 ~@2 gb5@2 ~@14 eb6@6, ~@15 bb4@2 bb4@5 gb5@2 ab5@2 bb5@2 db6@4, ~ ab4, ~@9 db5@7, ~@5 eb5@3]/2",
  AC: "eb6@9 ~@4 eb5 ab5 bb5", AD: "~@12 bb4@17 ~@3, [ab2,ab5]@29 ~@3, ~@3 b4@12 ~",
  AE: "eb5@12 gb5 ~ gb5 ~@2 gb5@3 ab5@2 ab5 ~@2 ab5@3 bb5 ~ bb5 ~",
  AF: "bb5@3 ~ b5 ~ b5 ~ b5@3 ~ db6@2 eb6@2 f6@4 gb6@2 f6@3 ~ eb6@2 ~ db6@3",
  AG: "~ f6@2 gb6@3 ab6@2 ~@4 eb6@2 db6@9 ~@3 ab4 ~ ab4@2 bb4 ~, ~@9 f6@12 ~@11",
  AH: "bb4@2 b4 ~ b4@2 db5 ~ db5 ~ eb5 ~ eb5@2 f5 ~ f5@2 gb5 ~ gb5 ~ ab5 ~ ab5@2 bb5 ~ bb5@2 b5 ~",
  AI: "db6@6 db6@6 eb6@2 ~@2 bb5@2 db6 ~ eb6@2 ~@3 gb6 ~@2 ab6@2 gb6 ~, ~@14 db6@4 ~@2 db6 ~@11",
  AJ: "bb6@2 ~@2 bb5@3 bb4@3 bb5 ~@2 bb6 ~@2 bb6@2 ~ b6@2 ~ bb6 ~ bb6@2 ~ b6@2 ~ db7@2",
  AK: "bb6@11 ~@9 f6@4 eb6@4 db6@3 ~", AL: "bb5@11 ~@21", AM: "eb7@2 gb6@2 ~@2 gb6@2 db7@2 gb6@2 bb6@3 ~@17",
  AN: "ab6@2 bb5@2 ~@2 bb5@2 f6 ~ ab5@2 eb6@10 ~@10", AO: "eb7 gb6 ~ gb6 db7 gb6 bb6@8 ~@2",
  AP: "eb7@2 gb6@2 ~@2 gb6@2 db7@2 gb6@2 bb6@11 ~@9", AQ: "ab6 bb5 ~ bb5 f6 ab5 eb6@4 ~@6",
  AR: "eb7 gb6 ~ gb6 db7 gb6 bb6@3 ~@7",
})).s("gm_piano").gain(0.33)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note("<~ A B@2 ~@97 A B@2 ~@6>".pickRestart({
  A: "~@3 [c4,f4]@2 [ab3,db4]@2 [gb3,bb3]", B: "[[db3,gb3]!2 eb3 gb2 ~@2 [gb4,bb4,eb5]@10, ~@16 eb2@47 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.14).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@76 A@2 B A B A B A@3 B A B A B A@8 C ~@10>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@5 x ~@8 x", C: "x!2",
})).gain(0.59)

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

// drums · snare
const snare = s("sd").struct("<~@75 [~@3 x] [~ x]!11 [~@2 x!2] [~ x]!3 [~@2 x ~@2 x ~@10] [~ x ~ x]!7 ~@11>").gain(0.59)

// drums · low tom
const low_tom = s("lt").struct("<~@99 [~ x ~@2] ~@10>").gain(0.39)

// drums · hihat
const hihat = s("hh").struct("<~@76 A B C D C B C E A B C E C B C F G H@3 G H G F ~@10>".pickRestart({
  A: "~@2 x ~ x!4", B: "x!3 ~ x ~ x!2", C: "x ~ x ~ x!4", D: "x ~ x ~ x ~@3 x ~ x ~ x ~ x!2", E: "x!3 ~ x!4",
  F: "x!3 ~@5", G: "~ x!4 ~ x!2", H: "x!5 ~ x!2",
})).gain(0.26)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@76 A B A ~ A B A ~ A B A ~ A B A ~@19>".pickRestart({
  A: "~ x ~@6", B: "~@5 x ~@2",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@75 [~@7 x!2 ~@2 x ~@4] ~@7 [~@14 x!2] ~@7 [~@6 x!2] ~@18>").gain(0.39)

// drums · open hat
const open_hat = s("oh").struct("<~@76 [~@3 x ~@4]!15 ~ [~@5 x ~@2]!7 ~@11>").gain(0.26)

// drums · high tom
const high_tom = s("ht").struct("<~@75 [~ x ~@6] ~@7 [~@11 x ~@4] ~@7 [~@6 x ~ x ~ x!2 ~@4] ~@18>").gain(0.46)

// … 9 more lines

More by Mina