Strudelify

Man in a Box (live)

Alice in Chains

KeyE♭ minorTempo105 bpm
0:00/0:00
// Man in a Box (live) — Alice in Chains
// 105 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 5 "Bass2" synth bass 1 (copy of ch 2 "Bass1" fretless bass)
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/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 · overdriven guitar · "Gtr1"
const overdriven_guitar = note(`<
  A B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C D E D F B@3 G H@8 I@8 B@3 C B@3 C B@3 C B@3 C D E D F B@3 J H@8 I@8 B@3 C B@3 C
  K@4 B@3 C H@8 I@8 B@3 C B@3 C L
>`.pickRestart({
  A: "~@12 [eb2,bb2,eb3]@3 ~", // Eb5
  B: "[eb2,bb2,eb3]@2 [eb2,bb2,eb3] ~ [eb2,bb2,eb3] ~ [eb2,bb2,eb3]@2 [eb2,bb2,eb3] ~ [eb2,bb2,eb3] ~ [eb2,bb2,eb3]@2 [eb2,bb2,eb3] ~", // Eb5
  C: "[eb2,bb2,eb3]@2 [eb2,bb2,eb3] ~ [eb2,bb2,eb3] ~ [eb2,bb2,eb3]@2 [eb2,bb2,eb3] ~ [eb2,bb2,eb3] ~@2 bb2 [eb2,db3,eb3] ~, ~@6 [eb2,ab2,eb3] ~", // Eb5 Eb7 Ab5
  D: "[db3,gb3,bb3]@15 ~", E: "[gb3,bb3,db4]@15 ~", F: "[bb2,db3,gb3]@15 ~", G: "eb3@2 db3@2 bb2 a2 ab2 gb2, db3 ~@15",
  H: "[[eb2,bb2,eb3]@13 ~ [gb2,db3,gb3]@15 ~ [db2,ab2,db3]@15 ~ [ab2,eb3,ab3]@15 ~ [eb2,bb2,eb3]@15 ~ [gb2,db3,gb3]@15 ~ [db2,ab2,db3]@15 ~ [ab2,eb3,ab3]@15 ~ [eb2,bb2,eb3]@2]/8", // Eb5 Gb5 Db5 Ab5 Eb5 Gb5 Db5 Ab5 …
  I: "[~@14 [gb2,db3,gb3]@15 ~ [db2,ab2,db3]@15 ~ [ab2,eb3,ab3]@15 ~ [eb2,bb2,eb3]@15 ~ [gb2,db3,gb3]@15 ~ [db2,ab2,db3]@15 ~ [ab2,eb3,ab3]@15 ~ [eb2,bb2,eb3]@2]/8", // Gb5 Db5 Ab5 Eb5 Gb5 Db5 Ab5 Eb5
  J: "[db4,gb4,bb4]@5 ~ [db4,gb4,bb4]@3 ~ gb4@2 eb4@2 db4@2", // Gb
  K: "~@4 [g3,bb3,gb4]@4 [eb2,eb3] ~@3 [g3,bb3,gb4]@3 ~, [eb2,eb3]@7 ~@3 [eb2,eb3]@5 ~", L: "[eb2,bb2,eb3] ~@7",
})).s("gm_overdriven_guitar").gain(0.31)

