Strudelify

Pressure Down

John Farnham

KeyF♯ majorTempo113 bpm
0:00/0:00
// Pressure Down — John Farnham
// 113 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 108 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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 · lead 2 sawtooth · "DoctorSolo"
const lead_2_sawtooth = note("<~@42 A B A C A D E ~@17 F G F G H I J K ~@34>".pickRestart({
  A: "~@2 [c#4,f#4]!2 ~@2 [a#3,c#4]@2 b3 f#3!3 c#4 f#3!3", // F#5 A#m
  B: "~@3 [a#3,c#4,f#4] ~@2 [a#3,d#4,f#4]@2 d#4@2 [g#3,c#4,f4] ~ f#3@2 c#4!2", // F# D#m C#
  C: "~@3 [a#3,c#4,f#4] ~@2 [a#3,d#4,f#4]@2 [g#3,c#4,f4] ~ f#3!2 c#4 f#3!3", // F# D#m C#
  D: "~@3 [a#3,c#4,f#4] ~@2 [a#3,d#4,f#4]@2 [g#3,c#4,f4] f#3!3 [c#4,d#4]@2 [c#4,f4] ~", // F# D#m C# C#sus2 C#
  E: "[g#3,b3,c#4,f4] ~@5 [g#3,c#4,f4]@2 [g#3,b3,c#4,f4] ~@5 [g#3,b3,c#4,f4] ~", // C#7 C# C#7
  F: "[f#3,a#3,c#4,f#4] ~@2 [f#3,a#3,c#4,f#4] [g#3,c#4,f4] ~@2 [g#3,c#4,f4]", G: "[f#3,b3,d#4] ~@7",
  H: "[f#3,a#3,d#4,a#4] ~@2 [f#3,a#3,d#4,a#4] [f3,g#3,c#4,g#4] ~@2 [f3,g#3,c#4,g#4]", I: "[f#3,a#3,d#4,a#4] ~@7",
  J: "[g#3,b3,c#4,f4,g#4] ~@2 [g#3,b3,c#4,f4,g#4]!2 ~@3", // C#7
  K: "[g#3,c#4,f4,g#4,a#4]@2 ~ [g#3,c#4,f4,g#4,a#4]@2 ~ [g#3,c#4,f4,g#4,a#4]@2 ~@8", // A#m7
})).s("gm_lead_2_sawtooth").gain(0.64)

// bass · lead 4 chiff · "ChiffLead"
const bass = note("<~@3 A ~ A ~@69 A ~ A ~@5 A ~ A ~@5 A ~ A ~@5 A ~ A ~@6>".pickRestart({
  A: "~@5 [f#1,f#2]!5 ~@6", // F#
})).s("gm_lead_4_chiff").gain(0.71)

// chords · distortion guitar · "DistGuit"
const distortion_guitar = note(`<
  ~@2 A B A B C D E F ~@8 A B A B C D E F ~@8 A B A B C D E F ~@8 A B A B C D E F ~@16 A B A B C D E F A B A B C D E F A
  B A B C D E F A B A B C D E F ~@2
>`.pickRestart({
  A: "[f#2,c#3] ~@2 [f#2,c#3] [c#3,g#3] ~@2 [c#3,g#3]", B: "[b2,f#3] ~@7",
  C: "[d#3,a#3] ~@2 [d#3,a#3] [c#3,g#3] ~@2 [c#3,g#3]", D: "[d#3,a#3] ~@7", E: "[c#3,g#3] ~@2 [c#3,g#3]!2 ~@3",
  F: "[c#3,g#3]@2 ~ [c#3,g#3]@2 ~ [c#3,g#3]@2 ~@8", // C#5
})).s("gm_distortion_guitar").gain(0.54)

