Strudelify

Nutshell

Alice in Chains

KeyE minorTempo66 bpm
0:00/0:00
// Nutshell — Alice in Chains
// 66 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 68 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(66/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 · "Cantrell 1"
const acoustic_guitar_steel = note(`<
  A B C@2 B C@2 D E@2 F@3 B C@2 D E@2 F@6 B C@2 D E@2 B C@2 D E@2 F@3 G@3 B C@2 D E@2 B C@2 D E@2 F@6 B H@2 ~@4
>`.pickRestart({
  A: "~@8 [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [d4,a4,d5,f#5]@2", // Em7 D
  B: "[c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!2 [c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!2", // C
  C: "[[c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!5 [c4,e4,g4,d5,e5]@2 [g4,d5,g5] [e3,b3,e4,g4,d5,g5]@4 [b3,e4]@2 [e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5]!2 [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [d4,a4,d5,f#5]@2]/2", // C G5 Em7 E5 Em7 D
  D: "[c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!2", // C
  E: "[[c4,e4,g4,d5,e5] [c4,e4,g4,e5] [c4,e4,g4,e5]@2 [c4,e4,g4,e5]@2 [c4,e4,g4,e5]!2 [c4,e4,g4,d5,e5]!3 [c4,e4,g4,d5,e5]@2 [g4,d5,g5] [e3,b3,e4,g4,d5,g5]@4 [b3,e4]@2 [e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5]!2 [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [d4,a4,d5,f#5]@2]/2", // C G5 Em7 E5 Em7 D
  F: "[[c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!2 [c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!5 [c4,e4,g4,d5,e5]@2 [g4,d5,g5] [e3,b3,e4,g4,d5,g5]@4 [b3,e4]@2 [e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5]!2 [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [d4,a4,d5,f#5]@2]/3", // C G5 Em7 E5 Em7 D
  G: "[[c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!2 [c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] e5 e5@6 ~@2 [c4,e4,g4,d5,e5]!3 [c4,e4,g4,d5,e5]@2 [g4,d5,g5] [e3,b3,e4,g4,d5,g5]@4 [b3,e4]@2 [e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5]!2 [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [d4,a4,d5,f#5]@2, ~@15 [c4,e4,g4,d5]@7 ~@26]/3", // C G5 Em7 E5 Em7 D C
  H: "[[c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!5 [c4,e4,g4,d5,e5]@2 [g4,d5,g5] [e3,b3,e4,g4,d5,g5]@4 [b3,e4]@2 [e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5]!2 [b3,e4,g4,d5,g5]@2 ~@6]/2", // C G5 Em7 E5 Em7
})).s("gm_acoustic_guitar_steel").gain(0.24)

// chords · acoustic guitar steel · "Cantrell 1" · soft notes
const acoustic_guitar_steel_2 = note("<~@63 A B C@2 D>".pickRestart({
  A: "~@10 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [d4,a4,d5,f#5]@2", // Em7 D
  B: "[c4,e4,g4,d5,e5]@3 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5] [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]@2 ~ [c4,e4,g4,d5,e5]@2 [c4,e4,g4,d5,e5]!2", // C
  C: "[[c4,e4,g4,d5,e5] [c4,e4,g4,e5] [c4,e4,g4,e5]@2 [c4,e4,g4,e5]@2 [c4,e4,g4,e5]!2 [c4,e4,g4,d5,e5]!3 [c4,e4,g4,d5,e5]@2 [g4,d5,g5] [e3,b3,e4,g4,d5,g5]@4 [b3,e4]@2 [e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5]!2 [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [b3,e4,g4,d5,g5]@2 [b3,e4,g4,d5,g5] [d4,a4,d5,f#5]@2]/2", // C G5 Em7 E5 Em7 D
  D: "[c4,e4,g4,d5,e5]@13 ~@3", // C
})).s("gm_acoustic_guitar_steel").gain(0.08)

