Strudelify

Shade

Silverchair

KeyC majorTempo70 bpm
0:00/0:00
// Shade — Silverchair
// 70 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: 5 stray notes after a silence of more than 6 bars (from bar 102) are dropped
// note: Full arrangement: all 70 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): clean2, clean4.
setcpm(70/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 clean · "clean2"
const electric_guitar_clean = note("<~@15 [~@6 a2 e3 ~@8] ~@15 [~@6 a2 e3 ~@8] ~@38>")
  .s("gm_electric_guitar_clean").gain(0.32)

// bass · electric bass pick · "bass"
const bass = note(`<
  ~@7 A B C B C B C B D E F E F E F E G B C B C B C B H E F E F E F E G I J I J I J I ~ K@2 L M E F E F E F E F E F E F
  E F E ~@3
>`.pickRestart({
  A: "~@14 a1 c2", B: "d2 e2 f2 c2@3 c2@2", C: "a1@4 ~@2 a#1@2 ~ a#1 ~@2 g1@4", D: "a1@4 ~@11 d3",
  E: "~ g3 f3 [f2,c3]@4 ~, a3 ~@3", F: "~@4 a2@2 g2@2 g2!2 ~ g2!2 a2 c3@2, c3@3 ~@5", G: "c3", H: "a1 ~@3",
  I: "d3@2 ~ f2@2 ~ f2@2", J: "c3@4 c3@2 g2@3 ~ g2@6", K: "[d3@3 c3@7 ~@2 a2@2 c3@2]/2", L: "d3@2 d3 c3@5",
  M: "c3@6 g2@6 g2 a2 c3@2",
})).s("gm_electric_bass_pick").gain(0.4)

// other · electric guitar jazz · "clean3 (solo)"
const electric_guitar_jazz = note("<~@39 A B C D E F G H I ~@22>".pickRestart({
  A: "~@14 c5 d5", B: "f5 d5 d5@12 g4 a4", C: "c5@2 d4 e4 ~@10 f4 a4, ~ d4@3",
  D: "d5 ~@3 f4 a4 c5@2 c5 d5 f5@2 d5 c5 a4@2", E: "c5@4 f5 e5 e5@4 e5 d5 d5@2 d5@2",
  F: "d5@4 d5 e5 f5@2 ~ e5 f5@2 g5@2 f5@2", G: "c5 d5 f5 d5 g4 a4 d5@4 f5 g5 a5 a#5 a5 g5",
  H: "f5 e5 e5@4 e5 f5 g5@2 f5 g5 c5@2 g4 a4", I: "c5@3 ~",
})).s("gm_electric_guitar_jazz").gain(0.64)

// chords · electric guitar clean · "clean"
const electric_guitar_clean_2 = note(`<
  A B C B D B D E F G H G F G H I J K J K J K J L F G H G F G H I J K J K J K J L J K J K J K J M N@2 O P J K J K J K J
  K J K J K ~@6
>`.pickRestart({
  A: "[d3,a3,d4,f4,a4]@3 [d3,a3,d4,f4,a4] ~@2 [c3,g3,c4,d4,g4]@6 [g3,c4,d4,g4]@2 [d3,g3,b3]!2", // Dm Csus2 Gsus4 G
  B: "[a2,e3,g3,c4,g4]@3 [a2,e3,g3,c4,g4] [g3,b3,e4]!2 [f3,a3,c4,e4]@2 ~ [f3,a3,c4,e4]@2 [g3,b3,d4] [g3,b3,d4,e4]@2 [d3,g3,b3]!2, ~@3 a2@5", // Am7 Em Fmaj7 G Em7 G
  C: "~ [a3,d4] a4 d4 a3 g3 [c3,g3,c4,d4,g4]@6 [c3,g3,c4,d4,g4]@2 [g3,b3]!2, [d3,g3,c4,e4]@3 ~@5", // D5 Csus2 G C
  D: "[g3,c4,e4] a3 ~ [a3,d4,f4,a4] [d3,g3]!2 [c3,g3,c4,d4,g4]@6 [c3,g3,c4,d4,g4]@2 [g3,b3]!2, [d3,a4]@3 ~@13", // C Dm G5 Csus2 G D5
  E: "[a2,e3,g3,c4,g4]@6 a2 e3 a2@4 c3@2 [c3,e3,a3]!2", // Am7 Am
  F: "[d3,a3,d4,f4,a4]@3 [d3,a3,d4,f4,a4] ~@2 [c3,g3,c4,d4,g4]@6 [c3,g3,c4,d4,g4]@4", // Dm Csus2
  G: "[a2,e3,g3,c4,g4]@3 [a2,e3,g3,c4,g4] [d3,g3]!2 [a#2,f3,a#3,c4,f4]@3 [a#2,f3,a#3,c4,f4] ~ [d3,g3] [a2,d3,g3,b3,g4]@4", // Am7 G5 A#sus2 G5 G
  H: "[g3,c4,e4] a3 ~ [d3,a3,d4,f4,a4] ~@2 [c3,g3,c4,d4,g4]@6 [c3,g3,c4,d4,g4]@4, [d3,a4]@3 ~@13", // C Dm Csus2 D5
  I: "[a2,e3,g3,c4,g4]@8 [a2,a3]@4 c3@2 [a2,a3] [d3,d4]", // Am7 A D
  J: "[d3,a3,d4,f4,a4]@3 [d3,a3,d4]!3 [f2,c3,f3,a3,c4,f4]@6 [f2,c3,f3,a3,c4,f4]@2 [c3,f3,c4]!2, ~@3 [f4,a4]@3 ~@10", // Dm D5 F F5 F
  K: "[c3,g3,c4,d4,g4]@3 [g3,c4,d4]!2 [g3,d4] [g2,d3,g3,b3,d4,g4]@3 [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3,b3,d4,g4] g2 a2 c3 d3, ~@3 c3@6 ~@7, ~@3 g4@2 c4@4 ~@7", // Csus2 Gsus4 G5 G
  L: "[c3,e3,g3,d4,g4]@9 ~@7", M: "[c3,g3,c4,d4,g4]@9 ~@7",
  N: "[d3@2 a3 [d4,f4,a4] ~@2 [c3,g3,c4,d4,g4]@14 ~@2 c3 e3 a2@4 c3 ~ [g3,c4,e4,a4]!2]/2", // Dm Csus2 Am7
  O: "[d3,a3,d4,f4,a4]@3 d3 [d3,g3]!2 [c3,g3,c4,d4,g4]@8 ~@2, ~@3 [a3,d4,f4,a4]@3 ~@10", // Dm G5 Csus2 Dm
  P: "[c3,g3,c4,d4,g4]@3 [c3,g3,c4,d4,g4]!3 [g2,d3,g3,b3,d4,g4]@2 ~ [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3,b3,d4,g4] g2 a2 c3 d3", // Csus2 G
})).s("gm_electric_guitar_clean").gain(0.4)

// chords · distortion guitar · "distortion"
const distortion_guitar = note("<~@59 A B C B C B C D E F@2>".pickRestart({
  A: "~@10 g2@2 ~ a2 c3 d3, ~@5 [d3,g3,b3,d4,g4]@2 ~, ~@6 g2 ~", // G
  B: "[d3,a3,d4,f4,a4]@3 [d3,a3,d4]!3 [f2,c3,f3,a3,c4,f4]@6 [f2,c3,f3,a3,c4,f4]@2 [c3,f3,c4]!2, ~@3 [f4,a4]@3 ~@10", // Dm D5 F F5 F
  C: "[c3,g3,c4,d4,g4]@3 [g3,c4,d4]!2 [g3,d4] [g2,d3,g3,b3,d4,g4]@3 [g2,d3,g3,b3,d4,g4]@2 [g2,d3,g3,b3,d4,g4] g2 a2 c3 d3, ~@3 c3@6 ~@7, ~@3 g4@2 c4@4 ~@7", // Csus2 Gsus4 G5 G
  D: "[d3,a3,d4,f4,a4]@3 [d3,a3,d4]!3 [f2,c3,f3,a3,c4,f4]@6 [f2,c3,f3,a3,c4,f4]@2 [c3,f3,c4]@2, ~@3 [f4,a4]@3 ~@10", // Dm D5 F F5 F
  E: "[c3,g3,c4,d4,g4]", F: "[d3,a3,d4,f4,a4]/2",
})).s("gm_distortion_guitar").gain(0.4).pan(0.4)

// chords · acoustic guitar steel · "clean4" · Am
const acoustic_guitar_steel = note("<~@15 [~@15 [a4,c5]] ~@15 [~@15 [a4,c5]] ~@38>")
  .s("gm_acoustic_guitar_steel").gain(0.32)

// drums · rim
const rim = s("rim").struct("<~@8 [~ x ~ x]!7 ~@9 [~ x ~ x]!7 ~@17 [~ x ~ x] [~ x ~@2]!2 ~@19>").gain(0.64)

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

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B C@3 B C D A C A C A C A E F C B C B C B D A C A C A C A E A C A C A C A D C G H ~ A@15 E ~@2
>`.pickRestart({
  A: "~ x!7", B: "x!7 ~", C: "x!8", D: "~ x!2 ~", E: "~ x!3", F: "~ x!6 ~", G: "x!3 ~@5", H: "~ x!3 ~@4",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 [~@14 x!2] ~@15 [~@14 x!2] ~@38>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@9 A ~@3 A ~@10 A ~ A ~ A ~ A ~@39>".pickRestart({
  A: "~@7 x",
})).gain(0.64)

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

stack(
  electric_guitar_clean, bass, electric_guitar_jazz, electric_guitar_clean_2, distortion_guitar, acoustic_guitar_steel,
  rim, kick, snare, low_tom, hihat, mid_tom, open_hat, crash
)

More by Silverchair