Strudelify

Same In The End

Sublime

KeyD minorTempo106 bpm
0:00/0:00
// Same In The End — Sublime
// 106 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(106/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar clean · "TabIt MIDI - Track 1"
const electric_guitar_clean = note("<A@8 ~@8 B@4 A@7 C ~@7 D E@4 A@7 F ~@7 G H@3 I J K L M N>".pickRestart({
  A: "~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]", // Dm
  B: "~ [d4,f4,a4] ~ [d4,f4,a4] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [d4,f4,a4] ~ [d4,f4,a4]", // Dm C F Dm
  C: "~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~@4", // Dm
  D: "~@13 [d4,f4,a4] ~ [d4,f4,a4]", // Dm
  E: "~ [e4,g4,c5] ~ [e4,g4,c5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4]", // C F Dm
  F: "~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~@8", // Dm
  G: "~@9 [d4,f4,a4] ~ [d4,f4,a4] ~ [e4,g4,c5] ~ [e4,g4,c5]", // Dm C
  H: "~ [a4,c5,f5] ~ [a4,c5,f5] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [d4,f4,a4] ~ [e4,g4,c5] ~ [e4,g4,c5]", // F Dm C
  I: "~ [a4,c5,f5] ~ [a4,c5,f5] ~ [d4,f4,a4] ~ [d4,f4,a4] [d3,a3,d4]@2 [d3,a3,d4]!6", // F Dm D5
  J: "[d3,a3,d4]@2 [d3,a3,d4]!6 [bb2,f3,bb3]@2 [bb2,f3,bb3]!6", // D5 Bb5
  K: "[bb2,f3,bb3]@2 [bb2,f3,bb3]!6 [f2,c3,f3]@2 [f2,c3,f3]!6", // Bb5 F5
  L: "[f2,c3,f3]@2 [f2,c3,f3]!6 [a2,e3,a3]@2 [a2,e3,a3]!6", M: "a3 g3 f3 e3", N: "[d3,a3,d4,f4]",
})).s("gm_electric_guitar_clean").gain(0.37)

// chords · distortion guitar · "TabIt MIDI - Track 1"
const distortion_guitar = note("<~@8 A B C D A E C D ~@11 F G H I J G K I L ~@11 M N O P Q N R P S ~@9>".pickRestart({
  A: "[f2,c3,f3]@2 [f2,c3,f3]!6 [c3,g3,c4]@2 [c3,g3,c4]!6", // F5 C5
  B: "[a2,e3,a3]@2 [a2,e3,a3]!6 [d3,a3,d4]@2 [d3,a3,d4]!3 [c3,g3,c4]!2 [bb2,f3,bb3]", // A5 D5 C5 Bb5
  C: "[bb2,f3,bb3]@2 [bb2,f3,bb3]!6 [f2,c3,f3]@2 [f2,c3,f3]!6", D: "[a2,e3,a3]@2 [a2,e3,a3]!14",
  E: "[a2,e3,a3]@2 [a2,e3,a3]!6 [d3,a3,d4]@2 [d3,a3,d4]!4 [c3,g3,c4] [bb2,f3,bb3]", F: "~@12 [f2,c3,f3]@2 [f2,c3,f3]!2",
  G: "[f2,c3,f3]!4 [c3,g3,c4]@2 [c3,g3,c4]!6 [a2,e3,a3]@2 [a2,e3,a3]!2", // F5 C5 A5
  H: "[a2,e3,a3]!4 [d3,a3,d4]@2 [d3,a3,d4]!3 [c3,g3,c4]!2 [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]!2", // A5 D5 C5 Bb5
  I: "[bb2,f3,bb3]!4 [f2,c3,f3]@2 [f2,c3,f3]!6 [a2,e3,a3]@2 [a2,e3,a3]!2", J: "[a2,e3,a3]!12 [f2,c3,f3]@2 [f2,c3,f3]!2",
  K: "[a2,e3,a3]!4 [d3,a3,d4]@2 [d3,a3,d4]!4 [c3,g3,c4] [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]!2", // A5 D5 C5 Bb5
  L: "[a2,e3,a3]!12 ~@4", M: "~@8 [f2,c3,f3]@2 [f2,c3,f3]!6", N: "[c3,g3,c4]@2 [c3,g3,c4]!6 [a2,e3,a3]@2 [a2,e3,a3]!6",
  O: "[d3,a3,d4]@2 [d3,a3,d4]!3 [c3,g3,c4]!2 [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]!6", // D5 C5 Bb5
  P: "[f2,c3,f3]@2 [f2,c3,f3]!6 [a2,e3,a3]@2 [a2,e3,a3]!6", Q: "[a2,e3,a3]!8 [f2,c3,f3]@2 [f2,c3,f3]!6",
  R: "[d3,a3,d4]@2 [d3,a3,d4]!4 [c3,g3,c4] [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]!6", S: "[a2,e3,a3]!8 ~@8",
})).s("gm_distortion_guitar").gain(0.37)

