Strudelify
Sweet Dreams cover art

Sweet Dreams

Sweet Dreams

La Bouche

KeyB minorTempo134 bpm
0:00/0:00
// Sweet Dreams — La Bouche
// 134 bpm, 4/4, key B minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 "A.PIANO 2" piano (copy of ch 6 "A.PIANO 3" piano, 0.333 beats late)
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(134/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 · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B C@2 A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A@5 B A B A B A B A B A B A B A B A B A B D
>`.pickRestart({
  A: "b1@2 b2!2 b1@2 b2!2 b1@2 b2!2 b1@2 b2!2", B: "g1@2 g2!2 g1@2 g2!2 a1@2 a2!2 a1@2 a2!2",
  C: "b1 b2 b1 b2 b1 b2 b1 b2", D: "b1 ~@7",
})).s("gm_synth_bass_1").gain(0.55)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note("<~@4 A@4 B@8 ~@16 C@10 D@2 C@4 ~@16 C@8 ~@8 C@16 E>".pickRestart({
  A: "[a4@3 b4 b3@2 [a3,c#4,e4]@2, [d4,f#4]@3 ~]/2", // A D
  B: "[a5 d5 a5 d5 a5 d5 b5 d5 f#5 b4 f#5 b4 e5 b4 e5 b4, [d4,f#4]@3 ~, a4@3 b4 b3@2 [a3,c#4,e4]@2]/2", // D A
  C: "[a5 d5 a5 d5 a5 d6 b5 d5 f#5 b4 f#5 b4 e5 b4 e5 b4, [d4,f#4]@3 ~, a4@3 b4 b3@2 [a3,c#4,e4]@2]/2", // D A
  D: "[[f#4,a4]@22 a4 f#4 e4@2 ~@6, d4]/2", E: "b5 ~@7",
})).s("gm_synth_strings_1").gain(0.22).pan(0.6)

// chords · pad warm · "WARM PAD"
const pad_warm = note(`<
  ~@16 A B A B A B A B A B A B A B A B ~@16 A B A B A B A B A B A B A B A B ~@8 C@4 A B A B ~@17
>`.pickRestart({
  A: "[b3,d4,f#4]", B: "[g3,b3,d4] [a3,c#4,e4]", C: "[b3,d4,f#4]/4",
})).s("gm_pad_warm").gain(0.11).pan(0.4)

// other · piano · "A.PIANO 3"
const piano = note(`<
  ~@4 A B A B A B A B A B A B ~@16 A B A B A B A B A B ~ C A B A B ~@16 A B A B A B A B ~@8 A B A B A B A B A B A B A B
  A B D
>`.pickRestart({
  A: "a4 d4 a4 d4 a4 d4 b4 d4", B: "f#4 b3 f#4 b3 e4 b3 e4 b3", C: "~@6 a4 f#4 e4@5 ~@3", D: "b4 ~@7",
})).s("gm_piano").gain(0.33).pan(0.7)

// bass · synth bass 1 · "SYN BASS 1"
const bass_2 = note(`<
  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 E F E F E F E F E F E F C D C D C D C D C D C
  D C D C D E F E F E F E G A H A H A B A B E F E F E F E F E F E F E F E F I
>`.pickRestart({
  A: "[b2,b3] ~ [b2,b3] ~ [b3,b4]@2 ~ [b3,b4] [b2,b3] ~ [b2,b3] ~ [b3,b4]@2 ~ [b3,b4]", // B
  B: "[g2,g3] ~ [g2,g3] ~ [g3,g4]@2 ~ [g3,g4] [a2,a3] ~ [a2,a3] ~ [a3,a4]@2 [a2,a3] [a3,a4]", // G A
  C: "b2 ~ b2 ~ b3@2 ~ b3 b2 ~ b2 ~ b3@2 ~ b3", D: "g2 ~ g2 ~ g3@2 ~ g3 a2 ~ a2 ~ a3@2 a2 a3",
  E: "b2 ~ [b2,f#4,b4] [f#4,b4] b3@2 [f#4,b4] [b3,f#4,b4] b2 ~ [b2,f#4,b4] [f#4,b4] b3@2 [f#4,b4] [b3,f#4,b4]", // B5
  F: "b2 ~ [b2,f#4,b4] [f#4,b4] b3@2 [f#4,b4] [b3,f#4,b4] b2 ~ [b2,f#4,b4] [f#4,b4] b3@2 [b2,f#4,b4] [b3,f#4,b4]", // B5
  G: "[g2,g3] ~ [g2,g3] ~ [g3,g4]@2 ~ [g3,g4] [a2,a3] ~ [a2,a3] ~ [a3,a4]@2 ~ [a3,a4]", // G A
  H: "[b2,b3] ~ [b2,b3] ~ [b3,b4]@2 ~ [b3,b4] [b2,b3] ~ [b2,b3] ~ [b3,b4]@2 [b2,b3] [b3,b4]", I: "b2 ~@15",
})).s("gm_synth_bass_1").gain(0.32).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A@3 B A@3 B A@3 B A@3 C A@3 B A@2 D E A@3 B A@3 B A@3 ~ A@3 B A@3 B A@3 C A@3 B A@2 D E A@3 B A@3 ~ A@3 B A@2 D E
  A@3 B A@3 ~ A@3 B A@3 F ~
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x!3 ~", D: "x ~@3 x ~@3 x ~@3 x ~@2 x", E: "x ~ x ~ x!2 ~ x!2 ~@7", F: "x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A@15 B A@7 ~ A@9 C D@2 A@11 B A@7 ~ A@7 ~ A@7 B A@5 C D@2 E A@4 C D@2 F
>`.pickRestart({
  A: "~ x!2 ~@2 x!2 ~", B: "~ x!2 ~@5", C: "~@2 x ~ x ~@5 x ~ x ~@2 x", D: "x!16", E: "x!3 ~@2 x!2 ~", F: "x",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@48 A@7 B A@7 ~ A@7 ~@5 A@3 B ~@17>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@8 A@23 B A@11 C A@19 B A@7 ~ A@15 C A@7 C ~>".pickRestart({
  A: "x ~ x!3 ~ x!3 ~ x!3 ~ x!2", B: "x ~ x!3 ~ x!3 ~@7", C: "x",
})).gain(0.4)

// drums · china
const china = s("cr").struct("<~@32 A ~@3 A ~@6 B ~@4 A ~@15 A ~@3 A ~@3 A ~@7 A ~@6 C A ~@6 C A>".pickRestart({
  A: "x", B: "~@15 x", C: "~@13 x!3",
})).gain(0.32)

stack(bass, synth_strings_1, pad_warm, piano, bass_2, kick, snare, clap, pedal_hat, china)

More by La Bouche