Strudelify
Rooster cover art

1992 · Dirt

Rooster

Alice in Chains

KeyF minorTempo70 bpm
0:00/0:00
// Rooster — Alice in Chains
// 70 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 107 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/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.

// chords · electric guitar clean · "Gtr.1 (Clean)"
const electric_guitar_clean = 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 A B A B A B A B C D E F C G ~@30 A B A B A B A B A B A B A B A B ~@14
  A B A B A B A H ~
>`.pickRestart({
  A: "[f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,bb3,eb4]@4 [f2,c3,f3,a3,bb3,eb4]@2 [f2,c3,f3,a3,bb3,eb4]@2 [f2,c3,f3,a3,bb3,eb4]!2", // F F7
  B: "[ab2,eb3,ab3,c4,eb4,ab4]@4 [ab2,eb3,ab3,c4,eb4,ab4]@2 [ab2,eb3,ab3,bb3,c4,eb4]@4 [ab2,eb3,ab3,bb3,c4,eb4]@2 [ab2,eb3,ab3,bb3,c4,eb4]@2 [ab2,eb3,ab3,bb3,c4,eb4]!2", // Ab
  C: "[bb2,f3,bb3,d4,f4,bb4]@2 [bb2,f3,bb3,d4,f4,bb4]!6", // Bb
  D: "[db3,ab3,db4,f4,ab4,db5]@2 [db3,ab3,db4,f4,ab4,db5]@2 [db3,ab3,db4,f4,ab4,db5]@2 [db3,ab3,db4,f4,ab4,db5]@2 [db3,ab3,db4,f4,ab4,db5]@2 [db3,ab3,db4,f4,ab4,db5]@2 [db3,ab3,db4,f4,ab4,db5]@2 [db3,ab3,db4,f4,ab4,db5]!2", // Db
  E: "[eb2,c3,f3,a3,bb3,eb4] [f2,c3,f3,a3,c4,f4]@3 [f2,c3,f3,a3,c4,f4] [eb2,c3,f3,a3,bb3,eb4] [f2,c3,f3,a3,c4,f4]@8 [f2,c3,f3,a3,c4,f4] [eb2,c3,f3,a3,bb3,eb4]", // F7 F F7 F F7
  F: "[f2,c3,f3,a3,c4,f4]@3 [f2,c3,f3,a3,c4,f4]!3 [f2,c3,f3,a3,c4]@3 [f2,c3,f3,a3,c4,f4] [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!4", // F
  G: "[db3,ab3,db4,f4,ab4,db5]!8", H: "[ab2,eb3,ab3,c4,eb4,ab4]",
})).s("gm_electric_guitar_clean").gain(0.16)

// chords · distortion guitar · "Gtr.2 (Dist.)"
const distortion_guitar = note(`<
  ~@29 A B@2 ~@6 C D E F C D E F G H I@2 G H I@2 J K L M J K C D E F C D E F N@4 O@2 P Q R@2 S T U@4 J K L M J K C D E F
  C D E F V@3 W X Y@3 ~
>`.pickRestart({
  A: "ab3@14 eb3 f3", B: "[ab3 f3@31]/2", C: "[eb2,bb2] [f2,c3,f3]@2 [f2,c3,f3,a3,bb3,eb4]@5",
  D: "[ab2,eb3,ab3]@3 c3@2 b2@2 bb2", E: "[ab2,eb3] [f2,c3]@2 [f2,c3,f3,a3,bb3,eb4]@5",
  F: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3,eb4,ab4]@5", G: "[bb2,bb3] [a2,a3] [bb2,bb3] [c3,c4]@5",
  H: "[c3,c4]@3 [bb2,bb3]@3 [c3,c4]@2", I: "[[a2,a3] [f2,f3] [eb2,eb3] [eb2,eb3]@13]/2", J: "[bb2,f3,bb3,d4,f4,bb4]!8",
  K: "[db3,ab3,db4,f4,ab4,db5]!8", // Db
  L: "[eb2,c3,f3,a3,bb3,eb4] [f2,c3,f3,a3,c4,f4]@2 [f2,c3,f3,a3,c4,f4]!3 [f2,c3,f3,a3]@6 ~@2 [f2,c3,f3,a3]!2", // F7 F
  M: "[eb2,c3,f3,a3] [f2,c3,f3,a3]@2 [f2,c3,f3,a3]!3 [f2,bb2,f3,bb3,d4]@3 [f2,c3,f3,a3] [f2,c3,f3,a3,c4,f4]@4 [f2,c3,f3,a3,c4,f4]!2", // F7 F Bb F
  N: "[[f2,c3,f3]@56 ~@6 eb5 c5]/4", O: "eb5/2", P: "f5 ab4 eb5@14", Q: "[ab4,c5] gb4 c5@14", R: "[[ab4,c5] f4@15]/2",
  S: "eb4 f4 ab4 f4 eb4 f4 ab4 f4", T: "eb4@2 f4@2 ab4@2 f4@2 bb4@2 f4@2 ab4@2 bb4 c5", U: "[c5 eb5@31]/4",
  V: "[f2,c3,f3]/3", W: "g4 ab4@5 g4@2", X: "f4", Y: "[~@2 d4@2 d4!2 d4@3 ~ c4@14]/3",
})).s("gm_distortion_guitar").gain(0.64)

// bass · electric bass pick · "Bass"
const bass = note(`<
  A B C D A B E F A B E G A B E G A H I J K L M N A H I O M L M P Q R S T Q R U H V W U H V W X Y V Z X Y V Z AA AB AC
  AD AA AB U H V AE U H V AE P A H I J K L M N A H I O M L M AF AB AC AD AA AB U H V AG U H V AH AI B AJ F AI AK AL P ~
