Strudelify
Could It Be I'm Falling in Love cover art

1973 · Spinners

Could It Be I'm Falling in Love

Spinners

KeyG majorTempo120 bpm
0:00/0:00
// Could It Be I'm Falling in Love — Spinners
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@7 A B C D E@4 F G H I J E@4 F G H I J K@2 L@2 M@2 A B C D E@4 F G H I J E@4 F G H I J K@2 L@2 M@2 A B C D E@4 F G H
  I J E@4 F G H I J K@2 L@2 M@2 A B N O K@2 L@2 K@2 L@2 P@2 A B N O Q@2 ~
>`.pickRestart({
  A: "d3 ~ d3@5 ~ d3 ~ d3@3 ~ d3 ~", B: "c3 ~ c3@3 ~@3 c3 ~ c3@3 ~ c3 ~", C: "b2 ~ b2@5 ~ b2 ~ b2@5 ~",
  D: "c3 a2 f2 f3@2 f2 g2 a2",
  E: "[a#2@3 ~ a#2@3 f2 a#2 ~ a#2 ~ d3 ~ d#3@5 ~ d#3@3 a#2 d#3 ~ d3 ~ c3 ~ a#2@5 ~ a#2@3 f2 a#2 ~ a#2 ~ d3 ~ d#3@5 ~ d#3@3 a#2 d#3 ~ d#3@2 ~@4]/4",
  F: "a2@3 ~ a2@3 e2 a2 ~ a2@2 e2 ~ a2 ~", G: "e2@4 e3@3 e2 e3 ~ e3@2 e2@2 e3 ~",
  H: "b2@3 ~ b2@3 f#2 b2 ~ b2@2 f#2@2 b2@2", I: "a2@4 a2@3 ~ a2 ~ g2@3 ~ c3@2",
  J: "~@2 c3 ~ c3@3 g2 c3 ~ c3 ~ c3 ~ a#2@2", K: "[c3@3 ~ c3@4 e2 ~ e2@3 ~ a2@5 ~ a2@3 ~ a2 ~ b2@3 ~ b2 ~]/2",
  L: "[c3@3 ~ c3@4 e2 ~ e2@4 a2@5 ~ a2@3 ~ a2 ~ b2@3 ~ b2 ~]/2",
  M: "[c3@3 ~ c3@3 ~ e2 ~ e2@3 ~ a2@5 ~ a2@3 ~ a2 ~ d3@3 ~ d3@2]/2", N: "d3 ~ d3@3 ~ d3 ~ d3 ~ d3@3 ~ c3@2",
  O: "~@2 c3 ~ g2@5 ~ g2 ~ g2 ~ g2 ~", P: "[c3@3 ~ c3@3 ~ e2 ~ e2@3 ~ a2@5 ~ d3@3 ~ d3 ~ d3@3 ~ d3@2]/2",
  Q: "[c3@3 ~ c3@4 e2 ~ e2@3 ~ a2@17 ~]/2",
})).s("gm_acoustic_bass").gain(0.36)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note(`<
  ~ A@2 B@2 C@2 D@2 E@2 F@5 G H I@2 F@5 G H I@2 A@2 B@2 C@2 D@2 E@2 F@5 G H I@2 F@5 G H I@2 A@2 B@2 C@2 D@2 E@2 F@5 G H
  I@2 F@5 G H I@2 A@2 B@2 C@2 D@2 J K A@2 B@2 A@2 B@2 C@2 D@2 J K L@2 ~
