Strudelify
Dumb cover art

In Utero

Dumb

Nirvana

KeyE minorTempo121 bpm
0:00/0:00
// Dumb — Nirvana
// 121 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 4 "Guitar 1 Clean" electric guitar clean (copy of ch 2 "Guitar 1 PickedMuting" electric guitar muted)
// note: Full arrangement: all 73 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Guitar 1 Distortion.
setcpm(121/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 · electric guitar muted · "Guitar 1 PickedMuting"
const electric_guitar_muted = note(`<
  A B C D A B A E F G H I J K L M N B O P Q B R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK A AK AL AK AM AN AO AP
  AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BA BE BA BF BG ~@4
>`.pickRestart({
  A: "[e2,b2]@2 [e3,a3] d2 a2 e3 [a3,c#4] d2", B: "[g2,d3]@2 [g3,c4] d2 c3 g3 [c4,e4] d2",
  C: "[e2,b2]@2 [e3,a3] d2 [a2,e3] e3 [a3,c#4] d2", D: "[g2,d3]@2 [g3,c4] d2 c3 e3 [c4,e4] d2",
  E: "[g2,d3]@2 [g3,c4] d2 g3 [g3,c4,e4] [g3,c4,e4]@2", F: "[d2,b2]@3 [a2,b2,e3]@2 [a2,b2,e3] [b2,e3] [d2,g2,b2]",
  G: "[f#2,d3,g3,b3,g4]@2 [f#2,d3,g3] [f#2,d3,g3,b3,g4]@2 [g3,b3,g4] [f#2,d3,g3,b3,g4] [d3,g3,b3]", // Gmaj7 G Gmaj7 G
  H: "[d2,b2,e3]@3 [d2,b2,e3,b3,e4]@2 [b3,e4] [d2,b2,e3,b3,e4] [b2,e3,b3]", // E7 E5 E7 E5
  I: "[f#2,d3]@2 [d3,g3,b3] [d2,d3,g3,b3,e4]@2 [d2,d3,g3,b3,e4] [d2,d3,g3,b3] [d3,g3,b3]", // D G Em7 G
  J: "[d2,b2,e3]@2 d2 [d2,b2,e3,b3]@2 [e3,b3] [d2,b2,e3,b3] [d3,g3]", // E7 E5 E7 G5
  K: "[f#2,d3,g3,b3,e4]@2 [f#2,d3] [f#2,d3,g3,b3,e4]@2 [g3,b3,e4] [f#2,d3,g3,b3,e4] [d3,g3,b3]", // Em7 D Em7 Em Em7 G
  L: "[d2,b2,b3]@2 d2 [d2,b2,e3,b3]@2 [b3,e4] [c2,g2,e3,b3,e4] [d3,g3]", // G E7 E5 Cmaj7 G5
  M: "[d2,d3,g3,b3,e4]@2 [d3,g3,b3] d2 b2 [b2,d3,g3,c4] [b2,d3,g3] [d3,g3]", // Em7 G G5
  N: "[d2,b2]@2 [d2,b2] [d3,g3] a2 e3 [a3,c#4] d2", O: "[d2,b2]@2 [e3,g3] d2 a2 e3 [a3,c#4] d2",
  P: "[g2,d3]@2 [g3,c4] d2 [c3,g3] g3 [c4,e4] d2", Q: "[d2,b2]@2 [e3,a3] d2 [a2,e3] e3 [a3,c#4] d2",
  R: "[d2,b2]@2 [d3,a3] d2 a2 e3 [a3,c#4] d2", S: "[g2,d3]@2 [d3,g3,b3] [g3,b3] [d3,g3,c4,e4] [g3,c4,e4] [g3,c4,e4]@2",
  T: "[f#2,b2,e3]@2 e3 [f#2,b2,e3,b3,e4]@2 [e3,b3,e4] [f#2,b2,e3,b3,e4] [b2,e3,b3]", // Esus2 E5 Esus2 E5
  U: "[g2,d3,g3,b3]@2 g2 [g2,d3,g3,b3,g4]@2 [g3,b3,g4] g2 [d3,g3,b3]", // G
  V: "[d2,b2,e3]@2 d2 [d2,b2,e3,b3,e4]@2 [e3,b3] [d2,b2,e3,b3,e4] [b2,e3]", // E7 E5 E7 E5
  W: "[g2,d3,g3,b3,g4]@2 [d3,g3,b3] [g2,d3,g3,b3,g4]@2 [g3,b3,g4] [g2,d3,g3,b3,g4] [g2,d3,g3]", // G G5
  X: "[d2,b2,e3]@3 [e3,b3,e4]@2 [b3,e4] [e3,b3,e4] [e3,g3,b3]", // E7 E5 Em
  Y: "[g2,d3,g3,b3,g4]@2 [g2,d3] [g2,d3,g3,b3,g4]@2 [g2,d3,g3,b3,g4] [g2,d3,g3,b3,g4]@2", // G G5 G
  Z: "[d2,b2]@3 [d2,b2,e3,b3,e4]@2 [b3,e4] [d2,b2] [d3,g3]", // G E7 E5 G G5
  AA: "[g2,d3,g3,b3,g4]@2 [g2,d3,g3] g2 b2 [b2,d3,g3,b3] b2 [d3,g3]", // G G5 G G5
  AB: "[b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4] [f#2,b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4] [f#3,b3,d#4] [d3,g3]", // B G5
  AC: "[c3,g3,c4,e4]@2 [g3,c4,e4] [g2,c3,g3,c4,e4] ~ [g2,c3,g3,c4,e4] [g3,c4,e4] d3", // C
  AD: "[b2,f#3,b3,d#4]@2 [f#3,b3,d#4] [f#2,b2,f#3,b3,d#4]@2 [b2,f#3,b3,d#4] [f#3,b3,d#4] d3", // B
  AE: "[g2,c3,g3,c4,e4]@2 [g3,c4,e4] [g2,c3,g3,c4,e4]@2 [g3,c4,e4] [g2,c3,g3,c4,e4] d3", // C
  AF: "[b2,f#3,b3,d#4]@2 [f#3,b3,d#4] [f#2,b2,f#3,b3,d#4]@2 [f#3,b3,d#4] [f#2,b2,f#3,b3,d#4] [d3,g3]", // B G5
  AG: "[c3,g3,c4,e4]@2 [g3,c4,e4] [g2,c3,g3,c4,e4]@2 [g2,c3,g3,c4,e4] [g3,c4,e4] ~", // C
  AH: "[b2,f#3,b3,d#4]@2 [f#3,b3,d#4] [f#2,b2,f#3,b3,d#4]@2 [f#3,b3,d#4]!2 d2", AI: "[c3,g3,c4,e4]",
  AJ: "[e2,b2]@2 [e3,a3] d2 a2 d3 [a3,c#4] d2", AK: "[g2,d3]@2 [a3,c4] d2 c3 g3 [c4,e4] d2",
  AL: "[e2,b2]@2 [e3,g3] d2 [a2,e3] e3 [a3,c#4] d2", AM: "[e2,b2]@2 [e3,g3] d2 [a2,d3] d3 [a3,c4] d2",
  AN: "[g2,d3]@2 [g3,c4] [d2,a2] g3 [c3,g3,c4,e4] [g3,c4,e4]@2", // G5 C5 D5 C
  AO: "[e2,b2]@2 e2 [e2,b2,e3,b3]@2 e4 [e3,b3,e4] [d3,g3]", // E5 G5
  AP: "[g2,d3]@2 [g2,d3,g3,b3,g4] [g2,d3,g3,b3,g4]@2 [g2,d3,g3,b3] [d3,g3,b3]!2", // G5 G
  AQ: "[d2,b2]@3 [b3,e4]@2 [b3,e4] [d2,b2,e3,b3] [d3,g3]", // G E5 E7 G5
  AR: "[g2,d3]@2 [g2,d3,g3,b3] [g2,d3,g3,b3,g4]@2 [g3,b3,g4] [g2,d3,g3,b3,g4] [d3,g3,b3]", // G5 G
  AS: "[d2,b2]@3 [d2,b2,e3,b3,e4]@2 d2 [e3,b3] [d3,g3]", // G E7 E5 G5
  AT: "[g2,d3]@2 [d3,g3,b3,g4] [g2,d3,g3,b3,g4]@2 [g3,b3,g4] [d3,g3]!2", // G5 G G5
  AU: "[d2,b2]@2 d2 [e3,b3,e4]@2 [b3,e4] [e3,b3] [d3,g3]", AV: "[g2,d3,g3]@2 [g3,b3,g4] [g2,d3,g3] b2!3 [d3,g3,b3]",
  AW: "[f#2,b2]@2 [b2,e3,b3] [c3,g3,b3] [a2,e3,a3] [d2,a2,e3,a3] [e3,g3]@2, ~@6 a2 ~", // B5 E5 Cmaj7 A5 Dsus2 Em
  AX: "[g2,d3,g3,b3]@2 [d3,g3,b3] [g2,d3,g3] [d3,g3,b3]!3 d2", AY: "[g2,b2,e3]@2 [e3,b3] [d3,g3] [a2,e3,a3]!3 [e3,a3]",
  AZ: "g2@2 [d3,g3] [g2,d3,g3] [c3,g3,c4]!3 [d3,g3]", BA: "[f#2,b2]@2 [e3,b3] [d3,g3] [a2,e3,a3]!3 [d3,g3]",
  BB: "[g2,d3,g3,b3]@2 [d3,g3,b3] [g2,d3,g3] [c3,g3,c4]!3 d2", BC: "[f#2,b2]@2 [e3,b3] [a2,e3,a3]!3 [d3,g3,b3] ~",
  BD: "[g2,d3,g3,b3]@2 [d3,g3,b3] [g2,d3,g3] [c3,g3,c4]!3 [d3,g3]", // G G5 C5 G5
  BE: "[g2,d3]@2 [g3,b3] [g2,d3,g3,b3] [c3,g3,c4]!3 [d3,g3]", // G5 G C5 G5
  BF: "[g2,d3,g3]@2 [d3,g3,b3] [g2,d3,g3,b3] [c3,g3,c4]!3 [d3,g3,b3]", BG: "[d2,b2,e3,b3]",
})).s("gm_electric_guitar_muted").gain(0.48)

// other · cello · "Guitar 2 - Cello"
const cello = note(`<
  ~@8 A@2 B@2 C@2 D@2 E ~@7 C@2 F@2 G@2 F@2 H I J@2 K L M@3 ~@7 N@2 F@2 O@2 P@2 Q R Q R Q R Q R Q R Q R S ~@4
>`.pickRestart({
  A: "[e3@2 e3@2 g3 f#3 e3 d3@4 e3@5]/2", B: "[e3@4 g3 f#3 e3 d3@3 b2!4 a2@2]/2", C: "[e3@4 g3 f#3 e3 d3@4 e3@4 d3]/2",
  D: "[e3@4 g3 f#3 e3 d3@3 b2@2 b2@2 a2@2]/2", E: "d2 ~@3", F: "[e3@4 g3 f#3 e3 d3@3 b2@2 b2@2 b2@2]/2",
  G: "[e3@3 e3 g3 f#3 e3 d3@4 e3@5]/2", H: "b3@5 b3!3", I: "c4@5 b3 b3@2", J: "[e4@3 ~@2 g4 g4@2, ~@6 a4@5 ~@5]/2",
  K: "b3@2 b3@3 b3!2 c4", L: "c4@2 c4@3 b3 b3@2", M: "[e4@2 a4 a4 g4@4]/3", N: "[e3@3 d3 g3 f#3 e3 d3@4 e3@5]/2",
  O: "[e3@4 g3 f#3 e3 d3@4 e3@5]/2", P: "[e3@3 e3 g3 f#3 e3 d3@3 b2@2 b2@2 b2@2]/2", Q: "b2 c3", R: "g2 c3",
  S: "b2@3 ~",
})).s("gm_cello").gain(0.45)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B A B C D A E F G H I H J K I C B L B M N A B H O H I K P H Q R S R S R S R T U V L B C W U V X J X Y K Z AA AB AC
  AD AC AD AC AD AC AD AC AD AC AD AE ~@4
>`.pickRestart({
  A: "e1@2 e1!2 a1@2 a1@2", B: "g1!2 c1!2", C: "e1@2 ~ e1 a1@2 ~ a1", D: "g1@2 ~ g1 c1@2 ~ c1",
  E: "g1@2 g1@2 c1@2 c1!2", F: "e1@2 e1@2 e1!4", G: "g1!2", H: "e1@3 ~ e1!4", I: "g1 c1!3", J: "g1@2 g1!2",
  K: "e1@4 e1!4", L: "e1@2 ~ e1 a1@2 a1@2", M: "e1@2 e1!2 a1@2 ~ a1", N: "g1@2 ~ g1 c1!4", O: "g1@3 g1@4 g1",
  P: "g1@3 ~ g1@2 g1@2", Q: "g1 c1!2 e1", R: "b1@5 ~ b1!2", S: "c2@5 ~ c2!2", T: "c2", U: "e1@2 e1!2 a1@2 a1!2",
  V: "g1@2 g1!2 c1@2 c1@2", W: "g1!4 c1@2 c1@2", X: "e1@3 e1!5", Y: "g1 b0!3", Z: "g1!3 e1", AA: "e1@4 g1!4",
  AB: "e1!4", AC: "e2@2 e2!2 a2!4", AD: "g2@2 g2!2 c2!4", AE: "e2",
})).s("gm_electric_bass_finger").gain(0.29)

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

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

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

// drums · hihat
const hihat = s("hh").struct("<A B@6 C ~@8 D B@6 C ~@15 C A B@6 C ~@25>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x!3 ~", D: "~@2 x!2",
})).gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct("<~@67 [~@3 x] ~@5>").gain(0.45)

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

// drums · crash
const crash = s("cr").struct("<A ~@7 A ~@7 A ~@7 A ~@7 A ~ A ~ A ~ A ~ A ~@7 A@9 ~@3 A ~@3 A ~@3 A ~@4>".pickRestart({
  A: "x",
})).gain(0.45)

// drums · ride
const ride = s("rd").struct("<~@8 A@8 ~@8 A@14 B ~@9 A@20 C ~@4>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x",
})).gain(0.45)

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

More by Nirvana