Strudelify

Everything I Own

Ken Boothe

KeyF♯ majorTempo88 bpm
0:00/0:00
// Everything I Own — Boothe, Ken
// 88 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/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 clean
const electric_guitar_clean = note(`<
  ~ A B A C@2 D E F G H E I J K J F L M L M L H E N O@2 D E F G H E I J K J F L M L M L H E N P@2 Q@2 R S@3 T M L M L M
  L H E N E N E N L M L M L M L H E N E N E N L U V W X Y ~
>`.pickRestart({
  A: "[a#3,c#4,f#4]@3 ~ [g#3,c#4,f4]@2 ~@2 [f#3,b3,d#4]@7 ~", B: "[f#3,b3,d#4]@3 ~ [g#3,c#4,f4]@3 ~ [a#3,c#4,f#4]@7 ~",
  C: "[[f#3,b3,d#4]@3 ~ [g#3,c#4,f4]@3 ~ [a#3,c#4,f#4]@13 ~@5 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~]/2", // B C# F# C#
  D: "~@2 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~", // C# B
  E: "~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@3 [a#3,c#4,f#4] ~@3 [a#3,c#4,f#4] ~", // B F#
  F: "~@2 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@3 [a#3,c#4,f#4] ~@3 [a#3,c#4,f#4] ~", // C# F#
  G: "~@2 [a#3,c#4,f#4] ~@3 [a#3,c#4,f#4] ~@3 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~", // F# C#
  H: "~@2 [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~", // C# B
  I: "~@2 [g#3,c#4,f4] ~@3 [c#4,f#4,a#4] [d#4,g#4,b4] ~@2 [d#4,g#4,b4] ~@3 [d#4,g#4,b4] ~", // C# F# G#m
  J: "~@2 [d#4,g#4,b4] ~@3 [c#4,f#4,a#4] [c#4,f4,g#4] ~@2 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~", // G#m F# C#
  K: "~@2 [c#4,f4,g#4] ~@3 [c#4,f#4,a#4] [d#4,g#4,b4] ~@2 [d#4,g#4,b4] ~@3 [d#4,g#4,b4] ~", // C# F# G#m
  L: "~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@3 [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~", // B C#
  M: "~@2 [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~@3 [a#3,c#4,f#4] ~@3 [a#3,c#4,f#4] ~", // C# F#
  N: "~@2 [a#3,c#4,f#4] ~@3 [a#3,c#4,f#4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~", // F# B
  O: "[~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~ [a#3,c#4,f#4]@11 ~@7 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~]/2", // B F# C#
  P: "[~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~ [a#3,c#4,f#4]@14 ~@4 [a#3,d#4,f#4] ~@3 [a#3,d#4,f#4] ~]/2", // B F# D#m
  Q: "~@2 [a#3,d#4,f#4] ~@3 [a#3,d#4,f#4] ~@3 [a#3,d#4,f#4] ~@3 [a#3,d#4,f#4] ~", // D#m
  R: "~@2 [a#3,d#4,f#4] ~@3 [a#3,d#4,f#4] ~@3 [b3,d#4,g#4] ~@3 [b3,d#4,g#4] ~", // D#m G#m
  S: "~@2 [b3,d#4,g#4] ~@3 [b3,d#4,g#4] ~@3 [b3,d#4,g#4] ~@3 [b3,d#4,g#4] ~", // G#m
  T: "~@2 [b3,d#4,g#4] ~@3 [b3,d#4,g#4] ~@3 [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~", // G#m C#
  U: "~@2 [g#3,c#4,f4] ~@3 [g#3,c#4,f4] ~ [a#3,c#4,f#4]@3 ~ [g#3,c#4,f4]@3 ~", // C# F# C#
  V: "[f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@3 ~ [g#3,c#4,f4]@3 ~", // B C#
  W: "[a#3,c#4,f#4]@6 ~@2 [a#3,c#4,f#4]@3 ~ [g#3,c#4,f4]@3 ~", // F# C#
  X: "[f#3,b3,d#4]@6 ~@2 [f#3,b3,d#4]@3 ~ [g#3,c#4,f4]@2 ~@2", Y: "[f#3,a#3,f#4]@13 ~@3",
})).s("gm_electric_guitar_clean").gain(0.17).pan(0.1)

