Strudelify
Night Fever cover art

How Can You Mend A Broken Heart

Night Fever

Bee Gees

KeyB majorTempo112 bpm
0:00/0:00
// Night Fever — Bee Gees
// 112 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): NiteFever         5.
setcpm(112/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 · "NiteFever"
const electric_guitar_muted = note(`<
  ~@2 A B C D A B C D E F G E@2 H I J K L M@2 N O A B C D A B C D P Q P Q R@2 P S A B C D A B C D T F G E@2 H I U K L
  M@2 N O A B C D A B C D P Q P Q R@2 P S A B C D A B C D A B C D A B C D T F G E@2 H I U
>`.pickRestart({
  A: "~@2 [b3,e4,g#4]!2 ~ [b3,e4,g#4]@2 ~ [b3,e4,g#4] ~@7, c#3@3 ~", // E
  B: "~@2 [a3,c#4,e4]!2 ~ [a3,c#4,e4]@3 [a3,c#4,e4] ~@7, f#2@15 ~", // A
  C: "~@2 [b3,d#4,g#4]!2 ~ [b3,d#4,g#4]@3 [b3,d#4,g#4] ~@7, e2@15 ~", // G#m
  D: "~@2 [a3,c#4,e4]!2 ~ [a3,c#4,e4]@3 [a3,c#4,e4] ~@7, f#2@3 ~", E: "[b2,f#3,b3,d#4]", F: "[a2,e3,a3,c#4]",
  G: "[e2,g#3,b3,e4]", H: "[c#3,g#3,b3,e4]", I: "[e2,g#3,b3,e4] [a2,a3,c#4,e4]",
  J: "[f#3,b3,d#4]@3 ~ b5@4, b2@15 ~, ~@3 b4@5, ~@7 [d#5,f#5]@9", // B D#m
  K: "~@4 [b3,f#4,g#4]@2 ~ [b3,f#4,g#4]!2 ~@7, g#2@15 ~", L: "~@4 [a3,c#4,e4]@4 [a3,c#4,e4] ~@5 a2@2, a2@3 ~",
  M: "[~@4 [b3,f#4,g#4]@3 ~ [b3,f#4,g#4] ~@9 a#3 ~ [a#3,c#4,f#4]@2 d#3@2 [a#3,c#4,f#4] ~ d#3@2 ~@2 d#3@2, g#2@9 ~@5 [a#3,c#4,f#4]@4 ~@14, ~@16 d#3@5 ~@11]/2", // G#m7 F#
  N: "~@4 [b3,f#4,g#4]@3 ~ [b3,f#4,g#4] ~ g#2@2 ~@2 g#2 ~, g#2@9 ~@7", O: "[c#3,b3,e4,g#4]@6 c#3 ~ [g#2,d#4,g#4]@6 ~@2",
  P: "[f#2,c#3,f#3,a#3]", Q: "[c#2,c#3,e3,g#3]", R: "[f#2,c#3,f#3,a#3] [c#2,c#3,e3,g#3]", S: "[c#2,c#3,f3,g#3]@13 ~@3",
  T: "[b2,f#3,b3]", U: "[f#3,b3,d#4]@6 ~@2 b5@7 ~, b2@15 ~, ~@6 b4@9 ~, ~@7 [d#5,f#5]@9",
})).s("gm_electric_guitar_muted").gain(0.31)

// bass · electric bass finger · "NiteFever         2"
const bass = note(`<
  ~@2 A B C D A B C D E F G H@2 I J K L M N O L P A B C D A B C D Q R Q S T U V W A B C D A B C D E F G H@2 I J K L M N
  O L P A B C D A B C D Q R Q S T U V W A B C D A B C D A B C D A B C D E F G H X Y Z AA
>`.pickRestart({
  A: "c#2@2 e2@2 g#1@2 c#2 ~@7 g#1@2", B: "f#1 ~@4 f#2 ~ c#2", C: "e2@2 ~@8 e2 ~@3 g#1@2",
  D: "f#1@2 ~@4 f#2 ~@3 g#1@2 ~@2 b1@2", E: "b1@4 ~@2 b1 ~ b1@7 ~", F: "a1@5 ~ a1 ~ a1@7 ~", G: "e2@5 ~ e2 ~ e2@7 ~",
  H: "b1@5 ~ b1 ~ b1@7 ~", I: "c#2@5 ~ c#2 ~ c#2@7 ~", J: "e2@8 a1@7 ~", K: "b1@5 ~ b1 ~ b1@4 b1@2 a1 ~",
  L: "g#1@5 ~ g#1@3 ~ g#1@3 ~ g#1@2", M: "a1@4 ~@2 a1@2 ~@2 a1@3 ~ a1@2", N: "g#1@4 ~@2 g#1@3 ~ g#1@3 ~ g#1@2",
  O: "d#2@4 ~@2 d#2@4 c#2@4 [a#1,c#2] ~", P: "c#2@5 ~ c#2@2 g#1@5 ~ g#1 ~", Q: "f#1", R: "c#2 ~ c#2@12 c#2@2",
  S: "c#2 ~ c#2@11 ~ c#2@2", T: "f#1 c#2", U: "f#1@8 c#2@7 ~", V: "f#1@5 ~ f#1@3 ~ f#1@3 ~ f#1@2",
  W: "c#2@5 ~ c#2@2 ~@2 c#2@3 ~ g#1 ~", X: "b1", Y: "c#2", Z: "e1 a1", AA: "b1@15 ~",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · epiano2 · "NiteFever         3"
const epiano2 = note(`<
  ~@2 A B C D A B C D E F G E@2 H I J K L M N O P A B C D A B C D Q G Q G R S T U A B C D A B C D E F G E@2 H I J K L M
  V O P A B C D A B C D Q G Q G R S T U A B C D A B C D A B C D A B C D E F G E@2 H I J
>`.pickRestart({
  A: "[c#3,b3,e4,g#4]", B: "~ [f#3,a3,c#4]@7, f#2@15 ~", C: "[e2,g#3,b3,d#4]", D: "[f#2,f#3,a3,c#4]@7 ~",
  E: "[d#4,f#4,b4]", F: "[c#4,e4,b4]", G: "[e4,g#4,b4]", H: "[e4,g#4,c#5]", I: "[e4,g#4,b4] [e4,a4,c#5]",
  J: "[f#4,b4,d#5]@7 ~", K: "f#5@3 ~ f#5@4, [b4,b5]@15 ~", L: "[a4,c#5]", M: "~ b5, [b4,f#5]@7 ~",
  N: "~@9 f#5 ~@3 c#4@3, [c#5,f#5]@10 c#5@3 ~@3, a#5@7 [c#6,d#6]@3 ~@6, ~@4 d#7@2 f#6@3 d#5@3 d#4@4, ~@5 [a#6,c#7]@3 a#5@3 [f#4,a#4]@5", // F#5 C#sus2 A#m F#
  O: "[f#3,g#3,b3,d#4]", P: "[g#3,c#4,e4]@8 [g#3,c4,d#4]@7 ~", Q: "[f#4,a#4,c#5]", R: "[f#4,a#4,c#5] [e4,g#4,b4]",
  S: "[f#4,a#4,c#5] [g#4,b4,e5]", T: "[a#4,c#5,f#5]", U: "[g#4,c#5,f5]@13 ~@3",
  V: "~@13 c#4@3, [c#5,f#5]@10 c#5@3 ~@3, a#5@7 [c#6,d#6]@3 ~@6, ~@4 d#7@2 f#6@3 [d#5,f#5]@3 d#4@3 ~, ~@5 [a#6,c#7]@3 a#5@3 [f#4,a#4]@3 ~@2", // F#5 C#sus2 D#m A#m F#
})).s("gm_epiano2").gain(0.25)

// chords · string ensemble 1 · "NiteFever         4"
const string_ensemble_1 = note(`<
  ~@2 A B C D A B C D ~@14 E B F D E B F G H@4 I@2 J@2 K L F D E L F D M@6 N O P@2 Q R S@2 E B T U V B F W H@2 X@2 Y Z
  AA AB AC B F D E B F D A B F D E B F D M@6 N AD
>`.pickRestart({
  A: "b4@3 c#5, [g#3,e4]", B: "e5@3 f#5, [c#4,a4]", C: "[g#3,d#4,b4]@15 ~", D: "~@2 g#5 f#5@2 e5@2 c#5, ~ a4@3",
  E: "b4@3 c#5, e4", F: "[d#4,b4]@15 ~", G: "~@2 g#5 f#5@2 e5@2 d#5, ~@2 a4@5 ~", H: "[c#5,c#6]/2",
  I: "[c#5 b4 a#4 g#4, c#6]/2", J: "[f#4 f4, c#6]/2", K: "b4@3 c#5, [e4,c#6]", L: "e5@3 f#5, a4", M: "b5/2", N: "b5",
  O: "b5@5 c#6 d#6 f#6", P: "[[b5,b6]@5 [f#5,f#6] [e5,e6] [f#5,f#6]]/2", Q: "[b4,b5]", R: "[a#4,a#5] [f#4,f#5]",
  S: "[b4@3 [f#3,d#4,c5]]/2", T: "b4@3 g#5, d#4", U: "f#5@3 g#5@3 b5@2, a4", V: "[g#4,e5,c#6]@3 [g#4,c#5]",
  W: "~@4 g#5@2 f#5@4 e5@4 b4 c5, ~@2 a4@5 ~", X: "[c#6@13 e5 g#5 b5, c#5]/2", Y: "[a#5,c#6]@4 ~ g#5@3, ~ b5",
  Z: "[a#5,c#6] [b5,e6]", AA: "[c#6,f#6]", AB: "[c#6,f6]@7 ~", AC: "b4@3 c#5, e4, e6 ~@7", AD: "b5@7 ~",
})).s("gm_string_ensemble_1").gain(0.22)

// other · electric guitar muted · "NiteFever         6"
const electric_guitar_muted_2 = note(`<
  ~@2 A B C D E F G H I J@5 K L M N O P Q R A B C D E F G H ~@8 A B C D E F G H I J@5 K L M N O P Q R A B C D E F G H
  ~@8 A B C D E F G H A B C D E F G H I J@5 ~@2
>`.pickRestart({
  A: "~@2 b2 c#3 ~ c#3 b2!2 c#3!2 b2 ~ c#3 ~ e3 ~", B: "~@2 e3 c#3 ~ c#3 e3 c#3 e3!2 c#3 ~ e3 ~ f#3 c#3",
  C: "~@2 b2 ~ b2!2 c#3 ~@2 b2 c#3 ~ b2@2 c#3 ~", D: "~@2 c#3 b2 ~ b2 c#3 b2 ~@2 c#3 ~ e3 b2 f#3 ~",
  E: "~@2 b2 c#3 ~ c#3 b2!2 c#3 ~@2 b2 c#3 ~ e3 ~", F: "~@2 e3 c#3 ~ c#3 f#3 c#3 e3 ~ f#3 ~ e3 ~ f#3 ~",
  G: "~@2 b2!2 ~ b2 c#3 ~ b2!2 c#3 ~ b2 ~ c#3 ~", H: "~@2 c#3 e3 ~@2 f#3 ~ e3 c#3 f#3 ~ e3 ~ f#3 ~",
  I: "b5 ~ b5!2 ~@2 b5 ~ b5!2 ~ b5!2 ~ b5 ~", J: "b5 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5 ~",
  K: "b5 ~@2 b5 ~ b5!2 ~ b5!2 ~ b5!2 ~ b5 ~", L: "b5 ~ b5!2 ~ b5!2 ~ b5!2 ~@2 b5 ~ b5 ~",
  M: "~@2 d#3 f#3 ~@2 d#3 ~ f#3 ~ g#3 ~ f#3 ~@3", N: "~@3 e3 ~ e3 c#3 ~ e3 ~ f#3 ~ e3 ~ f#3 ~",
  O: "~@2 e3 f#3 ~ f#3 ~@2 f#3 ~ g#3 ~ f#3 ~@3", P: "~@2 d#3 ~ f#3 ~@11", Q: "~@2 d#3 f#3 ~ d#3 ~@2 f#3 ~ g#3 ~@5",
  R: "~@2 g#3!2 ~ g#3!2 ~ g#3!2 ~ g#3!2 ~ g#3 ~",
})).s("gm_electric_guitar_muted").gain(0.29)

// drums · kick
const kick = s("bd").struct("<~@2 A@59 B A@23 B A@12 C@2 D C>".pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x", D: "x!2",
})).gain(0.25)

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

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@2 A B C D E D F@2 A B C D E D F@2 E ~ E ~ D ~ A B C D E D F@2 E ~ E@2 ~ E ~@2 A B C D E D F@2 A B C D E D F@2 E ~ E
  ~ D ~ A B C D E D F@2 E ~ E@2 ~ E ~@2 A B C D E D F@2 A B C D E D F@2 A B C D ~@4
>`.pickRestart({
  A: "~@7 x ~@7 x", B: "~@7 x ~@8", C: "~@7 x ~@6 x ~", D: "~@3 x ~@3 x", E: "~@7 x", F: "~@3 x ~@4",
})).gain(0.16)

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

// drums · open hat
const open_hat = s("oh").struct("<~@2 A@16 ~@6 A@8 ~@8 A@16 ~@6 A@8 ~@8 A@20 ~@4>".pickRestart({
  A: "~ x ~@3 x ~@2",
})).gain(0.25)

// drums · high tom
const high_tom = s("ht").struct("<~@23 A ~@15 A ~@21 A ~@15 A ~@24>".pickRestart({
  A: "~@12 x!2 ~@2",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct(`<
  ~@6 A ~@11 A ~ A ~ A ~@9 A ~ A@2 ~ A ~@18 A ~ A ~ A B A ~@7 A ~ A@2 ~ A ~@2 A ~@6 B A ~@11 A@2 C A
>`.pickRestart({
  A: "x", B: "~@7 x", C: "x!2",
})).gain(0.25)

// drums · triangle
const triangle = s("triangles:30").struct(`<
  ~@10 A B C D C D C E ~@30 A B C D C D C E ~@38 A B C D C D C E
>`.pickRestart({
  A: "~@6 x ~ x!3 ~@5", B: "~@6 x!3 ~ x ~@5", C: "~@6 x!2 ~ x!2 ~@5", D: "~@6 x!5 ~@5", E: "~ x",
})).gain(1.38)

stack(
  electric_guitar_muted, bass, epiano2, string_ensemble_1, electric_guitar_muted_2, kick, snare, hihat, hihat_soft,
  mid_tom, open_hat, high_tom, crash, triangle
)

More by Bee Gees