// other · overdriven guitar · "Cantrell 2"
const overdriven_guitar = note("<~@24 A B C@2 B D@2 ~@11 A B C@2 B E@2 F@3 G@3 H@3 I J@2 ~@7>".pickRestart({
  A: "~@8 e6 b5 g5!2 f#5 e5 b4@2", B: "c5@13 ~@3",
  C: "[b4@6 ~@2 d6 g5 d5 a#4 a4 g4 f#4@8 ~@2 e6 b5 g5!2 f#5 e5 b4@2]/2", D: "[b4@6 ~@2 d6 g5 d5 b4 a4 g4 f#4@15 ~@3]/2",
  E: "[b4@6 ~@2 d6 g5 d5 b4 a4 g4 f#4@8 ~@2 c5 b4 g4!2 f#4 d4 e5 f#5]/2",
  F: "[[d5,g5,b5,e6]@3 ~ [d5,g5,b5,e6]@17 ~ e3!2 c4 b3 g3 g4 ~@2 e4@7 ~ e3!2 c5 b4 g4!2 f#4 d4 e5 f#5]/3", // Em7
  G: "[[d4,g4,b4,e5]@13 ~ e4 c5@2 [d4,g4]@9 ~ g4 ~@2 e4@15 ~@3]/3", // Em7 G5
  H: "[d5 b5 ~ c5 a5 ~ b4 g5 ~ a4 f#5 ~ g4 c5 e5@8 ~@2 [g4,c5,e5]!3 [g4,b4,d5]@2 g5 e5@4 ~@2 e5@2 ~@10]/3", // C G
  I: "d4 [e4,f#4] [g4,a4] [b4,c5] [c5,d5] c5@9 ~@2, ~@5 b4 ~@10", // Esus2 Gsus2 Cmaj7 Csus2
  J: "[f#5 [g5,a5] [b5,c6] [c6,d6] [a5,b5] [f#5,g5] e5@4 g5@9 ~ f#5@10 ~@2]/2", // Gsus2 Cmaj7 Csus2 Asus2 Gmaj7
})).s("gm_overdriven_guitar").gain(0.48)

// bass · electric bass finger · "Inez"
const bass = note(`<
  ~@6 A B C D B E@2 B C F B G@2 B G@2 B G@2 B G@2 B G@2 B G@2 B H@2 B G@2 B G@2 B G@2 B G@2 B G@2 B G@2 B G@2 B G@2 B
  I@2 ~@4
>`.pickRestart({
  A: "~@8 e3@2 ~ d3@2 ~ a3@2", B: "g3@13 ~@3", C: "~@8 c3!4 ~ d3 e2@2", D: "e2@6 ~@2 e3@2 ~ d3@2 ~ a3@2",
  E: "[~@8 c4 g3 e3 c3 ~ d3 e2@8 ~@2 e3@2 ~ d3@2 ~ a3@2]/2", F: "~@6 e2 ~ e3@2 ~ d3@2 ~ a3@2",
  G: "[~@8 c3!4 ~ d3 e2@8 ~@2 e3@2 ~ d3@2 ~ a3@2]/2", H: "[g4@6 ~@2 c3!4 ~ d3 e2@8 ~@2 e3@2 ~ d3@2 ~ a3@2]/2",
  I: "[~@8 c3!4 ~ d3 e2@8 ~@10]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// bass · electric bass finger · "Inez" · soft notes
const bass_soft = note("<~@63 A B C@2 B>".pickRestart({
  A: "~@8 e3@2 ~ d3@2 ~ a3@2", B: "g3@13 ~@3", C: "[~@8 c3!4 ~ d3 e2@8 ~@2 e3@2 ~ d3@2 ~ a3@2]/2",
})).s("gm_electric_bass_finger").gain(0.16)

// drums · kick
const kick = s("bd").struct("<~@11 [~@7 x] [~ x ~@2 x!2 ~ x]!50 [~ x ~@2 x ~@3] ~@5>").gain(0.1)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@62 [~@5 x ~ x] [~ x ~@2 x!2 ~ x]!4 x>").gain(0.03)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@62 [~@12 x!2 ~@2] [~ x ~ x]!3 [~@4 x ~@7 x!2 ~@2] ~>").gain(0.03)

// drums · hihat
const hihat = s("hh").struct("<~@12 [x!16]!50 [x!10 ~@6] ~@5>").gain(0.1)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@62 [~@10 x!6] [x!16]!4 ~>").gain(0.03)

// drums · ride
const ride = s("rd").struct("<~@67 x>").gain(0.02)

stack(
  acoustic_guitar_steel, acoustic_guitar_steel_2, overdriven_guitar, bass, bass_soft, kick, kick_soft, snare,
  snare_soft, hihat, hihat_soft, ride
)

More by Alice in Chains