Strudelify

Blue Bayou

Lynn Anderson

KeyB majorTempo100 bpm
0:00/0:00
// Blue Bayou — Lynn Anderson
// 100 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 finger · "FINGERDBAS"
const bass = note(`<
  A B C D E F@3 C@3 D F@4 C G C D F@4 C G@2 H I J D K C L C D F@4 C G C D F@4 C G C D F@4 C G@2 H I J D K C L C D F@4 C
  G@2 H I J D K C M F@5 C G@2 N@2
>`.pickRestart({
  A: "b1@5 ~ f#2@6 f#1@2 ~@2", B: "b1@5 ~ f#2@5 ~ f#1@2 ~@2", C: "b1@2 ~ f#2@3 f#1 ~", D: "b1@4 ~@2 f#2@6 c#2@3 ~",
  E: "f#1@4 ~@2 c#2@6 f#2@3 ~", F: "f#1@2 ~ c#2@3 f#2 ~", G: "b1@4 ~@2 f#2@6 f#1@3 ~", H: "b1@2 f#2 f2",
  I: "e2@4 ~@2 b1@2 e2@4 g#1@3 ~", J: "g1", K: "f#1@2 ~ c#2@3 f#1 ~", L: "b1", M: "b1@4 ~@2 f#2@6 f#2@3 ~",
  N: "[b1@3 ~]/2",
})).s("gm_electric_bass_finger").gain(0.56)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@10 A@2 B C B C D E A@2 F G F G D E A H I J D K D L M N O C O C P Q M N O C O C P Q M N R S R T M U V W X J N R Y Z M
  N R S R T M U V W X J N R Y M AA R S R T M U AB AC@2
