Strudelify

Let's Talk About Love

Celine Dion

KeyB♭ majorTempo68 bpm
0:00/0:00
// Let's Talk About Love — Celine Dion
// 68 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 23, 4/4 at bar 23) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 2 "Synthesizer Bass" named as a bass, played on synth bass 1 (its piano patch is not one)
// note: Full arrangement: all 43 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(68/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.

// bass · synth bass 1 · "Synthesizer Bass"
const bass = note(`<
  A B C D E F D G H I A B C D E F D G H J K L M N O P Q R S N T U N V W X Y Z W AA AB AC@2
>`.pickRestart({
  A: "bb3 d4 f4 d4 a3 d4 f4 d4", B: "g3 bb3 d4 bb3 f3 bb3 d4 bb3", C: "eb3 g3 bb3 g3 d3 g3 bb3 g3",
  D: "c3 eb3 g3 eb3 bb2 eb3 g3 eb3", E: "f3 a3 c4 a3 eb3 g3 bb3 g3", F: "d3 f3 bb3 f3 eb3 g3 bb3 g3",
  G: "f2@7 ~ g2@7 ~", H: "bb2@5 ~ bb2@2 a2@5 ~ a2@2", I: "g2@5 ~ g2@2 eb3@3 ~ f3@3 ~", J: "g2@5 ~ g2@2 f2@7 ~",
  K: "c2@5 ~ c2@2 bb1@7 ~", L: "f2@5 ~ f2@2 f2@3 ~ f2@3 ~", M: "bb2@3 ~ bb2@2 bb2@2 f2@5 ~ f2@2",
  N: "eb2@5 ~ eb2@2 bb2@5 ~ bb2@2", O: "a2@5 ~ a2@2 g2@5 ~ g2@2", P: "f2@5 ~ f2@2 eb2@5 ~ eb2@2",
  Q: "d3@5 ~ d3@2 c3@5 ~ c3@2", R: "bb2@5 ~ bb2@2 ab2@5 ~ ab2@2", S: "g2@5 ~ g2@2 f2@5 ~ f2@2",
  T: "ab2@5 ~ ab2@2 g2@7 ~", U: "ab2@5 ~ ab2@2 f2@5 ~ f2@2", V: "bb2@3 ~@5 [eb3,g3]@5 ~ [eb3,g3]@2",
  W: "d3@7 ~ c3@5 ~ c3@2", X: "bb3@7 ~ [f3,ab3]@5 ~ [f3,ab3]@2", Y: "eb3@7 ~ bb2@5 ~ bb2@2",
  Z: "bb2@7 ~ [eb3,g3]@5 ~ [eb3,g3]@2", AA: "bb2@7 ~ f2@5 ~ f2@2", AB: "eb2@7 ~ bb2@5 ~ bb2@2",
  AC: "[bb2@7 ~ eb2@15 ~@9]/2",
})).s("gm_synth_bass_1").gain(0.72)

// chords · synth strings 1 · "Synthesizer Strings"
const synth_strings_1 = note(`<
  A B C D E F D G H I A B C D E F D G J K L M N O P Q R S T U V W X@2 Y Z AA@2 AB AC AD@3
>`.pickRestart({
  A: "bb3@7 ~ a3@7 ~", B: "g3@7 ~ f3@7 ~", C: "eb3@7 ~ d3@7 ~", D: "c3@7 ~ bb2@7 ~", E: "f3@7 ~ eb3@7 ~",
  F: "d3@7 ~ eb3@7 ~", G: "f3@7 ~ a3@7 ~", H: "d3@7 ~ a3@7 ~", I: "g2@7 ~ eb3@3 ~ f3@3 ~",
  J: "[f4,bb4,d5]@7 ~ [a3,f4,bb4,d5]@7 ~", K: "[d4,g4,bb4]@7 ~ [f3,d4,g4,bb4]@7 ~",
  L: "[c4,eb4,g4]@7 ~ [bb3,c4,eb4,g4]@7 ~", M: "[f4,bb4,c5]@7 ~ [f4,a4,c5]@7 ~", N: "[d4,f4,bb4]@7 ~ f5@7 ~",
  O: "eb5@7 ~ bb5@7 ~", P: "a5@7 ~ g5@7 ~", Q: "f5@7 ~ eb5@7 ~", R: "d5@7 ~ c5@7 ~", S: "bb4@7 ~ ab4@7 ~",
  T: "g4@7 ~ f4@7 ~", U: "eb4@7 ~ bb4@7 ~", V: "ab4@7 ~ eb4@7 ~", W: "ab4@7 ~ f4@7 ~",
  X: "[eb4@7 ~ bb4@15 ~ [bb3,eb4,g4]@7 ~]/2", Y: "[bb3,d4,eb4,g4]@7 ~ [c4,eb4,g4]@7 ~",
  Z: "[bb3,c4,eb4,g4]@7 ~ [f4,ab4,c5]@7 ~", AA: "[[eb4,f4,ab4,c5]@7 ~ [d4,f4,g4,bb4]@15 ~ [bb4,eb5,g5]@7 ~]/2",
  AB: "[bb4,d5,eb5,g5]@7 ~ [c5,eb5,g5]@7 ~", AC: "[bb4,c5,eb5,g5]@7 ~ [ab4,c5,f5]@7 ~",
  AD: "[[ab4,c5,eb5,f5]@7 ~ [bb4,d5,f5]@15 ~ [g4,bb4,eb5]@15 ~@9]/3", // Fm7 Bb Eb
})).s("gm_synth_strings_1").gain(0.72)

stack(bass, synth_strings_1)

More by Celine Dion