Strudelify

What's On Your Mind (Pure Energy)

Information Society

KeyA majorTempo120 bpm
0:00/0:00
// What's On Your Mind (Pure Energy) — Information Society
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// bass · synth bass 2
const bass = note(`<
  A B A B A B A B C D C E A B F G H I A B A B F G H I A B A B F G H I A B C D C D C D C E A B A B A B F G H I A B A B F
  G H I A B C D C D C D C E J K J K J K L@2 A B A B A B A B A B A B ~@15 M C D C D C D C E C D C D C D C E ~
>`.pickRestart({
  A: "d1 ~@2 d1 ~@3 d1", B: "~@2 d1@2 ~@2 d1 ~ d1@2 ~@6", C: "f1 ~@4 g1 ~@2", D: "d1 ~@3 d1@2 e1@2", E: "a1 ~@7",
  F: "f1 ~@2 f1 ~@3 f1", G: "~@2 f1@2 ~@2 f1 ~ f1@2 ~@6", H: "c1 ~@2 c1 ~@3 c1", I: "~@2 c1@2 ~@2 c1 ~ c1@2 ~@6",
  J: "~@2 d#2!2 ~@2 d#2!2 ~@2 d#2!2 ~@2 d#2!2", K: "~@2 f2!2 ~@2 f2!2 ~@2 f2!2 ~@2 f2!2",
  L: "~@2 g2!2 ~@2 g2!2 ~@2 g2!2 ~@2 g2!2", M: "~@2 d1 e1",
})).s("gm_synth_bass_2").gain(0.64)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@8 A B A C ~@80 D E F G H I D E D E F G H I D E A B A B A B A J A B A B A B A J ~
>`.pickRestart({
  A: "[c4,f4,a4]@2 [c4,f4,a4]!8 [d4,g4,b4]@2 d4!4", B: "[d4,f#4,a4]@2 [d4,f#4,a4]!14",
  C: "[e4,a4,c#5]@2 [e4,a4,c#5]!6 ~@8", D: "[a3,d4,f#4]@2 [a3,d4,f#4]!8 [a3,d4,f#4]@2 [a3,d4,f#4]!4",
  E: "[a3,d4,f#4]@2 [a3,d4,f#4]!14", F: "[a3,c4,f4]@2 [a3,c4,f4]!8 [a3,c4,f4]@2 [a3,c4,f4]!4",
  G: "[a3,c4,f4]@2 [a3,c4,f4]!14", H: "[g3,c4,e4,g4]@2 [g3,c4,e4,g4]!8 [g3,c4,e4,g4]@2 [g3,c4,e4,g4]!4",
  I: "[g3,c4,e4,g4]@2 [g3,c4,e4,g4]!14", J: "[e4,a4,c#5]@2 [e4,a4,c#5]!7 ~@7",
})).s("gm_distortion_guitar").gain(0.25)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@12 A@2 B@2 C@2 D@4 B@2 C@2 E@6 F@2 G@2 H I H I H I H J ~@4 A@2 B@2 C@2 D@4 B@2 C@2 A@2 H I H I H I H J K L K L K L
  M@2 ~@28 H I H I H I H J H I H I H I H J ~
>`.pickRestart({
  A: "[a3,d4,f#4]/2", B: "[a3,c4,f4]/2", C: "[g3,c4,e4,g4]/2", D: "[a3,d4,f#4]/4",
  E: "[~@46 d5@18 f5@24 a5@4 f5@3 ~, [a3,d4,f#4]@2 [a3,c4,f4], ~@16 a5@27 ~@5, ~@32 f#5@31 ~ c5@30 ~@2]/6", // D F
  F: "[[g3,c4,e4,g4,e5,g5], c5@15 ~]/2", G: "[~@3 a4@12 ~, [a3,d4,f#4], [d5,f#5]@15 ~]/2",
  H: "[f3,a3,c4,f4,a4,c5] [d3,g3,b3,d4,g4,b4]", I: "[d3,f#3,a3,d4,f#4,a4]", J: "[a3,c#4,e4,a4,c#5,e5]",
  K: "[d#3,g3,a#3,d#4,g4,a#4]", L: "[f3,a3,c4,f4,a4,c5]", M: "[d3,g3,b3,d4,g4,b4,d5]/2",
})).s("gm_synth_strings_1").gain(0.4)

// other · tubular bells
const tubular_bells = note("<~@44 A ~ A ~@33 A ~ A ~@5 A ~ A ~@34>".pickRestart({
  A: "c4",
})).s("gm_tubular_bells").gain(0.8)

// other · electric guitar muted · "Electric Guitar"
const electric_guitar_muted = note("<~@6 [~@2 a3!3 ~@5 a3!3 ~@3] ~@118>").s("gm_electric_guitar_muted").gain(0.25)

// other · synth drum
const synth_drum = note("<~@3 A ~@7 B ~@7 C@2 ~@14 D ~@7 B ~@19 D ~@15 E ~@7 F ~@3 F ~@23 G ~@9>".pickRestart({
  A: "g4!8 e4!4 b3!4", B: "~@8 f4!4 c4!4", C: "[~@7 g3@2 ~@7, ~@9 f#4@3 d4@4 ~@16, ~@11 f4@4 ~@17]/2",
  D: "~@9 f4 ~ f4 d4 ~ a3 ~", E: "~@7 f#4!2 d4 c4 a3 d4 e4 ~@2", F: "g4!4 e4!4 c4!4 a3!4", G: "~@9 g4 ~ g4 c4 ~ g3 ~",
})).s("gm_synth_drum").gain(0.48)

// chords · synth strings 1 · "SynthStrings1"
const synth_strings_1_2 = note("<~@72 A B C D A E F@2 ~@45>".pickRestart({
  A: "[d#5,g5,a#5]@3 [a#4,f5,a5]@3 [d#5,g5]@2", B: "[f5,a5]@3 [c5,f5]@3 ~@2",
  C: "[d#5,g5,a#5]@3 [c5,f5,a5]@3 [d#5,g5]@2", D: "[f5,a5]", E: "[c5,f5,a5]@3 [a4,c5,f5]@3 [c5,f5,a5]@2",
  F: "[d5,g5,b5]/2", // G
})).s("gm_synth_strings_1").gain(0.64)

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

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@107 [~@15 x] ~@16 x>").gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@107 [~@13 x!2 ~] ~@16 x>").gain(0.48)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B A B@2 ~ B ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@4 A B A B A B A B A B A B A
  B A B A B A B A B A B ~@36 A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "x ~@4 x ~@2", B: "x",
})).gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@124 x>").gain(0.48)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@44 [~ x ~ x]!4 ~@32 [~ x ~ x]!4 ~@4 [~ x ~ x]!4 ~@33>").gain(0.6)

stack(
  bass, distortion_guitar, synth_strings_1, tubular_bells, electric_guitar_muted, synth_drum, synth_strings_1_2, kick,
  snare, hihat, low_tom, mid_tom, open_hat, high_tom, crash, ride_bell
)