>`.pickRestart({
  A: "[d#4,f#4]@2 [b3,d#4] [b3,d#4,f#4,b4]@2 [b3,d#4]!3, b3@3 ~@9 [f#4,b4]@4", // D#m B B5
  B: "[e4,g#4]@2 [c#4,e4] [c#4,e4,g#4]@2 [c#4,e4]!3, c#4@3 ~@9 [g#4,b4]@4", // E C#m G#m
  C: "c#4@2 c#4 [c#4,e4,g#4]@2 [c#4,e4]!3, [f#4,a#4]@3 ~@3 g#4@2", // C#m F#
  D: "[d#4,f#4]@2 [b3,d#4] [b3,d#4,f#4]@2 [b3,d#4]!3, b3@3 ~@9 f#4@4", // D#m B
  E: "[d#4,f#4,b4]@2 [b3,d#4] [b3,d#4,f#4,b4]@2 [b3,d#4] [b3,d#4,f#4]!2, b3@3 ~@9 b4@4", // B
  F: "[c#4,f#4]@2 [a#3,c#4] [a#3,c#4,f#4]@2 [a#3,c#4]!3, a#3@3 ~@9 [f#4,c#5]@4", // F#5 A#m F# A#m F#5
  G: "a#3@2 a#3 [a#3,c#4,f#4]@2 [a#3,c#4]!3, [c#4,f#4]@3 ~@3 f#4@2", // F# A#m F#5
  H: "[d#4,f#4]@2 [b3,d#4] [a3,d#4,f#4,b4]@2 [a3,d#4]!3, b3@3 ~@9 [f#4,b4]@4", // D#m B B7 Adim B5
  I: "[e4,g#4]@2 [b3,e4] [b3,e4,g#4]@2 [b3,e4]!3, b3@3 ~@9 [g#4,b4]@4", J: "[e3,b3,d4,g4]",
  K: "[a#3,c#4,f#4]@2 [a#3,c#4] [a#3,c#4,f#4]@2 [a#3,c#4]!3, ~@3 f#4", // F# A#m F# A#m
  L: "[d#4,f#4,b4]@2 [b3,d#4,f#4] [b3,d#4,f#4,b4]@2 [b3,d#4,f#4] [b3,d#4,f#4,b4]!2, b3@3 ~@13", // B
  M: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4,f#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2, f#4 ~@2 b4", // B
  N: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2, f#4 ~@2 b4", // B
  O: "[c#4,e4]@2 [c#4,e4]!2 [c#4,e4]@2 [c#4,e4,g#4]@4 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2 [c#4,e4,g#4]@2, g#4 ~@2 b4", // C#m
  P: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2, f#4 ~@2 f#4", // B
  Q: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2, [f#4,b4]@5 ~@7 b4@4", // B B5
  R: "[a#3,c#4]@2 [a#3,c#4]!2 [a#3,c#4]@2 [a#3,c#4,f#4]@4 [a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4]@2, f#4 ~@2 [f#4,c#5]", // A#m F# A#m F#5
  S: "[a#3,c#4]@2 [a#3,c#4]!2 [a#3,c#4]@2 [a#3,c#4,f#4]@4 [a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4]@2, f#4 ~@2 f#4", // A#m F# A#m
  T: "[a#3,c#4]@2 [a#3,c#4]!2 a#3@2 [a#3,c#4,f#4]@4 [a#3,c#4]@2 [a#3,c#4]@2 [a#3,c#4]@2, f#4 ~@2 f#4", // A#m F# A#m
  U: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4]@2 [b3,d#4,f#4]@2 [b3,d#4,f#4]@2, [f#4,b4]@5 ~@7 b4@4", // B B5
  V: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2, f#4 ~@2 [f#4,b4]", // B B5
  W: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [a3,d#4,f#4,b4]@4 [a3,d#4]@2 [a3,d#4]@2 [a3,d#4]@2, f#4 ~@2 [f#4,b4]", // B B7 Adim B5
  X: "[b3,e4]@2 [b3,e4]!2 [b3,e4]@2 [b3,e4,g#4]@4 [b3,e4]@2 [b3,e4,g#4]@2 [b3,e4,g#4]@2, g#4 ~@2 b4", // E5 E E5 E
  Y: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [b3,d#4,f#4]@4 [b3,d#4]@2 [b3,d#4]@2 [b3,d#4]@2, f#4 ~@2 f#4", // B
  Z: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4,f#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4,f#4]@2 [b3,d#4,f#4,b4]@2 [b3,d#4,f#4,b4]@2, [f#4,b4]@5 ~@11", // B B5
  AA: "[a#3,c#4]@2 [a#3,c#4]!2 [a#3,c#4]@2 [a#3,c#4,f#4,c#5]@4 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2 [a#3,c#4,f#4]@2, f#4 ~@2 c#5", // A#m F#
  AB: "[b3,d#4]@2 [b3,d#4]!2 [b3,d#4]@2 [b3,d#4,f#4,b4]@4 [b3,d#4]@2 [b3,d#4]@2 [f#3,b3,d#4]@2, [f#4,b4]@5 ~@7 [f#4,b4]@4", // B B5
  AC: "[[f#3,b3,d#4,f#4,b4]@3 ~]/2", // B
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.3)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@9 A@7 B@2 C@2 D E F@4 G@2 H I J K L M N@8 O@8 C@2 D E P@2 Q@2 R S T I J K U V W@2 D E P@2 Q@2 R S T I J K U X@2 D E
  P@2 Q@2 R Y@2
>`.pickRestart({
  A: "[~@44 f#5@2 g#5@2 [c#4,e4]@26 f#5@2 g#5@2 ~@2 [c#4,e4]@15 ~@5 f#5@2 e5@6 d#5@4, ~@10 f#5@6 b3@59 ~@37, ~@10 d#5@4 d#5@8 [d#4,f#4]@25 ~ a#3 ~@27 [a#3,c#4,e4]@4 ~@16 [a#3,c#4,e4]@15 ~, ~@6 g#5@2 f#5@8 ~@23 c#5@7 ~@10, ~@16 [b2,f#3]@32 [f#2,e5]@31 ~ f#2@32]/7", // C#m D#m A#dim B5 F#7
  B: "[d#5@2 ~@5 b4@2 ~ [f#4,b4]@6, [b2,f#3], d#4@10 d#4@8 d#4@13 ~, b3 ~@3, ~@2 b4@4 f#4@3 ~@7]/2", // B5
  C: "[[f#3,b3,d#4]@5 ~ [b3,d#4]@8 b3 ~ [b3,d#4]@5 ~ [f#3,d#4]@6 f#3@2 b3 ~, b2@14 ~@2 b2@15 ~, ~@6 f#3@15 ~ b3@4 ~@6]/2", // B D#m
  D: "[f#2,f#3,a#3,c#4]@5 ~ [f#2,f#3,a#3,c#4]@9 ~", // F#
  E: "~ a#3 ~ [a#3,c#4]@3 f#3 a#3, f#2@15 ~, [f#3,c#4,e4]@5 ~ f#3@5 ~@5", // A#m F#7
  F: "[[f#3,a#3,c#4]@5 ~ [f#3,a#3,c#4,e4]@8 ~@2 [a#3,c#4,e4]@5 ~ [a#3,c#4]@5 ~ a#3@3 ~ [b2,d#4]@5 ~ f#3@5 ~@5 [b2,d#4]@5 ~ [b2,b3,d#4]@8 f#3 ~, f#2@14 f#3@7 ~ f#3@15 ~@7 f#3@9 ~ f#3@7 ~@3, ~@16 f#2@16 ~@6 [b2,d#4]@9 ~@17, ~@22 e4@9 ~ b3@13 ~ b3@7 ~@11]/4", // F# F#7 A#dim A#m B
  G: "[[f#3,b3,d#4]@6 ~@8 f#3 ~ [f#3,a3,d#4]@5 ~@5 b2@6, b2@6 b2@5 a3@3 ~@2, ~@3 [f#3,b3,d#4]@4 ~@4 [f#3,d#4]@4 ~]/2", // B D#dim B D#m
  H: "[e3,g#3]@5 ~ [e3,g#3]@5 ~ [e3,g#3]@2 b3@2, e2, b3@13 ~@3", I: "[g2,e3,b3,d4,g4]",
  J: "[b2,f#3,d#4,b4]@5 ~ d#4@4 ~@4 b4@2, ~@3 b2@5, ~@3 [f#3,b3]@3 [f#3,f#4]@2, ~@5 d#4@3", // B B5 F#
  K: "[a#3,c#4,f#4]@5 ~ [f#3,e4]@4 ~@4 a#4@2, f#2, ~@6 a#3@9 ~, ~@6 c#4@3 ~ c#4@6, ~@3 [f#3,f#4]", // F# F#7 F#
  L: "b4@2 d#5 c#5, [b2,f#3,d#4]", M: "~@2 g#5@3 f#5@2 e5, [b2,f#3,b3,d#4,b4]",
  N: "[~@10 b4@7 ~ f#4@4 b4@4 ~@2 f#5@2 g#5@2 e4@10 ~@4 g#4@4 ~@4 b4@4 [g#4,f#5]@2 g#5@2 ~@12 b4@4 e4 ~ e4@4 f#5@2 e5@6 d#5@4 [b4,d#5]@4 ~@10 b4@4 ~@2 [f#4,b4]@12, b3@59 ~ [a#3,c#4,e4]@4 ~@16 [a#3,c#4]@15 ~ [b2,f#3]@32, [b2,f#3]@32 [f#2,e5]@31 ~ f#2@33 ~@3 b4@9 ~@19, d#5@6 f#4@12 ~@14 a#3 ~@9 e4@12 ~@8 c#5@14 ~@4 c#5@12 ~@4 b3@8 ~@4 f#4@6 ~@14, ~@6 d#4@20 d#4@5 ~ c#4@27 ~@5 [c#4,e4]@15 ~@17 d#4@10 d#4@8 d#4@13 ~]/8", // G#7 B B5 A#dim A#m B5 F#7 C#m
  O: "[~@10 b4@7 ~ f#4@4 b4@4 ~@2 f#5@2 g#5@2 e4@10 ~@4 g#4@4 ~@4 b4@4 [g#4,f#5]@2 g#5@2 ~@12 b4@4 e4 ~ e4@4 f#5@2 e5@6 d#5@4 [b4,d#5]@4 ~@10 b4@4 ~@2 [f#4,b4]@12, b3@59 ~ [a#3,c#4,e4]@4 ~@16 [a#3,c#4]@15 ~ [b2,f#3]@32, [b2,f#3]@32 [f#2,e5]@31 ~ f#2@33 ~@3 b4@9 ~@19, ~@6 d#4@20 d#4@5 ~ c#4@27 ~@5 [c#4,e4]@15 ~@17 d#4@10 d#4@8 d#4@13 ~, ~@6 f#4@12 ~@14 a#3 ~@9 e4@12 ~@8 c#5@14 ~@4 c#5@12 ~@4 b3@8 ~@4 f#4@6 ~@14]/8", // G#7 B B5 A#dim A#m B5 F#7 C#m
  P: "[[f#3,a#3,c#4]@5 ~ [f#3,a#3,c#4,e4]@8 ~@2 [a#3,c#4,e4]@5 ~ [a#3,c#4]@5 ~ a#3@3 ~, f#2@14 f#3@7 ~ [f#3,e4]@10, ~ f#2]/2", // F# F#7 A#dim A#m F#7
  Q: "[~@2 e5@4 d#5@6 ~@4 [b2,d#4]@5 ~ [b2,b3,d#4]@8 f#3 ~, b3@3 c#5 b4@4, [b2,f#3]@5 ~ [b2,f#3]@10 ~@16, ~@14 b3@7 ~ f#3@7 ~@3]/2", // B B5
  R: "[f#3,b3,d#4]@6 ~@8 f#3 ~, b4, b2@3 b2, ~@3 [f#3,b3,d#4]@4 ~", // B
  S: "[b2,f#3,a3,d#4]@3 ~@3 b4@2, b4@3 ~, ~@3 [f#3,a3,d#4]@5, ~@5 b2@3", // B7 D#dim
  T: "[e3,g#3]@5 ~ [e3,g#3]@5 ~@3 b3@2, e2, [b3,g#4]@3 [e3,g#3,g#4]", // E
  U: "b4@4 ~@3 f#5, [b2,f#3,d#4], ~@2 b5!2, ~@5 f#5@2 ~", V: "~@4 f#5@3 e5, [b2,f#3,b3,d#4,b5]",
  W: "[[f#3,b3,d#4]@5 ~ [b3,d#4]@8 b3 ~ [b3,d#4]@5 ~ [f#3,d#4]@6 f#3@2 b3 ~, f#5 ~, b2@14 ~@2 b2@15 ~, ~@6 f#3@15 ~ b3@4 ~@6]/2", // B D#m
  X: "[[f#3,b3,d#4]@5 ~ [b3,d#4]@8 b3 ~ [a#3,c#4]@5 ~ [f#3,c#4]@6 f#3@2 c#4 ~, b2@14 ~@2 f#2@15 ~, ~@6 f#3@15 ~ a#3@4 ~@6]/2", // B A#m F#5
  Y: "[[f#3,b3,d#4,b4]@3 ~, b2@3 ~@13]/2", // B
})).s("gm_epiano2").gain(0.32).pan(0.7)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@18 A B C D ~@2 E@2 ~@3 F ~@11 G H ~@22 I J K L M N O P Q@2 ~@2 F ~@3 R S ~@4 T@2 U@3
>`.pickRestart({
  A: "b3@3 c#4", B: "d#4", C: "c#4@4 f#3 g#3 a#3 g#3", D: "~ f#3@7", E: "b3@4 ~@2 b3@7 ~@3", F: "b5@7 ~",
  G: "~@2 f#5 d#6", H: "f#6", I: "~@4 f#3@2 g#3 ~ b3@2 f#3 ~ c#4@2 f#4@2", J: "d#4@2 ~@2 d#4@4 c#4@2 b3@2 g#3@2 f#3 ~",
  K: "c#4@2 ~@2 f#4@2 c#4 ~ b4@2 f#4 ~ d#5@2 f#4 ~", L: "[e4,c#5]@6 g#4@2 [a#4,e5]@5 ~ f#5 ~",
  M: "~ g#5@2 f#5@2 ~ e5@2 ~ d#5@2 c#5@3 b4 ~", N: "~ a#4@5 a#4@2 f#5@7 ~, c#5@15 ~",
  O: "[a#4,c#5]@5 ~ g#4@2 [f#4,a#4]@6 [d#4,f#4]@2", P: "b4 ~ b4 ~ e4@2 d#4@10, f#4@4 ~@2 b4@7 ~@3",
  Q: "[f#3 g#3 ~ b3 ~ c#4@2 ~ f#4@8, ~@7 d#4@9]/2", R: "~@4 f#5@3 d#6", S: "~ f#6@11 ~@4", T: "b3@2 ~ b3@4 ~",
  U: "[b3@2 ~ b3@3 b3@14 ~@4]/3",
})).s("gm_electric_guitar_jazz").gain(0.43).pan(0.7)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@18 A@2 B@4 A@2 C@2 D E F G H@4 I@4 H@4 I@4 H@2 A@2 B@4 A@2 C@2 D E F G H@2 A@2 B@4 A@2 C@2 D E F G H@2 J@3 B@2 A@2
  K@3
>`.pickRestart({
  A: "[b3,d#4]/2", B: "[a#3,c#4]/2", C: "[[b3,b4] [a3,a4], d#4]/2", D: "[g#3,e4,g#4]", E: "[g3,g4]@13 ~@3", F: "b3",
  G: "a#3", H: "b3/2", I: "c#4/2", J: "[a#3,c#4]/3", K: "[~@2 b4@3 ~, [b3,d#4]@5 ~]/3",
})).s("gm_string_ensemble_2").gain(0.26)