// bass · electric bass finger · "TabIt MIDI - Track 2"
const bass = note(`<
  A@8 B C D E B F D E G@3 H I@7 J K L M N K O M P Q@3 R A@7 S T U V W T X V Y Z@3 AA X D V AB AC
>`.pickRestart({
  A: "d2@2 d2 a2 d2@2 d2 a1 d2@2 d2 a2 d2@2 d2 a1", B: "f1@2 f1!6 c2@2 c2!6", C: "a1@2 a1!6 d2@2 d2!3 c2!2 bb1",
  D: "bb1@2 bb1!6 f1@2 f1!6", E: "a1@2 a1!14", F: "a1@2 a1!6 d2@2 d2!4 c2!2",
  G: "d2 d2@2 d2 c2 c2@2 c2 f2 f2@2 f2 d2 d2@2 a1", H: "d2 d2@2 d2 c2 c2@2 c2 f2 f2@2 f2 d2@2 d2 a2",
  I: "d2@2 d2 a1 d2@2 d2 a2 d2@2 d2 a1 d2@2 d2 a2", J: "d2@2 d2 a1 d2@2 d2 a2 d2@2 d2 a1 f1@2 f1!2",
  K: "f1!4 c2@2 c2!6 a1@2 a1!2", L: "a1!4 d2@2 d2!3 c2!2 bb1 bb1@2 bb1!2", M: "bb1!4 f1@2 f1!6 a1@2 a1!2",
  N: "a1!12 f1@2 f1!2", O: "a1!4 d2@2 d2!4 c2!2 bb1@2 bb1!2", P: "a1!12 d2 d2@2 d2",
  Q: "c2 c2@2 c2 f2 f2@2 f2 d2 d2@2 a1 d2 d2@2 d2", R: "c2 c2@2 c2 f2 f2@2 f2 d2@2 d2 a2 d2@2 d2 a1",
  S: "d2@2 d2 a2 d2@2 d2 a1 f1@2 f1!6", T: "c2@2 c2!6 a1@2 a1!6", U: "d2@2 d2!3 c2!2 bb1 bb1@2 bb1!6",
  V: "f1@2 f1!6 a1@2 a1!6", W: "a1!8 f1@2 f1!6", X: "d2@2 d2!4 c2!2 bb1@2 bb1!6", Y: "a1!8 d2 d2@2 d2 c2 c2@2 c2",
  Z: "f2 f2@2 f2 d2 d2@2 a1 d2 d2@2 d2 c2 c2@2 c2", AA: "f2 f2@2 f2 d2!4 d2@2 d2!6", AB: "a2 g2 f2 e2", AC: "d2",
})).s("gm_electric_bass_finger").gain(0.64)

// other · distortion guitar · "TabIt MIDI - Track 4" · Dm
const distortion_guitar_2 = note(`<
  ~@59
  [~@8 d3@2 d3 f3@3 g3@2]
  [d3@2 d3 f3@3 g3@2 f3@2 f3 g3@3 f3@2]
  [d3@3 f3@3 g3@2 f3@2 f3 g3@3 f3@2]
  [d3@3 f3@3 g3@2 a3@8]
  [a3@4 g3@4 f3@4 e3@2 f3 e3]
  [[d3,a3,d4,f4]]
>`).s("gm_distortion_guitar").gain(0.64)

stack(electric_guitar_clean, distortion_guitar, bass, distortion_guitar_2)

More by Sublime