Strudelify

There's a Place

The Beatles

KeyC majorTempo100 bpm
0:00/0:00
// There's a Place — The Beatles
// 100 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 70 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 · [...]/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.

// other · piano
const piano = note(`<
  A B A C D E@4 F@2 G@2 H I J K L@2 M N@2 E@2 F@2 O@2 P@2 Q@2 R S T U R S T U V M E@4 F@2 G@2 H I J K L@2 M E@12 W
>`.pickRestart({
  A: "[d4,e4,b4]@5 ~ [e4,c5] [d4,b4]", B: "[c4,f4,a4]@13 ~@3",
  C: "[c4,f4,a4]@3 ~@5 [c5,e5]@2 [b4,d5]@2 [a4,c5]@2 [b4,d5]@2", D: "[c5,e5]@3 ~@5 [c4,e4,g4]@3 ~ [d4,f4,b4]@3 ~",
  E: "[c5@21 ~ g4@2 g4@3 ~ b4@3 ~]/2", F: "[c5@21 ~ a4@2 a4@3 ~ c5@3 ~]/2", G: "[b4@22 ~@2 g4@2 ~ a4@2 g4@2 ~]/2",
  H: "b4@14 c5 b4", I: "a4@3 ~@5 g4@2 ~ g4@2 b4@2 ~", J: "b4@10 ~@2 b4@2 c5 b4", K: "a4@3 ~@3 a4@2 g4@3 ~ g4@3 ~",
  L: "[e4@2 g4@17 ~@5 [c5,e5]@2 [b4,d5]@2 [a4,c5]@2 [b4,d5]@2]/2", M: "[c5,e5]@3 ~@3 g4@2 g4@3 ~ b4@3 ~",
  N: "[c5@19 ~@3 g4@2 g4@3 ~ b4@3 ~]/2", O: "[b4@22 ~@2 a4@3 ~ b4@3 ~]/2",
  P: "[c5@6 ~@2 d5 c5 b4 c5@11 ~@2 c5@2 ~ a4@2 c5@2 ~]/2", Q: "[a4@6 ~@2 g4@21 ~@3]/2",
  R: "~@3 a4@2 b4@2 ~ c5@2 ~ d5@2 c5@2 ~", S: "b4 a4@6 ~", T: "~@3 b4@2 c5@2 ~ c5@2 [e5,g5]@2 [c5,e5]@2 [e4,d5]@2",
  U: "d5 e5@6 ~", V: "[c4,e4,a4]@3 ~@5 [c5,e5]@2 [b4,d5]@2 [a4,c5]@2 [b4,d5]@2", W: "c5",
})).s("gm_piano").gain(0.54).pan(0.1)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@5 A B A B A C D E A F A G H I J A B A B A C D K L M N O P Q R S P Q R S I T A B A B A C D E A F A G H U T A V A V A
  V A V A V A V A
>`.pickRestart({
  A: "[e4,g4]@3 ~ [e4,g4]@2 [e4,g4]@2 ~@4 [e4,g4]@3 ~", B: "[c4,f4]@3 ~ [c4,f4]@2 [c4,f4]@2 [b3,f4]@3 ~ [d4,f4]@3 ~",
  C: "~@4 [c4,e4]@2 [c4,e4]@2 [c4,e4]@3 ~ [e4,a4]@3 ~", D: "[d4,f4]@3 ~ [d4,f4]@2 [d4,f4]@2 [d4,f4]@3 ~ [d4,f4]@3 ~",
  E: "~@4 [d4,f4]@2 [d4,f4]@2 [b3,f4]@2 ~ [b3,f4]@2 [b3,f4]@2 ~", // Dm Bdim
  F: "[c4,f4]@3 ~ [c4,f4]@2 [c4,f4]@2 [c4,f4]@2 ~ [c4,f4]@2 [c4,f4]@2 ~", G: "[c4,f4]@3 ~ [c4,f4]@2 ~@10",
  H: "~@4 [c4,e4]@2 [c4,e4]@2 ~@4 [c4,e4]@3 ~", I: "[c4,e4]@3 ~@5 [c5,e5]@2 [b4,d5]@2 [a4,c5]@2 [b4,d5]@2",
  J: "[c5,e5]@3 ~@3 g4@2 [b3,f4]@2 [d4,f4]@2 [d4,f4]@2 [d4,f4]@2", K: "~@2 [d4,f4]!2 ~@2 [d4,f4]!2",
  L: "~@4 [f4,a4]@2 [f4,a4]@2 ~@4 [f4,a4]@3 ~", M: "~@2 [f4,a4]!2 [c4,f4]@3 ~",
  N: "[c4,e4]@3 ~ [c4,e4]@2 [c4,e4]@2 ~@4 [b3,d4]@2 [b3,d4]@2", // C Bm
  O: "~@4 [b3,d4]@2 [b3,d4]@2 [b3,d4,f4]@3 ~ [b3,d4,f4]@2 [b3,d4,f4]@2", P: "[c4,e4]@3 ~ [e4,a4]@3 ~",
  Q: "[c4,f#4]@13 ~@3", R: "[e4,g4]@3 ~@2 e5 c5 e4", S: "[g4,b4]@3 ~ [g4,b4]@2 [g4,b4]@2 [g4,b4]@3 ~ [g4,b4]@3 ~",
  T: "[c5,e5]@3 ~@3 g4@2 [b3,f4]@2 [b3,f4]@2 [d4,f4]@2 [d4,f4]@2", // C Bdim Dm
  U: "[c4,e4,g4]@3 ~@5 [c5,e5]@2 [b4,d5]@2 [a4,c5]@2 [b4,d5]@2", // C Bm Am Bm
  V: "[f4,a4]@3 ~ [c4,f4]@2 [c4,f4]@2 [b3,f4]@2 [b3,f4]@2 [d4,f4]@2 [d4,f4]@2", // F F5 Bdim Dm
})).s("gm_distortion_guitar").gain(0.44).pan(0.7)

// bass · electric bass pick
const bass = note(`<
  A B A C D E F E F G H I J K L K M E M N E F E F G H I O P Q R S T U V K T U V K W X E F E F G H I J K L K M E C Y E Z
  E Z E Z E Z E Z E Z E
