Strudelify
KeyC minorTempo102 bpm
0:00/0:00
// Girl — The Beatles
// 102 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 78 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(102/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · fretless bass · "Fretless E. Bass"
const bass = note(`<
  ~ A B C D A@2 E F G H G H A B C D A@2 E F G H G I J K J K J K J L M N M N A O C D A@2 E P G H G H A@2 E Q A@2 E R S T
  S T S T S T S T S T S T S T S T S T ~
>`.pickRestart({
  A: "c2@5 ~@7 g2@5 ~@7", B: "c2@9 ~ c2 ~ g2@5 ~ c2@5 ~", C: "f2@5 ~@7 c2@5 ~ f2@5 ~", D: "eb2@5 ~@7 g2@5 ~@7",
  E: "f2@5 ~@7 c2@5 ~@7", F: "c2@5 ~@7 g2@9 ~ c2 ~", G: "eb2@5 ~@7 d2@5 ~@7", H: "c2@5 ~@7 bb1@5 ~@7",
  I: "c2@8 ~@2 c2 ~ bb1@5 ~@7", J: "f2@5 ~ f2@5 ~ f2@5 ~ f2@5 ~", K: "c2@5 ~ c2@5 ~ c2@5 ~ c2@5 ~",
  L: "ab2@5 ~ ab2@5 ~ ab2@5 ~ ab2@5 ~", M: "eb2@3 ~ eb2 ~@7 d2@3 ~ d2 ~@7", N: "c2@3 ~ c2 ~@7 bb1@3 ~ bb1 ~@7",
  O: "c2@10 c2 ~ g2@5 ~ c2@5 ~", P: "c2@5 ~@7 g2@10 c2 ~", Q: "eb2@5 ~@7 f2@5 ~@7", R: "c2@5 ~@7 c2@5 ~@7",
  S: "eb2@5 ~ eb2@5 ~ d2@5 ~ d2@5 ~", T: "c2@5 ~ c2@5 ~ bb1@5 ~ bb1@5 ~",
})).s("gm_fretless_bass").gain(0.54)

// other · electric guitar jazz · "Jazz Gtr"
const electric_guitar_jazz = note("<~@37 A B C D A B C E ~@4 A B C D A B C E ~@21>".pickRestart({
  A: "eb4 c4 f4 d4", B: "g4 eb4 ab4 g4", C: "f4 ab4 g4 f4", D: "eb4 f4 eb4 d4", E: "eb4 f4 eb4 c4",
})).s("gm_electric_guitar_jazz").gain(0.45).pan(0.9)

