Strudelify

Baby Love

Ross

KeyF♯ minorTempo139 bpm
0:00/0:00
// Baby Love — Ross
// 139 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(139/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.

// chords · piano
const piano = note(`<
  ~ A B C D ~ E F G H I E J E J E K L E F G H I E J E J E K L M N O H I E J E J E K L E F G H I E J E J E K L P@2 Q R S
  T U Q V Q V Q W X Q R S T U Q V Q V Q W X Q R S T U Q V Q V Q Y Z@5
>`.pickRestart({
  A: "[d#5,f#5,a#5] ~@3 [d#5,f#5,a#5] ~@3 [d#5,f#5,a#5] ~@3 [d#5,f#5,a#5] ~@3", // D#m
  B: "[d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~@3 [d#5,f#5,b5] ~@3", // B
  C: "[d#5,f#5,c6] ~@3 [d#5,f#5,c6] ~@3 [d#5,f#5,c6] ~@3 [f#5,a#5,c#6] ~@3", D: "[f5,g#5,c#6] ~@15",
  E: "[f5,g#5,c#6]@2 ~ c#5 [f5,g#5,c#6]@2 ~ c#5 [f5,g#5,c#6]@2 ~ c#5 [f5,g#5,c#6]@2 ~ c#5", // C#
  F: "[g#5,b5,c#6]@2 ~ c#5 [g#5,b5,c#6]@2 ~ c#5 [g#5,b5,c#6]@2 ~ c#5 [g#5,b5,c#6]@2 ~ c#5", // C#7
  G: "[g#5,a#5,d6]@2 ~ d5 [g#5,a#5,d6]@2 ~ d5 [g#5,a#5,d6]@2 ~ d5 [g#5,a#5,d6]@2 ~ d5", // A#7
  H: "[f#5,a#5,d#6]@2 ~ d#5 [f#5,a#5,d#6]@2 ~ d#5 [f#5,a#5,d#6]@2 ~ d#5 [f#5,a#5,d#6]@2 ~ d#5", // D#m
  I: "[a#5,c#6,d#6]@2 ~ d#5 [a#5,c#6,d#6]@2 ~ d#5 [a#5,c#6,d#6]@2 ~ d#5 [a#5,c#6,d#6]@2 ~ d#5", // D#7
  J: "[f#5,a#5,d#6]@2 ~ c#5 [f#5,a#5,d#6]@2 ~ c#5 [f#5,a#5,d#6]@2 ~ c#5 [f#5,a#5,d#6]@2 ~ c#5", // D#m
  K: "[f#5,a#5,c#6]@2 ~ c#5 [f#5,a#5,c#6]@2 ~ c#5 [f5,a#5,c#6]@2 ~ c#5 [f5,a#5,c#6]@2 ~ c#5", // F# A#m
  L: "[f#5,a#5,c#6]@2 ~ d#5 [f#5,a#5,c#6]@2 ~ d#5 [f#5,g#5,c6]@2 ~ c5 [f#5,g#5,c6]@2 ~ c5", // F# G#7
  M: "[f5,g#5,c#6]@2 ~ c#5 [f5,g#5,c#6]@2 ~ c#5 [f5,g#5,c#6]@2 ~ g#6 [g#5,c#6,f6]@2 ~ d#6", // C#
  N: "[g#5,b5,c#6]@2 ~ c#5 [g#5,b5,c#6]@2 ~ c#5 [g#5,b5,c#6]@2 ~ g#6 [g#5,c#6,f6]@2 ~ d#6", // C#7 C#
  O: "[g#5,a#5,d6]@2 ~ d5 [g#5,a#5,d6]@2 ~ d5 [g#5,a#5,d6]@2 ~ g#6 [g#5,a#5,f6]@2 ~ d6", // A#7
  P: "[f#5,a5,d6] ~@3 [f#5,a5,d6] ~@3 [f#5,a5,d6] ~@3 [f#5,a5,d6] ~@3", // D
  Q: "[f#5,a5,d6]@2 ~ d5 [f#5,a5,d6]@2 ~ d5 [f#5,a5,d6]@2 ~ d5 [f#5,a5,d6]@2 ~ d5", // D
  R: "[a5,c6,d6]@2 ~ d5 [a5,c6,d6]@2 ~ d5 [a5,c6,d6]@2 ~ d5 [a5,c6,d6]@2 ~ d5", // D7
  S: "[a5,b5,d#6]@2 ~ d#5 [a5,b5,d#6]@2 ~ d#5 [a5,b5,d#6]@2 ~ d#5 [a5,b5,d#6]@2 ~ d#5", // B7
  T: "[g5,b5,e6]@2 ~ e5 [g5,b5,e6]@2 ~ e5 [g5,b5,e6]@2 ~ e5 [g5,b5,e6]@2 ~ e5", // Em
  U: "[b5,d6,e6]@2 ~ e5 [b5,d6,e6]@2 ~ e5 [b5,d6,e6]@2 ~ e5 [b5,d6,e6]@2 ~ e5", // E7
  V: "[g5,b5,e6]@2 ~ d5 [g5,b5,e6]@2 ~ d5 [g5,b5,e6]@2 ~ d5 [g5,b5,e6]@2 ~ d5", // Em
  W: "[g5,b5,d6]@2 ~ d5 [g5,b5,d6]@2 ~ d5 [f#5,b5,d6]@2 ~ d5 [f#5,b5,d6]@2 ~ d5", // G Bm
  X: "[g5,b5,d6]@2 ~ e5 [g5,b5,d6]@2 ~ e5 [g5,a5,c#6]@2 ~ c#5 [g5,a5,c#6]@2 ~ c#5", // G A7
  Y: "[g5,b5,d6]@2 ~ d5 [g5,b5,d6]@2 ~ d5 [f#5,b5,d6]@3 d5 [f#5,b5,d6]@3 d5", // G Bm
  Z: "[~ [g5,b5,d6]@3 e5 [g5,b5,d6]@3 e5 ~ [g5,a5,c#6]@3 c#5 ~ [g5,a5,c#6]@3 ~ c#5 ~@2 a5@50 ~@8, ~@20 a4@51 ~@9, ~@21 [d5,f#5]@51 ~@8]/5", // G A7 D
})).s("gm_piano").gain(0.35)

