Strudelify

Personality

Price Lloyd

KeyF majorTempo129 bpm
0:00/0:00
// Personality — Price Lloyd
// 129 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 83 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(129/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG R S T U V W X Y Z AA AB AC AD AE AF AH B C D
  E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AI AJ AK@2
>`.pickRestart({
  A: "~@6 c2@5 ~ d2@4 ~@2 e2@4 ~@2", B: "f2@6 ~@4 f2@2 c2@9 ~@3", C: "f2@10 ~@2 c2@9 ~@3",
  D: "f2@9 ~@3 c2@5 ~ f2@3 ~@3", E: "c2@6 ~@4 c2 ~ g1@8 ~@4", F: "c2@9 ~@3 g1@7 ~@3 g1@2", G: "c2@7 ~@5 g1@7 ~@5",
  H: "c2@9 ~@3 g1@5 ~ c2@4 ~@2", I: "f2@7 ~@3 f2 ~ c2@5 ~ e2@4 ~@2", J: "f2@7 ~@3 f2@2 c2@9 ~@3",
  K: "f2@7 ~@3 f2 ~ g2@4 ~@2 a2@4 ~@2", L: "bb1@8 ~@2 bb1@2 f1@5 ~ bb1@5 ~", M: "b1@10 ~@2 b1@7 ~@3 b1 ~",
  N: "f2@9 ~@3 f2@5 ~ e2@4 ~@2", O: "d2@7 ~@3 d2@2 a1@5 ~ d2@4 ~@2", P: "g1@8 ~@2 g1@2 c2@7 ~@3 c2@2",
  Q: "f2@3 ~@3 f2@4 ~@2 e2@5 ~ d2@4 ~@2", R: "c2@6 ~@4 c2@2 g1@9 ~@3", S: "c2@9 ~@3 d2@5 ~ e2@4 ~@2",
  T: "f2@6 ~@4 f2@2 c2@7 ~@3 c2@2", U: "f2@4 ~@2 f2@5 ~ e2@5 ~ d2@4 ~@2", V: "c2@6 ~@4 c2@2 g1@6 ~@4 g1 ~",
  W: "c2@8 ~@2 c2@2 d2@5 ~ e2@4 ~@2, ~@12 c2 ~@11", X: "f2@9 ~@3 bb2@10 ~@2", Y: "f2@5 ~ g2@5 ~ ab2@6 a2@5 ~",
  Z: "bb2@7 ~@3 bb2@2 f2@5 ~ bb2@5 ~", AA: "b2@7 ~@3 b2@2 f2@5 ~ b2@4 ~@2", AB: "c3@8 ~@2 f2 ~ f2@5 ~ e2@5 ~",
  AC: "d2@7 ~@3 d2@2 a1@5 ~ d2@3 ~@3", AD: "g2@7 ~@3 g2@2 d2@5 ~ g2@3 ~@3", AE: "c2@7 ~@3 c2@2 g1@5 ~ c2@4 ~@2",
  AF: "f2@7 ~@3 f2@2 bb2@5 ~ bb2@4 ~@2", AG: "f2@3 ~@3 f2@5 ~ e2@5 ~ d2@4 ~@2", AH: "f2 ~@7", AI: "f1@23 ~",
  AJ: "bb1@10 ~@2 bb1@11 ~", AK: "[f1@9 ~@7]/2",
})).s("gm_acoustic_bass").gain(0.6)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG R S T U V W X Y Z AA AB AC AD AE AF AH B C D
  E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AI AJ AK ~
>`.pickRestart({
  A: "~@6 [c2,c3]@4 ~@2 [d2,d3]@5 ~ [e2,e3]@4 ~@2", // C D E
  B: "f3@4 a3@2 [a3,c4,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@3 ~ f3 ~", // F
  C: "~@4 f3 ~ [a3,c4,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@4 ~@2", // F
  D: "f3 ~@3 f3@2 [a3,c4,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@5 ~", // F
  E: "c3 ~@3 c3 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@6 c3 ~ [g3,c4,e4]@4 c3@2", // C
  F: "~@4 c3 ~ [g3,c4,e4]@4 [g3,c4,e4]@5 ~ c3 ~ [g3,c4,e4]@3 ~ c3 ~", // C
  G: "~@4 c3 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@6 c3 ~ [g3,c4,e4]@4 c3 ~", // C
  H: "~@4 c3 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@6 c3 ~ [g3,c4,e4]@3 ~@3", // C
  I: "~@6 [a3,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@4 f3 ~, ~@6 c4 ~@17", // Dm F
  J: "a3@2 ~@2 f3 ~ [a3,c4,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@4 ~@2", // F
  K: "~@4 f3 ~ [a3,c4,eb4]@2 ~@2 [a3,c4,eb4]@6 f3 ~ [a3,c4,eb4]@3 ~@3", // Adim
  L: "~@4 bb2 ~ [f3,bb3,d4]@2 ~@2 [f3,bb3,d4]@6 bb2@2 [f3,bb3,d4]@4 ~@2", // Bb
  M: "~@6 [f3,b3,d4]@2 ~@2 [f3,b3,d4]@7 ~ [f3,b3,d4]@2 ~@4", // Bdim
  N: "~@6 [f3,c4]@2 ~@2 [a3,c4]@6 f3 ~ [a3,c4]@4 f3 ~, ~@6 a3 ~@3 f3@4 ~@4 f3 ~@5", // F5 Am
  O: "d3@4 ~@2 [d4,gb4]@2 ~@2 [a3,d4,gb4]@6 d3 ~ [a3,d4,gb4]@3 ~ bb3 ~, ~ a3 ~@4", // D
  P: "[f3,b3,d4]@5 ~ [f3,b3,d4]@4 ~@2 [c3,g3,c4,e4]@4 ~@2 [c3,g3,c4,e4]@3 ~@3", // Bdim C
  Q: "[f3,a3,c4] ~@2 [f2,f3]@2 ~ [e2,e3]@2 ~ [d2,d3]@2 ~", // F E D
  R: "[c3,g3] ~@3 [c3,g3] ~ [c4,e4,g4]@2 ~@2 [c4,e4,g4]@6 [c3,g3] ~ [c4,e4,g4]@2 ~@4", // C5 C C5 C
  S: "~@4 [c3,g3] ~ [c4,g4]@2 ~@2 [c4,e4,g4]@6 [c3,g3] ~ [c4,e4,g4]@3 ~ [c4,e4,g4] ~, ~@6 e4 ~@17", // C5 C C5 C
  T: "~@4 [f2,c3] ~ [f3,c4]@2 ~@2 [f3,a3,c4]@6 [f2,c3] ~ [f3,a3,c4]@2 ~@4, ~@6 a3 ~@17", // F5 F F5 F
  U: "~@4 [f2,c3] ~ [f3,a3,c4]@2 ~@2 [f3,a3,c4]@6 [f2,c3] ~ [f3,a3,c4]@2 ~@4", // F5 F F5 F
  V: "~@4 [c3,g3] ~ [c4,e4] ~@3 [c4,e4,g4]@6 [c3,g3] ~ [c4,g4]@2 ~@4, ~@6 g4@2 ~@10 e4 ~@5", // C5 C C5
  W: "~@4 [c3,g3] ~ [c4,e4,g4] ~@3 [c4,e4,g4]@6 [c3,g3] ~ [c4,e4,g4]@2 ~@4", // C5 C C5 C
  X: "[f3,a3,c4]@5 ~ [f3,a3,c4]@4 ~@2 [bb2,f3,bb3,d4]@6 [f3,bb3,d4]@4 ~@2", // F Bb
  Y: "[f3,a3,c4]@5 ~ [f3,a3]@2 ~ a3 ~@2 [eb3,a3,c4]@5 ~ [eb3,a3,c4]@5 ~, ~ c4 ~@2", // F Adim
  Z: "~@4 bb2 ~ [f3,bb3,d4]@2 ~@2 [f3,bb3,d4]@6 bb2 ~ [f3,bb3,d4]@3 ~@3", // Bb
  AA: "b2 ~@3 b2 ~ [f3,b3,d4]@2 ~@2 [f3,b3,d4]@6 b2 ~ [f3,b3,d4]@3 ~@3", // Bdim
  AB: "~@4 f2@2 [f3,a3,c4]@2 ~@2 [f3,a3,c4]@6 f2 ~ [f3,a3,c4]@5 ~", // F
  AC: "~@6 [c4,a4]@2 ~@2 [c4,gb4,a4]@6 [d3,a3] ~ [gb4,a4]@4 ~@2, ~@6 gb4 ~@11 c4@2 ~@4", // F Gbdim D5 Gbm
  AD: "~@4 g2 ~ [g3,b3,d4] ~@3 [g3,b3,d4]@6 g2 ~ [b3,d4]@3 ~ [g3,b3,d4] ~, ~@18 g3 ~@5", // G Bm G
  AE: "~@4 [c3,g3] ~ [c4,g4]@2 ~@2 [c4,e4,g4]@6 [c3,g3] ~ [c4,e4,g4]@2 ~@4, ~@6 e4 ~@17", // C5 C C5 C
  AF: "[f3,a3,c4]@4 ~@2 [f3,a3,c4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 f2 ~", // F Bb
  AG: "[f3,a3,c4]@2 ~@4 [f3,a3,c4]@3 ~@3 e3@5 ~ d3@4 ~@2", AH: "~@6 c4@4 d4@2 c4@5 ~ c3@5 ~",
  AI: "[f2,f4,a4,c5]@5 ~ [f2,f4,a4,c5]@5 ~", AJ: "[bb2,g4,bb4,d5]@11 ~ [bb2,g4,bb4,d5]@9 ~@3", AK: "[f2,f4,a4,c5]",
})).s("gm_piano").gain(0.5)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  A B C D E F G H I J K L M N O P Q R@6 S T U V W X Y Z AA AB R@6 S T U V W X Y Z AA AC B C D E F G H I J K L M N O P Q
  R@6 S T U V W X Y Z AD AE AF ~