// bass · fretless bass · "Bass1"
const bass = note(`<
  ~ A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C D E D F A@3 G H@8 I@8 A@3 B A@3 B A@3 B A@3 C D E D F A@3 G H@8 I@8 A@3 B A@3 B
  J@4 A@3 B H@8 I@8 A@3 B A@3 B K
>`.pickRestart({
  A: "eb2@3 ~@3 eb2@3 ~ eb2@3 ~ eb2@2", B: "eb2@3 ~@3 eb2@3 ~ eb3@2 ab2 bb2 db3@2",
  C: "eb2@3 ~@3 eb2@3 ~ eb2@2 e2@2 f2@2", D: "gb2 ab2 a2 bb2", E: "bb2@4 a2@4 ab2@4 gb2@3 ~", F: "bb2 a2 ab2 db2",
  G: "eb3@2 db3@2 bb2 a2 ab2 gb2, db3 ~@15",
  H: "[eb2@2 ~ eb2 gb2 ab2 bb2 gb2@3 ~ gb2 ab2 bb2 db3 db2@3 ~ db2 f2 gb2 ab2 ab2@3 ~ ab2 c2 db2 d2 eb2@3 ~ eb2 gb2 ab2 bb2 gb2@3 ~ gb2 ab2 bb2 db3 db2@3 ~ db2 f2 gb2 ab2 ab2@3 ~ ab2 c2 db2 d2 eb2]/8",
  I: "[~@3 eb2 gb2 ab2 bb2 gb2@3 ~ gb2 ab2 bb2 db3 db2@3 ~ db2 f2 gb2 ab2 ab2@3 ~ ab2 c2 db2 d2 eb2@3 ~ eb2 gb2 ab2 bb2 gb2@3 ~ gb2 ab2 bb2 db3 db2@3 ~ db2 f2 gb2 ab2 ab2@3 ~ ab2 c2 db2 d2 eb2]/8",
  J: "eb2@5 ~ eb2@2 gb2@2 ab2@2 bb2@2 db2@2", K: "eb2 ~@7",
})).s("gm_fretless_bass").gain(0.41)

// chords · distortion guitar · "Gtr2"
const distortion_guitar = note(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B A B C D C E A B A B F@8 G@8 B A B@2 A@2 H B A B A B A B A B C D C E A B
  A B F@8 G@8 B A@2 B A B A B I@4 A B A B F@8 G@8 B A B@2 A@2 H B J
>`.pickRestart({
  A: "[ab2,db3]@2 ~@4 [ab2,db3]@2 ~@2 [ab2,db3]@2 ~@2 [bb2,eb3] ~", // Db5 Eb5
  B: "[ab2,db3] ~@2 [ab2,db3] ~ [ab2,db3] ~ [bb2,eb3]", C: "[db3,gb3,bb3]@15 ~", D: "[gb3,bb3,db4]@15 ~",
  E: "[bb2,db3,gb3]@15 ~", // Gb
  F: "[[eb2,bb2,eb3]@13 ~ [gb2,db3,gb3]@15 ~ [db2,ab2,db3]@15 ~ [ab2,eb3,ab3]@15 ~ [eb2,bb2,eb3]@13 ~@3 [gb2,db3,gb3]@15 ~ [db2,ab2,db3]@15 ~ [ab2,eb3,ab3]@15 ~ [eb2,bb2,eb3]@2]/8", // Eb5 Gb5 Db5 Ab5 Eb5 Gb5 Db5 Ab5 …
  G: "[~@14 [gb2,db3,gb3]@15 ~ [db2,ab2,db3]@15 ~ [ab2,eb3,ab3]@15 ~ [eb2,bb2,eb3]@13 ~@3 [gb2,db3,gb3]@15 ~ [db2,ab2,db3]@15 ~ [ab2,eb3,ab3]@15 ~ [eb2,bb2,db3]@2]/8", // Gb5 Db5 Ab5 Eb5 Gb5 Db5 Ab5 Eb7
  H: "[eb2,ab2,bb2,db3] ~@2 [ab2,db3] ~ [ab2,db3] ~ [bb2,eb3]", I: "[eb2,eb3]@15 ~", J: "[ab2,db3] ~@7",
})).s("gm_distortion_guitar").gain(0.36)

// drums · kick
const kick = s("bd").struct("<A B@32 C@16 B@24 C@16 B@16 C@16 B@8 D>".pickRestart({
  A: "~@5 x ~ x", B: "x ~@2 x ~ x ~ x", C: "x ~@3 x!2 ~ x", D: "x",
})).gain(0.46)

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

// drums · hihat
const hihat = s("hh").struct("<[x!4] [x!8]!128 x>").gain(0.46)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 B C@15 ~@12 A ~@3 A ~@3 A ~@3 B C@15 ~@8 A@5 ~@3 B C@15 ~@8 A
>`.pickRestart({
  A: "x", B: "x ~@6 x", C: "~@7 x",
})).gain(0.46)

stack(overdriven_guitar, bass, distortion_guitar, kick, snare, hihat, crash)

More by Alice in Chains