Strudelify

Long, Long, Long

The Beatles

KeyF majorTempo53 bpm
0:00/0:00
// Long, Long, Long — The Beatles
// 53 bpm, 6/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (6/8 at bar 1, 3/8 at bar 11, 6/8 at bar 11, 3/8 at bar 20, ...) are rendered on a constant 6/8 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 3 "organ" named as an organ, played on drawbar organ (its lead 3 calliope patch is not one)
// note: Full arrangement: all 52 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(53/3)

// 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 · drawbar organ · "organ"
const drawbar_organ = note("<~ A@2 B@5 C@5 D@3 E F G@3 H I@2 H J K@2 L M L N O P Q R S T S T S U V@5 ~@5>".pickRestart({
  A: "[~@9 d5@7 c5@7 bb4@7 ~ c5@7 a4@7 f4@7 ~ g4@43]/2",
  B: "[[bb4,d5]@22 [a4,c5]@22 [g4,bb4]@22 [a4,c5]@22 [bb4,d5]@22 [a4,c5]@22 [g4,c5]@44 [g4,bb4]@29 ~@7 [g4,bb4]@7 ~@8 g4@7 f4@6]/5", // Bb Am Gm Am Bb Am C5 Gm
  C: "[~@2 e4@7 f4@7 g4@7 ~ g4@43 ~@44 g4@7 ~ [f4,a4]@7 [g4,bb4]@7 [g4,bb4,c5]@44 [bb4,d5]@22 [a4,c5]@22 [g4,bb4]@19, ~@67 c5@66 ~@107, ~@89 e4@29 ~@122]/5", // F Gm C7 Bb Am Gm
  D: "[~@3 [a4,c5]@22 [bb4,d5]@22 [a4,c5]@22 [g4,c5]@44 [g4,bb4]@29 ~@2]/3", // Am Bb Am C5 Gm
  E: "~@5 [g4,bb4]@7 ~@8 g4@7 f4@7 e4@7 ~ f4@6", F: "~ g4@7 g4@40", G: "[~@13 e4@39 ~@8 [bb4,d5]@12, ~ c5@29 ~@6]/3",
  H: "[a4,c5] [e4,g4]", I: "[[g4,bb4] [g4,bb4]@2 [bb4,d5]]/2", J: "[g4,bb4]!2", K: "[[e4,g4] ~ g4@2, ~ [e4,c5]@3]/2",
  L: "[bb4,d5] [a4,c5]", M: "[g4,bb4] [a4,c5]", N: "[a4,c5]", O: "[g4,bb4]@4 ~ [g4,bb4]", P: "~ g4 f4 e4 f4 g4",
  Q: "g4", R: "~ e4, c5", S: "[g4,bb4]", T: "[f4,a4] [e4,g4] [d4,f4] [c4,e4] [d4,f4] [e4,g4]",
  U: "[f4,a4]@8 [e4,g4]@7 [d4,f4]@8 ~ c4@24, ~@23 e4@24 ~", // F Em Dm
  V: "[~@24 c5 [c5,g5] [c5,eb5,g5] [c5,f5,g5] [c5,eb5,g5] [c5,f5,g5] [c5,eb5,g5] [c5,f5,g5]@24 ~@5, c4@4 ~]/5", // C5 Cm Csus4 Cm Csus4 Cm Csus4
})).s("gm_drawbar_organ").gain(0.25).pan(0.1)

