Strudelify

Lady Willpower

Gary Puckett

KeyD majorTempo123 bpm
0:00/0:00
// Lady Willpower — Gary Puckett
// 123 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(123/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 · electric bass pick
const bass = note(`<
  A@2 B C D E D F G H I J K L M D N O M D P Q R S T U V W X Y D E D F G H I J K L M D N O Z AA AB AC Z AA AB AC Z AA AD
  AE AF AG AH AI AJ X G AK AA AL AA AM H AN AO AP AQ AR AA AL AA AM AS ~@6
>`.pickRestart({
  A: "a1@2 ~ d2 ~ c#2 ~ b1", B: "a1!8", C: "a1!4 g1 ~ a1 ~", D: "d2@3 d2 a1 b1 d2 b1", E: "e2@3 e2 b1!2 e2 b1",
  F: "a1@3 e2 a2 e2 a#1!2", G: "b1@3 b1!2 b1@2 b1", H: "c2@3 c2!2 c2@2 c2", I: "b1@3 b1!2 d2 f#2 b2",
  J: "a2@3 a2!2 e2 a2 e2", K: "g2@2 g2!2 g2@2 g2!2", L: "g2!5 ~ a2 ~", M: "d2@3 d2 a1 a1@2 a1", N: "e2@3 e2 b1 b1@2 b1",
  O: "e2@3 e2@2 b1 d2 b1", P: "e2@3 e2 b1@3 e2", Q: "f#2@3 f#2 c#2@3 f#2", R: "g2@3 g2 d2 d2@2 d2",
  S: "g2@3 g2@2 d2 g2 d2", T: "g1@3 g1!2 g1@2 g1", U: "g1@3 g1@2 g1!3", V: "d2@3 d2!2 d2@2 d2", W: "a1@3 a1!2 a1@2 a1",
  X: "a#1@3 a#1!2 a#1@2 a#1", Y: "g1!4 g1@2 a1@2", Z: "d#2@3 d#2 a#1 a#1@2 a#1", AA: "d#2@3 d#2 a#1 c2 d#2 c2",
  AB: "f2@3 f2 c2 c2@2 c2", AC: "f2@3 f2@2 c2 d#2 c2", AD: "f2@3 f2 c2@3 f2", AE: "g2@3 g2 d2@3 g2",
  AF: "g#2@3 g#2 d#2 d#2@2 d#2", AG: "g#2@3 g#2@2 d#2 g#2 d#2", AH: "g#1@3 g#1!2 g#1@2 g#1", AI: "g#1@3 g#1@2 g#1!3",
  AJ: "d#2@3 d#2!2 d#2@2 d#2", AK: "g#1!4 g#1@2 a#1@2", AL: "f2@3 f2 c2!2 f2 c2", AM: "a#1@3 f2 a#2 f2 b1!2",
  AN: "c#2@3 c#2!2 c#2@2 c#2", AO: "c2@3 c2!2 d#2 g2 c3", AP: "a#2@3 a#2!2 f2 a#2 f2", AQ: "g#2@2 g#2!2 g#2@2 g#2!2",
  AR: "g#2!5 ~ a#2 ~", AS: "c2@3 c2!2 c2@2 ~",
})).s("gm_electric_bass_pick").gain(0.57)

// bass · electric bass pick · soft notes
const bass_soft = note(`<
  ~@78
  [~@7 c2]
  [c#2@3 c#2!2 c#2@2 c#2]
  [c2@3 c2!2 d#2 g2 c3]
  [a#2@3 a#2!2 f2 a#2 f2]
  [g#2@2 g#2!2 g#2@2 g#2!2]
  [g#2!5 ~ a#2 ~]
  ~
>`).s("gm_electric_bass_pick").gain(0.21)