// bass · electric bass finger
const bass = note(`<
  ~ A B A C@2 D E F G H I J K L M N O P Q R S T U V W@2 D E F G H I J K L M N O P Q R S T U V X@2 Y Z AA AB AC AD AE AF
  O P Q R S T U V AG V AH V AI AJ O P Q R S T U V AK AL AM AN AO AP AQ AR AS AT ~
>`.pickRestart({
  A: "f#2@4 c#2@4 b1@7 ~", B: "b1 c#2 f#1@2", C: "[b1@4 c#2@3 ~ f#1@15 ~ c#2 ~ c#2!2 g#1 ~ g#1 ~]/2",
  D: "~@8 b1 ~ b1!2 f#1@2 f#1@2", E: "~@8 f#1@2 ~ f#1 a#1@2 ~ a#1", F: "c#2!4 g#1@3 c#2 f#1@2 ~ f#1 ~@4",
  G: "~@4 f#1@2 f#1 ~ c#2@2 c#2!2 g#1@2 g#1 ~", H: "~@7 c#2 b1@2 b1!2 f#1@2 f#1@2", I: "~@8 f#1 ~ f#1!2 a#1@2 a#1!2",
  J: "c#2!4 g#1@2 ~ g#1 g#1@2 ~ g#1 d#1@2 ~ d#1", K: "g#1!4 d#1@3 ~ c#2!4 g#1@2 g#1 ~",
  L: "~@6 d#1@2 g#1@2 ~ g#1 d#1@2 ~ d#1", M: "g#1 ~ f#1 ~ f1@2 d#1 ~ c#2@2 b1 ~ a#1@2 g#1@2",
  N: "~@3 f1 f#1!2 a#1!2, ~@6 f#1 ~ d#2 ~@7", O: "b1!4 d#2 ~ d#2@2 c#2 ~ c#2!2 g#1@2 g#1@2",
  P: "~@6 f1@2 f#1@2 f#1@2 a#1 ~ a#1@2", Q: "b1!4 d#2@2 d#2@2 c#2 ~ c#2!2 g#1@2 g#1 ~",
  R: "~@6 f1@2 f#1@2 f#1 ~ a#1@2 a#1@2", S: "b1!4 d#2@2 d#2@2 c#2 ~ c#2!2 g#1@2 g#1@2", T: "~@9 b1!3 d#2 ~ d#2!2",
  U: "f#2!2 f#2@2 ~@2 b1 ~ f#1@4 ~@4", V: "~@8 b1 ~ b1!2 d#2 ~ d#2!2",
  W: "[f#2!2 f#2@2 b1@2 f#2 ~ f#1@15 ~ c#2 ~ c#2!2 g#1 ~ g#1 ~]/2",
  X: "[f#2!2 f#2@2 b1@2 f#2 ~ f#1@15 ~ d#2 ~ d#2 ~ a#1@2 ~ a#1]/2", Y: "d#2 ~ d#2 ~ a#1@4 d#2 ~ d#2 ~ a#1@2 ~ a#1",
  Z: "d#2!3 ~ a#1@3 ~ d#2 ~ d#2 ~ a#1@2 ~ a#1", AA: "d#2!3 ~ a#1@3 ~ g#1 ~ g#1 ~ d#2@2 ~ d#2",
  AB: "g#2!3 ~ d#2@3 d#2 g#2 ~ g#2 ~ d#2@2 ~ d#2", AC: "g#2!3 ~ d#2@4 g#2 ~ g#2 ~ d#2@2 ~ d#2",
  AD: "g#1!3 ~ d#2@4 g#2 ~ g#2 ~ d#2@2 ~ d#2", AE: "g#2 ~ f#2 ~ f2 ~ d#2 ~ c#2 ~ b1@2 a#1@2 g#1@2",
  AF: "~@6 f1 ~ f#1@2 f#1@2 a#1@2 a#1@2, ~@8 d#2 ~@7", AG: "f#2!2 f#2@2 b1@2 f#2 ~ f#1 ~ f#1@2 ~@4",
  AH: "f#2 ~ f#2!2 d#2@2 b1@2 f#1@2 f#2 ~@5", AI: "f#2@2 f#2!2 d#2@2 [b1,f#2] ~ c#2 ~ c#2@2 b1 ~ b1@2",
  AJ: "a#1 ~ a#1 ~ g#1@2 f1 ~ f#1@2 f#1@2 a#1@2 a#1@2, ~@8 d#2 ~@7", AK: "f#2!2 f#2@2 b1@2 f#2 ~ f#1@2 f#1@2 ~@4",
  AL: "~@8 b1@2 b1!2 d#2@2 d#2!2", AM: "f#2@2 f#2!2 d#2@2 b1@2 f#1 ~ f#2 ~@5", AN: "~@6 f#1@2 b1@2 b1!2 d#2@2 d#2!2",
  AO: "f#2 ~ f#2!2 d#2@2 b1@2 c#2 ~ c#2@2 b1 ~ b1@2", AP: "a#1 ~ a#1@2 g#1@2 f1 ~ f#1@4 c#2@4", AQ: "b1@3 ~ b1@2 c#2@2",
  AR: "f#1@7 ~ f#2@4 c#2@4", AS: "b1@7 ~ b1@4 c#2@4", AT: "f#1",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · percussive organ
const percussive_organ = note(`<
  ~ A B C D@2 E F G H I J K L M N O P Q R Q S T U V W@2 E F G H I J K L M N O P Q R Q S T U V X@2 Y@2 Z AA@3 AB AC P Q R
  Q S T U V U V U V AD AE P Q R Q S T U V U V U V AD AF AG AH AG AI ~
>`.pickRestart({
  A: "[a#4,c#5,f#5]@3 ~ [g#4,c#5,f5]@3 ~ [f#4,b4,d#5]@7 ~", B: "[f#4,b4,d#5]@4 [g#4,c#5,f5]@3 ~ [a#4,c#5,f#5]@7 ~",
  C: "[a#4,c#5,f#5]@4 [g#4,c#5,f5]@3 ~ [f#4,b4,d#5]@8", // F# C# B
  D: "[[f#4,b4,d#5]@4 [g#4,c#5,f5]@3 ~ [a#4,c#5,f#5]@16 ~@2 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~]/2", // B C# F# C#
  E: "~@2 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~", // C# B
  F: "~ b2 [b3,d#4,f#4] ~@2 b2 [b3,d#4,f#4] ~@3 [c#4,f#4,a#4] ~@3 [c#4,f#4,a#4] ~", // B F#
  G: "~ c#3 [c#4,f4,g#4] c#3 ~ c#3 [c#4,f4,g#4] c#3 ~@2 [c#4,f#4,a#4] ~@3 [c#4,f#4,a#4] ~", // C# F#
  H: "~@2 [c#4,f#4,a#4] ~@3 [c#4,f#4,a#4] ~@5 [c#4,f4,g#4]@4", // F# C#
  I: "~@2 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~@5 [b3,d#4,f#4]@4", // C# B
  J: "~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~@3 [c#4,f#4,a#4] ~@3 [c#4,f#4,a#4] ~", // B F#
  K: "~@2 [c#4,f4,g#4] ~@3 [c#5,f#5,a#5] [d#5,g#5,b5] ~@2 [d#5,g#5,b5] ~@3 [d#5,g#5,b5] ~", // C# F# G#m
  L: "~@2 [d#5,g#5,b5] ~@3 [c#5,f#5,a#5] [c#5,f5,g#5] ~@2 [c#5,f5,g#5] ~@3 [c#5,f5,g#5] ~", // G#m F# C#
  M: "~@2 [c#5,f5,g#5] ~@3 [c#5,f#5,a#5] [d#5,g#5,b5] ~@2 [d#5,g#5,b5] ~@3 [d#5,g#5,b5] ~", // C# F# G#m
  N: "~@2 [d#5,g#5,b5] ~@3 [f#5,a#5] [f5,g#5] ~@2 [c#5,f5,g#5] ~@3 [c#5,f5,g#5] ~, ~@3 c#5 ~@4", // G#m F# Fm C#
  O: "~@2 [c#5,f5,g#5] ~@3 [c#5,f5,g#5] ~ [a#4,c#5,f#5]@5 ~ [a#4,c#5,f#5] ~", // C# F#
  P: "~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~ [g#4,c#5,f5]@4 ~@2 [g#4,c#5,f5] ~", // B C#
  Q: "~@2 [g#4,c#5,f5] ~@3 [g#4,c#5,f5] ~ [a#4,c#5,f#5]@4 ~@2 [a#4,c#5,f#5] ~", // C# F#
  R: "~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~ [g#4,c#5,f5]@3 ~ [g#4,c#5,f5] ~ [g#4,c#5,f5] ~", // B C#
  S: "~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [g#4,c#5,f5]@2 ~@2 [g#4,c#5,f5] ~", // B C#
  T: "~@2 [g#4,c#5,f5] ~@3 [g#4,c#5,f5] ~@3 [b4,d#5,f#5] ~ [b4,d#5,f#5]@4", // C# B
  U: "~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [a#4,c#5,f#5] ~ [a#4,c#5,f#5]@4", // B F#
  V: "~@2 [a#4,c#5,f#5] ~@3 [a#4,c#5,f#5] ~@3 [b4,d#5,f#5] ~ [b4,d#5,f#5]@4", // F# B
  W: "[~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~ [a#4,c#5,f#5]@14 ~@4 [c#4,f4,g#4] ~@3 [c#4,f4,g#4] ~]/2", // B F# C#
  X: "[~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~ [a#4,c#5,f#5]@14 ~@4 [d#5,f#5,a#5] ~@3 [d#5,f#5,a#5]@2]/2", // B F# D#m
  Y: "~@2 [d#5,f#5,a#5] ~@3 [d#5,f#5,a#5] ~@3 [d#5,f#5,a#5] ~@3 [d#5,f#5,a#5]@2", // D#m
  Z: "~@2 [d#5,f#5,a#5] ~@3 [d#5,f#5,a#5] ~@3 [d#5,g#5,b5] ~@3 [d#5,g#5,b5]@2", // D#m G#m
  AA: "~@2 [d#5,g#5,b5] ~@3 [d#5,g#5,b5] ~@3 [d#5,g#5,b5] ~@3 [d#5,g#5,b5]@2", // G#m
  AB: "~@2 [d#5,g#5,b5] ~@3 [d#5,g#5,b5] ~@3 [c#5,f5,g#5]@2 ~@2 [c#5,f5,g#5] ~", // G#m C#
  AC: "~@2 [c#5,f5,g#5]@3 ~ [c#5,f5,g#5] ~ [a#4,c#5,f#5]@5 ~ [a#4,c#5,f#5] ~", // C# F#
  AD: "~@2 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [g#4,c#5,f5] ~ [g#4,c#5,f5]@4", // B C#
  AE: "~@2 [g#4,c#5,f5] ~ [g#4,c#5,f5]@4 [a#4,c#5,f#5]@5 ~ [a#4,c#5,f#5] ~", // C# F#
  AF: "~@2 [g#4,c#5,f5] ~ [g#4,f5] ~@3 [a#4,c#5,f#5]@3 ~ [g#4,c#5,f5]@3 ~, ~@2 c#5 ~@5", // C# F# C#
  AG: "[f#4,b4,d#5]@7 ~ [f#4,b4,d#5]@3 ~ [g#4,c#5,f5]@3 ~", AH: "[a#4,c#5,f#5]@7 ~ [a#4,c#5,f#5]@3 ~ [g#4,c#5,f5]@3 ~",
  AI: "[a#4,c#5,f#5]", // F#
})).s("gm_percussive_organ").gain(0.27).pan(0.8)

// chords · synth strings 1
const synth_strings_1 = note("<~@47 A@8 ~@34>".pickRestart({
  A: "[~ [f#4,a#4]@6 ~@8 [c#4,f4], ~@8 d#4@111 ~@9, ~@7 [g#4,b4]@9]/8", // F# C# G#m
})).s("gm_synth_strings_1").gain(0.13).pan(0.3)

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

// drums · rim
const rim = s("rim").struct(`<
  ~@5 A B@10 A B@5 A B@3 A B@10 A B@5 A B@3 A B@6 C A B@5 A B@3 A B@3 A B@5 A B@3 A B@3 ~@6
>`.pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "~ x ~@2",
})).gain(0.56)

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@11 B ~@5 B ~@2 C B ~@10 B ~@5 B ~@2 C B ~@7 B ~@5 B ~@7 B ~@5 B ~@7 B ~@3 D ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x", D: "x",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@11 B ~@5 B ~@2 C ~@11 B ~@5 B ~@2 C ~@7 C D ~@5 B ~@3 B ~@3 B ~@5 B ~@3 B ~@3 B ~@2 E F ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~ x", D: "x!2 ~@2", E: "~@2 x!2", F: "x",
})).gain(0.5)

// drums · ht
const ht = s("ht").struct("<A ~@4 B ~@9 C D ~@9 B ~@9 C D ~@9 B ~@6 E F ~@9 G ~@13 G ~@9>".pickRestart({
  A: "~@8 x!3 ~@5", B: "~@2 x!3 ~@11", C: "~@14 x!2", D: "x", E: "~@15 x", F: "~@3 x ~@12", G: "~ x",
})).gain(0.5)

stack(electric_guitar_clean, bass, percussive_organ, synth_strings_1, kick, rim, snare, hihat, open_hat, crash, ht)