// other · banjo
const banjo = note("<~@18 A@2 B@4 C A@2 D E F ~@62>".pickRestart({
  A: "b5!16", B: "a#5!16", C: "[a#5,b5] b5!15", D: "[a5,b5] a5!15", E: "[g#5,a5] g#5!7 g#5@2 g#5@3 ~ g#5@2",
  F: "g5@3 ~",
})).s("gm_banjo").gain(0.08).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@18 A@11 B C@3 B C@16 A@11 B C@3 D A@11 B C@3 A@9 B ~>".pickRestart({
  A: "x ~@2 x!2 ~ x ~", B: "x", C: "x ~@2 x!2 ~@3", D: "x!2",
})).gain(0.55)

// drums · rim
const rim = s("rim").struct("<~@30 A B@2 ~ B@8 A@7 ~@13 A B@2 ~ A@7 ~@5 A B@11 ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x",
})).gain(0.48)

// drums · low tom
const low_tom = s("lt").struct("<~@17 [~@7 x] ~@31 [~@7 x] ~@23 [~@4 x ~@2 x] ~@18>").gain(0.35)

// drums · hihat
const hihat = s("hh").struct("<A@18 B@11 C D@3 E F D@15 G@11 C H@3 I H J H@3 J H J G@3 ~ H@3 K@9 ~@2>".pickRestart({
  A: "~ x ~ x", B: "x ~ x ~@3 x!2", C: "x", D: "x!4", E: "x!2 ~ x", F: "~ x!3", G: "x!4 ~@2 x!2", H: "x!8",
  I: "x!3 ~ x!4", J: "x!7 ~", K: "x!6 ~@2",
})).gain(0.28)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@18 A@11 ~ B@3 C D E D E D E F G D E D E D E F G ~@42>".pickRestart({
  A: "~ x ~ x ~@4", B: "~ x ~ x ~ x ~ x", C: "~ x ~@3 x ~ x", D: "~@3 x ~@2 x ~@2 x!2 ~@3 x ~",
  E: "~@3 x ~@2 x ~@3 x ~@3 x!2", F: "~@3 x ~@2 x ~@3 x ~@3 x ~", G: "~@3 x ~@2 x ~@3 x ~@5",
})).gain(0.14)