>`.pickRestart({
  A: "eb2 f2@2 f2@5", B: "ab1@3 bb2@2 ab2@2 eb2", C: "f2@3 f2@5", D: "ab1@6 ab1@4 ab1@2 ab1@2 ab1!2",
  E: "f2@3 f2@3 f2@2", F: "ab1@6 ab1@6 ab1@2 ab1!2", G: "ab1@10 ab1@2 ab1@2 ab1!2", H: "ab1@3 c2@2 b1@2 bb1",
  I: "ab1 f1@2 f2@5", J: "ab1@3 ab1@3 ab1 eb1", K: "f1@2 ~ f2@5", L: "ab1@7 eb1", M: "f1@3 f2@5", N: "ab1@14 ab1!2",
  O: "ab1@6 ab1@3 ab1 ab1@2 ab1@2 eb1@2", P: "ab1", Q: "bb1 c2 db2 f2", R: "ab2@3 ab2", S: "eb1 f1@3 f1@2 f2@10",
  T: "eb1 f1@2 eb1 f1 eb1 f2@3 f1 f1@2 f1!2 f1@2", U: "eb1 f1!2 f2@2 f2 f1@2", V: "ab1@2 f1@4 f2@4 f1@2 f2@2 f2!2",
  W: "ab1@6 ab2@3 ab2 ab2@2 ab2@2 ab2!2", X: "eb2 f2@2 f2@2 f2 f1 ab1", Y: "ab1@3 c2@2 c2@2 bb1",
  Z: "ab1@6 ab1@3 ab1 ab1@2 ab1@2 ab1@2", AA: "bb1!2 c2!2 db2!2 f2!2",
  AB: "ab2@2 ab2@2 ab2@2 ab2@2 ab2@2 ab2@2 ab2@2 ab2!2", AC: "eb1 f1@3 f1@2 f2@6 f2@2 f2!2",
  AD: "eb1 f1@2 eb1 f1 eb1 f2@3 f1 f1@2 f1@2 f1@2", AE: "ab1@3 ab1 ab1@2 ab2@3 ab2 ab2@2 ab2@4",
  AF: "ab1@6 ab1@3 ab1 ab1@2 ab1@2 ab1!2", AG: "ab1@6 ab2@3 ab2 ab2@2 ab2@2 eb1@2", AH: "ab1@3 ab1@5",
  AI: "eb2 f2!2 f2@3 f2@2", AJ: "f2@2 f2 f2@5", AK: "ab1@3 ab2 bb2@2 ab2@2", AL: "f2@5 f2 f2@2",
})).s("gm_electric_bass_pick").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@38 A@16 B@2 A@2 B@2 A@7 ~@17 B@2 A@2 B@2 A@7 ~@10>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~", B: "x!8",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@38 A@16 ~@2 A@2 ~@2 A@7 ~@19 A@2 ~@2 A@7 ~@10>".pickRestart({
  A: "~ x ~ x",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@38 [x!8]!29 ~@17 [x!8]!13 ~@10>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@21 A ~@28 A ~@29 A ~@7 A ~>".pickRestart({
  A: "x",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 [~ x ~ x]!22 ~@30 [~ x ~ x]!16 ~@14 [~ x ~ x]!7 ~@2>").gain(0.64)

stack(electric_guitar_clean, distortion_guitar, bass, kick, snare, open_hat, crash, tambourine)

More by Alice in Chains