Strudelify

Mr. Lonely

Bobby Vinton

KeyA minorTempo56 bpm
0:00/0:00
// Mr. Lonely — Bobby Vinton
// 56 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 37 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(56/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 A B C D A B C D E F G H I J K L M N O P Q N R P S T U V S W X Y ~>".pickRestart({
  A: "e2@6 b2@5 ~", B: "g#2@22 ~@2 d#2@19 ~@5", C: "a2@11 ~ e2@12", D: "b2@24 b1@9 ~@3 b1@4 c#2@4 d#2@4",
  E: "e2@12 b2@11 ~", F: "e2@22 ~@2 e2@23 ~", G: "a2@23 ~ e2@24", H: "a2@24 b2@23 ~", I: "e2@19 ~@5 b2@20 ~@4",
  J: "g#2@19 ~@5 d#2@20 ~@4", K: "a2@22 ~@2 b2@23 ~", L: "e2@22 ~@2 c2@11 ~ c2@3 ~ d2@4 e2@4", M: "f2@6 c2@5 ~",
  N: "a2@11 ~ e2@10 ~@2", O: "a#2@11 ~ f2@11 ~", P: "c3@10 ~@2 c2@5 ~ c2@2 d2@2 e2@2", Q: "f2@11 ~ c2@10 ~@2",
  R: "a#2@23 ~ f2@23 ~", S: "f2@23 ~ c2@22 ~@2", T: "f2@11 ~ f2@11 ~", U: "a#2@23 ~ f2@22 ~@2", V: "a#2@23 ~ c3@23 ~",
  W: "a2@23 ~ e2@20 ~@4", X: "a#2@21 ~@3 c3@20 ~@4", Y: "f2 ~",
})).s("gm_acoustic_bass").gain(0.29).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C D A B C D A B C D E F G H E B I J K L M N K L M N O P Q R O L S@2 T
>`.pickRestart({
  A: "[g#3,b3,e4]@2 ~@2 [g#3,b3,e4]@2 ~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3", // E
  B: "[g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~@3", // G#m
  C: "[e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3 [e3,a3,c#4] ~@3", // A
  D: "[f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~@3", // B
  E: "[g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3", // E
  F: "[g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3 [g#3,c4,e4] ~@3", // G#aug
  G: "[a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3", // A
  H: "[a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3", // Am B7
  I: "[a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3 [a3,b3,d#4] ~@3", // A B7
  J: "[g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g3,a#3,e4] ~@3 [g3,a#3,e4] ~@3 [g3,a#3,e4] ~@3 [g3,a#3,e4] ~@3 [g3,a#3,e4] ~@3 [g3,a#3,e4] ~@3", // E Edim
  K: "[a3,c4,f4]@2 ~@2 [a3,c4,f4]@2 ~@2 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3", // F
  L: "[a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3 [a3,c4,e4] ~@3", // Am
  M: "[f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3 [f3,a#3,d4] ~@3", // A#
  N: "[g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] ~@3", // C
  O: "[a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 [a3,c4,f4] ~@3", // F
  P: "[a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3 [a3,c#4,f4] ~@3", // Aaug
  Q: "[a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3", // A#
  R: "[a#3,c#4,f4] ~@3 [a#3,c#4,f4] ~@3 [a#3,c#4,f4] ~@3 [a#3,c#4,f4] ~@3 [a#3,c#4,f4] ~@3 [a#3,c#4,f4] ~@3 [a#3,c4,e4] ~@3 [a#3,c4,e4] ~@3 [a#3,c4,e4] ~@3 [a#3,c4,e4] ~@3 [a#3,c4,e4] ~@3 [a#3,c4,e4] ~@3", // A#m C7
  S: "[[a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@3 [a#3,d4,f4] ~@4 e4@15 ~@8 f4@21 ~@3 f4@20 ~@4, ~@23 g3@17 ~@7 [a3,c4]@22 ~ a3@22 ~@4, ~@24 c4@17 ~@30 c4@22 ~@3]/2", // A# Am
  T: "~ f4@20 ~@3, a3@11 ~, ~ c4@43 ~@4",
})).s("gm_acoustic_guitar_steel").gain(0.07).pan(0.2)

// other · harmonica
const harmonica = note("<~@4 A B C D E@2 F G H I J K@2 L M N O P Q R S T U V W@2 X Y@3 Z AA@2>".pickRestart({
  A: "e4@12 ~ b4@19 ~@4 g#4@4 a4@4 ~@2 b4 ~", B: "d#4@12 ~ b4@19 ~@4 g#4@4 a4@4 b4@4",
  C: "c#4@12 a4@18 ~@6 a4@4 b4@3 c#5@4 ~", D: "b4@24 a5@11 ~ g#5@4 f#5@4 e5@4",
  E: "[g#4@7 ~ b4@25 ~@4 b4@5 b4@4 g#4@4 d#4@9 ~ b4@18 ~@6 b4@4 b4@4 ~ g#4@3]/2",
  F: "~ c#4@11 a4@17 ~@2 a4@5 a4@4 b4@4 c#5@4", G: "b4@19 ~ b4@4 a5@12 g#5@4 b5@4 g#5@4",
  H: "f#5@8 ~ e5@21 ~ e5@4 ~ e5@4 f#5@3 g#5@4 ~", I: "f#5@8 e5@21 ~@3 e5@4 d#5@7 c#5@4 d#5",
  J: "e5@6 ~ f#5 e5 f#5 e5 f#5", K: "[~ c5@19 b4@12 ~@4 b4@5 b4@5 g#4@5 e4@9 b4@15 ~@4 b4@5 b4@3 b4@4 ~ g#4@4]/2",
  L: "d#4@5 b4@11 ~@2 g#4@2 a4@2 b4@2", M: "c#5 a4 f#4 d#4", N: "~ e4@25 ~@22", O: "f4@2 c5@6 ~ c5!2 a4",
  P: "~ e4@7 c5@24 ~@4 c5@4 c5@4 a4@4", Q: "d4@12 a#4@23 ~ a#4@4 c5@4 d5@4", R: "c5@19 c5@4 a#5@12 ~ a5@4 g5@3 f5@5",
  S: "a4@7 c5@22 ~@7 c5@7 ~ a4@4", T: "e4@8 c5@23 ~@5 c5@4 c5@3 a4@4 ~", U: "d4@12 a#4@15 ~@5 a#4@3 a#4@4 ~ c5@4 d5@4",
  V: "c5@24 a#5@12 a5@4 ~ c6@4 a5@3", W: "[~ g5@8 f5@20 ~@2 f5@4 ~ f5@4 g5@4 a5@3 g5@9 f5@20 ~@3 f5@5 e5@7 d5@5]/2",
  X: "f5@24 ~@3 g5@4 f5@4 g5@4 ~ f5@4 g5@4",
  Y: "[~ c#5@20 c5@11 ~@5 c5@4 ~ c5@5 a4@5 f4@9 c5@20 ~@4 c5@4 c5@5 a4@4 e4@10 c5@21 ~@3 a4@4 ~ a#4@3 c5@4, ~@37 b4 ~@106]/3",
  Z: "d5@12 a#4@12 e5@13 c5@11", AA: "[~ f5@75 ~@20]/2",
})).s("gm_harmonica").gain(0.48)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  A B C D A B C D E B C D A F C G A H I J K L M N K L M N K O M P K L Q R S
>`.pickRestart({
  A: "~@13 e4@34 ~, ~@11 [e2,b2]@36 ~, ~@12 g#3@35 ~", B: "~@13 d#4@34 ~, ~@11 [g#2,d#3]@36 ~, ~@12 b3@35 ~",
  C: "~@13 c#4@34 ~, ~@11 [a2,e3]@36 ~, ~@12 a3@35 ~", D: "~@13 d#4@34 ~, ~@11 [b2,f#3]@36 ~, ~@12 a3@35 ~",
  E: "~@13 e4@33 ~@2, ~@11 [e2,b2]@36 ~, ~@12 g#3@35 ~", F: "~@13 e4@34 ~, ~@11 [e2,c3]@36 ~, ~@12 g#3@35 ~",
  G: "~@13 e4@10 ~@2 d#4@22 ~, ~@6 [a2,e3,c4]@5 ~ [b2,f#3,a3]@11 ~", // Am B7
  H: "~@13 d#4@33 ~@2, ~@11 [g#2,d#3]@36 ~, ~@12 b3@35 ~", // G#5
  I: "~@13 e4@10 ~@2 d#4@22 ~, ~@6 [a2,e3,c#4]@5 ~ [b2,f#3,a3]@11 ~", // A B7
  J: "~@13 e4@11 ~ [a#3,e4]@22 ~, ~@12 [e2,b2,g#3]@11 ~ [c3,g3]@22 ~@2", // A#dim E C5
  K: "~@13 f4@34 ~, ~@11 [f2,c3]@36 ~, ~@12 a3@35 ~", L: "~@13 e4@34 ~, ~@11 [a2,e3]@36 ~, ~@12 c4@35 ~",
  M: "~@13 d4@34 ~, ~@11 [a#2,f3]@36 ~, ~@12 a#3@35 ~", N: "~@13 e4@34 ~, ~@11 [c3,g3]@36 ~, ~@12 a#3@35 ~",
  O: "~@13 f4@34 ~, ~@11 [f2,c#3]@36 ~, ~@12 a3@35 ~", // C#
  P: "~@13 f4@10 ~@2 e4@22 ~, ~@6 [a#2,f3,c#4]@5 ~ [c3,g3,a#3]@11 ~", // A#m C7
  Q: "~@13 d4@10 ~@3 e4@20 ~@2, ~@10 a#2@13 c3@22 ~@3, ~@11 [f3,a#3]@11 ~@2 g3@22 ~@2, ~@25 a#3@21 ~@2", // A#5
  R: "~@7 f4@12 ~@5, ~@10 f2@27 ~@11, ~@11 c3@26 ~@11, ~@12 [a3,c4]@25 ~@11", // Am
  S: "~@5 f4@36 ~@7, f2@11 ~, ~ c3@42 ~@5, ~@3 [a3,c4]@41 ~@4", // Am
})).s("gm_acoustic_guitar_nylon").gain(0.12).pan(0.8)