>`.pickRestart({
  A: "[[c3,g3,c4,e4]@3 ~ [c3,g3,c4,e4]@4 [e2,g3,b3,d4] ~ [e2,g3,b3,d4]@3 ~ [a2,a3,c4,e4]@5 ~ [a2,a3,c4,e4]@3 ~ [a2,a3,c4,e4] ~ [b2,g3,b3,d4]@3 ~ [b2,g3,b3,d4] ~]/2", // C Em7 Am G
  B: "[[c3,g3,c4,e4]@3 ~ [c3,c4,e4]@4 [e2,g3,b3,d4] ~ [g3,b3,d4] ~ [g3,b3,d4] ~ [a2,a3,c4,e4]@5 ~ [a2,a3,c4,e4]@4 [a3,c4,e4] ~ [b2,g3,b3,d4]@3 ~ [b2,g3,b3,d4] ~, ~@2 g3 ~@2 e2 ~@10]/2", // C Em7 G Am G
  C: "[[c3,g3,c4,e4]@3 ~ [c3,g3,c4,e4]@3 ~ [e2,g3,b3,d4] ~ [e2,g3,b3,d4]@3 ~ [a3,c4,e4]@4 a2 ~ [d2,a3,c4,e4]@11 ~, ~@14 a2@3 ~@15]/2", // C Em7 Am
  D: "[[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [g3,b3,d4]@5 ~ [g3,c4,d#4]@7 ~ [g3,c4,d#4] ~ [g3,c4,d#4] ~ [g3,c4,d#4]@3 ~ [g3,c4,d#4] ~]/2", // G Cm
  E: "[[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [g3,b3,d4]@6 [g3,c4,d#4]@7 ~ [a3,c4,d#4]@7 ~@3]/2", // G Cm Adim
  F: "[[a3,a#3,d4,f4]@3 ~ [a#2,a3,a#3,d4,f4]@3 ~ [a#2,a3,a#3,d4,f4] ~ [a#2,a3,a#3,d4,f4]@3 ~ [d#3,g3,a#3,d#4]@5 ~ [d#3,g3,a#3,d#4]@3 ~ [d#3,g3,a#3,d#4] ~ [d#3,g3,a#3,d#4]@2 ~@2 [a3,a#3,d4,f4]@5 ~ [a3,a#3,d4,f4,a4]@3 ~ [a3,a#3,d4,f4,a4] ~ [a3,a#3,d4,f4,a4]@3 ~ [d#3,g3,a#3,d#4]@5 ~ [d#3,g3,a#3,d#4]@2 ~ [d#3,g3,a#3,d#4]!2 ~ [d#3,g3,a#3,d#4]@2 ~@2 [g3,a3,c4,e4]@5 ~ [g3,a3,c4,e4]@3 ~ [g3,a3,c4,e4] ~ [g3,a3,c4,e4]@4 ~@2, ~@30 a#2@3 ~@47]/5", // A#maj7 D# A#maj7 D# Am7
  G: "[g3,b3,d4]@4 [g3,b3,d4]@3 e3 [g3,b3,d4] ~ [g3,b3,d4]@2 e3@2 [g3,b3,d4] ~, e3@3 ~@5", // G
  H: "[b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 b2 [b3,d4,f#4] ~ [b3,d4,f#4]@3 ~ [b3,d4,f#4] ~", // Bm
  I: "[[a3,c4,e4]@3 ~ [a3,c4,e4]@3 ~ [a3,c4,e4] ~ [g3,b3,d4]@3 ~ [g3,c4,e4]@5 ~ [g3,c4,e4] ~ [g3,c4,d#4]@5 ~ [g3,c4,d#4] ~@3]/2", // Am G C Cm
  J: "[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [g3,b3,d4]@5 ~ [g3,c4,d#4]@2", K: "~@2 [g3,c4,d#4] ~ [g3,b3,d4]@11 ~",
  L: "[[c3,g3,c4,e4]@3 ~ [c3,g3,c4,e4]@4 [e2,g3,b3,d4] ~ [e2,g3,b3,d4]@3 ~ [a2,a3,c4,e4]@18]/2", // C Em7 Am
})).s("gm_epiano1").gain(0.42)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@7 A B C@3 ~@23 A B D@2 E ~@7 F@5 ~@11 A B D@2 G H@2 I@2 ~@4 G H@2 I@2 ~@10 A B J K ~@10 A B J K ~@3
>`.pickRestart({
  A: "d4@4 g4@9 ~ f4@2", B: "~@2 f4 ~ d#4@10 ~@2", C: "[d4@4 g4@9 ~ d#4@7 ~ f4@14 ~@12]/3",
  D: "[d4@4 g4@9 ~ d#4@7 ~ f4@10]/2", E: "f4 ~@3",
  F: "[~@14 [a#3,d4,f4]@10 ~@2 [a#3,d4,f4] ~ [a#3,d4,f4] ~ [g3,a#3,d#4]@14 ~@2 [a#3,d4,f4]@11 ~ [a#3,d4,f4] ~ [a#3,d4,f4] ~ [g3,a#3,d#4]@15 ~@3]/5", // A# D# A# D#
  G: "~@2 [d4,d5] ~ [d4,d5]@3 ~ [d4,d5]@5 ~ [a#3,a#4]@2", // D A#
  H: "[~@2 [a#3,a#4]@2 [c4,c5]@2 ~ [c4,c5] [d4,d5] ~ [d#4,d#5]@3 ~ [f4,f5]@14 ~@2 [a#3,a#4]@2]/2", // A# C D D# F A#
  I: "[~@2 [a#3,a#4]@2 [c4,c5]@2 ~ [c4,c5] [d4,d5] ~ [d#4,d#5]@3 ~ [c4,c5]@14 ~@4]/2", J: "d4@3 ~ g4@9 ~ d#4@2",
  K: "~@2 d#4@2 d4@11 ~",
})).s("gm_synth_brass_1").gain(0.5)