// other · trumpet
const trumpet = note(`<
  A@2 B C D E F G D H I J K L M ~@2 N O ~ P Q R@4 F S T U D E F G D H I J K L V@4 W@4 ~@6 X Y Z@4 AA F AB AC AD AE AA AF
  AD AG AH I AI AJ AD AE AA AF AD ~@6
>`.pickRestart({
  A: "g3", B: "a4@3 a4", C: "a4@4 b4 ~ c#5 ~", D: "d5@4 ~@2 d5 ~", E: "e5@4 ~@2 e5 ~", F: "d5", G: "a4@4 a4 ~ a#4 ~",
  H: "e5@5 ~@3", I: "d5@5 ~@3", J: "c#5@5 ~@3", K: "b4@6 ~ b4", L: "d5 g5@2 b4@2 ~ a4 ~", M: "a4 ~", N: "~@5 f#4 e4 d4",
  O: "a3@3 ~", P: "~@5 b3 e4 g4", Q: "f#4@4 ~ c#4 f#4 a4", R: "g4/2", S: "c#5", T: "d5@3 a4", U: "b4@2 ~@2 d5!2 e5!2",
  V: "[~@6 a4@2 d5@2 e5@3 ~ f#5@4 ~@2 f#5@4 e5@2 d5@4 e5@4 ~@4 b4@2 e5@2 f#5@3 ~ g5@12 ~@6]/4",
  W: "[~@6 a#4@2 d#5@2 f5@3 ~ g5@4 ~@2 g5@4 f5@2 d#5@4 f5@4 ~@4 c5@2 f5@2 g5@3 ~ g#5@12 ~@6]/4", X: "~@5 c4 f4 g#4",
  Y: "g4@4 ~ d4 g4 a#4", Z: "g#4/2", AA: "d#5", AB: "d#5@3 a#4", AC: "c5@2 ~@2 d#5!2 f5!2", AD: "d#5@4 ~@2 d#5 ~",
  AE: "f5@4 ~@2 f5 ~", AF: "a#4@4 a#4 ~ b4 ~", AG: "f5@5 ~@3", AH: "d#5@5 ~@3", AI: "c5@6 ~ c5",
  AJ: "d#5 g#5@2 c5@2 ~ a#4 ~",
})).s("gm_trumpet").gain(0.32).pan(0.1)

// other · trumpet · soft notes
const trumpet_soft = note("<~@79 [f5@5 ~@3] [d#5@5 ~@3] [d5@5 ~@3] [c5@6 ~ c5] [d#5 g#5@2 c5@2 ~ a#4 ~] ~>")
  .s("gm_trumpet").gain(0.04).pan(0.1)

// other · trombone
const trombone = note(`<
  A@2 B@2 C D E F G H I J K L M ~@2 N O ~ P Q R@4 S T U V C D E F G H I J K L W@4 X@4 ~@6 Y Z AA@4 AB S AC AD AE AF AG
  AH AI AJ H AK AL AM AE AF AG AH AI ~@6
>`.pickRestart({
  A: "g3", B: "[a2@12 g2 ~ a2 ~]/2", C: "d3@4 ~@2 d3 ~", D: "e3@4 ~@2 e3 ~", E: "d3", F: "a2@4 a2 ~ a#2 ~",
  G: "b2@4 ~@2 b2 ~", H: "c3@5 ~@3", I: "b2@5 ~@3", J: "a2@5 ~@3", K: "g2@3 ~", L: "d3 g3@2 b2@2 ~ a2 ~", M: "f#4 ~",
  N: "~@5 f#3 e3 d3", O: "a2@3 ~", P: "~@5 b2 e3 g3", Q: "f#3@4 ~ c#3 f#3 a3", R: "g3/2", S: "d4", T: "c#4",
  U: "d4@3 a3", V: "[b3,d4]@3 ~ d4!2 e4!2",
  W: "[~@6 a3@2 d4@2 e4@3 ~ f#4@4 ~@2 f#4@4 e4@2 d4@4 e4@4 ~@4 b3@2 e4@2 f#4@3 ~ g4@12 ~@6]/4",
  X: "[~@6 a#3@2 d#4@2 f4@3 ~ g4@4 ~@2 g4@4 f4@2 d#4@4 f4@4 ~@4 c4@2 f4@2 g4@3 ~ g#4@12 ~@6]/4", Y: "~@5 c3 f3 g#3",
  Z: "g3@4 ~ d3 g3 a#3", AA: "g#3/2", AB: "d#4", AC: "d#4@3 a#3", AD: "[c4,d#4]@2 ~@2 d#4!2 f4!2",
  AE: "d#3@4 ~@2 d#3 ~", AF: "f3@4 ~@2 f3 ~", AG: "d#3", AH: "a#2@4 a#2 ~ b2 ~", AI: "c3@4 ~@2 c3 ~", AJ: "c#3@5 ~@3",
  AK: "a#2@5 ~@3", AL: "g#2@3 ~", AM: "d#3 g#3@2 c3@2 ~ a#2 ~",
})).s("gm_trombone").gain(0.32).pan(0.1)