// other · french horn · "FR.HORN"
const french_horn = note("<A B C D ~@12 A E ~@14 F G ~ H@2>".pickRestart({
  A: "~@12 b3@9 ~@2 b3@2 e4@23", B: "~@12 b3@8 ~@2 b3@2 ~ d#4@23", C: "~@12 a3@8 ~@2 a3@2 c#4@23 ~",
  D: "~@12 b3@9 ~@2 b3@3 f#4@22", E: "~@12 b3@9 ~ b3@2 ~ d#4@23", F: "~@12 c4@9 ~@2 c4@2 f4@23",
  G: "~@12 c4@8 ~@2 c4@2 ~ e4@23", H: "[~@12 c4@9 ~ c4@2 f4@11 ~@2 c4@8 ~@2 f4@2 ~ a4@34 ~@12]/2",
})).s("gm_french_horn").gain(0.57).pan(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<A@5 ~@3 B C D E F G H I J@3 K L M N O P Q R S T U V W X Y Z AA@2>".pickRestart({
  A: "[~ e7@192 ~@47]/5", B: "~@2 e5 b5@2 g#5 e5@6", C: "~@8 d#5@4 b5@7 g#5@5 d#5@23 ~",
  D: "~@7 c#5@5 a5@8 e5@4 c#5@24", E: "~@8 d#5@4 b5@8 g#5@4 a5@23 ~",
  F: "~@7 e5@4 ~ b5@6 g#5@2 ~ b4@2 e5@24 ~, ~@10 e5 ~@13", G: "~@7 e5@4 ~ c6@6 g#5@2 ~ c5@2 e5@25, ~@10 e5 ~@13",
  H: "~@7 e5@4 ~ c#6@6 g#5@2 e5@2 c#5@2 e5@24", I: "~@12 f#5@7 e5@4 ~ d#5@24",
  J: "[e5@48 d#5@47 ~ [a4,e5]@23 ~ [f#4,b4]@22 ~@2, [b4,g#5]@95 c#5@24 d#5@24 ~]/3", // A5 B5 E
  K: "~@7 e5@4 ~ b5@6 a5@2 g#5@2 e5@2 e5@7 f5@4 ~@2 a5@2 ~ a#5@2 c6@2 d6@2 e6@2, ~@18 g5 ~@5",
  L: "f6@18 c6@2 a5@2 ~ c5@24 ~, ~@11 f5 ~@12", M: "~@12 e6@6 c6@2 a5@2 e5@2 c5@23 ~", N: "~@6 d6@3 a#5 f5 d5 a#4@12",
  O: "~@12 c6@6 a#5@2 g5@2 e5@2 c5@4 d5@4 a#4@4 c5@2 a#4@2 c5@3 ~@5", P: "~@8 f5@4 c6@7 a5@4 ~ f5@24",
  Q: "~@7 e5@4 ~ c6@7 a5@4 ~ e5@24", R: "~@8 d5@4 a#5@8 f5@4 d5@23 ~", S: "~@8 e5@4 c6@8 a#5@2 a5@2 a#5@23 ~",
  T: "~@7 f5@4 ~ c6@7 a5@2 f5 c5@2 f5@24", U: "~@8 f5@4 c#6@6 a5@2 f5@2 c#5 ~ f5@24",
  V: "~@4 f5@2 d6@3 a#5 f5 d5 f5@12", W: "~@3 g5@2 f5 e5@6", X: "[c5,f5,a5]", Y: "[a4,c5,e5]",
  Z: "[f5,a#5,d6] [e5,g5,c6]", AA: "[[f5,a5,c6]@83 ~@13]/2",
})).s("gm_string_ensemble_1").gain(0.34).pan(0.2)

// drums · snare
const snare = s("sd").struct("<A@7 B A@3 B A@7 B A@7 B A@3 B A@2 ~@2 C>".pickRestart({
  A: "x!3 ~ x!5 ~ x!2", B: "x!3 ~ x!5 ~@3", C: "~@33 x!3 ~@12",
})).gain(0.15).pan(0.8)

// drums · clap
const clap = s("cp").struct("<[~ x ~ x]!19 [~@3 x ~@5 x!3] [~ x ~ x]!7 [~@3 x ~@5 x!3] [~ x ~ x]!6 ~@3>")
  .gain(0.19).pan(0.8)

stack(bass, acoustic_guitar_steel, harmonica, acoustic_guitar_nylon, french_horn, string_ensemble_1, snare, clap)

More by Bobby Vinton