Strudelify

Leather and Lace

Stevie Nicks

KeyE♭ majorTempo150 bpm
0:00/0:00
// Leather and Lace — Stevie Nicks
// 150 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 D E F G H A I J K L M N O P I Q R L S T@2 U I Q V L S D W P X Y O E Z N AA P B Q O AB Z V D AC N AD R L O AE K
  AF R AC K L R L AG AH@2 AI AJ X AK D AD S G AL P X Y N AM S AN AL AO X J N AP Z N AQ AR I Y K L Q AS AT AC K AC K AE D
  L N L N AE D AE O AC N AU AC AV G AW E AX R N E S N R ~@3
>`.pickRestart({
  A: "eb2@5 bb1@2 c2", B: "db2@5 ab1@2 bb1", C: "c2@5 c2@2 ab1", D: "bb1@5 f1@2 g1", E: "ab1@3 f1", F: "eb2@7 g1",
  G: "bb1@3 ab1", H: "bb2@3 d2", I: "db2@7 bb1", J: "c2@5 f1@2 g1", K: "bb1@5 bb1@2 f1", L: "ab1@3 ab1", M: "g1@7 g1",
  N: "bb1@3 g1", O: "bb1@3 bb1", P: "eb2@7 c2", Q: "c2@7 g1", R: "bb1@7 g1", S: "g1@3 g1",
  T: "[bb1@15 ~ bb2@12 c2@4, ~@15 bb1@2 ~@15]/2", U: "eb2@3 bb1", V: "bb1@5 f1 g1@2", W: "ab1@5 ab1 bb1@2",
  X: "db2@3 bb1", Y: "c2@3 g1", Z: "g1@5 bb1@2 g1", AA: "bb1@5 ab1@2 bb1", AB: "ab1@7 f1", AC: "ab1@7 ab1",
  AD: "ab1@5 eb2@2 ab1", AE: "ab1@5 f1@2 ab1", AF: "ab1@5 f1 ab1@2", AG: "bb1@11 ~ f2@4, ~@11 e2@2 ~@3",
  AH: "[bb2@21 ~@7 bb2@4]/2", AI: "~@7 d2, bb2", AJ: "eb2@3 c2", AK: "c2@3 c2", AL: "bb1@3 d2", AM: "ab1@5 ab1@2 f1",
  AN: "bb1@5 f1@2 ab1", AO: "eb2@7 bb1", AP: "a1@5 e1 gb1@2", AQ: "bb1@7 bb1", AR: "eb2@5 eb2@2 bb1", AS: "bb1@7 ab1",
  AT: "bb1@5 ab1@2 f1", AU: "bb1@5 ab1 f1@2", AV: "g1@5 bb1@2 eb2", AW: "bb1@3 f1", AX: "g1@5 f1 g1@2",
})).s("gm_electric_bass_finger").gain(0.28)

// other · piano
const piano = note(`<
  ~@5 A B ~@61 C D@2 E@2 F G@2 H I J K@2 L M N@2 O P@2 Q R@2 S T@2 U@3 V W X Y@4 Z AA@2 AB AC@4 AD AE AF AG@2 AH@2 AG@2
  AI@2 AJ@2 AI@2 AK@2 AL@3