>`.pickRestart({
  A: "c3@3 ~ c3@2 c3@2 g2@3 ~ c3@2 g2@2", B: "f2@3 ~ c3@2 c3@2 f2@2 f2@2 f2@2 f2@2", C: "f2@3 ~ f2@2 ~@10",
  D: "~@6 g2@2 c3@3 ~ g2@3 ~", E: "c3@3 ~@3 c3@2 g2@3 ~ c3@2 g2@2", F: "f2@3 ~@3 f2@2 g2@3 ~ g2@3 ~",
  G: "c3@3 ~@3 c3@2 g2@3 ~ c3@3 ~", H: "a2@3 ~@3 a2@2 e2@3 ~ a2@3 ~", I: "g2@3 ~@3 g2@2 g2@3 ~ g2@2 g2@2",
  J: "g2@3 ~ g2@2 g2@2 ~ g2@2 g2@2 ~@3", K: "e2@3 ~@3 e2@2 g2@3 ~ b2@3 ~", L: "f2@3 ~@3 f2@2 f2@2 ~ g2@2 f2@2 ~",
  M: "f2@3 ~ f2@3 ~@9", N: "c3@3 ~ c3@3 ~ g2@3 ~ g2@3 ~", O: "g2@3 ~@3 g2@2 g2@3 ~ g2@3 ~",
  P: "f2@3 ~@3 f2@2 f2@3 ~ c3@2 a2@2", Q: "f2@3 ~@3 f2@2 f2@3 ~ a2@2 c3@2", R: "a2@3 ~@3 a2@2 g2@3 ~ g2@3 ~",
  S: "g2@3 ~@5 g2@3 ~ g2@3 ~", T: "a2@3 ~@3 a2@2 a2@3 ~@3 a2@2", U: "d2@3 ~@3 d2@2 f#2@3 ~ a2@3 ~",
  V: "g2@3 ~@3 g2@2 g2@3 ~@3 g2@2", W: "a2@3 ~ g1@3 ~@9", X: "~@6 g2@2 d3@3 ~ g2@3 ~", Y: "~@8 g2@3 ~ g2@3 ~",
  Z: "f2@3 ~@3 f2@2 g2@3 ~@3 g2@2",
})).s("gm_electric_bass_pick").gain(0.53)

// drums · kick
const kick = s("bd").struct("<~@9 A ~ A ~@6 A@4 ~ A@2 ~ A@2 ~ A@4 ~@13 A ~ A ~@21>".pickRestart({
  A: "x",
})).gain(0.44)

// drums · snare
const snare = s("sd").struct("<A ~@6 A ~@7 A ~@17 A ~ A@2 ~ A@2 ~ A ~@2 A ~@7 A ~@2 A@11 ~@4>".pickRestart({
  A: "x",
})).gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<~@2 A@3 ~@3 A ~ A ~@5 A@2 ~@27 A ~ A ~@5 A@2 ~@15>".pickRestart({
  A: "x",
})).gain(0.44)

// drums · mid tom
const mid_tom = s("mt").struct("<~@5 A@2 ~@15 A ~@2 A ~@2 A ~@13 A@2 ~@26>".pickRestart({
  A: "x",
})).gain(0.44)

// drums · ride bell
const ride_bell = s("rd").struct("<~@4 A@2 ~@28 B ~@2 B ~@2 B ~ A ~@27>".pickRestart({
  A: "~ x ~@2", B: "x",
})).gain(0.44)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A@2 ~@4 B ~@5 B ~@2 B ~@2 B ~@2 B ~@2 B ~@2 B ~@2 B ~@2 B ~@2 B ~ A ~@4 B ~@5 B ~@16
>`.pickRestart({
  A: "x!2", B: "x",
})).gain(0.44)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ x ~ x ~@66>").gain(2.25)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct(`<
  ~@4 A@2 ~@3 B C B ~@3 B C B@2 C B@2 C B@2 C B@2 C B@2 C B@2 C B@2 C B@2 C B A ~@3 B C B ~@3 B C B@13 D ~@2
>`.pickRestart({
  A: "~@3 x", B: "x!2", C: "~ x", D: "x",
})).gain(0.64)

// drums · woodblocks · soft notes
const woodblocks_soft = s("woodblock:5").struct("<~@67 [~ x] [x!2]!2>").gain(0.32)

// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct("<~@9 A@3 ~@3 A@27 ~@4 A@3 ~@3 A@15 B ~@2>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.64)

// drums · woodblocks · soft notes
const woodblocks_soft_2 = s("woodblock:4").struct("<~@67 [~@3 x] [~ x ~ x]!2>").gain(0.32)

stack(
  piano, distortion_guitar, bass, kick, snare, low_tom, mid_tom, ride_bell, crash, cabasa, woodblocks, woodblocks_soft,
  woodblocks_2, woodblocks_soft_2
)

More by The Beatles