Strudelify

We Die Young

Alice in Chains

KeyC♯ minorTempo126 bpm
0:00/0:00
// We Die Young — Alice in Chains
// 126 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 pick · "Baixo"
const bass = note(`<
  ~@4 A B A C A B D E F@3 G F@3 H A B A C A B D E F@3 G F@3 H G F G F I J G F G F I J A B A C A B D E A B A C A B D E
  F@3 G F@3 H A B A C A B K ~
>`.pickRestart({
  A: "d#1 c#1!2 g1@2 c#1 e1 c#1", B: "c#1 e1 c#1!2 e1 c#1 e1 f#1", C: "c#1 e1 c#1 f#1 g1 f#1 e1 c#1",
  D: "d#1 c#1!2 g#1 g1 c#1 e1 c#1", E: "c#1 e1 c#1!2 e1 c#1 f#1@2", F: "c#1!8", G: "c#1!2 e1 f#1 g1 f#1 e1 c#1",
  H: "c#1!4 e1 f#1 f#1@2", I: "e1@2 e1!6", J: "f#1@2 f#1!6", K: "d#1 c#1!2 g#1 g1 c#1 e1 ~",
})).s("gm_electric_bass_pick").gain(0.8)

// chords · overdriven guitar · "Guitarra base"
const overdriven_guitar = note(`<
  A B A C A B A C A B A D E F E G E F E H A B A C A B A D E F E G E F E H ~ I J I K L ~ I J I K L A B A C A B A D A B A
  C A B A D E F E G E F E H A B A C A B M ~
>`.pickRestart({
  A: "[a#2,d#3] [g#2,c#3]!2 [d3,g3]@2 [g#2,c#3] [b2,e3] [g#2,c#3]", // D#5 C#5 G5 C#5 E5 C#5
  B: "[g#2,c#3] [b2,e3] [g#2,c#3]!2 [b2,e3] [g#2,c#3] [b2,e3]@2", // C#5 E5 C#5 E5 C#5 E5
  C: "[g#2,c#3] [b2,e3] [g#2,c#3] [c#3,f#3] [d3,g3] [c#3,f#3] [b2,e3] [g#2,c#3]", // C#5 E5 C#5 F#5 G5 F#5 E5 C#5
  D: "[g#2,c#3] [b2,e3] [g#2,c#3]!2 [b2,e3] [g#2,c#3] [c#3,f#3]@2", // C#5 E5 C#5 E5 C#5 F#5
  E: "[a2,d3]@2 [b3,e4,g#4] [g#2,c#3]!2 [b3,e4,g#4] [g#2,c#3] [b3,e4,g#4]", // D5 E C#5 E C#5 E
  F: "[g#2,c#3]!2 [b3,e4,g#4] [g#2,c#3] [b3,e4,g#4] [b3,e4,g#4]@3", // C#5 E C#5 E
  G: "[g#2,c#3]!2 [b2,e3] [c#3,f#3] [d3,g3] [c#3,f#3] [b2,e3] [g#2,c#3]", // C#5 E5 F#5 G5 F#5 E5 C#5
  H: "[g#2,c#3]!2 [b2,e3] [c#3,f#3] [e3,b3]@2 [f#3,c#4]@2", // C#5 E5 F#5 E5 F#5
  I: "~ [g#2,c#3] [b2,e3] [c#3,f#3] [d3,g3] [c#3,f#3] [b2,e3] [g#2,c#3]", J: "c#4@3 ~@5", K: "[e2,b2,e3,f#3,b3]",
  L: "[f#2,c#3,f#3,c#4]", M: "[a#2,d#3] [g#2,c#3]!2 [d3,g3]@2 [g#2,c#3] [b2,e3] ~",
})).s("gm_overdriven_guitar").gain(0.55)

// other · distortion guitar · "Guitarra solo"
const distortion_guitar = note("<~@36 A@2 B@2 ~ C A@2 B@2 ~ C D E F G H I J K L@2 ~@22>".pickRestart({
  A: "[b2@3 b2@6 ~@7]/2", B: "[b3@3 b3@6 ~@7]/2", C: "g#3",
  D: "c#2 [e2,g#2] c#3 [e3,g#3] c#4 [e4,g#4] c#5 [e5,g#5] g5 [c#5,e5] g4 [c#4,e4] g3 [c#3,e3] g2 [e2,g2]", // E C#m Em
  E: "b3@4 g#3 e3 c#3 e3 g#3@4 e3 c#3 e3 g#3",
  F: "g#3@2 [c#3,e3] [e3,g#3] b3@2 g#3 [c#3,e3] [e3,g#3] [b3,c#4] [e4,g#4] [b4,b5] [e5,g#5] [c#5,b5] [e5,g#5] [c#5,a#5]", // C#m E C#m E Bsus2 E B E …
  G: "[e5,g#5] [c#5,a#5] [e5,g5] [c#5,c#6] [f5,a#5] [c#5,c#6] [f#5,a#5] [g#4,c#5] [c#4,e4] [e4,g#4] [b4,d#5] [b4,c#5] [g#4,b4] [c#4,e4] [g#4,b4] [c#4,e4]", // E F# Em C# A#5 C# F# C#5 …
  H: "b3 g#5", I: "c#4 a#5", J: "c#4 d#4 ~ e4 f#4 g4 ~ g#4 c#5 c5 b4 a#4 g#4 [f#4,g4] e4 [c#4,d#4]",
  K: "c#6@2 [g#5,b5] [c#5,e5] c#5@2 [g#4,b4] [b3,c#4,e4] [c#3,g#3] [e3,g#3] c#3 [e3,g#3] [c#4,e4] [g#4,c#5] [e4,g#4] [g#3,c#4]", // G#m C#m G#m C#m7 C#5 E C#m C#5 …
  L: "g3/2",
})).s("gm_distortion_guitar").gain(0.6)