>`.pickRestart({
  A: "c5@13 ~@3", B: "bb5@2 eb6@13 ~", C: "~@2 g5@2 g5@3 eb5", D: "[f5@4 eb5@15 ~@5 eb5@2 eb5@5 ~]/2",
  E: "[ab5@2 g5@2 f5@2 eb5@3 ~ c5!2 eb5 f5@3]/2", F: "eb5@2 eb5 eb5@2 bb4 c5@2", G: "[c5@2 bb4 bb4@9 ~@4]/2",
  H: "~@3 bb4 g5 g5@3", I: "f5 eb5@6 ~", J: "~@4 eb5@2 eb5@2 eb5@3 ~ eb5@3 ~",
  K: "[[eb5,ab5]@4 [d5,g5]@4 [c5,f5]@4 [bb4,eb5]@7 ~@2 b4 c5@2 d5@2 bb5@6]/2", L: "eb5@2 eb5@3 ~ eb5@4 bb4@2 c5@4",
  M: "bb4@3 ~@3 bb4 c5", N: "[bb4@10 ~@6 g5@4 bb5@4 g5@5 ~ eb5@2, bb2@5 ~@3]/2", O: "f5 eb5@3",
  P: "[eb5@2 eb5@5 ~ eb5@3 ~ eb5@2 ab5@5 ~ g5@2 g5@4 g5@5 ~]/2", Q: "~@4 g5@3 ~ f5@2 eb5@5 ~, ~@2 c5@5 ~",
  R: "eb5@5 ~ eb5@4 bb4@5 ~", S: "f5@13 ~@3", T: "[g5@4 ab5@4 bb5@4 bb5@2 f5@5 ~ eb5@9 ~ bb4@2]/2",
  U: "[eb5@3 ~ eb5@2 eb5@5 ~ eb5@2 ab5@5 ~ g5@3 ~ f5 g5 ~ f5 ~@4 [ab4,c5]@13 ~@3, ~@28 eb5@17 ~@3]/3", // Ab
  V: "eb5@2 eb5@3 ~ eb5@4 bb4@2 c5@3 ~", W: "c5 bb4@4 ~ bb4 c5", X: "bb4@3 ~@13",
  Y: "[eb5@2 ~@6 eb5@2 ~@10 g5@3 ~ f5@2 ~@14 c5@3 ~ c5@2 [d4,f4,bb4]@15 ~@3, ~@2 eb5@5 ~@3 f5@9 ~@7 eb5@14 ~@24, ~@2 c5@3 ~@2 [bb4,d5]@7 eb4@7 ~@11]/4", // Bb
  Z: "~@4 eb5@3 ~ eb5@2 eb5@2 eb5@3 ~, ~@2 c5@5 ~",
  AA: "[f5@3 ~ g5@3 ~ f5@2 eb5@10 c5@4 c5@4 eb5@4, ~@2 [bb4,d5]@5 ~@9]/2", AB: "c5@3 ~ bb4@10 ~@2, [d4,f4]@13 ~@3",
  AC: "[~@6 g5@2 g5@2 g5@2 g5@2 g5@5 ~ g5@6 ~@2 [c5,eb5,ab5]@7 ~ g5@3 ~ eb5@3 ~ c5@2 [d4,f4,bb4]@15 ~@3, ~@8 [ab4,c5]@5 ~ [bb4,d5]@12 ~@38]/4", // Ab Bb Ab Bb
  AD: "~@4 c5@2 c5@2 c5@3 ~ c5@3 ~", AE: "c5@3 ~ bb4@6 ~@2 g5@4, [d4,f4]@5 ~@3", AF: "f5 ~@2 c5, c5@5 ~@3, ~ g5@3",
  AG: "[bb4@26 ~@2 f5@3 ~]/2", AH: "[f5@5 ~@11 bb4@10 c5@5 ~, c5@13 ~@19, ~@3 eb5@10 ~@3]/2",
  AI: "[f5@5 ~@11 bb4@10 c5@5 ~, ~@3 eb5@10 ~@3]/2", AJ: "[bb4@13 ~ ab5@2]/2", AK: "[bb4@31 ~]/2", AL: "[eb3@41 ~@7]/3",
})).s("gm_piano").gain(0.47)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H A B I J K L M J N O P Q E L J R A O P J S L J R A T U J K F V H W O X D S Y M D K Z E AA E Q R Q AB
  D AB J E AC K AD AE AF M N O AG M E AH H M N T X D AI F AJ J AK B AL J AM AN H AO AP AQ X M AR C AS M E J AI J AT AA
  AT M AI M R D E D E M D E L D AC E AU AV J E L M J ~@3
>`.pickRestart({
  A: "eb3", B: "db3@3 db3", C: "c3", D: "bb2@3 g2", E: "ab2@3 ab2", F: "g2@3 g2", G: "bb2@3 c3", H: "bb2@3 d3",
  I: "c3@3 g2", J: "bb2@3 bb2", K: "ab2", L: "g2@3 c3", M: "bb2", N: "eb3@3 eb3", O: "db3@3 bb2", P: "c3@2 f2 g2",
  Q: "bb2@2 f2 g2", R: "ab2@3 c3", S: "ab2@2 bb2 ab2", T: "db3@2 ab2 bb2", U: "c3@3 ab2", V: "bb2@2 eb3 c3",
  W: "eb3@3 c3", X: "c3@3 c3", Y: "g2@2 d3 c3", Z: "bb2@2 bb2 f2", AA: "bb2@3 f2", AB: "ab2@2 f2 ab2",
  AC: "bb2@2 c3 bb2", AD: "bb2@2 g2 bb2 f2 bb2 bb2@2", AE: "bb2@2 c3 bb2 g2 bb2 bb2@2", AF: "bb2@2 bb2!2 f2 bb2 bb2@2",
  AG: "c3@2 eb3 c3", AH: "g2@2 bb2 g2", AI: "ab2@3 f2", AJ: "bb2@2 d3 c3", AK: "eb3@3 bb2", AL: "c3@3 bb2",
  AM: "a2@3 a2", AN: "g2@3 eb3", AO: "bb2@2 ab2 bb2", AP: "eb3@2 bb2 c3", AQ: "db3@2 eb3 db3", AR: "ab2@2 eb3 ab2",
  AS: "bb2@2 bb2 eb3", AT: "ab2@2 eb3 c3", AU: "g2@3 bb2", AV: "bb2@3 eb3",
})).s("gm_acoustic_guitar_steel").gain(0.36)