// chords · piano · "honky tonk piano"
const piano = note("<~@20 A B C D B E F@2 ~@24>".pickRestart({
  A: "~@8 [f4,bb4,d5]@2 ~ bb2, ~@3 bb2@2 [f4,bb4,d5]", // Bb
  B: "~@2 [f4,a4,c5]@2 ~ f2 ~@2 [e4,g4,c5]@2 ~ c3, f2@2 [f4,a4,c5] c3@2 [e4,g4,c5]", // F C F C
  C: "~@2 [g4,bb4,d5]@2 ~ g2 bb4 c5 d5@2 c5 [g2,d5], g2@4 [g4,bb4,d5]@2 g2@5 ~", // Gm G5 Gm
  D: "bb4 c5 d5@2 c5 [g2,d5] ~@2 [f4,bb4,d5]@2 ~ bb2, g2@5 ~ bb2@4 [f4,bb4,d5]@2", // G5 Bb
  E: "~@2 [g4,bb4,d5]@2 ~ g2 [f4,bb4] c5 d5@2 c5 [bb2,d5], g2@4 [g4,bb4,d5]@2 bb2@5 ~", // Gm Bb5 Bb Gm
  F: "[[e4,g4,c5]@2 [e4,g4,c5]@2 ~ c3 [c3,e4,g4,c5]@18, c3@2 [e4,g4,c5] ~@9]/2", // C
})).s("gm_piano").gain(0.64)