// bass · acoustic bass
const bass = note(`<
  ~@6 A B C D E F G F H F I J A B C D E K G F H F I L M N O P Q R S T H F I U A B C D E K G F H F I L V W X Y Z AA AB AC
  AD AC AE AC AF AG X Y Z AA AB AH AD AC AE AC AF AI X Y Z AA AB AH AD AC AE AC AJ AK@5
>`.pickRestart({
  A: "c#2@4 c#2@3 g#1 c#2@4 c2@2 ~ c2", B: "b1@4 b1@3 g#1 b1@4 b1@3 b1", C: "a#1@4 a#1@2 ~ f1 a#1@4 a#1@2 ~ a#1",
  D: "d#2@4 d#2@2 ~ a#1 d#2@4 d#2@2 ~ a#1", E: "d#2@4 d#2@2 ~ a#1 d#2@4 d#2@2 ~ d#2",
  F: "c#2@4 c#2@2 ~ g#1 c#2@4 c#2@2 ~ c#2", G: "f#2@4 f#2@2 ~ c#2 f#2@4 f#2@2 ~ f#2",
  H: "f#2@4 f#2@2 ~ c#2 f#2@4 f#2@2 ~ c#2", I: "f#2@4 f#2@3 c#2 f2@4 f2@2 ~ c#2",
  J: "d#2@4 d#2@2 ~ d#2 g#1@4 g#1@2 ~ c2", K: "c#2@4 c#2@2 ~ g#1 c#2@4 f2@4", L: "d#2@4 d#2@2 ~ d#2 g#1@4 c2@4",
  M: "c#2@4 c#2@2 ~ c#2 g#1@4 c#2@2 ~ c#2", N: "b1@4 b1@2 ~ b1 f#1@4 f1@2 ~ f1",
  O: "a#1@4 a#1@2 ~ a#1 a#1@4 a#1@2 ~ a#1", P: "d#2@4 d#2@3 a#1 d#2@4 d#2@2 ~ a#1",
  Q: "d#2@4 d#2@3 a#1 d#2@4 a#1@2 ~ a#1", R: "c#2@4 c#2@2 ~ g#1 c#2@4 f2@2 ~ f2",
  S: "f#2@4 f#2@2 ~ f#2 f#2@4 f#2@2 ~ f#2", T: "c#2@4 c#2@2 ~ c#2 c#2@4 f2@2 ~ f2", U: "d#2@4 d#2@3 a#1 g#1@4 c2@4",
  V: "d2@6 ~ d3 d3@8", W: "d3@6 ~ d3 d3@4 d3@4", X: "d2@4 d2@3 a1 d2@4 c#2@2 ~ c#2", Y: "c2@4 c2@3 a1 c2@4 c2@3 c2",
  Z: "b1@4 b1@2 ~ f#1 b1@4 b1@2 ~ b1", AA: "e2@4 e2@2 ~ b1 e2@4 e2@2 ~ b1", AB: "e2@4 e2@2 ~ b1 e2@4 e2@2 ~ e2",
  AC: "d2@4 d2@2 ~ a1 d2@4 d2@2 ~ d2", AD: "g2@4 g2@2 ~ d2 g2@4 g2@2 ~ g2", AE: "g2@4 g2@2 ~ d2 g2@4 g2@2 ~ d2",
  AF: "g2@4 g2@3 d2 f#2@4 f#2@2 ~ d2", AG: "e2@4 e2@2 ~ e2 a1@4 a1@2 ~ c#2", AH: "d2@4 d2@2 ~ a1 d2@4 f#2@4",
  AI: "e2@4 e2@2 ~ e2 a1@4 c#2@4", AJ: "g2@4 g2@3 d2 f#2@4 f#2@3 d2", AK: "[~ e2@4 e2@3 e2 ~ a1@5 c#2@5 ~ d2@52 ~@7]/5",
})).s("gm_acoustic_bass").gain(0.45)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@18 A B C D E A E A E A F G A B C D E A E A E A F G A B C D E A E A E A F G H@2 I J K L M I M I M I N O I J K L M I M
  I M I N O I J K L M I M I M I N P@5