// chords · acoustic guitar steel
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D E F G H A I J K L M N O@2 P Q R S T U V W X Y Z AA AB AC AD AE AF AG R E AH AI AJ AK AD AL K E T AM AN AO AP
  S AP AQ AR L AS AO AP AO AT L AP AA AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BC BK BL BM BN BO BP BJ BQ BD BR
  BS BT BU BV BJ BW BX B BY BZ CA BZ CB BZ CC CD CC CE CF BC CA BC CC CE CG CH E T CI CJ AO CK CL AD AO F CM CN ~@3
>`.pickRestart({
  A: "~@7 eb4, eb4@3 eb4@4 ~, ~ bb4@4 bb4@3, ~ bb3@2 bb3", B: "~@7 eb4, eb4@7 ~, ~@3 bb3@5, ~@5 f4@3",
  C: "~@7 ab3, ab3@3 ab3@4 ~, ~ c4@4 c4@3, ~ eb4@2 eb4", D: "~@7 eb4, eb4@7 ~, ~@3 f4@5, ~@5 bb3@3",
  E: "~@7 ab3, ab3@3 ab3@4 ~, ~ ab4@4 ab4@3, ~ eb4@2 eb4", F: "~@7 bb3, bb3@7 ~, ~@3 eb4@5, ~@5 g3@3",
  G: "~@7 bb3, ab3@5 ab3@3, ~ f4@5 f4@2, ~ eb4@3, ~@3 bb3@4 ~", H: "~@7 bb3, bb3@7 ~, ~@3 ab3@5, ~@5 eb4@3",
  I: "~@7 ab3, f4, ~@3 eb4@5, ~@5 bb3@3", J: "~@7 eb4, eb4@3 eb4@4 ~, ~ c4@4 c4@3, ~ ab3@2 ab3",
  K: "~@7 bb3, bb3@7 ~, ~@3 f4@5, ~@5 eb4@3", L: "~@7 eb4, eb4@3 eb4@4 ~, ~ ab4@4 ab4@3, ~ ab3@2 ab3",
  M: "~@7 bb3, bb3@7 ~, ~@3 eb4@5, ~@5 bb4@3", N: "~@7 ab3, f4@3 f4@5, ~ bb3@4 bb3@3, ~@2 ab3@5 ~, ~@3 eb4",
  O: "[~@15 bb3, bb3@8 bb4@2 eb5@9 ~ eb4@8 eb4@4, ~@2 eb4@12 d5@9 ~@9, ~@2 f4@6 bb3@3 bb3@4 ~, ~@3 ab4@6 bb4@4 bb4@3]/2",
  P: "~@7 ab3, ab3@7 ~, ~@3 f4@5, ~@5 eb4@3", Q: "~@7 ab3, ab3@3 ab3@4 ~, ~ eb4@4 eb4@3, ~ c4@2 c4",
  R: "~@7 bb3, bb3@7 ~, ~@3 eb4@5, ~@5 f4@3", S: "~@7 ab4, ab4@3 ab4@4 ~, ~ eb4@4 eb4@3, ~ ab3@2 ab3",
  T: "~@7 g3, g3@7 ~, ~@3 eb4@5, ~@5 bb3@3", U: "~@7 ab3, eb4@5 eb4@3, ~ f4@5 f4@2, ~ bb3@3, ~@3 ab3@4 ~",
  V: "~@7 eb4, eb4@7 ~, ~@3 ab3@5, ~@5 bb3@3", W: "~@7 bb4, bb4@3 bb4@4 ~, ~ eb4@4 eb4@3, ~ bb3@2 bb3",
  X: "~@7 bb3, ab3, ~@3 eb4@5, ~@5 f4@3", Y: "~@7 c4, c4@3 c4@4 ~, ~ eb4@4 eb4@3, ~ ab3@2 ab3",
  Z: "~@7 f4, f4@7 ~, ~@3 eb4@5, ~@5 bb3@3", AA: "~@7 ab4, ab4@3 ab4@4 ~, ~ ab3@4 ab3@3, ~ eb4@2 eb4",
  AB: "~@7 g3, g3@7 ~, ~@3 bb3@5, ~@5 eb4@3", AC: "~@7 f4, f4@3 f4@4 ~, ~ ab3@4 ab3@3, ~ bb3@2 bb3",
  AD: "~@7 bb3, bb3@7 ~, ~@3 eb4@5, ~@5 ab3@3", AE: "~@7 bb4, bb4@3 bb4@4 ~, ~ bb3@4 bb3@3, ~ eb4@2 eb4",
  AF: "~@7 ab3, ab3@7 ~, ~@3 f4@5, ~@5 bb3@3", AG: "~@7 eb4, eb4@3 eb4@4 ~, ~ ab3@4 ab3@3, ~ c4@2 c4",
  AH: "~@7 bb3, bb3@7 ~, ~@3 g3@5, ~@5 eb4@3", AI: "~@7 bb3, bb3@3 bb3@4 ~, ~ ab3@4 ab3@3, ~ eb4@3, ~@3 f4",
  AJ: "~@7 bb3, f4, ~@3 ab3@5, ~@5 eb4@3", AK: "~@7 bb3, bb3@3 bb3@4 ~, ~ eb4@4 eb4@3, ~ bb4@2 bb4",
  AL: "~@7 c4, c4@3 c4@4 ~, ~ ab3@4 ab3@3, ~ eb4@2 eb4", AM: "~@7 f4, eb4@3 eb4@5, ~ bb3@4 bb3@3, ~ ab3@2 ab3",
  AN: "~@7 eb4, bb3, ~@3 f4@5, ~@5 ab3@3", AO: "~@7 ab3, ab3@3 ab3@4 ~, ~ eb4@4 eb4@3, ~ ab4@2 ab4",
  AP: "~@7 bb3, bb3@7 ~, ~@3 f4@5, ~@5 bb4@3", AQ: "~@7 eb4, eb4@3 eb4@4 ~, ~ ab3@4 ab3@3, ~ ab4@2 ab4",
  AR: "~@7 f4, f4@7 ~, ~@3 bb4@5, ~@5 bb3@3", AS: "~@7 bb3, bb3@7 ~, ~@3 bb4@5, ~@5 f4@3",
  AT: "~@7 bb4, bb4@7 ~, ~@3 bb3@5, ~@5 f4@3", AU: "bb4@3 f4@2 ab3 bb3@2",
  AV: "~@2 eb4 d4@2 eb4 ~ bb3, bb3@3 ~@5, ~ f4@2 ~@3 bb4@2", AW: "d4@2 f4 eb4@2 ab3 f4@2",
  AX: "~@7 eb4, bb3@5 bb3@3, ~ f4@5 f4@2, ~ ab3@3, ~@3 eb4@4 ~", AY: "~@7 eb4, eb4@7 ~, ~@3 bb3@5, ~@5 bb4@3",
  AZ: "~@7 bb3, bb3@3 bb3@4 ~, ~ f4@7, ~ ab3@2 ab3, ~@5 eb4@3", BA: "~@7 c4, c4@7 ~, ~@3 eb4@5, ~@5 ab3@3",
  BB: "~@7 f4, f4@3 f4@4 ~, ~ bb3@4 bb3@3, ~ eb4@2 eb4", BC: "~@7 ab4, ab4@7 ~, ~@3 ab3@5, ~@5 eb4@3",
  BD: "~@7 bb3, bb3@3 bb3@4 ~, ~ eb4@4 eb4@3, ~ g3@2 g3", BE: "~@7 eb4, f4, ~@3 ab3@5, ~@5 bb3@3",
  BF: "~@7 ab3, eb4, ~ f4@4 f4@3, ~ bb3@2 bb3, ~@3 ab3@4 ~", BG: "~@7 bb4, bb4@7 ~, ~@3 bb3@5, ~@5 eb4@3",
  BH: "~@7 bb3, bb3@3 bb3@4 ~, ~ ab3@7, ~ eb4@2 eb4, ~@5 f4@3", BI: "~@7 eb4, eb4@7 ~, ~@3 ab3@5, ~@5 c4@3",
  BJ: "~@7 f4, f4@3 f4@4 ~, ~ eb4@4 eb4@3, ~ bb3@2 bb3", BK: "~@7 g3, g3@3 g3@4 ~, ~ eb4@4 eb4@3, ~ bb3@2 bb3",
  BL: "~@7 bb3, eb4, ~@3 f4@5, ~@5 ab3@3", BM: "~@7 ab3, bb3@3 bb3, ~ eb4@4 eb4@3, ~@2 ab3@5 ~, ~@3 f4@5",
  BN: "~@7 eb4, eb4@7 ~, ~@3 bb4@5, ~@5 bb3@3", BO: "~@7 ab3, f4@3 f4, ~ bb3@4 bb3@3, ~ eb4@3, ~@3 ab3@4 ~",
  BP: "~@7 ab3, ab3@7 ~, ~@3 c4@5, ~@5 eb4@3", BQ: "~@7 a3, a3@7 ~, ~@3 e4@5, ~@5 a4@3",
  BR: "~@7 bb3, f4, ~@3 eb4@5, ~@5 ab3@3", BS: "~@7 f4, ab3@5 ab3@3, ~ eb4@7, ~ bb3@2 bb3, ~@3 f4@4 ~",
  BT: "~@7 bb3, bb3@7 ~, ~@3 bb4@5, ~@5 eb4@3", BU: "~@7 bb3, ab3@3 ab3@5, ~ bb3@6 ~, ~ f4@2 f4, ~@5 eb4@3",
  BV: "~@7 ab3, ab3@7 ~, ~@3 eb4@5, ~@5 c4@3", BW: "~@7 ab3, ab3@7 ~, ~@3 ab4@5, ~@5 eb4@3",
  BX: "~@7 eb4, eb4@3 eb4@4 ~, ~ bb3@4 bb3@3, ~ g3@2 g3",
  BY: "~@7 eb4, bb3@3 bb3, ~ ab3@4 ab3@3, ~@2 eb4@5 ~, ~@3 f4@5", BZ: "~@7 ab3, ab3@7 ~, ~@3 eb4@5, ~@5 ab4@3",
  CA: "~@7 bb3, bb3@3 bb3@4 ~, ~ bb4@4 bb4@3, ~ f4@2 f4", CB: "~@7 bb4, bb4@3 bb4@4 ~, ~ bb3@4 bb3@3, ~ f4@2 f4",
  CC: "~@7 bb3, bb3@3 bb3@4 ~, ~ f4@4 f4@3, ~ bb4@2 bb4", CD: "~@7 eb4, eb4@7 ~, ~@3 ab4@5, ~@5 ab3@3",
  CE: "~@7 eb4, eb4@7 ~, ~@3 ab3@5, ~@5 ab4@3", CF: "~@7 f4, f4@3 f4@4 ~, ~ bb3@4 bb3@3, ~ bb4@2 bb4",
  CG: "~@7 f4, f4@3 f4@4 ~, ~ eb4@5 eb4@2, ~ ab3@3, ~@5 bb3@3", CH: "~@7 eb4, bb3, ~@3 ab3@5, ~@5 f4@3",
  CI: "~@7 f4, f4@7 ~, ~ bb3@4 bb3@3, ~ ab3@2 ab3, ~@3 eb4@5", CJ: "~@7 f4, f4@7 ~, ~@3 bb3@5, ~@5 eb4@3",
  CK: "~@7 eb4, eb4@7 ~, ~@3 bb3@5, ~@5 g3@3", CL: "~@7 ab3, eb4@3 eb4@5, ~ ab3@6 ~, ~ bb3@2 bb3, ~@5 f4@3",
  CM: "~@7 ab3, ab3@3 ab3@4 ~, ~ bb3@4 bb3@3, ~ f4@3, ~@3 eb4", CN: "~@7 f4, f4@7 ~, ~@3 eb4@5, ~@5 ab3@3",
})).s("gm_acoustic_guitar_steel").gain(0.28)

// chords · acoustic guitar steel
const acoustic_guitar_steel_3 = note("<~@25 A B C D C A D C A B C D C A D@2 A B C D C A D@2 ~@83>".pickRestart({
  A: "~ eb4@15, [eb3,bb3]", B: "~ db4@15, [db3,ab3]", C: "~ ab3@15, [ab2,eb3]", D: "~ bb3@15, [bb2,f3]",
})).s("gm_acoustic_guitar_steel").gain(0.19)

// chords · acoustic guitar steel
const acoustic_guitar_steel_4 = note(`<
  ~@49 A B C D E F C F E B E B C B C G ~@2 H I J K L M N J O P Q K L A R S T P J K L U V J W I J X L M N Y J C B Z F E B
  C F Z F Z F E F E S J A R J@2 C AA J Y A V J AB AC@2 ~