// chords · acoustic guitar steel · "guitar"
const acoustic_guitar_steel = note("<A B@2 C@3 D@2 E@2 F G H@3 I@2 J@2 K L ~@31>".pickRestart({
  A: "~@13 g2@3 bb2@4 c3@4 d3@4 f3@3 g3@4 bb2@7 ~ c3@5",
  B: "[~@2 g3@7 g2@3 bb2@4 c3@4 d3@3 f3@4 g3@4 f3@7 c4@7 f4@7 ~@4 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,c3,g3,c4,e4,g4]@3 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7]/2", // C
  C: "[[bb2,d3,f3,bb3,d4,bb4]@7 ~ [bb2,d3,f3,bb3,d4,bb4]@7 [bb2,d3,f3,bb3,d4,bb4]@7 [a2,c3,e3,a3,c4,a4]@7 ~ [a2,c3,e3,a3,c4,a4]@7 [a2,c3,e3,a3,c4,a4]@7 [g2,bb2,d3,g3,bb3,g4]@7 ~ [g2,bb2,d3,g3,bb3,g4]@7 [g2,bb2,d3,g3,bb3,g4]@7 [f2,a2,c3,f3,a3,f4]@7 ~ [f2,a2,c3,f3,a3,f4]@7 [f2,a2,c3,f3,a3,f4]@7 g2@4 bb2@3 c3@4 d3@4 f3@3 g3@4 f3@7 c4@7 ~ f4@7 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@5, ~@124 a4@7 ~@13]/3", // Bb Am Gm F C
  D: "[~@3 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,c3,g3,c4,e4,g4]@7 [g2,d3,g3,bb3,d4,f4]@7 [g2,d3,g3,bb3,d4,f4]@7 [g2,d3,g3,bb3,d4,f4]@7 ~ [g2,d3,g3,bb3,d4,f4]@7 [g2,d3,g3,bb3,d4,f4]@7 [g2,d3,g3,bb3,d4,f4]@7 ~ [f2,c3,f3,c4,f4,a4]@3 [f2,c3,f3,c4,f4,a4]@7 ~ [f2,c3,f3,c4,f4,a4]@3 [f2,c3,f3,c4,f4,a4]@6]/2", // C Gm7 F
  E: "[~@2 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,d3,g3,bb3,d4,g4]@22 [g2,d3,g3,bb3,d4,g4]@14 [g2,d3,g3,bb3,d4,g4]@7 [f2,c3,f3,c4,f4,a4]@22 [g2,c3,g3,c4,e4,g4]@7]/2", // C Gm F C
  F: "~ [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,bb3,e4,g4]@11", // C C7
  G: "~@4 [g2,c3,g3,bb3,e4,g4]@7 [g2,c3,g3,bb3,e4,g4]@7 [g2,c3,g3,bb3,e4,g4]@7 ~ [g2,c3,g3,bb3,e4,g4]@7 [bb2,d3,f3,bb3,d4,bb4]@7 [bb2,d3,f3,bb3,d4,bb4]@7 ~", // C7 Bb
  H: "[[bb2,d3,f3,bb3,d4,bb4]@7 [a2,c3,e3,a3,c4,a4]@7 [a2,c3,e3,a3,c4,a4]@7 ~ [a2,c3,e3,a3,c4,a4]@7 [g2,bb2,d3,g3,bb3,g4]@7 [g2,bb2,d3,g3,bb3,g4]@7 ~ [g2,bb2,d3,g3,bb3,g4]@7 [f2,a2,c3,f3,a3,f4]@7 [f2,a2,c3,f3,a3,f4]@7 ~ [f2,a2,c3,f3,a3,f4]@7 g2@3 bb2@4 c3@4 d3@3 f3@4 g3@4 f3@7 c4@7 [f4,a4]@7 ~ [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,c3,g3,c4,e4,g4]@5]/3", // Bb Am Gm F C
  I: "[~@2 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,d3,g3,bb3,d4,f4]@7 [g2,d3,g3,bb3,d4,f4]@7 [g2,d3,g3,bb3,d4,f4]@7 [g2,d3,g3,bb3,d4,f4]@7 ~ [g2,d3,g3,bb3,d4,f4]@7 [g2,d3,g3,bb3,d4,f4]@7 [f2,c3,f3,c4,f4,a4]@4 [f2,c3,f3,c4,f4,a4]@7 [f2,c3,f3,c4,f4,a4]@4 [f2,c3,f3,c4,f4,a4]@7 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,c3,g3,c4,e4,g4]@6]/2", // C Gm7 F C
  J: "[~ [g2,c3,g3,c4,e4,g4]@7 [g2,d3,g3,bb3,d4,g4]@22 [g2,d3,g3,bb3,d4,g4]@15 [g2,d3,g3,bb3,d4,g4]@7 [f2,c3,f3,c4,f4,a4]@22 [g2,c3,g3,c4,e4,g4]@7 [g2,c3,g3,c4,e4,g4]@7 ~ [g2,c3,g3,c4,e4,g4]@7]/2", // C Gm F C
  K: "[g2,c3,g3,bb3,e4,g4]@8 [g2,c3,g3,bb3,e4,g4]@7 ~ [g3,e4,g4]@8 [g2,c3,g3,bb3,e4,g4]@4 [g2,c3,g3,bb3,e4,g4]@8 [g2,c3,g3,bb3,e4,g4]@4 [g2,c3,g3,bb3,e4,g4]@4 [g2,c3,g3,bb3,e4,g4]@4, ~@15 [g2,c3,bb3]@8 ~@25", // C7 C C7
  L: "[g2,c3,g3,bb3,e4,g4] [g2,c3,g3,bb3,e4,g4]@2 [g2,c3,g3,bb3,e4,g4]!3 ~@6", // C7
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.9)

// chords · piano · "guitar"
const piano_2 = note("<~@20 A B C D B E@2 F G H I J K L M N K N K N K N O@2 ~@8>".pickRestart({
  A: "~@3 [bb2,d3,f3,bb3,d4,bb4]!3", // Bb
  B: "[a2,c3,f3,a3,c4,a4]@2 [a2,c3,f3,a3,c4,a4]@2 [a2,c3,f3,a3,c4,a4]@2 ~ [g2,c3,g3,c4,e4]@2 [g2,c3,g3,c4,e4,g4] [g2,c3,g3,c4,e4,g4]@2, ~@27 g4@8 ~@13", // F C
  C: "[g2,bb2,g3,bb3,d4,g4]!3 [g2,d3,g3,bb3,d4,f4]!3", D: "[g2,d3,g3,bb3,d4,f4]!3 [bb2,d3,f3,bb3,d4,bb4]!3",
  E: "[[g2,bb2,g3,bb3,d4,g4]@8 [g2,bb2,g3,bb3,d4,g4]@8 [g2,bb2,g3,bb3,d4,g4]@8 [f3,bb3,d4,f4,bb4,d5]@23 ~@2 g5@23 ~ c5@23, ~@47 e5@24 ~@25, ~@2 [g3,c4,g4,c5] [g3,d4,g4,e5,g5]]/2", // Gm Bb C5 Em7
  F: "[c3,g3,c4,e4,g4,c5]", G: "[bb2,d3,f3,bb3,d4,bb4]!3 [a2,c3,e3,a3,c4,a4]!3",
  H: "[g2,bb2,d3,g3,bb3,g4]!3 [f2,a2,c3,f3,a3,f4]!3", I: "g2@4 bb2@4 c3@4 d3@4 f3@3 g3@4 ~ f3@8 c4@8 [f4,a4]@8",
  J: "[g2,c3,g3,c4,e4,g4]!6", K: "[g2,d3,g3,bb3,d4,f4]!6",
  L: "[f2,c3,f3,c4,f4,a4] [f2,c3,f3,c4,f4,a4]@2 [f2,c3,f3,c4,f4,a4] [f2,c3,f3,c4,f4,a4]@2 [g2,c3,g3,c4,e4,g4]@2 [g2,c3,g3,c4,e4,g4]@2 [g2,c3,g3,c4,e4,g4]@2", // F C
  M: "[g2,d3,g3,bb3,d4,g4]@3 [g2,d3,g3,bb3,d4,g4]@2 [g2,d3,g3,bb3,d4,g4]", // Gm
  N: "[f2,c3,f3,c4,f4,a4]@3 [g2,c3,g3,c4,e4,g4]!3", // F C
  O: "[[g2,c3,g3,c4,e4,g4] [g2,c3,g3,c4,e4,g4]@2 [g2,c3,g3,c4,e4,g4] [g2,c3,g3,c4,e4,g4]@2 [g2,c3,g3,c4,e4,g4]@16 ~@2]/2", // C
})).s("gm_piano").gain(0.22).pan(0.9)

// bass · acoustic bass · "bass"
const bass = note("<~@3 A@5 B@3 C@6 D E F G H I J H K F L M N O P Q R S T U V U V U W X@3 ~@7>".pickRestart({
  A: "[bb2@22 a2@22 g2@15 c2@7 f2@22 bb1@22 f2@22 c2@22 g2@22 g1@22 d2@22 f2@20]/5",
  B: "[~@2 c2@22 g2@22 d2@21 f2@22 c2@44 ~@11]/3",
  C: "[~@33 bb2@22 a2@22 g2@15 c2@7 f2@22 bb1@22 f2@7 a1@7 c2@7 ~ c2@22 g2@22 g1@21 d2@15 g2@7 f2@22 c2@7 ~ d2@6]/6",
  D: "~ f2@7 g2@22 d2@18", E: "~@4 f2@7 e2@7 ~ d2@7 c2@7 d2@7 ~ e2@7", F: "c2!2", G: "c2 bb2", H: "f2 e2 d2 c2@3",
  I: "g2!2", J: "c2 d2 e2 f2 g2 a2 bb2@6", K: "g1 bb1", L: "c2", M: "bb1 a2", N: "g2@2 c2 f2@3", O: "bb1 f2",
  P: "c2 g2", Q: "g1 d2", R: "f2 c2", S: "g2 d2", T: "f2@3 c2@2 ~", U: "g3 d3", V: "f3@2 e3@2 d3@2 c3@2 d3@2 e3 f3",
  W: "f3@2 e3@2 d3@2 c3@2 d3@2 e3 d3", X: "[c3@4 c3@2 c3@19 ~@11]/3",
})).s("gm_acoustic_bass").gain(0.64)

// chords · bassoon
const bassoon = note("<~@45 A@2 B@5>".pickRestart({
  A: "[~@3 d6@2 ~, a4]/2", B: "[~@15 a4@16 ~@9, ~@2 c5@27 c5@32 ~@59, ~@7 f4@32 ~@9]/5",
})).s("gm_bassoon").gain(0.41).pan(1)

// bass · synth brass 2
const bass_2 = note("<~@45 A@5 ~@2>".pickRestart({
  A: "[~@7 [f1,f2]@112 ~]/5", // F
})).s("gm_electric_bass_finger").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@7 A B ~@2 C D E F G H I J ~ B K B@2 K@2 L M ~@5 M@2 ~@17>".pickRestart({
  A: "~@7 x ~@4", B: "~ x", C: "~@11 x ~@21 x ~@14", D: "~@7 x ~@21 x ~@18", E: "~@3 x ~@21 x ~@21 x",
  F: "~@21 x ~@21 x ~@4", G: "~@17 x ~@21 x ~@8", H: "~ x ~@2", I: "~@4 x ~@10 x ~@8", J: "~@2 x ~@10 x ~@10", K: "x!2",
  L: "~@3 x ~ x", M: "x",
})).gain(0.57)

