Strudelify

Everything You Want

Vertical Horizon

KeyE♭ minorTempo94 bpm
0:00/0:00
// Everything You Want — Vertical Horizon
// 94 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 61, 4/4 at bar 62) are rendered on a constant 4/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 11 synth bass 1 (copy of ch 9 synth brass 1)
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/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.

// other · synth brass 1
const synth_brass_1 = note(`<
  A B A C A B A D A B A C A B A C A B A C A B A C ~@8 A B A D A B A C A B A C ~@17 E F G F H F G F I ~@15 E F G F J F G
  F J F G F J K
>`.pickRestart({
  A: "db4 ~ eb4 ~ eb4 ~ db4 ~ eb4 ~ eb4 ~ db4 ~ eb4 ~", B: "db4 ~ eb4 ~ eb4 ~ db4 ~ eb4 ~ eb4 ~ gb4 ~ f4 ~",
  C: "db4 ~ eb4 ~ eb4 ~ db4 ~ eb4 ~ eb4 ~ b3 ~ bb3 ~", D: "db4 ~ eb4 ~ eb4 ~ db4 ~ eb4 ~ eb4 ~ b3 ~@3",
  E: "~@8 db4 ~ eb4 ~ eb4 ~ db4 ~", F: "eb4 ~ eb4 ~ db4 ~ eb4 ~ db4 ~ eb4 ~ eb4 ~ db4 ~",
  G: "eb4 ~ eb4 ~ gb4 ~ f4 ~ db4 ~ eb4 ~ eb4 ~ db4 ~", H: "eb4 ~ eb4 ~ b3 ~ bb3 ~ db4 ~ eb4 ~ eb4 ~ db4 ~",
  I: "eb4 ~ eb4 ~ b3 ~ bb3 ~@9", J: "eb4 ~ eb4 ~ b3 ~ bb3@2 db4 ~ eb4 ~ eb4 ~ db4 ~", K: "eb4 ~ eb4 ~ db4 ~ eb4 ~@9",
})).s("gm_synth_brass_1").gain(0.18).pan(0.2)

// other · lead 8 bass lead
const lead_8_bass_lead = note("<A@7 B A@16 ~@8 A@3 B A@8 ~@17 C A@7 D ~@15 C A@12 D>".pickRestart({
  A: "[eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~", // Eb
  B: "[eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~@3", // Eb
  C: "~@8 [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~", D: "[eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~ [eb3,eb4] ~@9",
})).s("gm_lead_8_bass_lead").gain(0.05).pan(0.8)

// other · synth bass 1
const synth_bass_1 = note("<A@7 B A@16 ~@8 A@3 B A@8 ~@17 C A@7 D ~@15 C A@12 D>".pickRestart({
  A: "[eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~", // Eb
  B: "[eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~@3", // Eb
  C: "~@8 [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~", D: "[eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~ [eb4,eb5] ~@9",
})).s("gm_lead_8_bass_lead").gain(0.03).pan(0.2)

// other · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@4 A B A C A B A B A B A B A B A B A B A B D E D E D E D E A B A C A B A C A B A C D E D E D E D E ~@7 F G H@8 I J K
  J K J K J K J K J K J K J L@8 M@4 ~@2