>`.pickRestart({
  A: "~@6 [c2,c3]@4 ~@2 [d2,d3]@5 ~ [e2,e3]@4 ~@2", // C D E
  B: "f3@4 a3@2 [a3,c4,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@3 ~ f3 ~", // F
  C: "~@4 f3 ~ [a3,c4,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@4 ~@2", // F
  D: "f3 ~@3 f3@2 [a3,c4,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@5 ~", // F
  E: "c3 ~@3 c3 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@6 c3 ~ [g3,c4,e4]@4 c3@2", // C
  F: "~@4 c3 ~ [g3,c4,e4]@4 [g3,c4,e4]@5 ~ c3 ~ [g3,c4,e4]@3 ~ c3 ~", // C
  G: "~@4 c3 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@6 c3 ~ [g3,c4,e4]@4 c3 ~", // C
  H: "~@4 c3 ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4]@6 c3 ~ [g3,c4,e4]@3 ~@3", // C
  I: "~@6 [a3,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@4 f3 ~, ~@6 c4 ~@17", // Dm F
  J: "a3@2 ~@2 f3 ~ [a3,c4,f4]@2 ~@2 [a3,c4,f4]@6 f3 ~ [a3,c4,f4]@4 ~@2", // F
  K: "~@4 f3 ~ [a3,c4,eb4]@2 ~@2 [a3,c4,eb4]@6 f3 ~ [a3,c4,eb4]@3 ~@3", // Adim
  L: "~@4 bb2 ~ [f3,bb3,d4]@2 ~@2 [f3,bb3,d4]@6 bb2@2 [f3,bb3,d4]@4 ~@2", // Bb
  M: "~@6 [f3,b3,d4]@2 ~@2 [f3,b3,d4]@7 ~ [f3,b3,d4]@2 ~@4", // Bdim
  N: "~@6 [f3,c4]@2 ~@2 [a3,c4]@6 f3 ~ [a3,c4]@4 f3 ~, ~@6 a3 ~@3 f3@4 ~@4 f3 ~@5", // F5 Am
  O: "d3@4 ~@2 [d4,gb4]@2 ~@2 [a3,d4,gb4]@6 d3 ~ [a3,d4,gb4]@3 ~ bb3 ~, ~ a3 ~@4", // D
  P: "[f3,b3,d4]@5 ~ [f3,b3,d4]@4 ~@2 [c3,g3,c4,e4]@4 ~@2 [c3,g3,c4,e4]@3 ~@3", // Bdim C
  Q: "[f3,a3,c4] ~@2 [f2,f3]@2 ~ [e2,e3]@2 ~ [d2,d3]@2 ~", // F E D
  R: "[[c3,g3,c4,e4,g4]@19 ~@3 [c3,g3,c4,e4,g4]@22 ~@2 [f2,f3,a3,c4]@22 ~@2 [f2,f3,a3,c4]@22 ~@2 [c3,g3,c4,e4,g4]@22 ~@2 [c3,g3,c4,e4,g4]@25 ~]/6", // C F C
  S: "[f2,f3,a3,c4] [f3,bb3,d4], ~@3 bb2 ~@2", // F Bb
  T: "[f2,a3,c4]@11 ~ [eb3,a3,c4]@2 f2 ~ [eb3,a3,c4]@2 f2@2 [eb3,a3] ~ f2@2, f3@3 ~@7 c4 ~", U: "[f3,bb3,d4]@7 ~",
  V: "[b2,f3,b3,d4]@11 ~", W: "[f2,f3,a3,c4]", X: "[d3,a3,c4,gb4]", Y: "[g2,g3,b3,d4]@23 ~", Z: "[c3,g3,c4,e4]@23 ~",
  AA: "[f2,f3,a3,c4]@6 [f3,bb3,d4]@5 ~, ~@12 bb2@7 ~@5", AB: "[f2,f3,a3,c4] ~@7", AC: "~@6 c4@4 d4@2 c4@5 ~ c3@5 ~",
  AD: "[f2,f4,a4,c5]@5 ~ [f2,f4,a4,c5]@5 ~", AE: "[bb2,g4,bb4,d5]@11 ~ [bb2,g4,bb4,d5]@9 ~@3", AF: "[f2,f4,a4,c5]",
})).s("gm_epiano2").gain(0.47)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@4 A ~@3 B ~@3 C ~@4 D E F G D H I J K L M N O P Q R D E F G D H I J K L M N O P Q R ~@3 A ~@3 B ~@3 C ~@4 D E F G D
  H I J K L M N O P S T U V
>`.pickRestart({
  A: "~@6 [e4,e5]@10 [c4,c5]@2 [d4,d5]@3 ~@3", B: "~@6 [f4,f5]@3 ~ [f4,f5]@6 [c4,c5]@2 [d4,d5]@3 ~@3",
  C: "~@6 [ab4,ab5]@3 ~ [ab4,ab5]@6 [f4,f5]@2 [g4,g5]@3 ~@3", // Ab F G
  D: "~@4 [c5,e5] ~ [c5,e5] ~@3 [c5,e5] ~ [c5,e5]@4 [bb4,d5]@2 [g4,c5]@2 ~@4", // C Bb C5
  E: "~@4 [c5,e5] ~ [c5,e5] ~@3 [c5,e5] ~ [c5,e5]@4 d5@2 [g4,c5]@3 ~@3, ~@16 bb4 ~ f4 ~@5", // C C5
  F: "~@4 [c5,f5] ~ [c5,f5] ~@3 [c5,f5] ~ [c5,f5]@4 d5@2 [a4,c5]@2 ~@4, ~@16 bb4 ~@7", // F5 Am
  G: "~@4 [c5,f5] ~ [c5,f5] ~@3 [c5,f5] ~ [c5,f5]@4 [bb4,d5]@2 c5@3 ~@3, ~@18 a4 ~@5", // F5 Bb
  H: "~@4 [c5,e5] ~ [c5,e5] ~@3 [c5,e5] ~ [c5,e5]@4 d5@2 [g4,c5]@3 ~@3, ~@16 bb4 ~@7", I: "[c5,f5]@12 [d5,g5]@11 ~",
  J: "[c5,f5]@23 ~", K: "~@6 [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5]@2 [bb4,d5,f5]@3 ~ [d5,f5] ~@7, ~@10 f5 ~@5 bb4@2 ~@6",
  L: "~@6 [d5,f5] ~ [b4,d5,f5] ~ [b4,d5,f5]@2 [b4,d5,f5]@3 ~ [b4,d5,f5]@2 ~@6, ~@3 b4 ~@8", // Dm Bdim
  M: "~@6 [a4,c5,f5] ~ [a4,c5,f5] ~ [c5,f5] ~ [a4,c5,f5]@4 [a4,c5,f5]@2 ~@6, ~@5 a4 ~@6", // F F5 F
  N: "~@6 [a4,d5,gb5] ~ [a4,d5,gb5] ~ [d5,gb5] ~ [a4,d5,gb5]@4 [a4,d5,gb5]@2 ~@6, ~@5 a4 ~@6", // D
  O: "~@6 [b4,d5,f5] ~ [b4,d5,f5] ~ [b4,f5] ~ [b4,d5,f5]@4 [b4,d5,f5]@2 ~@6, ~@5 d5 ~@6", // Bdim
  P: "~@6 [bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5]@3 ~ [bb4,c5,e5]@2 ~@6", // C7
  Q: "[a4,c5,f5]@11 ~ [bb4,d5,g5]@10 ~@2", R: "[a4,c5,f5] ~@11", S: "[f4,a4,c5,f5]@5 ~ [a4,c5,f5]@5 ~, ~@3 f4@2 ~",
  T: "[g4,bb4,d5,g5]@10 ~@2 [g4,bb4,g5]@9 ~@3, ~@12 d5@7 ~@5", U: "[f4,a4,c5,f5]@11 ~", V: "[f4,a4,c5,f5] ~@7",
})).s("gm_brass_section").gain(0.57)