// drums · snare
const snare = s("sd").struct("<~@7 A ~@3 B ~@4 C ~@3 D E F E@3 ~@7 G ~@18>".pickRestart({
  A: "~@35 x ~@4 x ~@6 x", B: "~@18 x ~@2 x ~ x ~@2 x ~ x ~@19", C: "~@20 x ~@4 x ~@6 x ~@15", D: "~@4 x!2",
  E: "~ x!2 ~ x!2", F: "x ~@2 x ~ x ~@2 x ~ x ~@2 x ~@18 x ~@7 x ~@7", G: "~@8 x ~@4 x ~@7 x ~@26",
})).gain(0.57)

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

// drums · low tom
const low_tom = s("lt").struct("<~@8 A ~@2 B ~@4 C D ~@2 E ~@5 F ~@6 G ~@18>".pickRestart({
  A: "~@9 x ~@4 x ~ x ~@31", B: "~@4 x ~@4 x ~@38", C: "~@42 x ~@4 x", D: "~ x ~@46", E: "x!2 ~@10", F: "~@2 x!3 ~@7",
  G: "~@32 x ~@4 x ~@2 x ~@7",
})).gain(0.57)

// drums · mid tom
const mid_tom = s("mt").struct("<~@10 A B ~@7 C D ~ E ~@3 F ~@25>".pickRestart({
  A: "~@7 x", B: "~ x ~@46", C: "x ~@7 x ~@3 x ~@6 x ~ x ~@2 x ~@3 x ~@7 x ~@3 x ~@3 x ~@3",
  D: "~@11 x ~@4 x ~@2 x ~ x ~@26", E: "~@16 x ~ x ~@2 x ~@26", F: "~@3 x ~ x ~@42",
})).gain(0.57)

// drums · high tom
const high_tom = s("ht").struct("<~@8 A ~ B ~@5 C ~@2 D ~@6 E ~@6 F ~@18>".pickRestart({
  A: "~@2 x ~@4 x ~@40", B: "~@37 x ~@10", C: "~@34 x ~@4 x ~@8", D: "~ x ~", E: "x ~@7 x!2 ~ x",
  F: "~@24 x ~@4 x ~@18",
})).gain(0.57)

// drums · crash
const crash = s("cr").struct("<~@20 [x!2 ~@10] ~ [~ x] ~@4 x ~@24>").gain(0.57)

// drums · ride
const ride = s("rd").struct("<~@3 A ~@3 B C ~@2 D ~@4 E F ~@2 G ~@7 A ~@4 A@2 ~@17>".pickRestart({
  A: "x", B: "~@7 x ~@4", C: "~ x", D: "~@11 x ~@21 x ~@14", E: "~ x ~@2", F: "~ x ~@4", G: "~ x ~@2 x ~@43",
})).gain(0.57)

stack(
  drawbar_organ, piano, acoustic_guitar_steel, piano_2, bass, bassoon, bass_2, kick, snare, hihat, low_tom, mid_tom,
  high_tom, crash, ride
)

More by The Beatles