>`.pickRestart({
  A: "~@4 [g#3,c#4,f4] ~@7 [g#3,c#4,f4] ~@3", B: "~@4 [g#3,b3,f4] ~@7 [g#3,b3,f4] ~@3",
  C: "~@4 [g#3,d4,f4] ~@7 [g#3,d4,f4] ~@3", D: "~@4 [a#3,d#4,f#4] ~@7 [a#3,d#4,f#4] ~@3",
  E: "~@4 [a#3,c#4,f#4] ~@7 [a#3,c#4,f#4] ~@3", F: "~@4 [a#3,c#4,f#4] ~@7 [g#3,c#4,f4] ~@3",
  G: "~@4 [a#3,c#4,f#4] ~@7 [g#3,c4,f#4] ~@3", H: "[f#3,d4,f#4,a4,d5]/2", I: "~@4 [a3,d4,f#4] ~@7 [a3,d4,f#4] ~@3",
  J: "~@4 [a3,c4,f#4] ~@7 [a3,c4,f#4] ~@3", K: "~@4 [a3,d#4,f#4] ~@7 [a3,d#4,f#4] ~@3",
  L: "~@4 [b3,e4,g4] ~@7 [b3,e4,g4] ~@3", M: "~@4 [b3,d4,g4] ~@7 [b3,d4,g4] ~@3",
  N: "~@4 [b3,d4,g4] ~@7 [a3,d4,f#4] ~@3", O: "~@4 [b3,d4,g4] ~@7 [a3,c#4,g4] ~@3",
  P: "[~@5 [b3,d4,g4] ~@9 [a3,c#4,g4]@2 ~@5 b4@44 ~@14, ~@19 b3@44 ~@17, ~@5 d4@11 ~@4, ~@21 f#4@44 ~@15]/5", // G A7
})).s("gm_electric_guitar_clean").gain(0.35)

// other · vibraphone
const vibraphone = note(`<
  ~ A B C D ~ E@3 F G H G H G H I J E@3 F G H G H G H I J E@3 F G H G H G H I J E@3 F G H G H G H I J ~@2 K@3 L M N M N
  M N O P K@3 L M N M N M N O P K@3 L M N M N M N O Q@5
>`.pickRestart({
  A: "d#4@7 ~", B: "b3@7 ~", C: "g#3@5 ~ f#3 ~", D: "g#3 ~@7", E: "f5", F: "f5 d#5", G: "d#5", H: "c#5", I: "c#5!2",
  J: "c#5 d#5", K: "f#5", L: "f#5 e5", M: "e5", N: "d5", O: "d5!2", P: "d5 e5", Q: "[~ d5@9 e5@10 ~ [f#5,b5]@59]/5",
})).s("gm_vibraphone").gain(0.35)

// chords · vibraphone · D#5 B Cm A#m C#5
const vibraphone_2 = note("<~ [[a#4,d#5]@7 ~] [[b4,d#5]@7 ~] [[c5,d#5]@5 ~ [a#4,c#5] ~] [[g#4,c#5] ~@7] ~@91>")
  .s("gm_vibraphone").gain(0.3)

// other · baritone sax
const baritone_sax = note(`<
  ~@30 A@2 B C D E F E F E G@2 H ~@11 I@2 ~@4 J K L K L K M@2 N ~@3 J K L K L K M@2 N ~@3 J K L K L K M O@5