// chords · acoustic guitar nylon · "Nylon Gtr Rythm"
const acoustic_guitar_nylon = note(`<
  ~ A B C D A B C E F G F G A B C D A B C E F G F G H I H I H I H J F G F G A B C D A B C E F G F G K L M N K L M O F G
  F G F G F G F G F G F G F G F G F G ~
>`.pickRestart({
  A: "[c3,g3,c4,eb4,g4,c5]@2 [c3,g3,c4,eb4,g4,c5] [c3,g3,c4,eb4,g4,c5]@2 [c3,g3,c4,eb4,g4,c5] [g3,d4,f4,b4,d5]@2 [g3,d4,f4,b4,d5] [g3,d4,f4,b4,d5]@2 [g3,d4,f4,b4,d5]", // Cm G7
  B: "[c3,g3,c4,eb4,g4,c5]@2 [c3,g3,c4,eb4,g4,c5] [c3,g3,c4,eb4,g4,c5]@2 [c3,g3,c4,eb4,g4,c5] [c3,g3,bb3,eb4,bb4,c5]@2 [c3,g3,bb3,eb4,bb4,c5] [c3,g3,bb3,eb4,bb4,c5]@2 [c3,g3,bb3,eb4,bb4,c5]", // Cm Cm7
  C: "[f3,c4,f4,ab4,c5]@2 [f3,c4,f4,ab4,c5] [f3,c4,f4,ab4,c5]@2 [f3,c4,f4,ab4,c5] [f3,c4,f4,ab4,c5]@2 [f3,c4,f4,ab4,c5] [f3,c4,f4,ab4,c5]@2 [f3,c4,f4,ab4,c5]", // Fm
  D: "[eb3,bb3,eb4,g4,bb4]@2 [eb3,bb3,eb4,g4,bb4] [eb3,bb3,eb4,g4,bb4]@2 [eb3,bb3,eb4,g4,bb4] [g3,d4,f4,b4,d5]@2 [g3,d4,f4,b4,d5] [g3,d4,f4,b4,d5]@2 [g3,d4,f4,b4,d5]", // Eb G7
  E: "[c3,g3,c4,eb4,g4,c5]@3 [c3,g3,c4,eb4,g4,c5]@3 [c3,g3,c4,eb4,g4,c5]@3 [c3,g3,c4,eb4,g4,c5]@2 [c3,g3,c4,eb4,g4,c5]", // Cm
  F: "[eb3,bb3,eb4,g4,bb4]@2 [eb3,bb3,eb4,g4,bb4] [eb3,bb3,eb4,g4,bb4]@2 [eb3,bb3,eb4,g4,bb4] [g3,d4,g4,bb4,d5]@2 [g3,d4,g4,bb4,d5] [g3,d4,g4,bb4,d5]@2 [g3,d4,g4,bb4,d5]", // Eb Gm
  G: "[f3,c4,f4,ab4,c5]@2 [f3,c4,f4,ab4,c5] [f3,c4,f4,ab4,c5]@2 [f3,c4,f4,ab4,c5] [bb3,f4,ab4,d5]@2 [bb3,f4,ab4,d5] [bb3,f4,ab4,d5]@2 [bb3,f4,ab4,d5]", // Fm Bb7
  H: "[f3,c4,f4,ab4,c5]!4", I: "[c3,g3,c4,e4,g4,c5]!4", J: "[ab3,c4,eb4,ab4,c5]!4",
  K: "g4@2 ~ g4@2 ~ eb4@2 ~ eb4@2 ~ ab4@2 ~ ab4@2 ~ f4@2 ~ f4@2 ~",
  L: "bb4@2 ~ bb4@2 ~ g4@2 ~ g4@2 ~ c5@2 ~ c5@2 ~ bb4@2 ~ bb4@2 ~",
  M: "ab4@2 ~ ab4@2 ~ c5@2 ~ c5@2 ~ bb4@2 ~ bb4@2 ~ ab4@2 ~ ab4@2 ~",
  N: "g4@2 ~ g4@2 ~ ab4@2 ~ ab4@2 ~ g4@2 ~ g4@2 ~ f4@2 ~ f4@2 ~",
  O: "g4@2 ~ g4@2 ~ ab4@2 ~ ab4@2 ~ g4@2 ~ g4@2 ~ eb4@6",
})).s("gm_acoustic_guitar_nylon").gain(0.33).pan(0.2)

// drums · kick
const kick = s("bd").struct("<~@49 [x!2]!28 ~>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~ A@8 ~ B ~ B A@8 ~ B ~ B ~@9 B ~ B A@8 ~ B ~ B ~@8 A@20 ~>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~ [~ x ~ x]!48 ~@8 [~ x ~ x]!20 ~>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@8 A B@4 ~@7 A B@4 ~@8 B@4 ~@7 A B@4 ~@29>".pickRestart({
  A: "~@11 x", B: "x!4",
})).gain(0.4)

// drums · ride bell
const ride_bell = s("rd").struct("<~@25 [~ x!3] [x!4]!7 ~@16 [~ x ~ x]!8 ~@21>").gain(0.4)

stack(bass, electric_guitar_jazz, acoustic_guitar_nylon, kick, snare, clap, hihat, ride_bell)

More by The Beatles