>`.pickRestart({
  A: "eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@2, ~@6 bb2@9 ~", B: "~@3 bb3@2 ~@4 b3@2 ~@5, bb2@3 b2@5",
  C: "~@3 bb3@2 ~@4 b3@2 ~@5, bb2@3 b2@4 ~", D: "gb3 b3 db4 gb4@3 gb3 bb3 db4 gb4@3 ~@4",
  E: "gb3 bb3 db4 gb4@3 gb3 ab3 db4 gb4@3 ~@4", F: "~@11 b3@2 ~ bb3@2", G: "~ ab3@2 ~ gb3@2 ~ eb3@2 ~ db3@2 ~ b2@2 ~",
  H: "[ab2@2 ~@6 eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@5 bb3@2 ~@4 b3@2 ~@5 eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@5 bb3@2 ~@4 b3@2 ~@5 eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@5 bb3@2 ~@4 b3@2 ~@5 eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@5 bb3@2 ~ b2@2, ~@14 bb2@9 ~ bb2@6 b2@10 ~@6 bb2@9 ~ bb2@6 b2@8 ~@8 bb2@9 ~ bb2@6 b2@10 ~@6 bb2@9 ~ bb2@6 ~@2]/8",
  I: "~ b3@2 ~@5 gb3 b3 db4 gb4@3 gb3 bb3", J: "db4 gb4@3 ~@4 gb3 bb3 db4 gb4@3 gb3 ab3",
  K: "db4 gb4@3 ~@4 gb3 b3 db4 gb4@3 gb3 bb3",
  L: "[db4 gb4@3 ~@4 eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@5 bb3@2 ~@4 b3@2 ~@5 eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@5 bb3@2 ~@4 b3@2 ~@5 eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@5 bb3@2 ~@4 b3@2 ~@5 eb3 db3 ~ b3@2 ~@4 eb3@2 ~ bb3@2 ~@5 bb3@2 ~ b2@2, ~@14 bb2@9 ~ bb2@6 b2@10 ~@6 bb2@9 ~ bb2@6 b2@10 ~@6 bb2@9 ~ bb2@6 b2@10 ~@6 bb2@9 ~ bb2@6 ~@2]/8",
  M: "[~ b3@2 ~ [bb3,b3,eb4]@50 ~@10]/4", // Bmaj7
})).s("gm_acoustic_guitar_steel").gain(0.44).pan(0.4)

// bass · electric guitar jazz
const bass = note(`<
  ~@4 A B A C A B A B A B A B A B A B A B A B D E D E D E F G A B A C A B A C A B A C D E D E D E F G H I H G H I H J@6
  K@4 L@7 M@8 N@8 O@2 ~@5
>`.pickRestart({
  A: "ab2@3 eb2@5", B: "bb2@3 b2@5", C: "bb2@6 b2@9 ~", D: "[ab1,ab2]@6 [gb1,gb2]@9 ~", E: "[eb2,eb3]@3 [db2,db3]@5",
  F: "[ab1,ab2]@6 [eb1,eb2]@9 ~", G: "[db2,db3]@3 [b1,b2]@5", H: "[eb1,eb2]!8", I: "[b1,b2]!8",
  J: "[[db2,db3]@3 [b1,b2]@17 ab2@3 eb2@5 bb2@3 b2@5 ab2@3 eb2@5 bb2@3 b2]/6", // Db B
  K: "[~@4 ab2@3 eb2@5 bb2@3 b2@5 ab2@3 eb2@5 bb2@3 b2]/4",
  L: "[~@8 [ab1,ab2]@6 [gb1,gb2]@9 ~ [eb2,eb3]@6 [db2,db3]@10 [ab1,ab2]@6 [gb1,gb2]@9 ~ [eb2,eb3]@6 [db2,db3]@10 [ab1,ab2]@6 [gb1,gb2]@9 ~ [eb2,eb3]@6 [db2,db3]@10 [ab1,ab2]@6 [eb1,eb2]@2]/7", // Ab Gb Eb Db Ab Gb Eb Db …
  M: "[~@8 [db2,db3]@6 [b1,b2]@10 [ab1,ab2]@6 [gb1,gb2]@9 ~ [eb2,eb3]@6 [db2,db3]@10 [ab1,ab2]@6 [gb1,gb2]@9 ~ [eb2,eb3]@6 [db2,db3]@10 [ab1,ab2]@6 [gb1,gb2]@9 ~ [eb2,eb3]@6 [db2,db3]@10 [ab1,ab2]@6 [eb1,eb2]@2]/8", // Db B Ab Gb Eb Db Ab Gb …
  N: "[~@4 [db2,db3]@3 [b1,b2]@5 ab2@3 eb2@5 bb2@3 b2@5 ab2@3 eb2@5 bb2@3 b2@5 ab2@3 eb2@5 bb2@3 b2@5 ab2@3 eb2]/8", // Db B
  O: "[~@4 bb2@3 b2@5 ~@4]/2",
})).s("gm_electric_guitar_jazz").gain(0.58).pan(0.6)

// bass · fretless bass
const bass_2 = note(`<
  ~@24 A B C B C B D E ~@12 A B C B C B D E F G F E F G F H@3 ~@7 I J K L K L M N O J K L K L M N P ~@13