// drums · mid tom
const mid_tom = s("mt").struct("<~@17 A B@11 ~@4 C ~@15 D B@11 ~@4 C ~@7 E B@3 ~@15>".pickRestart({
  A: "~@5 x!2 ~", B: "~@3 x", C: "~@11 x!2 ~ x ~", D: "~@8 x ~@2 x!2 ~@3", E: "~@4 x ~ x ~ x ~@2 x!2 ~@3",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct("<~@18 A@11 B ~@11 B ~@7 B A@11 B ~@5 B ~@3 B ~ B A@3 C ~@3 D@9 ~@2>".pickRestart({
  A: "~ x", B: "~@7 x", C: "x ~@6 x", D: "~@3 x",
})).gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@18 A@11 ~@4 B ~@15 C A@11 ~@4 D ~@6 E ~ A@3 ~@15>".pickRestart({
  A: "~@3 x", B: "~@3 x!2 ~@11", C: "~ x ~@6", D: "~@3 x!2 ~ x ~@9", E: "~@7 x",
})).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@18 A ~@15 A ~@15 A ~@15 A ~@7 A ~@15 A ~>".pickRestart({
  A: "x",
})).gain(0.35)

stack(
  bass, acoustic_guitar_steel, epiano2, electric_guitar_jazz, string_ensemble_2, banjo, kick, rim, low_tom, hihat,
  hihat_soft, mid_tom, open_hat, high_tom, crash
)

More by Lynn Anderson