// drums · kick
const kick = s("bd").struct("<A B@15 C B@15 C B@15 C B@15 C B@14 C D C@2>".pickRestart({
  A: "~ x!3", B: "x ~@4 x!2 ~ x ~@2 x", C: "x", D: "x!2",
})).gain(0.62)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A@14 B ~@8 C ~@6 B ~@8 C ~@6 B ~ A@14 B ~@8 C ~@8 B ~>".pickRestart({
  A: "~@5 x ~@6", B: "~@22 x!2", C: "~@3 x!4 ~@5",
})).gain(0.19)

// drums · hihat
const hihat = s("hh").struct("<~ A@15 B A@15 B A@15 B A@15 B A@14 C@2 ~@2>".pickRestart({
  A: "x!4", B: "~ x!3", C: "~ x ~ x",
})).gain(0.62)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~ A@15 ~ A@15 ~ A@15 ~ A@15 ~ A@14 ~@4>".pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x",
})).gain(0.19)

// drums · crash
const crash = s("cr").struct("<A ~@16 B ~@7 B ~@7 B ~@7 B ~@23 B ~@7 B ~@5 B C B ~>".pickRestart({
  A: "~ x ~@2", B: "x", C: "x!2",
})).gain(0.62)

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

stack(bass, piano, epiano2, brass_section, kick, snare, snare_soft, hihat, hihat_soft, crash, ride)

More by Price Lloyd