>`.pickRestart({
  A: "[ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~", // Ab5 Gb5
  B: "[eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [db2,db3] ~ [db2,db3] ~ [db2,db3] ~ [db2,db3] ~ [db2,db3] ~", // Eb Db
  C: "[ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~", // Ab5 Gb5
  D: "ab2 ~ ab2 ~ ab2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~", E: "db3 ~ db3 ~ db3 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~",
  F: "[eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~", // Eb
  G: "[b1,b2] ~ [b1,b2] ~ [b1,b2] ~ [b1,b2] ~ [b1,b2] ~ [b1,b2] ~ [b1,b2] ~ [b1,b2] ~", // B
  H: "[db3 ~ db3 ~ db3 ~ [b2,eb3]@34 ~@8]/3", I: "~@8 [ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [gb2,db3,gb3] ~",
  J: "[gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [gb2,db3,gb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [db2,db3] ~", // Gb5 Eb Db
  K: "[db2,db3] ~ [db2,db3] ~ [db2,db3] ~ [db2,db3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [ab2,eb3] ~ [gb2,db3] ~", // Db Ab5 Gb5
  L: "[gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [gb2,db3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [eb2,eb3] ~ [db2,db3] ~", // Gb5 Eb Db
  M: "[db2,db3] ~ [db2,db3] ~ [db2,db3] ~ [db2,db3] ~ ab2 ~ ab2 ~ ab2 ~ bb2 ~", // Db
  N: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ db3 ~ db3 ~ db3 ~ b2 ~",
  O: "b2 ~ b2 ~ b2 ~ b2 ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [ab2,eb3,ab3] ~ [gb2,db3,gb3] ~", P: "b2 ~ b2 ~ b2 ~ b2 ~@9",
})).s("gm_fretless_bass").gain(0.55).pan(0.4)

// other · alto sax
const alto_sax = note("<~@24 A B A B A B C D ~@12 A B A B A B C D E F E D E F E G@3 ~@7 H@16 ~@14>".pickRestart({
  A: "ab1@3 gb1@5", B: "eb2@3 db2@5", C: "ab1@3 eb1@5", D: "db2@3 b1@5", E: "eb1", F: "b1", G: "[db2@3 b1@17 ~@4]/3",
  H: "[~@4 ab1@3 gb1@5 eb2@3 db2@5 ab1@3 gb1@5 eb2@3 db2@5 ab1@3 gb1@5 eb2@3 db2@5 ab1@3 eb1@5 db2@3 b1]/8",
})).s("gm_alto_sax").gain(0.48).pan(0.6)

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

// drums · snare
const snare = s("sd").struct("<~@16 [~ x ~ x]!43 [~ x ~@2] ~ [~@3 x] [~ x ~ x]!31 [~ x ~@2] ~@5>").gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@16 A@27 B A@15 C ~ D E@7 F E@23 G ~@5>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@5", B: "x ~@2 x ~@2 x ~@3 x ~ x ~ x ~", C: "x ~@2 x ~@2 x ~@9", D: "~@8 x ~@2 x ~@2 x ~",
  E: "~@2 x ~@5 x ~@2 x ~@2 x ~", F: "~@3 x!2 ~ x ~ x ~@2 x ~@2 x ~", G: "~ x ~@6",
})).gain(0.44)

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

// drums · crash
const crash = s("cr").struct("<~@16 A@19 B A@23 C ~ D A@31 E A@4 C>".pickRestart({
  A: "x!8", B: "x!7 ~", C: "x!4 ~@4", D: "~@4 x!4", E: "x!3 ~ x!4",
})).gain(0.16)

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

// drums · cowbell · soft notes
const cowbell_soft = s("cb").struct("<~@96 [~@8 x ~@2 x ~@4] [~@4 x ~ x ~ x ~@2 x ~@4] [~@2 x!2 ~@4]>").gain(0.11)

// drums · bongos
const bongos = s("bongo:4").struct("<~@93 [~@3 x] [x!2 ~@4 x ~]!4 [x!2 ~@6]>").gain(0.29)

stack(
  synth_brass_1, lead_8_bass_lead, synth_bass_1, acoustic_guitar_steel, bass, bass_2, alto_sax, kick, snare, low_tom,
  mid_tom, crash, cowbell, cowbell_soft, bongos
)

More by Vertical Horizon