>`.pickRestart({
  A: "[ab3,eb4,ab4]@3 eb4 ~@2 ab3@2, ~@3 ab4@5, ~@3 ab3@3 ~@2, ~ eb4", B: "[bb3,f4,bb4]@3 bb3@3 bb3@2, ~@3 [f4,bb4]@5",
  C: "[ab3,eb4,ab4]@3 ab3@3 ab3@2, ~@3 [eb4,ab4]@5", D: "[bb3,f4,bb4]@3 [bb3,f4,bb4]@2 bb3 bb3@2, ~@5 [f4,bb4]@3",
  E: "[ab3,eb4,ab4]@3 eb4@3 eb4@2, ~@3 [ab3,ab4]@5", F: "[bb3,f4,bb4]@3 f4 ~@2 bb3@2, ~@3 bb4@5, ~@3 bb3@3 ~@2, ~ f4",
  G: "~ bb4@6 ~@9, [bb3,f4]@3 ~@5", H: "~@3 eb4, ~ f4", I: "[bb3,eb4,bb4]@3 bb3@3 bb3@2, ~@3 [eb4,bb4]@5",
  J: "[ab3,bb3,eb4,f4]@3 bb3@3 bb3@2, ~@3 [ab3,eb4,f4]@5", K: "[ab3,c4,eb4]@3 c4@3 c4@2, ~@3 [ab3,eb4]@5",
  L: "[bb3,eb4,f4]@3 bb3@3 bb3@2, ~@3 [eb4,f4]@5", M: "[ab3,eb4,ab4]@3 [ab3,eb4,ab4]@2 ab3 ab3@2, ~@5 [eb4,ab4]@3",
  N: "[g3,bb3,eb4]@3 bb3 ~@2 g3@2, ~@3 eb4@5, ~@3 g3@3 ~@2, ~ bb3", // Eb
  O: "[ab3,bb3,eb4,f4]@3 ab3@3 ab3@2, ~@3 [bb3,eb4,f4]@5", // Absus2 Bbsus4
  P: "[bb3,eb4,bb4]@3 [bb3,eb4,bb4]@2 bb3 bb3@2, ~@5 [eb4,bb4]@3", // Eb5
  Q: "[ab3,bb3,eb4,f4]@3 ~ db4@2 bb3@2, ~@3 [ab3,eb4,f4]@5, ~@3 bb3@3 ~@2", // Absus2 Fm7
  R: "[g3,bb3,eb4]@3 g3@3 g3@2, ~@3 [bb3,eb4]@5", // Eb Eb5
  S: "[ab3,bb3,eb4,f4]@3 eb4 ~@2 bb3@2, ~@3 [ab3,f4]@5, ~@3 bb3@3 ~@2, ~ eb4", // Absus2 Db
  T: "[ab3,bb3,eb4,f4]@3 eb4@3 eb4@2, ~@3 [ab3,bb3,f4]@5", U: "[g3,eb4,f4]@3 g3@3 g3@2, ~@3 [eb4,f4]@5",
  V: "[g3,bb3,eb4]@3 bb3@3 bb3@2, ~@3 [g3,eb4]@5", W: "~@3 bb4@13, ab3@15 ~, ~ [bb3,eb4]@15, ~ f4@7",
  X: "[ab3,c4,eb4]@3 c4 ~@2 ab3@2, ~@3 eb4@5, ~@3 ab3@3 ~@2, ~ c4", // Ab
  Y: "[ab3,bb3,eb4,f4]@3 [ab3,bb3,eb4,f4]@2 bb3 bb3@2, ~@5 [ab3,eb4,f4]@3", // Absus2 Fm7
  Z: "[ab3,eb4,ab4]@3 ab3 ~@2 eb4@2, ~@3 ab4@5, ~@3 eb4@3 ~@2, ~ ab3", // Ab5
  AA: "[g3,bb3,eb4]@3 eb4 ~@2 bb3@2, ~@3 g3@5, ~@3 bb3@3 ~@2, ~ eb4", // Eb
  AB: "[ab3,bb3,eb4,f4]@3 [ab3,bb3,eb4,f4]@3 [ab3,bb3,eb4,f4]@2", AC: "[~@3 bb4@29, eb3, ~ [g3,bb3]@31, ~ d4@15]/2",
})).s("gm_acoustic_guitar_steel").gain(0.25)

// other · string ensemble 2
const string_ensemble_2 = note(`<
  ~@68 A B@2 C D E@4 F G C H@2 I ~ J K@5 ~@2 L@2 M@2 N O@2 P@6 Q@7 R@2 S T@4 U@4 V@7 ~@2