// bass · electric bass finger · "Fing Bass"
const bass_2 = note(`<
  ~@2 A B A B C D E F G H I J K L M ~ A B A B C D E F G H I J K L M ~ A B A B C D E F N O N P N Q R ~ A B A B C D E F G
  H I J K L M ~ S ~ S ~ T ~ E F A B A B C D E F A B A B C D E F A B A B C D E F A B A B C D E U V@2
>`.pickRestart({
  A: "f#1 ~@2 f#1 c#2 ~@2 a#1", B: "b1 ~@7", C: "d#2 ~@2 d#2 c#2 ~@2 c#2", D: "d#2 ~@7", E: "c#2 ~@2 c#2!2 ~@3",
  F: "c#2@2 ~ c#2@2 ~ c#2@2 ~@6 f#1@2", G: "d#1 ~@2 f1 f#1 ~@3", H: "g#1 ~@2 g#1 g#1@2 a#1@2 c#1@2 ~@6",
  I: "g#1@2 ~ a#1 b1 ~@3", J: "b1@2 ~ b1 d#2@2 f#2@2 f#1@2 ~@6", K: "f#1 ~@2 f#1!2 ~@3",
  L: "f#1@2 ~ f#1@2 ~ f#1@2 f#1@2 ~@6", M: "b1 ~", N: "a#1 ~@2 a#1 b1 ~@2 b1", O: "f#1@2 ~ f#1@2 ~ c#2@8 ~@2",
  P: "f#1@2 ~ d#2@2 ~ c#2@8 ~@2", Q: "f#1@2 ~ a#1@2 ~ c#2@8 ~@2", R: "c#2 ~@2 c#2!2 ~@2 c#2", S: "f#1 ~@7",
  T: "~@3 d#2 c#2 ~@3", U: "c#2@2 ~ c#2@2 ~ c#2@2 ~@6 f1@2", V: "[f#1@5 ~@3]/2",
})).s("gm_electric_bass_finger").gain(0.54)

// chords · lead 1 square · "SquareWave"
const lead_1_square = note("<~@16 A B C ~@13 A B C ~@15 C ~@13 A B ~@42>".pickRestart({
  A: "~@3 f#3 ~ f#3 ~ f#3, [b3,d#4]@3 [c#4,f4]", B: "~ f#3 ~ f#3 ~ b3 ~ c#4, [d#4,f#4] [c#4,f4] [d#4,f#4] [f4,g#4]",
  C: "[f#3,f#4,a#4]@3 ~@5", // F#
})).s("gm_lead_1_square").gain(0.45)

// chords · pad poly · "PolySynth"
const pad_poly = note("<~@10 A B C D E F ~@10 A B C D E F ~@26 A B C D E F ~@44>".pickRestart({
  A: "a#4 d#4!2 a#4 d#4!2 a#4@2 g#4@2 a#4 ~@5",
  B: "[a#3,c#4,f#4] ~@2 [a#3,c#4,f#4] ~@2 [a#3,d#4,f#4]@2 [g#3,c#4,f4] ~@7", C: "d#4 d#3!2 d#4 d#3!2 f4@2 f#4@2 f4 ~@5",
  D: "[d#4,f#4,b4] ~@2 [d#4,f#4,b4] ~@2 [f4,g#4]@2 [c#4,f#4,a#4] ~@7", // B Fm F#
  E: "a#4 f#4!2 a#4 f#4!2 a#4@2 [f#4,g#4]@2 a#4 ~@5", // F#sus2
  F: "[c#4,f#4,a#4] ~@2 [c#4,f#4,a#4] ~@2 [f4,g#4]@2 [c#4,f#4,a#4] ~@7", // F# Fm F#
})).s("gm_pad_poly").gain(0.46)

// chords · pad poly · "PolySynth" · soft notes
const pad_poly_soft = note("<~@13 A ~ B ~@13 A ~ B ~@29 A ~ B ~@44>".pickRestart({
  A: "~@2 b4 ~@2 g#4 ~@10", B: "~@2 g#4 ~@2 g#4 ~@10",
})).s("gm_pad_poly").gain(0.2)

// chords · pad warm · "WarmPad"
const pad_warm = note(`<
  ~@6 A B C@2 ~@8 D E D E A F C@2 ~@8 D E D E A F C@2 ~@8 D E D E A F C@2 ~@8 D E D E A F C@2 D E D E A F C@2 D E D E A
  F C@2 D E D E A F C@2 D E D E A F C@2 G@2
>`.pickRestart({
  A: "[f#4,a#4] [f4,g#4]", B: "[d#4,f#4] a#3", C: "[~ a#4@23 ~@8, c#4@3 ~]/2", D: "a#4 g#4", E: "f#4",
  F: "f#4 a#3, d#4", G: "[[c#4,f#4,a#4]@7 ~]/2",
})).s("gm_pad_warm").gain(0.46)

