Strudelify

Heaven Beside You

Alice in Chains

KeyE♭ minorTempo117 bpm
0:00/0:00
// Heaven Beside You — Alice in Chains
// 117 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 152 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): back up rythim guitar I.
setcpm(117/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.

// chords · acoustic guitar steel · "rythim guitar I"
const acoustic_guitar_steel = note(`<
  A@2 B@2 C@2 D@2 E@2 D@2 E@2 F@2 G@2 H@2 G@2 E@2 ~@16 I@8 J@2 K@2 L@4 H@2 C@2 M@2 C@2 F@4 D@2 N@2 ~@16 O@2 P@2 Q@8 R
  S@8 T@3 ~@16 U@8 V@7 W@3 ~@6
>`.pickRestart({
  A: "[~@6 eb3 ab2@2 eb3 db3 eb3 ab2 ~@2 db3, eb2@15 ~, ~ gb3@7, ~@13 gb2@2 ~, ~@7 ab2]/2",
  B: "[~@6 eb3 ab2@2 eb3 db3 eb3 ab2 gb2 db3@2, eb2@14 ab2 ~, ~ gb3@7]/2",
  C: "[~@6 eb3 ab2@2 eb3 db3 eb3 ab2 gb2 ~ db3, eb2@7 ab2, ~ gb3@7]/2",
  D: "[~@6 eb3 ab2@2 eb3 db3 eb3 ab2 gb2 ~ db3, eb2@15 ~, ~ gb3@7, ~@7 ab2]/2",
  E: "[~@6 eb3 ab2@2 eb3 ~ eb3 ab2 gb2 ~ db3, eb2@15 ~, ~ gb3@7, ~@5 db3 ~ ab2]/2",
  F: "[~@6 eb3 ab2@2 eb3 ~ eb3 ab2 gb2 ~ db3, eb2@7 ab2, ~ gb3@7, ~@5 db3 ~@2]/2",
  G: "[~@6 eb3 ~@2 eb3 ~ eb3 ab2 gb2 ~ db3, eb2@15 ~, ~ gb3@7, ~@7 ab2@3 db3@2 ~@2 ab2@2]/2",
  H: "[~@6 eb3 ab2@2 eb3 ~ eb3 ab2 ~@2 db3, eb2@15 ~, ~ gb3@7, ~@10 db3@2 ~ gb2@2 ~, ~@7 ab2]/2",
  I: "[~@3 g2 ~@3 g2 ~@3 ab2 ~@3 ab2 ~@3 bb2 ~@3 bb2 ~@3 b2 ~@3 b2 ~@3 g2 g2@2 ~ g2 ~@3 ab2 ab2@2 ~ ab2 ~@3 bb2 bb2@2 ~ bb2 bb2@2 ~ bb2 bb2@2 gb3 bb2, g2@3 ~ g2@3 ~ ab2@3 ~ ab2@3 ~ bb2@3 ~ bb2@3 ~ b2@3 ~ b2@3 ~ g2@3 ~@5 ab2@3 ~@5 bb2@3 ~@13, ~@2 gb3@4 gb3@4 gb3@4 gb3@4 gb3@4 gb3@4 gb3@4 gb3@4 gb3@4 gb3@3 ~ gb3@3 ~ gb3@3 ~ gb3@3 ~ gb3@3 ~ gb3@3 ~@3]/8",
  J: "[~@8 gb3!2 db4@2 f3!2 db4@2, eb2@15 ~, [bb3,eb4] ~, gb3@7 ~ bb2@6 ~@2, ~@4 eb3@11 ~]/2", // Eb5
  K: "[~@8 gb3!2 db4@2 f3!2 db4@2, eb2@7 ~, eb4 ~, [gb3,bb3]@7 ~ bb2@6 ~@2, ~@2 eb3@5 ~]/2", // Gb
  L: "[~@8 gb3!2 db4@2 f3!2 ~@10 gb3!2 db4@2 f3!2 db4 ~, eb2@14 ~ eb2@12 ~@5, [gb3,bb3,eb4]@7 ~ bb2@6 ~@6 eb3@7 ~@5, ~@4 eb3@10 db4@2 [gb3,bb3,eb4]@7 ~ bb2@3 ~@5]/4", // Ebm
  M: "[~@6 eb3 ab2@2 eb3 db3 eb3 ab2 gb2 ab2 db3, eb2@7 ~, ~ gb3@7]/2",
  N: "[~@6 eb3 ab2@2 eb3 db3 eb3 ab2 gb2 ab2 db3, eb2, ~ gb3@7]/2",
  O: "[~@3 g2 ~@3 g2 ~@3 ab2 ~@3 ab2, g2@3 ~ g2@3 ~ ab2@3 ~ ab2@3 ~, ~ gb3@2 gb3@2 gb3@2 gb3]/2",
  P: "[~@3 bb2 ~@3 bb2 b2@2 ~ b2 ~@3 b2, bb2@3 ~ bb2@3 ~@5 b2@3 ~, ~ gb3@2 gb3@2 gb3@2 gb3]/2",
  Q: "[~@3 g2 ~@5 c-1!3 [c-1,ab5]@2 [c-1,ab5] ~ bb2@2 ~ bb2 bb2@2 ~ bb2 ~@3 bb2 bb2@2 gb3 bb2 ~@8 gb3!2 db4@2 f3!2 ~@10 gb3!2 db4 ~ f3!2 ~ [eb2,gb3], g2@3 ~ g2@60, ~@2 gb3@4 gb3@12 gb3@3 ~ gb3@3 ~ gb3@3 ~@3 [gb3,bb3,eb4]@4 eb3@4 bb2@6 db4 gb3 [bb3,eb4]@4 eb3@4 bb2@6 db4@2, ~@7 c-1@2 ~@6 [c-1,ab5]@49, ~@8 ab5@2 ab5@2 ~@12 bb2@3 ~@5 eb2@14 ~ eb2@15 ~@2]/8", // Fm Ebm Eb5 Fm
  R: "~ eb3, [bb3,eb4]@7 ~", // Eb5
  S: "[gb3!2 db4@2 f3!2 ~@10 gb3!2 db4@2 f3!2 ~@10 gb3!2 db4@2 f3!2 ~@10 gb3!2 db4@2 f3!2 ~@6 eb3@4, bb2@6 db4@2 [gb3,bb3,eb4]@7 ~ bb2@6 ~ gb3@8 ~ bb2@6 ~@6 eb3@10 ~@2 [gb3,bb3]@7 ~, ~@7 eb2@15 ~ eb2@15 ~ eb2@15 ~ eb2@9, ~@12 eb3@10 db4@2 [bb3,eb4]@7 ~@7 db4@2 eb4@8 ~@6 db4@2 eb4@8, ~@28 eb3@10 ~@2 [gb3,bb3]@7 ~ bb2@6 ~@10]/8", // Ebm Gb Eb5 Gb
  T: "[gb3!2 db4@2 f3!2 ~@10 gb3!2 db4@2 f3!2 db4 ~, bb2@6 db4@2 [gb3,bb3,eb4]@7 ~ bb2@6 ~@2, ~@7 eb2@16 ~, ~@6 eb3@5 ~]/3", // Ebm
  U: "[~@3 g2 ~@3 g2 ~@3 ab2 ~ ab2 ~ ab2 ~@3 bb2 bb2@2 ~ bb2 ~@3 b2 ~@3 b2 g2@2 ~ g2 g2@2 ~ g2 ~@3 ab2 ab2@2 ~ ab2 bb2@2 ~ bb2 bb2@2 ~ bb2 bb2@2 ~ bb2 bb2@2 gb3 bb2, ~@2 gb3@4 gb3@4 gb3@4 gb3@4 gb3@3 ~ gb3@4 gb3@4 gb3@4 gb3@4 gb3@4 gb3@4 gb3@3 ~ gb3@3 ~ gb3@3 ~ gb3@3 ~@3, ~@4 g2@3 ~ ab2@3 ~@5 bb2@3 ~@5 b2@3 ~ b2@3 ~@9 ab2@3 ~@21]/8",
  V: "[~@8 gb3!2 db4@2 f3!2 ~@10 gb3!2 db4@2 f3!2 ~@10 gb3!2 db4@2 f3!2 ~@6 eb3@4, eb2@14 ~ eb2@15 ~ eb2@15 ~ eb2@9, eb4@8 ~@6 db4@2 [bb3,eb4]@7 ~@7 db4@2 eb4@8 ~@6 db4@2 eb4@8, [gb3,bb3]@7 ~ bb2@6 ~@6 eb3@10 ~@2 [gb3,bb3]@7 ~ bb2@6 ~@10, ~@4 eb3@10 ~ gb3@8 ~ bb2@6 ~@6 eb3@10 ~@2 [gb3,bb3]@7 ~]/7", // Eb5 Gb
  W: "[gb3!2 db4 ~ f3!2 ~@2 [gb3,bb3,eb4]@16, bb2@3 db4 ~@8, ~@7 eb2@17]/3", // Ebm
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.8)

// other · acoustic guitar steel · "accustic guitar"
const acoustic_guitar_steel_2 = note("<~@2 A@4 B@2 ~@8 C@6 D@4 ~@38 E@8 ~@64 F@7 G@4 ~@5>".pickRestart({
  A: "[~@2 db5 ~@2 db5 ab4 bb4@3 ab4 bb4 ab4 gb4 gb4@4 ~@2 bb2 eb3 bb2 db3@3 [db3,eb3] bb2 [bb2,db3] ab2 [ab2,bb2,db3] gb2]/4", // Dbsus2 Bbm Bbm7
  B: "[eb2@6 [bb4,db5] [c5,eb5]@4 [bb4,db5]@5]/2", C: "[~ [bb4,db5]@8 [bb4,db5]@8 [bb4,db5]@7]/6",
  D: "[~ [bb4,db5]@12 ~@3]/4", E: "[~@2 [bb4,db5]@16 [bb4,db5]@16 [bb4,db5]@15 ~ [bb4,db5]@14]/8",
  F: "[~@4 bb4@2 bb4 db5@5 bb4@2 bb4 gb4@5 bb4@2 bb4 db5@5 bb4@2 bb4 gb4@5 bb4@2 bb4 db5@5 bb4@2 bb4 gb4@5 bb4@2 bb4 db5]/7",
  G: "[~@4 bb4@2 bb4 gb4@25]/4",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.2)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~@4 A B A C A D E F G C A F A C A C E B A H I J K L M N K L O P K L M Q K R S T U V W X Y U Z@4 AA Z@2 AB A C A C A B
  E D A C A C A C A AC M P K L AD P K L M AE AF AG M P K R S T AH V AI X AJ Y Z@3 AA Z AA Z@6 AK@4 AL N K L M N K L M P
  K L M AM K R AI AN U V S AN AH U AO AA@2 Z@2 AP Z@2 AQ ~@7
>`.pickRestart({
  A: "eb1@3 eb1 eb1@2 eb1 gb1", B: "ab1@3 ab1!2 ~ ab1 gb1", C: "ab1@3 ab1 ab1@2 ab1 gb1", D: "ab1@2 ~ ab1!2 ~ ab1 gb1",
  E: "eb1@2 ~ eb1 eb1@2 eb1 gb1", F: "ab1@2 ~ ab1 ab1@2 ab1 gb1", G: "eb1@3 eb1 eb1@2 ~ [eb1,gb1]",
  H: "ab1@3 ab1 ab1@2 ab1 ~", I: "ab1@3 ab1 ab1@2 ab1 g1", J: "gb1@2 ~ gb1@2 gb1!2 bb1", K: "b1@2 b1 b1@2 b1!3",
  L: "bb1@2 bb1 bb1@2 bb1!2 a1", M: "ab1@2 ab1 ab1@2 ab1!2 g1", N: "gb1 ~ gb1 gb1@2 gb1!2 bb1",
  O: "ab1@2 ab1 ~ ab1!3 g1", P: "gb1@2 gb1 gb1@2 gb1!2 bb1", Q: "gb1 ~ gb1!2 ~ gb1!2 bb1", R: "bb1@2 bb1 bb1@2 bb1!3",
  S: "g1@3 g1 g1@3 g1", T: "ab1@3 ab1 ab1@3 ab1", U: "bb1@3 bb1 bb1@2 ~ bb1", V: "b1@3 b1 b1@2 ~ b1",
  W: "g1@2 ~ g1 g1@3 g1", X: "ab1@3 ab1 ab1@2 ~ ab1", Y: "bb1@3 bb1 bb1@3 bb1", Z: "eb1@3 eb1 eb1@3 eb1",
  AA: "eb1@3 eb1 eb1@2 ~ eb1", AB: "eb1@2 ~ eb1 eb1@2 eb1 ~", AC: "ab1@2 ~ ab1 ab1@2 ab1 ~",
  AD: "ab1@2 ab1!2 ~ ab1!2 g1", AE: "gb1@2 gb1 gb1@2 gb1 ~ [gb1,bb1]", AF: "b1@2 b1 b1@2 b1!2 ~",
  AG: "bb1@2 bb1 bb1@2 bb1!2 a1, b1 ~@7", AH: "bb1@2 ~ bb1 bb1@3 bb1", AI: "g1@3 g1 g1@2 ~ g1",
  AJ: "bb1@2 ~ bb1 bb1@2 ~ bb1", AK: "eb1!8", AL: "ab1@3 ab1!2 ~ ab1 g1", AM: "gb1 ~ gb1 gb1@2 ~ gb1 bb1",
  AN: "ab1@2 ~ ab1 ab1@2 ~ ab1", AO: "eb1@3 eb1 ~ eb1@2 eb1", AP: "eb1@3 eb1 eb1@2 eb1 ~", AQ: "eb1",
})).s("gm_electric_bass_finger").gain(0.64).pan(0.6)

// chords · distortion guitar · "distort guitar I and solo"
const distortion_guitar = note("<~@6 A@2 ~@4 B C@2 D ~@44 B E F D ~@32 G@2 H@2 I@2 J K L ~@47>".pickRestart({
  A: "[~@6 [bb4,db5] [c5,eb5]@4 [bb4,db5]@5]/2", B: "~@2 eb4!2 [f4,c5,db5] [eb4,c5] [db4,bb4] [eb4,c5]",
  C: "[~@2 [eb4,c5] eb4 [f4,c5,db5] [eb4,c5] [db4,bb4] eb4@2 ~ [eb4,c5]!2 [f4,db5] [eb4,c5] [db4,bb4] [eb4,c5], ~@7 c5 ~@8]/2", // Cm Dbmaj7 Cm Gb Cm Db Cm Gb …
  D: "~@2 [eb4,c5] ~@5", E: "~@2 [eb4,c5]!2 [f4,db5] [eb4,c5] [db4,bb4] [eb4,c5]",
  F: "~@2 [eb4,c5]!2 [f4,db5] [eb4,c5] bb4 [eb4,c5], ~@5 db4@2 ~", G: "[~@14 f4 [g4,bb4,c5], eb4@15 ~]/2",
  H: "[d5 ~@13 d5 [g4,bb4,c5], eb5@15 ~]/2", I: "[eb4@14 f4 [g4,bb4,c5], f4 ~@15]/2", J: "eb5@7 d5, d5 ~@7",
  K: "~@2 eb5@2 d5 eb5 d5 [eb5,f5], eb5 ~@3, ~ d5@2 ~@5", L: "g5",
})).s("gm_distortion_guitar").gain(0.19).pan(0.2)

// chords · distortion guitar · "distort guitar II"
const distortion_guitar_2 = note(`<
  ~@40 A B C D A E C@2 F@6 G@2 H@8 ~@24 A E C D A E C@2 I@2 J@2 I@2 F@2 K@2 F@2 L@2 M@2 ~@16 A E C N A E C@2 L@2 O@2 P@4
  Q@6 ~@2
>`.pickRestart({
  A: "[g2,b2,d3]!8", B: "[ab2,c3]!2 [ab2,c3,eb3]!6, eb3 ~@3", C: "[bb2,d3,f3]!8", D: "[b2,eb3,gb3]!8",
  E: "[ab2,c3,eb3]!8", F: "[~@8 bb2@7 ~, [eb2,gb3,bb3,eb4]@15 ~, ~@4 eb3@11 ~]/2",
  G: "[~@8 bb2@7 ~, [gb3,bb3,eb4], eb2@15 ~, ~@4 eb3@11 ~]/2", H: "[eb2,eb3]/8",
  I: "[~ bb2, [eb2,gb3,bb3,eb4], ~ eb3@3]/2", J: "[~ bb2, [gb3,bb3,eb4], eb2@15 ~, ~@5 eb3@11]/2",
  K: "[~@8 bb2@7 ~, gb3, eb2@15 ~, [bb3,eb4] ~, ~@4 eb3@11 ~]/2", // Eb5
  L: "[~@8 gb3!2 db4@2 f3!2 db4@2, eb2@15 ~, [gb3,bb3,eb4]@8 bb2@7 ~, ~@4 eb3@11 ~]/2", // Ebm
  M: "[~@8 gb3!2 db4@2 f3!2 db4@2, eb2, [bb3,eb4] ~, gb3@7 ~ bb2@8, ~ eb3@3]/2", // Eb5
  N: "[b2,eb3,gb3]!3 [b2,eb3]!2 [b2,eb3,gb3]!3, ~@3 gb3@2 ~@3", // B
  O: "[~@8 gb3!2 db4@2 f3!2 db4@2, eb2@15 ~, eb4 ~, [gb3,bb3]@7 ~ bb2@7 ~, ~@4 eb3@11 ~]/2", // Gb
  P: "[~@8 gb3!2 db4@2 f3!2 db4@2, eb2@15 ~, [bb3,eb4] ~, gb3@7 ~ bb2@7 ~, ~@4 eb3@11 ~]/2", Q: "[eb2@47 ~]/6",
})).s("gm_distortion_guitar").gain(0.24).pan(0.6)

// chords · acoustic guitar steel · "rythim guitar II"
const acoustic_guitar_steel_3 = note(`<
  ~@24 A B C D E@4 F@4 G@8 ~@28 H@4 I@4 J@4 K@2 L M N ~@23 O B P Q R S T U V W X Y Z AA AB AC N ~@23
>`.pickRestart({
  A: "[ab3,c4,eb4]@2 [ab3,c4,eb4] ab2 ~ [ab3,c4,eb4]!2 [ab2,ab3,c4,eb4], ab2@3 [ab3,c4,eb4]@2 ~@3, ~@4 ab2@3 ~", // Ab
  B: "[gb3,bb3,db4]@2 [gb3,bb3,db4] gb2 ~ [gb3,bb3,db4]!2 [gb2,gb3,bb3,db4], gb2@3 [gb3,bb3,db4]@2 ~@3, ~@4 gb2@3 ~", // Gb
  C: "[gb3,b3,eb4]@2 [gb3,b3,eb4] [b2,gb3,b3] ~ [gb3,b3,eb4]!2 [b2,gb3,b3,eb4], b2@3 eb4@2 ~@3, ~@2 b2 ~", // B B5 B
  D: "[f3,d4]@2 [f3,bb3,d4] [bb2,f3,bb3,d4] ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], bb2@3 ~ bb2@3 ~, bb3 ~@7", // Dm Bb
  E: "[[c4,eb4] ~ [ab3,c4,eb4] [ab2,ab3,c4,eb4] ~ [ab3,c4,eb4]!2 [ab2,c4] [gb3,bb3,db4] ~ [gb3,bb3,db4] [gb2,gb3,bb3] ~ [gb3,bb3,db4]!2 [gb2,gb3,bb3,db4] [b2,eb4]@2 [gb3,b3,eb4] [b2,gb3,b3] ~ [gb3,b3,eb4]!2 [b2,gb3,b3] [f3,bb3,d4]@2 [f3,bb3,d4] bb2 ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], ab2@3 ~ ab2@2 ~ eb4@9 ~@3 eb4@2 ~@2 eb4@9, ab3@2 ~@5 ab3@25, ~@7 gb2@3 ~ db4@2 ~@3 [gb3,b3] ~@10 [f3,bb3,d4]@2 ~@3, ~@12 gb2@2 ~@6 b2@2 ~@2 bb2@3 ~ bb2@3 ~]/4", // Cm Ab Gb B B5 B B5 Bb …
  F: "[[ab3,eb4]@2 [ab3,c4,eb4] [ab2,c4] ~ [ab3,c4,eb4]!2 [ab2,c4] [gb3,bb3] ~ [gb3,bb3,db4] [gb2,gb3,bb3] ~ [gb3,bb3,db4]!2 [gb2,gb3,bb3,db4] [b2,eb4]@2 [gb3,b3,eb4] [b2,b3] ~ [gb3,b3,eb4]!2 [b2,gb3,b3] [f3,bb3,d4]@2 [f3,bb3,d4] bb2 ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], ab2@3 ~ ab2@2 ~ eb4@9 ~@7 eb4@9, c4 ~@2 [ab3,eb4]@2 ~@2 ab3@25, ~@8 gb2@3 ~ gb2@2 ~@6 b2@2 ~@2 bb2@3 ~ bb2@3 ~, ~@8 db4@2 ~ db4@2 ~@3 [gb3,b3] ~@2 [gb3,eb4]@2 ~@6 [f3,bb3,d4]@2 ~@3]/4", // Ab5 Ab Gb B B5 Bb Ab5 B5 …
  G: "[[ab3,c4,eb4]@2 [ab3,c4,eb4] ab2 ~ [ab3,c4,eb4]!2 [ab2,c4] [gb2,db4]@2 [gb3,bb3,db4] [gb2,gb3,bb3,db4] ~ [gb3,bb3,db4]!2 [gb2,gb3,bb3] [gb3,b3,eb4] ~ [gb3,b3]!2 ~ [gb3,b3,eb4] [b2,gb3,b3] [gb3,b3] [f3,bb3,d4] ~ [f3,bb3,d4] [bb2,f3,bb3,d4] ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4] g2@8 ~@24, ab2@3 [ab3,c4,eb4]@2 ~@2 ab3@57, ~@4 ab2@3 eb4@9 ~ eb4@4 ~ eb4@42, ~@8 [gb3,bb3] ~@3 gb2@2 ~ b2@3 ~ b2@3 ~@2 bb2@2 ~@2 bb2@2 ~@34]/8", // Ab Gb5 Gb B B5 B B5 Bb …
  H: "[[ab3,c4,eb4]@2 [ab3,c4,eb4] ab2 ~ [ab3,c4,eb4]!2 [ab2,c4] [gb3,bb3,db4]@2 [gb3,bb3,db4] gb2 ~ [gb3,bb3,db4]!2 [gb2,gb3,bb3,db4] [gb3,b3,eb4]@2 [gb3,b3,eb4] b2 ~ [gb3,b3,eb4]!2 [b2,gb3,b3] [f3,bb3,d4] ~ [f3,bb3,d4] [bb2,f3,bb3,d4] ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], ab2@3 [ab3,c4,eb4]@2 ~@2 ab3@25, ~@4 ab2@3 eb4@9 ~@7 eb4@9, ~@8 gb2@3 [gb3,bb3,db4]@2 ~@6 [gb3,b3,eb4]@2 ~@11, ~@12 gb2@3 ~ b2@3 ~ b2@2 ~@2 bb2@3 ~ bb2@2 ~@2]/4", // Ab Gb B B5 Bb Ab Gb B
  I: "[[ab3,eb4]@2 [ab3,c4,eb4] [ab2,c4] ~ [ab3,c4,eb4]!2 [ab2,c4] [gb3,bb3,db4] ~ [gb3,bb3,db4] [gb2,gb3,bb3] ~ [gb3,bb3]!2 [gb2,gb3,bb3,db4] [b2,eb4]@2 [gb3,b3,eb4] [b2,gb3,b3] ~ [gb3,b3,eb4]!2 [b2,gb3,b3] [f3,bb3,d4] ~ [f3,bb3,d4] [bb2,f3,bb3,d4] ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], ab2@3 ~ ab2@2 ~ eb4@9 ~@3 eb4@2 ~@2 eb4@9, c4 ~@2 [ab3,eb4]@2 ~@2 ab3@25, ~@8 gb2@2 ~ db4@4 ~ [gb3,b3] ~@15, ~@12 gb2@2 ~@6 b2@2 ~@2 bb2@3 ~ bb2@3 ~]/4", // Ab5 Ab Gb B B5 B B5 Bb …
  J: "[[ab3,eb4]@2 [ab3,c4,eb4] ab2 ~ [ab3,c4,eb4]!2 [ab2,c4] [bb3,db4]@2 [gb3,bb3,db4] gb2 ~ [gb3,bb3,db4]!2 [gb2,gb3,bb3,db4] [gb3,b3] ~ [gb3,b3,eb4] [b2,gb3,b3] ~ [gb3,b3,eb4] [gb3,b3] [b2,gb3,b3] [bb3,d4] ~ [f3,bb3,d4] bb2 ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], ab2@3 ~ ab2@3 eb4@9 eb4@2 ~ eb4@2 ~ eb4@10, c4 ~@2 [ab3,c4,eb4]@2 ~@2 ab3@25, ~@8 gb2@3 ~ gb2@3 ~ b2@3 ~ b2@2 ~@2 bb2@3 ~ bb2@3 ~, ~@8 gb3 ~@2 [gb3,bb3,db4]@2 ~@11 f3@2 ~ [f3,bb3,d4]@2 ~@3]/4", // Ab5 Ab Bbm Gb B5 B B5 B …
  K: "[[ab3,eb4]@2 [ab3,c4,eb4] [ab2,c4] ~ [ab3,c4,eb4]!2 [ab2,c4] [gb3,bb3,db4] ~ [gb3,bb3] [gb2,gb3,bb3] [gb3,bb3,db4]!2 [gb2,gb3,bb3,db4] ~, ab2@3 ~ ab2@2 ~@2 gb2@2 db4@2 gb2@2 ~@2, c4 ~@2 [ab3,eb4]@2 ~@2 [ab3,eb4]@9]/2", // Ab5 Ab Gb Ab5
  L: "[gb3,b3,eb4] ~ [gb3,b3,eb4] b2 ~ [gb3,b3,eb4]!2 [b2,gb3,b3,eb4], b2@2 ~ [gb3,b3,eb4]@2 ~@3, ~@4 b2@3 ~", // B
  M: "[f3,bb3,d4]@2 [f3,bb3,d4] bb2 ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], bb2@3 [f3,bb3,d4]@2 ~@3, ~@2 bb2 ~", N: "g2",
  O: "[ab3,c4,eb4]@2 [ab3,c4] [ab2,c4] ~ [ab3,c4,eb4] [ab3,c4] [ab2,ab3,c4], ab2@3 ab3@2 ~@3, ~@2 eb4@3 ~ eb4@2, ~@2 ab2 ~", // Ab
  P: "[gb3,b3,eb4]@2 [gb3,b3,eb4] [b2,gb3,b3] ~ [gb3,b3,eb4]!2 [b2,gb3,b3], b2@3 eb4@2 ~@3, ~@2 b2 ~", // B B5 B B5
  Q: "[f3,bb3,d4] ~ [f3,bb3,d4] [bb2,f3,bb3,d4] ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], bb2@3 ~ bb2@2 ~@2", // Bb
  R: "[ab3,c4,eb4] ~ [ab3,c4,eb4] [ab2,ab3,c4,eb4] ~ [ab3,c4,eb4]!2 [ab2,ab3,c4,eb4], ab2@3 ~ ab2@2 ~@2", // Ab
  S: "[gb3,bb3,db4] ~ [gb3,bb3,db4] [gb2,gb3,bb3,db4] ~ [gb3,bb3]!2 [gb2,gb3,bb3], gb2@3 ~ gb2@2 ~@2, ~@5 db4@2 ~", // Gb
  T: "[gb3,b3,eb4]@2 [gb3,b3,eb4] b2 ~ [gb3,b3,eb4]!2 [b2,gb3,b3,eb4], b2@3 [gb3,b3,eb4]@2 ~@3, ~@4 b2@3 ~", // B
  U: "[bb3,d4] ~ [f3,bb3,d4] bb2 ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], bb2@3 ~ bb2@2 ~@2, f3@2 ~ [f3,bb3,d4]@2 ~@3", // Bb
  V: "[c4,eb4] ~ [ab3,c4,eb4] ab2 ~ [ab3,c4,eb4] [ab3,c4] [ab2,ab3,c4], ab2@3 ~ ab2@2 ~@2, ab3@2 ~ [ab3,c4,eb4]@2 ~ eb4@2", // Cm Ab
  W: "[gb3,bb3] ~ [gb3,bb3,db4] [gb2,gb3,bb3,db4] ~ [gb3,bb3]!2 [gb2,gb3,bb3,db4], gb2@3 ~ gb2@2 ~@2, db4@2 ~@3 db4@2 ~", // Gb
  X: "[b3,eb4]@2 [gb3,b3,eb4] [b2,b3] ~ [gb3,b3,eb4]!2 [b2,gb3,b3,eb4], b2@3 ~ b2@2 ~@2, gb3 ~@2 [gb3,eb4]@2 ~@3", // B Ebm
  Y: "[f3,bb3,d4] ~ [f3,bb3,d4] [bb2,f3,bb3] ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], bb2@2 ~ d4@2 ~@3, ~@2 bb2 ~", // Bb Bb5 Bb
  Z: "[ab3,c4,eb4] ~ [ab3,c4,eb4] [ab2,ab3,c4] ~ [ab3,c4,eb4]!2 [ab2,ab3,c4,eb4], ab2@3 eb4@2 ~@3, ~@2 ab2 ~", // Ab
  AA: "[gb3,db4]@2 [gb3,bb3,db4] [gb2,gb3,bb3,db4] ~ [gb3,bb3,db4]!2 [gb2,gb3,bb3,db4], gb2@3 ~ gb2@2 ~@2, bb3 ~@7", // Gb5 Gb
  AB: "[gb3,b3,eb4] ~ [gb3,b3,eb4] [b2,gb3,b3,eb4] ~ [gb3,b3,eb4]!2 [b2,gb3,b3,eb4], b2 ~ b2 ~", // B
  AC: "[bb2,f3]@2 [f3,bb3,d4] [bb2,f3,bb3,d4] ~ [f3,bb3,d4]!2 [bb2,f3,bb3,d4], [bb3,d4] ~@3 bb2@2 ~@2", // Bb5 Bb
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.2)

// chords · acoustic guitar steel · "back up rythim guitar I"
const acoustic_guitar_steel_4 = note("<~@43 A@2 ~@47 B C@2 ~@33 D E ~@22>".pickRestart({
  A: "[~@7 gb3@3 ~@6]/2", B: "~@7 g2", C: "[~@3 ab2 ~@2 gb3@3 ~@7, ~@2 gb3@3 ~@11]/2", D: "g2@3 ~@5",
  E: "~ ab2 ~@2 ab2@2 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.2)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@44 ~ B ~ B ~ B ~ B@41 ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B@25 ~ B ~ B ~ B ~ B ~@8
>`.pickRestart({
  A: "~ x!2 ~@2 x!2 ~", B: "~ x ~ x",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@3 A ~@3 A ~@7 A@17 ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@7 B ~@7 A@17 ~@3 A ~@3 A ~ A ~ A ~ A C ~@2 A ~ A ~ A ~
  A@17 ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~@7
>`.pickRestart({
  A: "x", B: "~ x ~@2", C: "~@7 x",
})).gain(0.48)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, bass, distortion_guitar, distortion_guitar_2, acoustic_guitar_steel_3,
  acoustic_guitar_steel_4, kick, snare, crash
)

More by Alice in Chains