Strudelify

I Stay Away

Alice in Chains

KeyC♯ minorTempo160 bpm
0:00/0:00
// I Stay Away — Alice in Chains
// 160 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: ch 1 "bass" named as a bass, played on electric bass finger (its shakuhachi patch is not one); ch 3 "strings" named as a string part, played on string ensemble 1 (its piano patch is not one); ch 5 "trumpet" named as a brass, played on trumpet (its choir aahs patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 155 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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 · "bass"
const bass = note(`<
  ~@8 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D E D F@2 G H I J@2 K@4 H A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C D E
  D F@2 G H I J@2 K@4 H L@2 M N O P@3 L@2 M N O Q@3 R@4 S@2 T@2 U@2 V@2 W@2 B@2 C D E D F@2 G H I J@2 K@4 H L@2 M N O
  P@3 L@2 M N O P@3 L@2 M N X@6 ~
>`.pickRestart({
  A: "[c#3@5 ~ c#3@5 ~ [c#2,c#3]@19 ~, c#2@11 ~@21]/2", B: "[b2@6 a#2@6 f#2@8 f2@4 f#2@2 f2@2 c#2@3 ~]/2",
  C: "c#2@3 ~ c#2 ~@3 c#2@4 ~@2 c#2 ~, [c#3,g#3,c#4]@15 ~", D: "[d#2,c#3,g#3,c#4]",
  E: "c#2@3 ~ c#2@2 ~@2 c#2@4 c#2@2 ~@2, [c#3,g#3,c#4]@15 ~", // C#5
  F: "[c#2@3 ~ c#2 ~@3 c#2@4 ~@2 c#2 ~ d#2@16, [c#3,g#3,c#4]@15 [e3,b3,e4]@17]/2", // C#5 E5
  G: "c#2@3 ~ c#2@2 ~@2 c#2@4 c#2@2 ~@2, [c#3,g#3,c#4]", H: "[d#2,e3,b3,e4]",
  I: "c#2@3 ~ c#2 ~@3 c#2@4 ~@2 c#3@2, c#3@13 ~ c#2 ~, [g#3,c#4]@11 ~ [g#3,c#4]@4", // C#5
  J: "[[b3,e4]@8 ~@4 e3@3 ~ [c#2,c#3]@4 [c#2,c#3]@2 ~@2 c#2@4 [c#2,g#3,c#4]@3 ~, d#2@17 ~@15, e3@11 ~@13 c#3@8, ~@8 [b3,e4]@7 [g#3,c#4]@6 ~ [g#3,c#4]@6 ~@4]/2", // E5 C# C#5 E5 C#5
  K: "[[b3,e4]@8 ~@3 e3@3 ~@2 c#2@3 ~ c#2 ~@3 c#2@4 ~@2 c#2 ~ [e3,b3,e4]@12 [b3,e4]@2 ~@2 c#2@3 ~ c#2@2 ~@2 c#2@4 [c#2,c#3,g#3,c#4]@3 ~, d#2@16 c#4@11 ~@20 [c#3,g#3,c#4]@12 ~@5, e3@11 ~@5 c#3@15 c#3@2 ~@13 e3@2 ~@16, ~@8 [b3,e4]@6 ~ g#3@12 ~ [g#3,c#4]@4 d#2@17 ~@15]/4", // E5 C#5 E5 C#5
  L: "[c#3@6 c#3@4 c#3@3 c#3@3, [g#3,c#4]]/2", M: "c#3@3 c#3, [g#3,c#4]", N: "c#3@4 c#3@6 c#3@5 ~, [g#3,c#4,f#4]@15 ~",
  O: "[a2,a3,e4,a4]@15 ~", // A5
  P: "[[a2,a3,e4,a4]@15 ~ [a3,e4,a4]@5 ~ [b3,f#4,b4]@5 ~ c#3@20, ~@5 a2@2 b2@2 [c#4,g#4,c#5]@7]/3", // A5 B5 C#5
  Q: "[[a2,a3,e4,a4]@15 ~ [a3,e4,a4]@5 ~ [b3,f#4,b4]@5 ~ c#3@19 ~, ~@5 a2@2 b2@2 [c#4,g#4,c#5] ~@6]/3", // A5 B5 C#5
  R: "[c#3@5 ~ c#3@5 ~@21 b2@6 a#2@6 f#2@8 ~@2 d#5 ~ f#2@2 f2@2 c#2@3 ~, c#2@11 ~ [c#2,c#3]@19 ~@21 f2@4 ~@8, ~@28 c#5@21 ~@15]/4", // C#
  S: "[c#3@5 ~@3 d#5@2 c#5@2 ~@2 c#5@4 ~@10 c#5@2 ~@2, c#2@11 ~ [c#2,c#3]@19 ~, d#5 ~@5 c#3@5 ~@21]/2", // C#
  T: "[b2@6 a#2@6 f#2@8 ~ f5@2 ~@3 f2@2 c#2@3 ~, c#5@17 ~@3 f2@4 f#2@2 ~@6, ~@25 f#5@2 ~@5]/2",
  U: "[c#3@5 ~ c#3@5 ~@15 f#5@2 ~@4, c#2@11 f5@14 ~@7, ~@12 [c#2,c#3]@19 ~]/2", // C#
  V: "[b2@6 a#2@6 f#2@8 f2@4 f#2@2 f2@2 c#2@3 ~, ~@12 f#5@4 ~@4 f#5 ~@11]/2",
  W: "[c#3@5 ~ c#3@5 ~@8 c#6@10 ~@3, g#5@15 ~@17, c#2@11 ~ [c#2,c#3]@19 ~]/2", // C#
  X: "[[a3,e4,a4] [a3,e4,a4]@83 ~@12, a2@27 ~@5]/6", // A5
})).s("gm_electric_bass_finger").gain(0.5)

