Strudelify

Well... All Right

Buddy Holly

KeyF♯ majorTempo123 bpm
0:00/0:00
// Well... All Right — Holly Buddy
// 123 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 69 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.

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C D E@2 F@2 G@2 H@2 I J K L M N O P Q R S T U V W X Y Z F@2 G@2 H@2 I J K L M N O P Q R S T U V W X Y J K L M N O
  P Q R S T U V W X AA
>`.pickRestart({
  A: "~@5 c#3 e3 [f#3,b3]", B: "~@4 [a#3,c#4,f#4]@3 ~@5 [g#3,b3,e4]@3 b3, f#2@8 e3@7 ~",
  C: "~@4 [f#3,a#3,c#4,f#4]@4 f#2 ~ c#3@2 d#3@2 c#3@2, f#2 ~", D: "~@4 [a#3,c#4,f#4]@3 ~@5 [g#3,c#4,f4]@4, f#2 c#3",
  E: "[~@6 a#3@2 ~@2 [f#3,a#3] ~@3 [g#3,b3,e4]@2, f#2@8 f#2@8 f#2@9 ~@7, ~ f#3@3 ~@2 e3@2, ~ [a#3,c#4,f#4]@2 [c#4,f#4]@2 c#4 ~@2]/2", // F# E F# F#5
  F: "[~ a#3 ~@3 [a#3,c#4] ~ [g#3,c#4,f4], f#2@16 f#2@9 ~@7, ~ [c#4,f#4]@2 [a#3,c#4,f#4]@2 ~@3, ~ c#3 ~ c#3]/2", // A#m C# F#5 F#
  G: "[~ a#3 ~ [f#3,a#3] ~ c#4 ~ [g#3,b3,e4], f#2@4 f#2@4 f#2@4 ~@2 g#4 ~, ~@4 [c#4,f#4]@8 c#4@8 a#3@2 ~@2 e3@7 ~]/2", // F# E F#5
  H: "[~@4 a#3@4 ~@4 a#3@4 ~@4 [c#4,f#4]@4 ~@4 [g#3,c#4,f4]@3 ~, f#2@16 f#2@9 ~@7, ~@2 [c#4,f#4]@4 [c#4,f#4]@4 a#3 ~@5, ~@8 c#3@7 ~@9 c#3@7 ~]/2", // F#5 C# F#5
  I: "~@3 [a#3,c#4], f#2!2, ~@4 f#3@11 ~, ~ [a#3,c#4,f#4]@2 ~", // A#m F#
  J: "~ [f#3,b3] f#3!2 [f#3,b3]@2 [f#3,b3,d#4] ~, b2@4 [b2,b3]@4 b2@7 ~", // B5 B
  K: "~@2 [g#3,c#4]@2 [g#3,c#4]@2 [g#3,c#4]@2 g#3@4 [g#3,c#4,f4]@3 ~, c#3@8 c#3@7 ~, ~ f4 ~@2", // C#5 C#
  L: "~@4 [c#3,f#3,a#3,f#4]@3 ~@5 [g#3,b3,e4]@4, f#2@3 ~@5, ~@4 c#4@4 e3@7 ~", // F# E
  M: "~ f#3 ~ [a#3,c#4], f#2!2, ~ [a#3,c#4,f#4]@2 ~", N: "~ f#3!3 [f#3,b3,d#4]@2 [f#3,b3,d#4] ~, b2 [b2,b3] b2@2",
  O: "c#3@2 [c#3,g#3]@2 [g#3,c#4]@2 [g#3,c#4]@2 [g#3,c#4,f4]@4 [g#3,c#4,f4]@3 ~, ~@4 [c#3,f4]@4 c#3@7 ~", // C#5 C#
  P: "~@4 [f#3,a#3,c#4,f#4]@2 ~@2 e3@4 [g#3,b3,e4]@3 ~, f#2 ~", // F# E
  Q: "~@4 [f#3,a#3,f#4]@4 f#2@2 c#3 ~ d#3 ~ [f#3,b3]@2, f#2 ~, ~@4 c#4@7 ~@5", // F# B5
  R: "~@4 c#4@4 ~@4 [g#3,b3,e4]@3 ~, f#2 ~, ~@4 a#3@2 ~@2 e3@7 ~", // E
  S: "~@4 [f#3,a#3,c#4,f#4]@4 f#2 ~ c#3@2 d#3@2 f#3@2, f#2@7 ~@9", // F#
  T: "~@4 [f#3,a#3,f#4]@3 ~@5 [g#3,c#4,f4]@3 ~, f#2@8 c#3@7 ~, ~@2 c#4@3 ~@3", // F# C#
  U: "~@2 [f#3,a#3,f#4]@2 f#2 c#3 e3 [f#3,b3], f#2 ~, ~@4 c#4@7 ~@5", // F# B5
  V: "~ [a#3,c#4,f#4] ~ [g#3,b3], f#2@4 ~@2 e4 ~, ~@2 f#3 ~ e3@3 ~", // F# G#m
  W: "~@4 [f#3,a#3]@4 f#2 ~ c#3@2 d#3@2 f#3@2, f#2 ~, ~@2 c#4@3 ~@3", // F#
  X: "~ [f#3,c#4] ~ [g#3,c#4,f4], f#2@8 c#3@7 ~, ~@2 a#3 ~@5", // F#5 C#
  Y: "~ f#3 ~ [f#3,a#3,c#4,f#4], f#2!2, ~ [a#3,c#4,f#4]@2 ~", // F#
  Z: "~@2 [f#3,a#3] ~@3 [g#3,b3,e4]@2, f#2@9 ~@7, ~ c#4 e3@2", // F# E
  AA: "[c#3,a#3]@2 [c#3,f#3,a#3]@2 [f#2,f#3]@2 [f#3,c#4,f#4]@3 ~@7, [c#4,f#4]@6 f#2 ~@9, f#2@4 [c#3,a#3]@5 ~@7", // F# F#5 F#
})).s("gm_acoustic_guitar_steel").gain(0.36).pan(0.7)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@3 A ~ B ~ C D@2 E A F G H ~ I J ~ K ~ L ~ M ~@3 N ~ B ~ C D@2 E A F G H ~ I J ~ K ~ L ~ M ~@3 N ~ G H ~ I J ~ K ~ L
  ~ M ~@3 N O
>`.pickRestart({
  A: "~@4 f#3@3 ~@9", B: "~@4 f#4@3 ~@6 g#4 ~@2", C: "~ [f#3,f#4] ~@2", D: "[~@12 f#4@7 ~ f#4@3 ~@9]/2",
  E: "~ f#3 ~ f#3", F: "~@3 f#4", G: "~@5 d#4@3 d#4@4 ~@4", H: "~@2 c#4 ~", I: "~@3 [f#3,f#4]", J: "~@5 d#4 ~@10",
  K: "~@4 c#3@2 ~@9 f#2", L: "~@5 f#4@3 c#4 ~@7, ~@2 f#3 ~@5", M: "~@4 a3 ~@3", N: "~@4 f#4@3 ~@9", O: "f#3 ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.16).pan(0.7)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A B C D E F B G A B C D H I A B H I A B A D C B E J B K E F B G A B C D H I A B H I A B A D C B E J B K H I A B H I
  A B A D C B E J B L
>`.pickRestart({
  A: "f#2@6 ~@2 e2@7 ~", B: "f#2@7 ~ c#2@7 ~", C: "f#2 c#2", D: "f#2@7 ~ f#2@7 ~", E: "f#2@7 ~ e2@7 ~",
  F: "f#2@8 c#2@7 ~", G: "f#2@4 f#2@3 ~", H: "b1@5 ~@3 b1@5 ~@3", I: "c#2@5 ~@3 c#2@5 ~@3", J: "f#2@8 f#2@7 ~",
  K: "f#2@4 c#2@3 ~", L: "f#2@2 ~@2 f#1@2 f#2 ~@9",
})).s("gm_acoustic_bass").gain(0.38)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_3 = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F@2 G H I@2 J K L@2 M@2 N@2 O@4 C@2 D@2 E@2 F@2 G H I@2 J P L@2 M@2 N@2 O@4 G H I@2 J K L@2 M@2
  N@2 Q@3 R
>`.pickRestart({
  A: "[~@2 [c#4,f#4,a#4]@2 [a#3,c#4,f#4,a#4]@2 e4@2 [e4,g#4]@2 [e4,g#4]@2 [g#3,e4,g#4] ~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 f#4 ~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2, ~@4 [g#3,b3]@2 ~ a#3@3 ~@6]/2", // F# E C#m F# G#m
  B: "[[c#4,f#4,a#4]@2 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~ [f4,g#4]@2 [f4,g#4]@2 [f4,g#4]@2 [c#4,f4] ~ f#4@4 [f#4,a#4]@2 f#4 ~ [f#4,a#4]@4 [f#4,a#4]@2 [a#3,c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2, a#3@5 ~ c#4@5 ~@3 [a#3,c#4]@6 ~@2 c#4@6 ~@4, ~@7 a#4 ~@8]/2", // F# Fm C# F# A#m
  C: "[[f#4,a#4]@2 [f#4,a#4]@2 [c#4,f#4,a#4] ~ [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2 [b3,e4,g#4] ~ [f#4,a#4]@4 [f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [a#3,c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2, c#4@2 ~@5 c#4@3 ~@6]/2", // F# E F#
  D: "[[a#3,c#4,f#4,a#4]@2 [c#4,f#4,a#4]@2 ~@2 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 g#4 ~ [c#4,f#4,a#4]@4 [f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2]/2", // F# C# F#
  E: "[[c#4,f#4,a#4]@2 [c#4,f#4,a#4]@2 [f#4,a#4] ~ [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2 [e4,g#4] ~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [a#3,f#4,a#4] ~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2, ~@3 b3@3 ~@10]/2", // F# E F# D#m F#
  F: "[f#4@2 [f#4,a#4]@2 [f#4,a#4] ~ [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 ~@2 [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [a#3,c#4,f#4,a#4] ~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [a#3,f#4,a#4] ~@3, [a#3,c#4]@2 ~@9 a#3@3 ~@2]/2", // F# C# F# D#m A#m
  G: "[f#4,b4]@2 [f#4,b4]@2 [b3,d#4,f#4,b4] ~ [f#4,b4]@2 [f#4,b4]@2 [f#4,b4]@2 [b3,d#4,f#4,b4] ~ [f4,g#4,c#5]@2, d#4@2 ~ d#4@3 ~@2", // B5 B B5 B C#
  H: "c#5@2 c#5@2 [f4,g#4] ~ [g#4,c#5]@4 [g#4,c#5]@2 [c#4,f4,g#4,c#5] ~ [c#4,f#4,a#4]@2, [c#4,f4,g#4]@2 ~ f4@3 ~@2", // Fm C#5 C# F# C#
  I: "[[f#4,a#4]@2 [f#4,a#4]@2 ~@2 [b3,e4,g#4]@2 g#4@2 g#4@2 [g#3,e4,g#4] ~ [f#4,a#4]@4 [f#4,a#4]@2 f#4 ~ [c#4,f#4,a#4]@4 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~@3, c#4@2 ~@2 [g#3,b3,e4]@2 ~ c#4@3 ~@6]/2", // F# E C#m F# E
  J: "[f#4,b4]@2 [f#4,b4]@2 [b3,d#4,f#4,b4] ~ [d#4,f#4,b4]@2 [f#4,b4]@4 [f#4,b4] ~@3, d#4@2 ~@2 [b3,d#4]@3 ~", // B5 B B5 B
  K: "[g#4,c#5]@2 [g#4,c#5]@2 [f4,g#4,c#5] ~ [f4,g#4,c#5]@2 [g#4,c#5]@4 [f4,g#4,c#5]@2 ~@2, [c#4,f4]@2 ~@2 c#4@3 ~, ~@8 f4 ~@7", // C#5 C# C#5 C#
  L: "[[c#4,f#4,a#4]@2 [c#4,f#4,a#4]@2 [a#3,c#4,f#4,a#4] ~ [e4,g#4]@2 g#4@2 g#4@2 [e4,g#4] ~ a#4@4 a#4@2 [a#3,f#4,a4] ~ f#4@4 [f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2, ~@4 [b3,e4]@2 ~ [c#4,f#4]@3 ~ c#4@3 ~@2, ~@11 a#4 ~@4]/2", // F# E D F# E5 F#5
  M: "[[c#4,f#4,a#4]@2 [a#3,c#4,f#4,a#4]@2 [a#3,c#4,f#4,a#4] ~ [e4,g#4]@2 [e4,g#4]@2 [e4,g#4]@2 [e4,g#4] ~ [f#4,a#4]@4 [f#4,a#4]@2 [f#4,a#4] ~ a#4@4 a#4@2 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2, ~@4 [g#3,b3]@2 ~ c#4@3 ~ [c#4,f#4]@3 ~@2]/2", // F# E F# G#m F#5
  N: "[[f#4,a#4]@2 [f#4,a#4]@2 [c#4,f#4,a#4] ~ f4@2 g#4@2 g#4@2 [f4,g#4] ~ [f#4,a#4]@4 [f#4,a#4]@2 [a#3,c#4,f#4,a#4] ~ [f#4,a#4]@4 [f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4,a#4]@2, c#4@2 ~@2 [c#4,f4]@2 ~ c#4@3 ~ c#4@3 ~@2]/2", // F# Fm F# C#
  O: "[[c#4,f#4,a#4]@2 [c#4,f#4,a#4]@2 f#4 ~ [b3,e4,g#4]@2 g#4@2 g#4@2 [b3,e4,g#4] ~ [c#4,a#4]@4 [f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4]@4 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~ [f#4,a#4]@2 f#4@2 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~ f4@2 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 [c#4,f4,g#4] ~ f#4@4 [f#4,a#4]@2 [f#4,a#4] ~ [c#4,f#4,a#4]@4 [f#4,a#4]@2 [f#4,a#4]@2 [f#4,a#4]@2, ~@4 [b3,e4]@2 ~ f#4 ~@3 a#4 ~@3 c#4@2 ~@6 c#4@3 ~@3 c#4@3, ~@23 a#4 ~@8]/4", // F# E F# F#5 F# C# F# E5
  P: "[g#4,c#5]@2 [g#4,c#5]@2 [f4,g#4,c#5] ~ [f4,g#4,c#5]@2 [f4,g#4,c#5]@4 [f4,g#4,c#5]@2 ~@2, [c#4,f4]@2 ~@2 c#4@3 ~", // C#5 C#
  Q: "[[c#4,f#4,a#4]@2 [c#4,f#4,a#4]@2 f#4 ~ [b3,e4,g#4]@2 g#4@2 g#4@2 [b3,e4,g#4] ~ [c#4,a#4]@4 [f#4,a#4]@2 [c#4,f#4,a#4] ~ [c#4,f#4]@4 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~ [f#4,a#4]@2 f#4@2 [c#4,f#4,a#4]@2 [c#4,f#4,a#4] ~ f4@2 [c#4,f4,g#4]@2 [c#4,f4,g#4]@2 [c#4,f4,g#4] ~ [c#4,f#4,a#4]@2, ~@4 [b3,e4]@2 ~ f#4 ~@3 a#4 ~@3 c#4@2 ~@7]/3", // F# E F# F#5 F# C# F# E5
  R: "[f#4,a#4]@2 [f#4,a#4]@2 [f#4,a#4]@2 ~ a#4@2 ~@7, [a#3,c#4]@4 [a#3,c#4]@5 ~@7, ~@3 f#4 ~@4", // F# A#m
})).s("gm_acoustic_guitar_steel").gain(0.29)

// chords · acoustic guitar steel · "STEEL GTR" · soft notes
const acoustic_guitar_steel_4 = note(`<
  ~ A B ~ C@3 D@4 E@2 F G@3 H ~ I@2 J@2 K@2 L M N@2 O@2 D@4 E@2 F G@3 H ~ I@2 J@2 K@2 L M N@2 F G@3 H ~ I@2 J@2 K@2 L M
  P ~
>`.pickRestart({
  A: "~@2 a#3@2 ~@3 g#4 ~@8", B: "~@3 a#3@3 ~@2", C: "[~@7 a#3@3 ~ g#3@3 ~ a#3@3 ~ a#3@3 ~ a#3]/3",
  D: "[~ a#3@3 ~@14 c#4@2 ~@2 a#3@6 ~@2 a#3@6 ~@4 g#3@5 ~ a#3@6 ~@10 a#3@2, ~@7 a#3@3 ~@22]/4",
  E: "[a#4 ~@6 a#3@3 ~@6]/2", F: "b3@4 ~@2 e6 ~ b3@4 ~@2 c#4@2",
  G: "[~@6 c#4@6 ~@2 a#3@6 ~@2 g#3@2 ~@6 a#3@6 ~@2 a#3@7 ~@3]/3", H: "~ b3 ~ b3 ~@4",
  I: "[a#3@2 ~ b3 ~@3 a#3@3 ~@2 a#4 ~@3, ~@11 a#3@3 ~@2]/2", J: "[a#3 ~@2 b3 ~@3 a#3@3 ~@6]/2",
  K: "[a#3@5 ~ c#4@2 ~@6 a#3@6 ~@12]/2", L: "a#3@2 ~ g#3@3 ~@2", M: "f#4 ~@3 a#4 ~@2 a#3, ~@3 a#3@3 ~@2",
  N: "[a#3@5 ~ c#4@2 ~@8 a#4@2 ~@4 a#3@10, a#4 ~@6 a#3@3 ~@6]/2", O: "[~@3 g#3@3 ~ a#3@3 ~ a#3@3 ~ a#3]/2",
  P: "a#3@5 ~ c#4@2 ~@6 a#3@2, a#4 ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.11)

// drums · ride
const ride = s("rd").struct("<~ [x ~ x!3 ~ x!3 ~ x!3 ~ x!2]!67 [x ~ x!2 ~@4]>").gain(0.28)

stack(acoustic_guitar_steel, acoustic_guitar_steel_2, bass, acoustic_guitar_steel_3, acoustic_guitar_steel_4, ride)

More by Buddy Holly