Strudelify

Big Long Now

Nirvana

KeyD♭ majorTempo154 bpm
0:00/0:00
// Big Long Now — Nirvana
// 153.8 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 distortion guitar (copy of ch 1 overdriven guitar)
// note: Full arrangement: all 172 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(153.8/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
const overdriven_guitar = note(`<
  A B A B A B A B A B A B A B A B A B A B C@2 D E A B A B A B A B A B A B A B A B C@2 D E F G F G H@4 I@4 H@4 I@4 H@4
  J@8 K@8 L@8 M@7 N@8 O@8 P@4 Q@8 R@5 S@24 K@8 T@8
>`.pickRestart({
  A: "[db3,ab3,db4] ~ [f3,c4,f4]@2 [d3,a3,d4]@2 [f3,c4,f4]@2", // Db5 F5 D5 F5
  B: "[db3,ab3,db4] ~ [f3,c4,f4]@2 [g3,d4,g4]@2 [f3,c4,f4]@2", C: "[bb2,f3,bb3]!4", D: "[a2,e3,a3]!4",
  E: "[ab2,eb3,ab3]!4", F: "[db3,ab3,db4] ~ [f3,c4,f4] ~ [d3,a3,d4]@2 [f3,c4,f4]@2",
  G: "[db3,ab3,db4] ~ [f3,c4,f4] ~ [g3,d4,g4]@2 [f3,c4,f4]@2", H: "[[d3,a3,d4]!3 [db3,ab3,db4]@13]/4",
  I: "[[d3,a3,d4]!3 [db3,ab3,db4]@8 [g2,d3,g3]@5]/4", // D5 Db5 G5
  J: "[[d3,a3,d4]@6 [d3,a3,d4]@6 [d3,a3,d4]@6 [db3,ab3,db4]@47 [g2,d3,g3]@30 [d3,a3,d4]@6 [d3,a3,d4]@6 [d3,a3,d4]@6 [db3,ab3,db4]@78 [d3,a3,d4]]/8", // D5 Db5 G5 D5 Db5 D5
  K: "[~@5 [d3,a3,d4]@6 [d3,a3,d4]@6 [db3,ab3,db4]@48 [g2,d3,g3]@30 [gb2,db3,gb3]@6 [gb2,db3,gb3]@6 [gb2,db3,gb3]@6 [gb2,db3,gb3]@6 [gb2,db3,gb3]@6 [gb2,db3,gb3]@6 [gb2,db3,gb3]@6 [gb2,db3,gb3]@6 [f2,c3,f3]@6 [f2,c3,f3]@6 [f2,c3,f3]@6 [f2,c3,f3]@6 [f2,c3,f3]@6 [f2,c3,f3]@6 [f2,c3,f3]@6 [f2,c3,f3]@6 [db3,ab3,db4]]/8", // D5 Db5 G5 Gb5 F5 Db5
  L: "[~@5 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]]/8", // F5 D5 F5 Db5 F5 G5 F5 Db5 …
  M: "[~@5 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]]/7", // F5 D5 F5 Db5 F5 G5 F5 Db5 …
  N: "[~@5 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [a2,e3,a3]@6 [a2,e3,a3]@6 [a2,e3,a3]@6 [a2,e3,a3]@6 [ab2,eb3,ab3]@6 [ab2,eb3,ab3]@6 [ab2,eb3,ab3]@6 [ab2,eb3,ab3]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]]/8", // F5 G5 F5 Bb5 A5 Ab5 Db5 F5 …
  O: "[~@5 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]]/8", // F5 G5 F5 Db5 F5 D5 F5 Db5 …
  P: "[~@5 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]]/4", // F5 G5 F5 Db5 F5 D5 F5 Db5 …
  Q: "[~@5 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [bb2,f3,bb3]@6 [a2,e3,a3]@6 [a2,e3,a3]@6 [a2,e3,a3]@6 [a2,e3,a3]@6 [ab2,eb3,ab3]@6 [ab2,eb3,ab3]@6 [ab2,eb3,ab3]@6 [ab2,eb3,ab3]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@3 ~@3 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@3 ~@3 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@3 ~@3 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]]/8", // F5 G5 F5 Bb5 A5 Ab5 Db5 F5 …
  R: "[~@5 [f3,c4,f4]@3 ~@3 [g3,d4,g4]@6 [f3,c4,f4]@6 [d3,a3,d4]@6 [d3,a3,d4]@6 [d3,a3,d4]@6 [db3,ab3,db4]@78 [d3,a3,d4]]/5", // F5 G5 F5 D5 Db5 D5
  S: "[~@5 [d3,a3,d4]@6 [d3,a3,d4]@6 [db3,ab3,db4]@48 [g2,d3,g3]@30 [d3,a3,d4]@6 [d3,a3,d4]@6 [d3,a3,d4]@6 [db3,ab3,db4]@78 [d3,a3,d4]]/8", // D5 Db5 G5 D5 Db5 D5
  T: "[~@5 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [d3,a3,d4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@3 ~@3 [f3,c4,f4]@6 [g3,d4,g4]@6 [f3,c4,f4]@6 [db3,ab3,db4]@96 ~]/8", // F5 D5 F5 Db5 F5 G5 F5 Db5 …
})).s("gm_overdriven_guitar").gain(0.36)

