Strudelify
Personality cover art

Personality

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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G H I B J K L M N O P E Q R S T U V W X Y Z AA AB AC AD S E Q R S T U V W X Y Z AA AB AC AD AE B C D E F G
  H I B J K L M N O P E Q R S T U V W X Y Z AA AB AC AF AG AH@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@2 g1@9 ~@3", 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 ~ g2@4 ~@2 a2@4 ~@2",
  K: "bb1@8 ~@2 bb1@2 f1@5 ~ bb1@5 ~", L: "b1@10 ~@2 b1@7 ~@3 b1 ~", M: "f2@9 ~@3 f2@5 ~ e2@4 ~@2",
  N: "d2@7 ~@3 d2@2 a1@5 ~ d2@4 ~@2", O: "g1@8 ~@2 g1@2 c2@7 ~@3 c2@2", P: "f2@3 ~@3 f2@4 ~@2 e2@5 ~ d2@4 ~@2",
  Q: "c2@9 ~@3 d2@5 ~ e2@4 ~@2", R: "f2@6 ~@4 f2@2 c2@7 ~@3 c2@2", S: "f2@4 ~@2 f2@5 ~ e2@5 ~ d2@4 ~@2",
  T: "c2@6 ~@4 c2@2 g1@6 ~@4 g1 ~", U: "c2@8 ~@2 c2@2 d2@5 ~ e2@4 ~@2, ~@12 c2 ~@11", V: "f2@9 ~@3 bb2@10 ~@2",
  W: "f2@5 ~ g2@5 ~ ab2@6 a2@5 ~", X: "bb2@7 ~@3 bb2@2 f2@5 ~ bb2@5 ~", Y: "b2@7 ~@3 b2@2 f2@5 ~ b2@4 ~@2",
  Z: "c3@8 ~@2 f2 ~ f2@5 ~ e2@5 ~", AA: "d2@7 ~@3 d2@2 a1@5 ~ d2@3 ~@3", AB: "g2@7 ~@3 g2@2 d2@5 ~ g2@3 ~@3",
  AC: "c2@7 ~@3 c2@2 g1@5 ~ c2@4 ~@2", AD: "f2@7 ~@3 f2@2 bb2@5 ~ bb2@4 ~@2", AE: "f2 ~@7", AF: "f1@23 ~",
  AG: "bb1@10 ~@2 bb1@11 ~", AH: "[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@2 U@2 V W X Y Z AA AB AC AD AE R S T@2 U@2 V W X Y Z AA AB AC AD AF B C D E F
  G H I J K L M N O P Q R S T@2 U@2 V W X Y Z AA AB AC AG AH AI ~
>`.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 [c3,g3] ~ [c4,e4] ~@3 [c4,e4,g4]@6 [c3,g3] ~ [c4,g4]@2 ~@4, ~@6 g4@2 ~@10 e4 ~@5", // C5 C C5
  V: "[f3,a3,c4]@5 ~ [f3,a3,c4]@4 ~@2 [bb2,f3,bb3,d4]@6 [f3,bb3,d4]@4 ~@2", // F Bb
  W: "[f3,a3,c4]@5 ~ [f3,a3]@2 ~ a3 ~@2 [eb3,a3,c4]@5 ~ [eb3,a3,c4]@5 ~, ~ c4 ~@2", // F Adim
  X: "~@4 bb2 ~ [f3,bb3,d4]@2 ~@2 [f3,bb3,d4]@6 bb2 ~ [f3,bb3,d4]@3 ~@3", // Bb
  Y: "b2 ~@3 b2 ~ [f3,b3,d4]@2 ~@2 [f3,b3,d4]@6 b2 ~ [f3,b3,d4]@3 ~@3", // Bdim
  Z: "~@4 f2@2 [f3,a3,c4]@2 ~@2 [f3,a3,c4]@6 f2 ~ [f3,a3,c4]@5 ~", // F
  AA: "~@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
  AB: "~@4 g2 ~ [g3,b3,d4] ~@3 [g3,b3,d4]@6 g2 ~ [b3,d4]@3 ~ [g3,b3,d4] ~, ~@18 g3 ~@5", // G Bm G
  AC: "~@4 [c3,g3] ~ [c4,e4,g4] ~@3 [c4,e4,g4]@6 [c3,g3] ~ [c4,e4,g4]@2 ~@4", // C5 C C5 C
  AD: "[f3,a3,c4]@4 ~@2 [f3,a3,c4]@4 ~@2 [f3,bb3,d4]@4 ~@2 [f3,bb3,d4]@4 f2 ~", // F Bb
  AE: "[f3,a3,c4]@2 ~@4 [f3,a3,c4]@3 ~@3 e3@5 ~ d3@4 ~@2", AF: "~@6 c4@4 d4@2 c4@5 ~ c3@5 ~",
  AG: "[f2,f4,a4,c5]@5 ~ [f2,f4,a4,c5]@5 ~", AH: "[bb2,g4,bb4,d5]@11 ~ [bb2,g4,bb4,d5]@9 ~@3", AI: "[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@2 D G H I J K L M K N O P D E F@2 D G H I J K L M K N O P ~@3 A ~@3 B ~@3 C ~@4 D E F@2 D
  G H I J K L M K N Q R S T
>`.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,e5] ~ [c5,e5] ~@3 [c5,e5] ~ [c5,e5]@4 d5@2 [g4,c5]@3 ~@3, ~@16 bb4 ~@7", H: "[c5,f5]@12 [d5,g5]@11 ~",
  I: "[c5,f5]@23 ~", J: "~@6 [bb4,d5,f5] ~ [bb4,d5,f5] ~ [bb4,d5]@2 [bb4,d5,f5]@3 ~ [d5,f5] ~@7, ~@10 f5 ~@5 bb4@2 ~@6",
  K: "~@6 [d5,f5] ~ [b4,d5,f5] ~ [b4,d5,f5]@2 [b4,d5,f5]@3 ~ [b4,d5,f5]@2 ~@6, ~@3 b4 ~@8", // Dm Bdim
  L: "~@6 [a4,c5,f5] ~ [a4,c5,f5] ~ [c5,f5] ~ [a4,c5,f5]@4 [a4,c5,f5]@2 ~@6, ~@5 a4 ~@6", // F F5 F
  M: "~@6 [a4,d5,gb5] ~ [a4,d5,gb5] ~ [d5,gb5] ~ [a4,d5,gb5]@4 [a4,d5,gb5]@2 ~@6, ~@5 a4 ~@6", // D
  N: "~@6 [bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5] ~ [bb4,c5,e5]@3 ~ [bb4,c5,e5]@2 ~@6", // C7
  O: "[a4,c5,f5]@11 ~ [bb4,d5,g5]@10 ~@2", P: "[a4,c5,f5] ~@11", Q: "[f4,a4,c5,f5]@5 ~ [a4,c5,f5]@5 ~, ~@3 f4@2 ~",
  R: "[g4,bb4,d5,g5]@10 ~@2 [g4,bb4,g5]@9 ~@3, ~@12 d5@7 ~@5", S: "[f4,a4,c5,f5]@11 ~", T: "[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