>`.pickRestart({
  A: "~@2 g4@5 eb4", B: "[f4@3 ~ eb4@19 ~ eb4@8]/2", C: "ab4 g4 f4 eb4", D: "c4@5 bb3@3",
  E: "[eb4@8 ~@2 bb3@2 c4@8 bb3@31 ~@3 bb3@2 g4@8]/4", F: "f4 ~ eb4@14", G: "~ eb4@3",
  H: "[bb3@6 c4@2 d4@2 eb4@15 ~ bb3@2 c4@4]/2", I: "bb3", J: "bb4@13 ~ eb4@2",
  K: "[f4@4 eb4@26 ab4@6 g4@16 g4@4 f4@2 eb4@11 ~@11]/5", L: "[g4 ab4@3 bb4@2 ab4 g4@3 eb4@4 ~ bb3]/2",
  M: "[~@7 ab4@3 g4@2 f4@2 eb4@2, eb4 ~]/2", N: "c4", O: "[eb4@5 bb3 c4@3 bb3@7]/2",
  P: "[bb3@19 ~ eb4@10 f4@5 ~ g4@20 c4@6 bb3@22 eb4@12]/6",
  Q: "[f4@2 g4@2 f4 eb4@5 c4@8 bb3@9 g4@11 ab4@4 g4@2 eb4@2 ~ bb3@9, ~@23 c4 ~@4]/7", R: "[~ c4@4 bb3@2 g4]/2",
  S: "f4 eb4@2 c4", T: "[bb3@14 f4@5 eb4@10 c4@3]/4", U: "[bb3@28 f4@9 ~ eb4@20 c4@6]/4",
  V: "[bb3@27 ~ f4@9 ~ eb4@20 ~@6 bb3@33 ~@15, ~@29 c4@4 ~@23]/7",
})).s("gm_string_ensemble_2").gain(0.3)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~@25 A B C D E F G H A I C J E F G@2 A I C J E K G B E L E L E L E L E L E L E L E M N O I A B C J E K B@2 A B P J E F
  B@2 A B C D Q R B I A G P D E R I G E L E L E L E L E L E L E L E I@2 E K G B E K G I E R B@2 ~@3
>`.pickRestart({
  A: "[bb3,eb4,bb4]", B: "[bb3,eb4,f4,ab4]", C: "[ab3,c4,eb4]", D: "[bb3,eb4,f4]", E: "[ab3,eb4,ab4]",
  F: "[g3,bb3,eb4]", G: "[eb4,f4,ab4,bb4]", H: "[eb4,ab4,bb4]", I: "[ab3,bb3,eb4,f4]", J: "[eb4,f4,bb4]",
  K: "[eb4,g4,bb4]", L: "[bb3,f4,bb4]", M: "[bb3,f4,bb4]@3 [bb3,eb4,f4]@2 [d4,f4,ab4] [bb3,f4,bb4]@2",
  N: "[eb4,f4,bb4]@3 [ab3,d4,f4]@2 [eb4,f4,bb4] [bb3,f4,bb4]@2", // Ebsus2 Ddim Ebsus2 Bb5
  O: "[ab3,d4,f4]@2 [bb3,f4,bb4] [bb3,eb4,f4]@2 [ab3,d4,f4] [bb3,f4,bb4]@2", P: "[c4,eb4,ab4]", Q: "[a3,e4,a4]",
  R: "[bb3,eb4,g4]", // Eb
})).s("gm_string_ensemble_2").gain(0.16)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B@2 C D E F G@2 ~@6 H I ~@6 J K ~@5 L M N@2 ~@5 H O ~@6 P Q R ~@82
>`.pickRestart({
  A: "~@7 bb3", B: "[eb4@11 ~ f4 g4@3, ~@24 e4 ~@7]/2", C: "eb4@3 c4", D: "bb3@3 ~ [a3,bb3] c4@3",
  E: "eb3@4 f3 ~ g3@2 bb3@8", F: "g3@2 bb3@5 ~ [a3,bb3]@2 c4@2 bb3@4", G: "[bb3@6 ab3@4 bb3@4 bb3@4 bb4@13 ~]/2",
  H: "~@5 [g3,ab3] c4@2", I: "bb3 [f4,bb4]@3", J: "~@11 g3 ab3@2 bb3@2", K: "bb4@11 ~@5",
  L: "bb3@2 eb4 g4@2 g3@3, a3 ~@15", M: "~@2 bb2@4 ab3 c4, bb3@9 ~@7", N: "[~@8 bb4@13 ~@11, bb3@13 ~@19]/2",
  O: "bb3 bb4@3", P: "~@7 eb4", Q: "[bb4,eb5] [ab4,d5] [g4,c5] [bb4,eb5]", R: "[eb4,g4] [bb3,eb4]@3",
})).s("gm_acoustic_guitar_nylon").gain(0.47)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B@4 A B@2 A B A@2 B@2 A@2 B@2 A@2 B@2 A C A B@3 A B@3 A@3 B@2 A B A@2 B@3 A@2 B@3 A@2 B@2 A@2 B@2 A@2 B@7 A@4 B
  A@3 B@3 A@2 B@3 A B A B A B@3 A B@4 A@5 B@2 A B A B A B@2 A B@5 A B@2 A@4 B A@4 B ~@3
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x", C: "x ~@2 x ~ x ~@2",
})).gain(0.36)

// drums · rim
const rim = s("rim").struct("<~ [~ x]!39 ~ [~ x]!88 ~@3>").gain(0.36)
// … 31 more lines

More by Stevie Nicks