// bass · electric bass pick
const bass = note(`<
  ~@2 A@2 B@16 C@2 D E B@16 C@2 D F B@4 G@4 H@4 G@4 H@4 G@4 I@8 J@7 K@8 L@8 M@4 N@8 O@8 P@4 Q@5 R@24 S@8 T@3 U@8 ~
>`.pickRestart({
  A: "db1/2", B: "db1", C: "bb0!4", D: "a0!4", E: "ab0!4", F: "ab1!4", G: "[d1!3 db1@13]/4", H: "[d1!3 db1@8 g1@5]/4",
  I: "[d1@6 d1@6 d1@6 db1@47 g1@30 d1@6 d1@6 d1@6 db1@78 d1]/8",
  J: "[~@5 d1@6 d1@6 db1@48 g1@30 gb0@6 gb0@6 gb0@6 gb0@6 gb0@6 gb0@6 gb0@6 gb0@6 f0@6 f0@6 f0@6 f0@6 f0]/7",
  K: "[~@5 f0@6 f0@6 f0@6 db1@24 db1@24 db1@24 db1@24 db1@24 db1@24 db1@24 db1]/8",
  L: "[~@23 db1@24 db1@24 db1@24 db1@24 db1@24 db1@24 db1@24 db1]/8",
  M: "[~@23 bb0@6 bb0@6 bb0@6 bb0@6 bb0@6 bb0@6 bb0@6 bb0@6 a0@6 a0@6 a0@6 a0@6 ab1]/4",
  N: "[~@5 ab1@6 ab1@6 ab1@6 db1@24 db1@24 db1@24 db1@24 db1@24 db1@24 db1@24 db1, ~@119 bb0@6 ~@67]/8",
  O: "[~@23 db1@24 db1@24 db1@24 db1@24 db1@24 db1@24 db1@24 db1, ~@23 bb0@6 ~@90 bb0@6 ~@67]/8",
  P: "[~@23 bb0@6 bb0@6 bb0@6 bb0@6 bb0@6 bb0@6 bb0@6 bb0@6 a0@6 a0@6 a0@6 a0@6 ab0]/4",
  Q: "[~@5 ab0@6 ab0@6 ab0@6 db1@24 db1@24 db1@24 db1@24 d1, ~@71 bb0@6 ~@43]/5",
  R: "[~@5 d1@6 d1@6 db1@78 d1@6 d1@6 d1@6 db1@48 g1@30 d1]/8",
  S: "[~@5 d1@6 d1@6 db1@78 d1@6 d1@6 d1@6 db1@48 g0@30 gb0]/8",
  T: "[~@5 gb0@6 gb0@6 gb0@6 gb0@6 gb0@6 gb0@6 gb0@6 f0@6 f0@6 f0@6 f0@6 f0]/3",
  U: "[~@5 f0@6 f0@6 f0@6 db1@24 db1@24 db1@24 db1@24 db1@73]/8",
})).s("gm_electric_bass_pick").gain(0.36)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@19 ~ A@19 ~ A@4 B C D E B C F ~ B C D E B C F ~ B C D E B G H I J K L K J K H M ~@3 N I@18 ~ I@19 ~ I@5 J K L K
  J K H I J K L K J K H I J K L K J K H I J K L K J K H M ~@3 N I@4 ~@4
>`.pickRestart({
  A: "x", B: "x!2 ~ x", C: "~ x ~@2", D: "x ~ x!2 ~@4", E: "x!2 ~@2", F: "x ~ x!2 ~@2 x ~", G: "~@6 x ~@16 x",
  H: "~@5 x ~@2 x ~@8 x ~@6", I: "~@23 x", J: "~@5 x ~@11 x ~@6", K: "~@5 x ~@17 x", L: "~@5 x ~@2 x ~@14 x",
  M: "~@5 x ~@18", N: "~@11 x ~@2 x ~@8 x",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@79 A B@3 C ~@75 A B@3 C ~@8>".pickRestart({
  A: "~@23 x", B: "~@5 x ~@5 x ~@5 x ~@5 x", C: "~@5 x ~@5 x ~@5 x ~@6",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A@16 B A B A@17 B A B A@4 C ~@35 D E@15 F E F E@17 F E F E@5 ~@36 D E@3 F ~@4
>`.pickRestart({
  A: "x!2", B: "~ x", C: "x", D: "~@23 x", E: "~@11 x ~@11 x", F: "~@11 x ~@12",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@55 A ~@7 A ~@7 B ~@7 C D E D F ~@51 B ~@7 B ~@7 B ~@7 C D E D F ~@8>".pickRestart({
  A: "~ x!7", B: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3", C: "~@23 x", D: "~@5 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x",
  E: "~@2 x ~@2 x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x", F: "~@2 x ~@2 x ~@2 x ~@15",
})).gain(0.64)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@20 A ~ A ~@17 A ~ A ~@5 B ~@3 B ~@3 B ~@3 B ~@3 B ~@3 B ~@2 C D ~@2 C D ~@22 C ~ C ~@17 C ~ C ~@5 C D ~@2 C D ~@2 C
  D ~@2 C D ~@2 C D ~@2 C D ~@2 C D ~@2 C D ~@10 C ~@4
>`.pickRestart({
  A: "x", B: "x!4", C: "~@23 x", D: "~@5 x ~@5 x ~@5 x ~@6",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@2 [x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~]!2 ~@168>").gain(0.64)

stack(overdriven_guitar, bass, kick, snare, low_tom, hihat, mid_tom, open_hat, crash, ride)

More by Nirvana