// other · trombone · soft notes
const trombone_soft = note("<~@79 [c#3@5 ~@3] [c3@5 ~@3] [a#2@5 ~@3] [g#2@3 ~] [d#3 g#3@2 c3@2 ~ a#2 ~] ~>")
  .s("gm_trombone").gain(0.08).pan(0.1)

// other · trombone
const trombone_2 = note("<~@29 A B ~@7 C@2 D@2 E@2 F@2 G@2 ~@15 H I ~@7 J@2 ~@8 J@2 ~>".pickRestart({
  A: "~@2 g2 a2", B: "d2 ~@3", C: "[g3@24 g3@3 ~ a3@3 ~]/2", D: "d3/2", E: "e3/2", F: "d#3/2", G: "f3/2",
  H: "~@2 g#2 a#2", I: "d#2 ~@3", J: "[g#3@24 g#3@3 ~ a#3@3 ~]/2",
})).s("gm_trombone").gain(0.4).pan(0)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A@2 B C D E D F G H G I J K ~@16 D E D F G H G I J K ~@24 L M L N O P O Q R S L M L N T ~@6
>`.pickRestart({
  A: "[g3,b3,d4] [a3,c#4,e4]@2 ~", B: "[g3,b3,d4] [a3,c#4,e4]@2 [g3,b3,d4]", C: "[a3,c#4,e4]@2 [g3,b3,d4] [a3,c#4,e4]",
  D: "[d3,f#3,a3]@3 [d3,f#3,a3]!5", E: "[e3,g3,b3]@3 [e3,g3,b3]!5", F: "[e3,a3,c#4]@3 [e3,a3,c#4]!3 [f3,a#3,c#4]!2",
  G: "[f#3,b3,d4]@3 [f#3,b3,d4]!5", H: "[g3,c4,e4]@3 [g3,c4,e4]!5", I: "[e3,a3,c#4]@3 [e3,a3,c#4]!5",
  J: "[d3,g3,b3]@2 [d3,g3,b3]!2 [d3,g3,b3]@2 [d3,g3,b3]!2", K: "[d3,g3,b3]@2 [d3,g3,b3]!3 ~ [e3,a3,c#4] ~",
  L: "[d#3,g3,a#3]@3 [d#3,g3,a#3]!5", M: "[f3,g#3,c4]@3 [f3,g#3,c4]!5", N: "[f3,a#3,d4]@3 [f3,a#3,d4]!3 [f#3,b3,d4]!2",
  O: "[g3,c4,d#4]@3 [g3,c4,d#4]!5", P: "[g#3,c#4,f4]@3 [g#3,c#4,f4]!5", Q: "[f3,a#3,d4]@3 [f3,a#3,d4]!5",
  R: "[d#3,g#3,c4]@2 [d#3,g#3,c4]!2 [d#3,g#3,c4]@2 [d#3,g#3,c4]!2", S: "[d#3,g#3,c4]@2 [d#3,g#3,c4]!3 ~ [f3,a#3,d4] ~",
  T: "[g3,c4,d#4]@3 [g3,c4,d#4]!4 ~", // Cm
})).s("gm_acoustic_guitar_steel").gain(0.19).pan(0.9)

// chords · acoustic guitar steel · soft notes · Cm C# Cm A# G# A#
const acoustic_guitar_steel_2 = note(`<
  ~@78
  [~@7 [g3,c4,d#4]]
  [[g#3,c#4,f4]@3 [g#3,c#4,f4]!5]
  [[g3,c4,d#4]@3 [g3,c4,d#4]!5]
  [[f3,a#3,d4]@3 [f3,a#3,d4]!5]
  [[d#3,g#3,c4]@2 [d#3,g#3,c4]!2 [d#3,g#3,c4]@2 [d#3,g#3,c4]!2]
  [[d#3,g#3,c4]@2 [d#3,g#3,c4]!3 ~ [f3,a#3,d4] ~]
  ~
>`).s("gm_acoustic_guitar_steel").gain(0.07).pan(0.9)

// other · pizzicato strings
const pizzicato_strings = note("<[a3@2 ~ d4 ~ c#4 ~ b3]!2 ~@83>").s("gm_pizzicato_strings").gain(0.25).pan(0.1)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A B C D E F G H I J K@2 L ~@6 M N@2 O@2 P@2 Q R C D E F G H I J K@2 S@2 T@2 U@2 V@2 W@2 X@2 W@2 Y Z AA@2 AB@2 AC@2
  AD AE AF AG AH AI AJ AK AL AM AN@2 AF AG AH AI AJ ~@6
>`.pickRestart({
  A: "[d4,g4] [c#4,a4] [c#4,a4]@4 [d4,g4] [c#4,a4]", B: "[c#4,a4]@2 [d4,g4] [c#4,a4]", C: "[f#4,a4,d6]",
  D: "[g4,b4,e6]", E: "[f#4,a4,d6]@2 [d4,f#6] [d5,a5]", F: "c#6@2 [e4,a5] [a#4,c#6], [a4,e5]@3 ~", G: "[b4,f#5,b5]",
  H: "[g5,c6]", I: "[f#5,d6]@5 ~@2 d6, b5@3 b5, ~@5 f#5@3", J: "[a5,c#6]", K: "[[g5,b5]@6 [g4,b4] [e4,a4]]/2",
  L: "[f#4,a4]", M: "~ [c#3,c#4] [f#3,f#4] [a3,a4]@2 [f#3,f#4] [a3,a4] [c#4,c#5]", N: "[b4@6 b4 d5, g4]/2",
  O: "[[g4,g5]@5 [a#3,a#4] [d4,d5] [g4,g5]]/2", P: "[f#4 e4, a5]/2", Q: "[f4,a#5]", R: "[g4,b5]@2 [g4,b5] [a4,c#6]",
  S: "[a4,f#5]/2", T: "[~@5 b5 d6 b5, b4, g5@3 ~]/2", U: "[a#5@6 g5 a#5, g4]/2", V: "[[g#4,c6]@7 ~]/2", W: "[g4,a#4]/2",
  X: "[c5@13 g5 f5 d#5, g#4]/2", Y: "[g#4,c5]", Z: "~ [d3,d4] [g3,g4] [a#3,a#4]@2 [g3,g4] [a#3,a#4] [d4,d5]",
  AA: "[c5@6 c5 d#5, g#4]/2", AB: "[[g#4,g#5]@5 [b3,b4] [d#4,d#5] [g#4,g#5]]/2", AC: "[g4 f4, a#5]/2", AD: "[f#4,b5]",
  AE: "[g#4,c6]@2 [g#4,c6] [a#4,d6]", AF: "[g4,a#4,d#6]", AG: "[g#4,c5,f6]", AH: "[g4,a#4,d#6]@2 [d#4,g6] [d#5,a#5]",
  AI: "d6@2 [f4,a#5] [b4,d6], [a#4,f5]@3 ~", AJ: "[c5,g5,c6]", AK: "[g#5,c#6]",
  AL: "[g5,d#6]@5 ~@2 d#6, c6@3 c6, ~@5 g5@3", AM: "[a#5,d6]", AN: "[[g#5,c6]@6 [g#4,c5] [f4,a#4]]/2",
})).s("gm_string_ensemble_1").gain(0.19).pan(0.1)

// chords · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@79 A B C D@2 ~>".pickRestart({
  A: "[g#5,c#6]", B: "[g5,d#6]@5 ~@2 d#6, c6@3 c6, ~@5 g5@3", C: "[a#5,d6]", D: "[[g#5,c6]@6 [g#4,c5] [f4,a#4]]/2",
})).s("gm_string_ensemble_1").gain(0.07).pan(0.1)

// chords · rock organ
const rock_organ = note("<~@40 A@2 B@2 C@2 D@2 E@2 D@2 F@2 G H I@2 J@2 K L M N ~@21>".pickRestart({
  A: "[a4,d5,f#5]/2", B: "[b4,e5,g5]/2", C: "[a#4,d#5,g5]/2", D: "[c5,f5,g#5]/2", E: "[[a#4,d#5,g5]@14 g5 a#5]/2",
  F: "[[a#4,d#5,g5]@7 ~]/2", G: "[c5,f5,g#5]", H: "[d5,g5,a#5]", I: "[c5,d#5,g#5]/2", J: "[b4,d#5,g#5]/2",
  K: "[a#4,d#5,g5]", L: "[a#4,d5,f5]", M: "[b4,d#5,f#5]", N: "[c5,d#5,g#5]@2 [c5,d#5,g#5] [d5,f5,a#5]",
})).s("gm_rock_organ").gain(0.19).pan(0.9)

// other · tubular bells
const tubular_bells = note(`<
  ~@4 A ~ A B C D C B E ~@17 A ~ A B C D C B E ~@25 F ~ F G D H D G I ~ F ~ F G D ~@6
>`.pickRestart({
  A: "d4 ~@3", B: "a4 ~@3", C: "b4 ~@3", D: "c5 ~@3", E: "g4 ~@3", F: "d#4 ~@3", G: "a#4 ~@3", H: "c#5 ~@3",
  I: "g#4 ~@3",
})).s("gm_tubular_bells").gain(0.25).pan(0.9)

// other · tubular bells · soft notes
const tubular_bells_soft = note("<~@79 [c#5 ~@3] [c5 ~@3] [a#4 ~@3] [g#4 ~@3] ~@2>")
  .s("gm_tubular_bells").gain(0.13).pan(0.9)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@14 A@2 B@2 A@2 B C D@2 E@2 A F G ~@11 A@2 B@2 H@2 I@2 H@2 I@2 H@2 I J K@2 L@2 H G M ~@22
>`.pickRestart({
  A: "~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~", B: "~@2 [e4,g4,b4] ~@3 [e4,g4,b4] ~",
  C: "~@2 [f#4,a4,c#5] ~@3 [f#4,a4,c#5] ~", D: "~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~",
  E: "~@2 [d4,g4,a#4] ~@3 [d4,g4,a#4] ~", F: "~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~",
  G: "~@2 [d4,f4,a#4] ~@3 [d4,f4,a#4] ~", H: "~@2 [d#4,g4,a#4] ~@3 [d#4,g4,a#4] ~",
  I: "~@2 [f4,g#4,c5] ~@3 [f4,g#4,c5] ~", J: "~@2 [g4,a#4,d5] ~@3 [g4,a#4,d5] ~",
  K: "~@2 [d#4,g#4,c5] ~@3 [d#4,g#4,c5] ~", L: "~@2 [d#4,g#4,b4] ~@3 [d#4,g#4,b4] ~",
  M: "~@2 [d#4,f#4,b4] ~@3 [d#4,f#4,b4] ~", // B
})).s("gm_electric_guitar_muted").gain(0.17).pan(0.9)

// chords · vibraphone
const vibraphone = note("<~@14 A@2 B@2 C@2 D E F@2 G@2 H I J K ~@55>".pickRestart({
  A: "[[a3,d4,f#4]@14 f#4 a4]/2", B: "[b3,e4,g4]/2", C: "[[a3,d4,f#4]@7 ~]/2", D: "[b3,e4,g4]", E: "[c#4,f#4,a4]",
  F: "[b3,d4,g4]/2", G: "[a#3,d4,g4]/2", H: "[a3,d4,f#4]", I: "[a3,c#4,e4]", J: "[a#3,d4,f4]",
  K: "[b3,d4,g4]@2 [b3,d4,g4] [c#4,e4,a4]", // G A
})).s("gm_vibraphone").gain(0.14).pan(0.9)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@79 [x ~@2 x ~ x ~ x] [~ x ~ x ~ x ~ x]!2 ~@3>").gain(0.31)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B@8 ~ A C@3 D C@3 D C@6 ~ A E F B@2 E F B@2 ~ A B@3 G B@3 H C@3 D C@3 D C@6 ~ A E F B@2 E F B@2 ~ A E F B I ~@7
>`.pickRestart({
  A: "~@8 x!4 ~@4", B: "x!4", C: "~ x ~ x", D: "~@2 x ~@2 x!3", E: "~ x ~@2", F: "~ x!3", G: "~@4 x ~@2 x ~@8",
  H: "x!2 ~@2", I: "x!3 ~",
})).gain(0.78)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@43 A ~@33 B C D E@2 ~ F ~>".pickRestart({
  A: "x ~@2 x ~@12", B: "~@3 x", C: "~ x ~@2", D: "~ x!3", E: "x!4", F: "~@8 x!4 ~@4",
})).gain(0.31)

// drums · low tom
// … 44 more lines

More by Gary Puckett