// chords · vibraphone
const vibraphone = note(`<
  ~ A B A C A C D@2 E@2 F G@2 H@2 I J K@3 G@2 L@2 I J M@2 A B A C A C D@2 E@2 F G@2 N@2 I J K@3 G@2 L@2 I J M@2 A B A C
  A C D@2 E@2 F G@2 H@2 I J M@2 F G@2 H@2 I J M@2 A B A C A C ~@4 A B A C A B A C A C ~@4 A ~@2
>`.pickRestart({
  A: "d4@2 e4 ~ e4@2 d4@2 f#4@2 g4@2 a4@3 ~", B: "a4@2 b4 ~ b4@11 ~", C: "a4@2 b4 ~ b4@10 ~@2",
  D: "[[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [g3,b3,d4]@5 ~ [g3,c4,d#4]@7 ~ [g3,c4,d#4] ~ [g3,c4,d#4] ~ [g3,c4,d#4]@3 ~ [g3,c4,d#4] ~]/2", // G Cm
  E: "[[g3,b3,d4]@5 ~ [g3,b3,d4] ~ [g3,b3,d4]@6 [g3,c4,d#4]@7 ~ [a3,c4,d#4]@7 ~@3]/2", F: "~@7 a#4",
  G: "[~@2 a#4 ~ c5@3 c5 d5 ~ d#5@3 ~ f5@14 ~@2 a#4@2]/2", H: "[~@2 a#4 ~ c5@2 ~ c5 d5 ~ d#5@3 ~ [c5,e5]@13 ~@5]/2",
  I: "[b4,d5]@15 ~", J: "[d5,f#5]@7 ~",
  K: "[[c5,e5]@3 ~ [c5,e5]@3 ~ [c5,e5] ~ [b4,d5]@3 ~ [c5,e5]@7 ~ d#5@7 ~ [d5,f5,a5]@14 ~@2 a#4@2]/3", // C Bm C Dm
  L: "[~@2 a#4 ~ c5@2 ~ c5 d5 ~ d#5@3 ~ [c5,e5]@12 ~@6]/2", // C
  M: "[[c5,e5]@3 ~ [c5,e5]@3 ~ [c5,e5] ~ [b4,d5]@3 ~ [c5,e5]@7 ~ d#5@7 ~@3]/2", // C Bm C
  N: "[~@2 a#4 ~ c5@2 ~ c5 d5 ~ d#5@3 ~ [c5,e5]@8 ~@10]/2", // C
})).s("gm_vibraphone").gain(0.26)

// other · harpsichord · "HARPSICHRD"
const harpsichord = note(`<
  ~@71
  [~@14 d5 e5]
  [f#5@2 e5 f#5 ~@2 d5 e5 f#5@2 e5 f#5 ~@2 d5 e5]
  [f#5@2 e5 f#5 ~@2 d5 e5 f#5@2 e5 f#5 ~@2 b5 c6]
  [b5 ~ g5 ~ g5@2 e5@2 g5@2 a5 g5@2 ~ b5 c6]
  [b5 ~ g5 ~ g5@2 a5 ~ a#5 a5 a#5 g5@3 a#5 d6]
  ~@36
>`).s("gm_harpsichord").gain(0.53)

// drums · kick
const kick = s("bd").struct("<~ [x!2 ~@2 x!2 ~@2]!10 [x!2 ~ x!3 ~@2]!99 ~@2>").gain(0.44)

// drums · snare
const snare = s("sd").struct(`<
  [~@5 x ~@2]
  ~@10
  [~ x ~ x]!91
  [~@4 x ~@7 x!4]
  [~ x ~ x]!5
  [~@4 x ~@7 x!4]
  [~@2 x ~ x!4]
  ~@2
>`).gain(0.44)

// drums · low tom
const low_tom = s("lt").struct("<[~@14 x!2] ~@10 [~ x ~ x]!98 [~@2 x ~@4 x] ~@2>").gain(0.44)

// drums · hihat
const hihat = s("hh").struct("<~ [~ x ~ x]!10 [x!4]!99 ~@2>").gain(0.44)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@11 [~ x ~ x ~ x ~ x]!97 [~ x ~ x ~@3 x] [~ x ~ x ~ x ~@2] ~@2>").gain(0.13)

// drums · mid tom
const mid_tom = s("mt").struct("<[~@12 x!2 ~@2] ~@108 [~@3 x] ~@2>").gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<~@108 [~@5 x ~@2] [~@7 x] ~@2>").gain(0.44)

// drums · ride
const ride = s("rd").struct("<~@109 [~@7 x] ~@2>").gain(0.44)

// drums · congas
const congas = s("conga:18").struct(`<
  ~ A B A B A B A B A B C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D
  C D C D C D C D C D C D C D C D C@2 D C D C D C D C@2 D C D C D C D C D C D C D C D C D C D C D C D ~@3
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~@4 x ~@5 x ~ x!2 ~@2", C: "~@5 x ~@2", D: "~@10 x ~@2 x ~@2",
})).gain(1.4)

// drums · congas
const congas_2 = s("conga:33").struct("<~ A B A B A B A B A B@99 ~@3>".pickRestart({
  A: "~@6 x!2", B: "~@7 x",
})).gain(1.4)

stack(
  bass, epiano1, synth_brass_1, vibraphone, harpsichord, kick, snare, low_tom, hihat, hihat_soft, mid_tom, open_hat,
  ride, congas, congas_2
)

More by Spinners