// chords · synth brass 1 · "SynBrass 3"
const synth_brass_1 = note(`<
  ~@2 A B A B C D E F ~ G ~ H ~ I ~@2 A B A B C D E F ~ G ~ H ~ I ~@2 A B A B C D E F ~@6 J ~ A B A B C D E F ~ G ~ H ~
  I ~@10 A B A B C D E F A B A B C D E F A B A B C D E F A B A B C D E F ~@2
>`.pickRestart({
  A: "[f#3,a#3,c#4,f#4] ~@2 [f#3,a#3,c#4,f#4] [g#3,c#4,f4] ~@2 [g#3,c#4,f4]", B: "[f#3,b3,d#4] ~@7",
  C: "[f#3,a#3,d#4,a#4] ~@2 [f#3,a#3,d#4,a#4] [f3,g#3,c#4,g#4] ~@2 [f3,g#3,c#4,g#4]", D: "[f#3,a#3,d#4,a#4] ~@7",
  E: "[g#3,b3,c#4,f4,g#4] ~@2 [g#3,b3,c#4,f4,g#4]!2 ~@3", // C#7
  F: "[g#3,c#4,f4,g#4,a#4]@2 ~ [g#3,c#4,f4,g#4,a#4]@2 ~ [g#3,c#4,f4,g#4,a#4]@2 ~@8", // A#m7
  G: "[a#3,c#4,f#4] ~@2 [a#3,c#4,f#4] ~@2 [a#3,d#4,f#4]@2 [g#3,c#4,f4] ~@7", // F# D#m C#
  H: "[d#4,f#4,b4] ~ b4 [d#4,f#4,b4] ~ g#4 [f4,g#4]@2 [c#4,f#4,a#4] ~@7", // B Fm F#
  I: "[c#4,f#4,a#4] ~ g#4 [c#4,f#4,a#4] ~ g#4 [f4,g#4]@2 [c#4,f#4,a#4] ~@7", // F# Fm F#
  J: "[g#3,b3,c#4,f4,g#4] ~@5 [g#3,b3,c#4,f4,g#4]@2 [g#3,b3,c#4,f4,g#4] ~@5 [g#3,b3,c#4,f4,g#4,a#4] ~", // C#7
})).s("gm_synth_brass_1").gain(0.59)

// chords · pad halo · "Halo Pad"
const pad_halo = note(`<
  ~@2 A B A B C D E ~@9 A B A B C D E ~@9 A B A B C D E ~@9 A B A B C D E ~@9 A B A B C D E ~ A B A B C D E ~ A B A B C
  D E ~ A B A B C D E ~ A B A B C D E ~@3
>`.pickRestart({
  A: "a#4 g#4", B: "f#4 ~", C: "~ f#4@7 ~ f4@7, a#4 g#4", D: "~ a#3, f#4 ~, ~ d#4@15", E: "~ a#4@15, c#4",
})).s("gm_pad_halo").gain(0.18)

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

// drums · snare
const snare = s("sd").struct("<~@9 A B@6 ~ C B@14 ~ C B@15 A B@14 ~ C B@39 D ~@2>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~@5 x ~ x", D: "~@4 x ~@3 x ~@3 x ~ x!2",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@10 A ~@7 A ~@7 A ~@7 A ~@15 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~
>`.pickRestart({
  A: "x",
})).gain(0.5)

// drums · cowbell
const cowbell = s("cb").struct("<~@66 [x!4]!40 ~@2>").gain(0.5)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ A@9 ~@8 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@40 ~@2>".pickRestart({
  A: "x!16",
})).gain(1.45)

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

// drums · shaker
const shaker = s("sh").struct("<~ A@9 ~@8 A@8 ~@8 A@8 ~@8 A@8 ~@8 A@40 ~@2>".pickRestart({
  A: "x!16",
})).gain(0.29)

stack(
  lead_2_sawtooth, bass, distortion_guitar, bass_2, lead_1_square, pad_poly, pad_poly_soft, pad_warm, synth_brass_1,
  pad_halo, kick, snare, crash, cowbell, cabasa, triangle, shaker
)

More by John Farnham