// bass · electric bass finger · "bass" · soft notes
const bass_soft = note(`<
  ~@24 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@25 A ~ B ~ A ~ B ~ A ~ B ~ A ~ B ~@18 C ~ D E F ~ G H I J K ~@2 L@2 A ~ B ~ A ~ B
  ~ A ~ B ~ A ~ B ~@28
>`.pickRestart({
  A: "~@3 c#2 ~@2 c#2 ~", B: "~@6 c#2@2 ~@6 c#2 ~", C: "~@4 g#4@3 ~ b4@2 ~@6", D: "~@4 c#5 ~@3 c#5@2 d#5 ~ c#5@2 ~@2",
  E: "f5@4 d#5@2 c#5 ~@5 a#4 ~@3", F: "~@2 a#4@2 c#5@2 a#4 ~ c#5@2 a#4@2 ~@4", G: "~@2 d#5@2 ~@9 f5 ~@2",
  H: "f#5@9 ~@7", I: "~@13 f5 ~ f#5", J: "g#5@5 ~ f#5@3 ~ f5 ~@5", K: "~@2 f5 ~@3 f5 ~ f#5 ~ f5@2 f#5@2 f5 ~",
  L: "[g#5@6 ~ f5@11 ~@2 c#5@12]/2",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · epiano2 · "acoustic"
const epiano2 = note(`<
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@16 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@32 A@2 B@2 A@2
  B@2 A@2 B@2 A@2 B@2 ~@36 C@6 ~
>`.pickRestart({
  A: "[[g#4,c#5,f5]@3 ~@2 c#4 [c#4,b4,c#5,f#5]@10, c#4@5 ~@11, ~@3 [g#4,c#5,f5]@3 ~@10]/2", // C# F#sus4 C#
  B: "[~@3 f#5@2 ~@4 f#5@2 ~ f#3@5 [f3,f4]@7 [f#3,f#4]@2 [f3,f4]@2 [c#3,c#4]@4, b3@3 a#3@3 ~@10, b4@4 ~ a#4@5 ~@2 f#4@4 ~@16, ~ c#5@2 ~ c#5@2 ~@10]/2", // F F# F C#
  C: "[[a3,a4,c#5,e5]@47 ~]/6", // A
})).s("gm_epiano2").gain(0.4)

// other · trumpet
const trumpet = note("<~@92 A B@3 ~@36 A B@3 ~@4 A B@3 ~@11>".pickRestart({
  A: "~@8 a5@2 b5 ~ c#6@4", B: "[~ d#6 ~ e6@11 ~ e6@4 ~ d#6 c#6 ~@2 e6 ~ d#6 ~ c#6@19 ~]/3",
})).s("gm_trumpet").gain(0.5)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@86 A B ~@6 A B ~@38 A B ~@6 A B ~@11>".pickRestart({
  A: "~@3 x ~@2 x ~", B: "~ x ~@6",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@86 A ~@7 A ~@39 A ~@7 A ~@12>".pickRestart({
  A: "~@3 x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<~@87 A ~@7 A ~@39 A ~@7 A ~@11>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ B ~ A ~
  A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@15 A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ C ~@6
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@4", C: "~ x ~@14",
})).gain(0.5)

// drums · ride
const ride = s("rd").struct(`<
  ~@4 A ~@3 B C B C B C B C B C B C B C B C ~@16 B C B C B C B C B C B C B C B C B C B C B C B C ~@16 B C B C B C D A B
  C B C B C D A B C B C B C B C B C B C B C B C ~@16 B C B C B C D A B C B C B C D A B C B C E ~@6
>`.pickRestart({
  A: "~@3 x", B: "~ x", C: "x!3 ~", D: "x ~ x!2 ~ x!2 ~", E: "~ x ~@14",
})).gain(0.5)

// drums · tambourine
const tambourine = s("tb").struct("<~@86 A ~@7 A ~@39 A ~@7 A ~@12>".pickRestart({
  A: "~@3 x ~@4",
})).gain(0.5)

stack(bass, bass_soft, epiano2, trumpet, kick, snare, low_tom, mid_tom, high_tom, crash, ride, tambourine)

More by Alice in Chains