Strudelify

Freak

Silverchair

KeyD majorTempo120 bpm
0:00/0:00
// Freak — Silverchair
// 120 bpm, 4/4, key D major. 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 5 "effects for grt 1" distortion guitar (copy of ch 4 "effects for grt 1" distortion guitar, 0.083 beats late); ch 8 "more effects" acoustic guitar steel (copy of ch 7 "guitar 1 clean" acoustic guitar steel); ch 9 "more effects" acoustic guitar steel (copy of ch 7 "guitar 1 clean" acoustic guitar steel, 0.125 beats late)
// note: Full arrangement: all 110 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): effects for grt 1.
setcpm(120/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 · distortion guitar · "guitar 1"
const distortion_guitar = note(`<
  A B C B A B A B A B A B A B A B D E D F D E D E G@2 C H A H ~@8 A B A B A B A B D E D F D E D E I@6 J@2 K G@2 A B A B
  A B A H L M N M N M N M O P O P O P O P O P O P O P O P C B C B C B C B Q@5
>`.pickRestart({
  A: "[e2,b2,e3]@4 ~@2 [d2,a2,d3]@2 [e2,b2,e3]@2 [e2,b2,e3]@3 ~ [e2,b2,e3]@2", // E5 D5 E5
  B: "~@2 [e2,b2,e3]@3 ~ [e2,b2,e3]@3 ~ [d2,a2,d3]@2 [d2,a2,d3]@2 [d2,a2,d3]@2", // E5 D5
  C: "[e2,b2,e3,a#3]@4 ~@2 [d2,a2,d3]@2 [e2,b2,e3]@2 [e2,b2,e3]@3 ~ [e2,b2,e3]@2", // E D5 E5
  D: "[d2,a2,d3]@2 ~ [f2,c3,f3] [f#2,c#3,f#3]!2 ~ [d2,a2,d3]", // D5 F5 F#5 D5
  E: "~@2 [d2,a2,d3]@3 ~ [f2,c3,f3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2", // D5 F5 F#5
  F: "~@2 [d2,a2,d3]@3 ~ [f2,c3,f3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [g#2,d#3,g#3]@2 [a2,e3,a3]@2", // D5 F5 F#5 G#5 A5
  G: "[f2,c3,f3,a3,b3,e4]/2", H: "~@2 [e2,b2,e3]@3 ~ [e2,b2,e3]@3 ~ [d2,a2,d3]@2 [e2,b2,e3]@2 [f2,c3,f3]@2",
  I: "[[g2,d3,g3]@4 [g2,d3,g3]@4 [g2,d3,g3]@2 [g2,d3,g3]@4 [f#2,c#3,f#3]@5 ~ [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2 [f#2,c#3,f#3]@2]/2", // G5 F#5
  J: "[[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@2 [f#2,c#3,f#3]@2 [f#2,c#3]!4 [f#2,c#3,f#3] [f#2,c#3,f#3,c#4] [f#2,c#3]]/2", // G5 F#5
  K: "[f#2,c#3]!8", L: "[f2,c3,f3] [f2,c3]!5 [c3,g3]!2",
  M: "[d2,a2]@2 [d2,a2]@2 [d2,a2]@2 [d2,a2]@2 [d2,a2]@2 [d2,a2]@2 [d2,a2]@2 [d2,a2]!2", N: "[f2,c3]!6 [c3,g3]!2",
  O: "[f2,c3,f3]!6 [c3,g3,c4]!2", P: "[d2,a2,d3]!8", Q: "[~ [e2,b2,e3,a#3]@77 ~@2]/5",
})).s("gm_distortion_guitar").gain(0.58)

// bass · electric bass pick · "bass"
const bass = note(`<
  ~@4 A B A B A B A B A B A B C D C E C D C D F@2 A G A G H I H I H I H I A B A B A B A B C D C E C D C D J@6 K@2 L F@2
  A B A B A B A G H I H I H I H I H I H I H I H I H I H I H I H I A B A B A B A B M@5
>`.pickRestart({
  A: "e1@4 ~@2 d1@2 e1@2 e1@3 ~ e1@2", B: "~@2 e1@3 ~ e1@3 ~ d1@2 d1@2 d1@2", C: "d1@2 ~ f1 f#1!2 ~ d1",
  D: "~@2 d1@3 ~ f1@2 f#1@2 f#1@2 f#1@2 f#1@2", E: "~@2 d1@3 ~ f1@2 f#1@2 f#1@2 g#1@2 a1@2", F: "f1/2",
  G: "~@2 e1@3 ~ e1@3 ~ d1@2 e1@2 f1@2", H: "f1!6 c2!2", I: "d1!8",
  J: "[g1@4 g1@4 g1@2 g1@4 f#1@5 ~ f#1@2 f#1@2 f#1@2 f#1@2 f#1@2 f#1@2]/2", K: "[g1@2 g1@2 g1 g1@2 f#1@2 f#1!7]/2",
  L: "f#1!8", M: "[~ e1@77 ~@2]/5",
})).s("gm_electric_bass_pick").gain(0.5)

// chords · distortion guitar · "effects for grt 1"
const distortion_guitar_2 = note(`<
  ~@6 A ~@3 A ~@3 A ~@23 A ~ A ~ A ~ A ~@12 B ~@7 A ~ A ~ A ~@11 C D C D E D F D ~@15 G@2 ~@4
>`.pickRestart({
  A: "a#3 ~@3", B: "~@6 [g2,g3]!7 ~@3", C: "a4!7 c5 ~ c5 ~ c5 ~ c5 f#4!2", D: "f#4!16", E: "b4!16", F: "a4!16",
  G: "[~@15 [d2,a2,d3]@2 ~@15]/2", // D5
})).s("gm_distortion_guitar").gain(0.33)

// other · acoustic guitar steel · "guitar 1 clean"
const acoustic_guitar_steel = note("<~@30 A B A B A B A B ~@72>".pickRestart({
  A: "f2 c3 f3 c3!2 g3 c4 d2", B: "d2 a2 d3 a2 d2 a2 d3 a2",
})).s("gm_acoustic_guitar_steel").gain(0.56)

// drums · kick
const kick = s("bd").struct(`<
  ~@3 A B C B D B C B C B C B E B F B C B F B F G ~ B C B C ~@7 H B C B C B C B E B F B C B F B I J F J F J F J K@2 G ~
  B C B C B C B C ~@7 H L@8 M@7 N B D B D B D B O P ~@4
>`.pickRestart({
  A: "~@5 x ~ x", B: "x ~@2 x!2 ~@2 x", C: "~ x ~@3 x ~ x", D: "~ x ~@3 x ~@2", E: "~ x ~@2 x!3 ~",
  F: "~ x ~@2 x!2 ~ x", G: "x", H: "~@5 x ~@2", I: "~ x ~@2 x!2 ~@2", J: "x ~@3 x!2 ~ x", K: "x!8", L: "x!2 ~@3 x ~@2",
  M: "~ x ~ x ~ x ~ x", N: "~ x ~ x ~ x ~@2", O: "~ x ~@5 x", P: "~ x ~@14",
})).gain(0.8)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@15 A ~@8 B C ~@19 A ~@17 B D ~@16 E ~@28>".pickRestart({
  A: "~ x", B: "~ x!3", C: "x!4", D: "x!3 ~", E: "x!5 ~@3",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@3 A ~@3 B ~@7 C ~@3 D ~@17 A ~@7 C ~@3 D ~@3 A ~@10 E ~@15 A ~@7 D ~@3 A ~@3 D ~ A ~ A ~ A ~ C ~@5
>`.pickRestart({
  A: "~@3 x", B: "~@6 x!2 ~@8", C: "~@2 x!2", D: "~@3 x ~@4", E: "~@12 x!2 ~@2",
})).gain(0.64)

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

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@7 A ~@11 A ~@29 A ~@3 B ~@10 C ~@15 B ~@7 A ~@3 B ~@3 A ~ B ~ B ~ B ~ D ~@5
>`.pickRestart({
  A: "~@7 x ~@8", B: "~@3 x", C: "~@12 x!2 ~@2", D: "~@2 x!2",
})).gain(0.64)

// drums · splash
const splash = s("cr").struct(`<
  ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B@7 A ~ A ~ A ~ A ~ A ~ A
  ~@9 A ~ A ~ A ~ A ~ C@3 D C@3 E A ~ A ~ A ~ A ~ F ~@4
>`.pickRestart({
  A: "x", B: "x!8", C: "x!4", D: "x ~ x ~ x ~@2 x", E: "x!2 ~@2", F: "~ x ~@14",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct("<~@30 [x!8]!7 ~@36 [x!8]!7 [x!5 ~@3] ~@29>").gain(0.56)

stack(
  distortion_guitar, bass, distortion_guitar_2, acoustic_guitar_steel, kick, snare, low_tom, hihat, mid_tom, open_hat,
  high_tom, splash, ride
)

More by Silverchair