>`.pickRestart({
  A: "a#3@2 ~ g#3!2 ~@6 g#3 a#3@2 ~ c#4", B: "a#3@2 ~@2 a#3@2 ~ g#3 a#3@2 ~ g#3 a#3 f3 ~ c#3",
  C: "d#3@2 ~ a#2@2 f#2@2 ~ f2@2 d#2@5 ~", D: "~@3 d#3@5 f3@4 g#3@2 ~@2", E: "f3 ~@3 f3@2 ~ d#3 f3@2 ~ d#3 c#3 ~@3",
  F: "~@2 d#3@2 f3@2 g#3 ~", G: "a#3@4 g#3 ~@3 a#3@4 g#3 ~@3", H: "a#3 ~@2 g#3!2 ~@11", I: "d2/2",
  J: "~@3 e3@5 f#3@4 a3@2 ~@2", K: "f#3 ~@3 f#3@2 ~ e3 f#3@2 ~ e3 d3 ~@3", L: "~@2 e3@2 f#3@2 a3 ~",
  M: "b3@4 a3 ~@3 b3@4 a3 ~@3", N: "b3 ~@2 a3!2 ~@11", O: "[~ b3@4 a3 ~@4 b3@5 a3@2 ~ d3 a2 f#2 d2@44 ~@15]/5",
})).s("gm_baritone_sax").gain(0.64)

// other · alto sax
const alto_sax = note(`<
  ~@34 A B C B C B D@2 E ~@11 F@2 ~@4 G H I H I H J@2 K ~@3 G H I H I H J@2 K ~@3 G H I H I H J L@2 ~@3
>`.pickRestart({
  A: "~@3 d#3@5 f3@4 g#3@2 ~@2", B: "f3 ~@3 f3@2 ~ d#3 f3@2 ~ d#3 c#3 ~@3", C: "~@2 d#3@2 f3@2 g#3 ~",
  D: "a#3@4 g#3 ~@3 a#3@4 g#3 ~@3", E: "a#3 ~@2 g#3!2 ~@11", F: "d3/2", G: "~@3 e3@5 f#3@4 a3@2 ~@2",
  H: "f#3 ~@3 f#3@2 ~ e3 f#3@2 ~ e3 d3 ~@3", I: "~@2 e3@2 f#3@2 a3 ~", J: "b3@4 a3 ~@3 b3@4 a3 ~@3",
  K: "b3 ~@2 a3!2 ~@11", L: "[~ b3@4 a3 ~@4 b3@5 a3@2 ~@15]/2",
})).s("gm_alto_sax").gain(0.49)

// other · timpani
const timpani = note("<A B@2 C D ~@48 E F G ~@40>".pickRestart({
  A: "~@15 c#3", B: "c#3 ~@6 c#3!2 ~@6 c#3", C: "c#3 ~@6 c#3!2 ~@7", D: "c#3 ~@15", E: "~@15 d3",
  F: "d3 ~@6 d3!2 ~@6 d3", G: "d3 ~@15",
})).s("gm_timpani").gain(0.35)

// drums · kick
const kick = s("bd").struct("<A B@2 C D ~ E@48 D ~ E@35 F G ~@2 H>".pickRestart({
  A: "~@15 x", B: "x ~@6 x!2 ~@6 x", C: "x ~@6 x!2 ~@7", D: "x", E: "x!2", F: "~ x ~@8 x ~@5", G: "~@5 x ~@10",
  H: "~@3 x ~@4",
})).gain(0.5)

// drums · rim
const rim = s("rim").struct("<~ [x!4]!90 [~ x ~@3 x ~@4 x ~@4 x] [~@5 x ~@10] ~@3>").gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@4 A B C@11 D C@7 E C@3 D C@11 D C@11 D A F C@11 D C@11 D C@11 G H ~@3>".pickRestart({
  A: "x", B: "~@11 x!3 ~ x", C: "~ x ~ x", D: "~@4 x ~@6 x!3 ~ x", E: "~@4 x ~@6 x!2 ~@3", F: "~@7 x!3 ~ x!3 ~ x",
  G: "~@5 x ~@7 x!3", H: "~ x ~ x ~ x ~@10",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~ [x!4]!90 [~ x ~@3 x ~@4 x ~@4 x] [~@5 x ~@10] ~@3>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@6
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!48
  x
  ~
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!35
  [~ x ~@2 x!2 ~@2 x ~ x ~@2 x ~ x]
  [~@3 x ~ x ~@10]
  ~@3
>`).gain(0.35)

// drums · low tom
const low_tom = s("lt").struct("<~@95 [~@5 x ~@10]>").gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@95 [~ x ~@2]>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<A B@2 C D ~@87 E F G ~>".pickRestart({
  A: "~@15 x", B: "x ~@6 x!2 ~@6 x", C: "x ~@6 x!2 ~@7", D: "x", E: "~@5 x!11", F: "x!16", G: "x!6 ~@10",
})).gain(0.15)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@94 [~@6 x!10] [x!6 ~@10]>").gain(0.05)

// drums · high tom
const high_tom = s("ht").struct("<~@95 [~@3 x ~@12]>").gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct("<~@6 [~ x ~ x]!60 ~@30>").gain(0.3)

stack(
  piano, bass, electric_guitar_clean, vibraphone, vibraphone_2, baritone_sax, alto_sax, timpani, kick, rim, snare, clap,
  hihat, low_tom, mid_tom, crash, crash_soft, high_tom, tambourine
)

More by Ross