// other · guitar harmonics · "Guitarra solo"
const guitar_harmonics = note("<~@58 A@3 ~@19>".pickRestart({
  A: "[~@15 b4@20 ~@13]/3",
})).s("gm_guitar_harmonics").gain(0.6)

// other · whistle · "Cantrell"
const whistle = note(`<
  ~@14 A@3 ~@3 B C@2 ~ B D@2 ~@3 E@3 ~@7 B F@2 ~@2 G@2 H ~@18 I@3 ~@3 J K@2 ~ B L@2 ~
>`.pickRestart({
  A: "[e5@4 g#5@2 d#5@4 e5@4 c#5@4 d#5@3 b4@4 ~ b4@3 ~ b4@4 g#4@10 ~@4]/3", B: "g#5 b5", C: "[f#5@8 g#5@21 ~@3]/2",
  D: "[f#5@4 g#5@11 ~]/2", E: "[e5@4 g#5@2 d#5@4 e5@4 c#5@4 d#5@4 b4@3 ~ b4@3 b4@5 c#5@14]/3",
  F: "[f#5@8 g#5@15 ~@9]/2", G: "[~@15 g#5@8 ~ b5@8]/2", H: "f#5 g#5",
  I: "[e5@4 g#5@2 d#5@4 e5@4 c#5@4 d#5@4 b4@4 b4@3 ~ b4@4 g#4@14]/3", J: "g#5@7 b5@9", K: "[f#5 g#5@3]/2",
  L: "[f#5@8 g#5@19 ~@5]/2",
})).s("gm_whistle").gain(0.26)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A ~ B C B C B C B D B@3 E B@3 F B C B C B C B D B@3 E B@3 F C G H I J K C G H I J L B C B C B C B M N O M P B C B
  D B@3 E B@3 F B C B C B C B ~
>`.pickRestart({
  A: "x", B: "x!2", C: "x ~@3 x!2 ~ x", D: "x ~@9 x!2 ~@4", E: "x ~@3 x ~@2 x", F: "x ~@7 x ~ x!2 ~@4",
  G: "~ x ~@2 x!2 ~ x", H: "x!2 ~ x ~ x!3", I: "~ x ~@2 x ~@3", J: "x ~@2 x!3 ~ x", K: "~ x!5 ~@2", L: "~ x!6 ~",
  M: "x!8", N: "x!4", O: "x ~ x!3 ~ x ~", P: "x!7 ~",
})).gain(0.8)

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

// drums · hihat
const hihat = s("hh").struct("<A@4 ~@7 B ~@15 B ~@27 A ~@7 B ~@16>".pickRestart({
  A: "x!4", B: "~@5 x ~@2",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@2 A B ~@37 C ~@5 C ~@7 D ~@24>".pickRestart({
  A: "~@8 x ~@2 x!5", B: "x!13 ~@3", C: "~ x!5 ~@2", D: "~@3 x",
})).gain(0.56)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@2 [x!8 ~ x!2 ~@5] ~@77>").gain(0.24)

// drums · mid tom
const mid_tom = s("mt").struct("<~@41 A ~@5 A ~@7 B ~ C ~@22>".pickRestart({
  A: "~ x!5 ~@2", B: "~ x ~@2 x!2 ~@2", C: "~@2 x!2 ~ x!2 ~",
})).gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@7 B ~@8 A@7 B ~@8 A@2 B C A@4 B C A ~ A@7 ~@5 A@3 B ~@8 A@6 B ~>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "~ x!3",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A B ~@2 A B ~@2 A B C ~ D E C F A B ~@2 A B ~@2 A B C ~ D E C F A B ~ D ~ B A ~@2 D ~ B G ~@12 B ~@2 A B C ~ D E C
  F A B ~@2 A B ~@3
>`.pickRestart({
  A: "~@3 x", B: "x", C: "~@7 x", D: "~@5 x!3", E: "x!2 ~@2", F: "~ x ~@2", G: "x ~@2 x",
})).gain(0.72)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@14 A ~@3 A ~@11 A ~@3 A ~@31 A ~@3 A ~@9>".pickRestart({
  A: "x",
})).gain(0.08)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@12 A@3 B A@3 B ~@8 A@3 B A@3 B ~@2 C ~@5 D ~@2 E ~@16 A@3 B A@3 B ~@8
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "~@3 x", D: "~@5 x!2 ~", E: "x",
})).gain(0.8)

stack(
  bass, overdriven_guitar, distortion_guitar, guitar_harmonics, whistle, kick, snare, hihat, low_tom, low_tom_soft,
  mid_tom, open_hat, crash, crash_soft, ride_bell
)

More by Alice in Chains