Strudelify

Bellisima

DJ Quicksilver

KeyE♭ majorTempo137 bpm
0:00/0:00
// Bellisima — DJ Quicksilver
// 137 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 131 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(137/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 · electric bass finger · "FINGERBAS"
const bass = note(`<
  ~@16 A@16 B@4 C@4 D@4 E@2 F G ~ H I H J K L K M N O P@2 Q@2 R S H I H J K L K M N O P@2 Q@2 R S A@16 H I H J K L K M N
  O P@2 Q@2 R S B@4 C@4 D@4 T@3 U V ~
>`.pickRestart({
  A: "eb1 eb2 ~ eb2 ~ eb2 eb1 eb2", B: "[eb1@61 ~@3]/4", C: "[c1@15 ~]/4", D: "[ab1@31 ~]/2", E: "eb1@15 ~",
  F: "eb1@8 eb1@7 ~", G: "eb1@3 ~ eb1@3 ~ eb1@3 ~ eb1@3 ~", H: "eb1 ~ eb2@2 eb1 ~ eb2@2 eb1 ~ eb2@2 eb1 ~ eb2@2",
  I: "eb1 ~ eb2@2 eb1 ~ eb2@2 eb1 ~ eb2@2 eb1@2 eb2@2", J: "eb1 ~ eb2@2 eb1 ~ eb2@2 eb1@2 eb2@2 eb1 ~ eb2@2",
  K: "c1 c2 c1 c2 c1 c2 c1 c2", L: "c1@2 c2@2 c1@2 c2@2 c1 ~ c2@2 c1@2 c2@2",
  M: "c1@2 c2@2 c1@2 c2@2 c1 ~ c2@2 c1 ~ c2@2", N: "ab1@2 ab2@2 ab1@2 ab2@2 ab1@2 ab2@2 ab1 ~ ab2@2",
  O: "ab1@2 ab2@2 ab1@2 ab2@2 ab1 ~ ab2@2 ab1 ~ ab2@2", P: "ab1 ~ ab2@2 ab1 ~ ab2@2 ab1 ~ ab2@2 ab1 ~ ab2@2",
  Q: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", R: "eb1@2 eb2@2 eb1 ~ eb2@2 eb1 ~ eb2@2 eb1 ~ eb2@2",
  S: "eb1@2 eb2@2 eb1 ~ eb2@2 eb1@2 eb2@2 eb1@2 eb2 ~", T: "eb1/3", U: "eb1@3 ~ eb1@4 eb1@3 ~ eb1@3 ~", V: "eb1@3 ~@13",
})).s("gm_electric_bass_finger").gain(0.47)

// bass · electric bass finger · "FINGERBAS" · soft notes
const bass_soft = note("<~@16 [~@2 eb1 ~ eb1 ~@3]!16 ~@49 [~@2 eb1 ~ eb1 ~@3]!16 ~@34>")
  .s("gm_electric_bass_finger").gain(0.32)

// other · synth strings 1 · "SYNSTRING"
const synth_strings_1 = note(`<
  ~@65 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 ~@18
>`.pickRestart({
  A: "[g5,g6]@3 [eb5,eb6]@3 [ab5,ab6]@2", B: "[f5,f6]@3 [bb5,bb6]@2 [ab5,ab6] [c6,c7] [ab5,ab6]",
})).s("gm_synth_strings_1").gain(0.35)

// chords · lead 4 chiff · "CHIFFERLE"
const lead_4_chiff = note(`<
  ~@24 A B A B A B A B C@4 D E D E F E D E G H G H ~ G H G H D E D E F E D E G H G H G H G H D E D E F E D E G H G H ~@2
  I ~@2 J ~ I ~ K ~ J ~ I ~ J G H G H D E D E F E D E G H G H A B A B A B A B A B A B A B A B ~@2
>`.pickRestart({
  A: "~@2 [bb3,eb4,g4]!2 ~@2 [bb3,eb4,g4]!2 ~@2 [bb3,eb4,g4]!2 ~@2 [bb3,eb4,g4]!2", // Eb
  B: "~@2 [bb3,eb4,g4]!2 ~@2 [bb3,eb4,g4]!2 ~@2 [bb3,eb4,f4]!2 ~@2 [bb3,eb4,f4]!2", // Eb Bbsus4
  C: "~@2 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~", // Eb
  D: "g5 ~ [c4,eb4,g4,g5] ~ g5 ~ [c4,eb4,g4,eb5] ~ eb5 ~ [c4,eb4,g4,eb5] ~ ab5 ~ [c4,eb4,g4,ab5] ~", // Cm Abmaj7
  E: "f5 ~ [c4,eb4,g4,f5] ~ f5 ~ [c4,eb4,g4,bb5] ~ bb5 ~ [c4,eb4,g4,ab5] ~ c6 ~ [c4,eb4,g4,ab5] ~", // Cm Cm7 Abmaj7
  F: "g5 ~ [bb3,c4,eb4,g4,g5] ~ g5 ~ [bb3,c4,eb4,g4,eb5] ~ eb5 ~ [bb3,c4,eb4,g4,eb5] ~ ab5 ~ [c4,eb4,g4,ab5] ~", // Cm7 Abmaj7
  G: "g5 ~ [bb3,eb4,g4,g5] ~ g5 ~ [bb3,eb4,g4,eb5] ~ eb5 ~ [bb3,eb4,g4,eb5] ~ ab5 ~ [bb3,eb4,g4,ab5] ~", // Eb
  H: "f5 ~ [bb3,eb4,g4,f5] ~ f5 ~ [bb3,eb4,g4,bb5] ~ bb5 ~ [bb3,eb4,g4,ab5] ~ c6 ~ [bb3,eb4,g4,ab5] ~", // Eb
  I: "~@5 bb4 ab4 g4 ab4 g4 ab4 bb4 ~@4", J: "~@8 ab4 g4 ab4 bb4 ~ bb4 ab4 g4", K: "~@13 bb4 ab4 g4",
})).s("gm_lead_4_chiff").gain(0.24).pan(0.3)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note("<~@48 [~@3 eb4@4 ~] ~@15 [~@3 eb4@4 ~] ~@47 [~@3 eb4@4 ~] ~@18>")
  .s("gm_lead_2_sawtooth").gain(0.48).pan(0.6)

// chords · pad choir · "SPACEVOIC"
const pad_choir = note(`<
  A@4 B@4 C@2 D@2 E@4 ~@16 A@4 B@4 C@2 D@2 E@4 ~ A@4 B@4 C@2 D@2 E@4 A@4 B@4 C@2 D@2 E@4 ~@16 A@4 B@4 C@2 D@2 E@4 A@4
  B@4 C@2 D@2 E@4 ~@2
>`.pickRestart({
  A: "[[eb2,bb2,bb3,eb4,g4]@63 ~]/4", B: "[[c2,c3,g3,c4,eb4,g4]@63 ~]/4", C: "[ab2,ab3,c4,eb4,g4]/2",
  D: "[[ab2,bb3,eb4], c4@15 ~]/2", E: "[[eb2,g3,bb3,eb4,g4]@63 ~]/4",
})).s("gm_pad_choir").gain(0.25).pan(0.4)

// bass · synth bass 2 · "SYNTHBAS2"
const bass_2 = note("<~@24 [eb3!16]!24 ~ [eb3!16]!32 ~@8 [eb3!16]!40 ~@2>").s("gm_synth_bass_2").gain(0.3).pan(0.4)

// chords · epiano2 · "ELECPIANO"
const epiano2 = note("<~@4 A@3 ~ B@2 C@2 D ~@110 E@2 F ~@5>".pickRestart({
  A: "[c4,eb4,g4]/3", B: "[[c4,eb4,g4]@13 ~@3]/2", C: "[[f4,bb4,c5]@31 ~]/2", D: "[g4,bb4]", E: "[[bb3,c4,eb4]@31 ~]/2",
  F: "[bb3,eb4,g4]", // Eb
})).s("gm_epiano2").gain(0.31).pan(0.7)

// other · taiko drum · "TAIKO"
const taiko_drum = note(`<
  ~@19 A ~@12 B ~@3 C@2 ~@2 B ~ D@2 E@2 F G ~@45 H ~@19 B ~@3 C@2 ~@2 B ~ D@2 E ~@2 G I@2
>`.pickRestart({
  A: "eb3 ~@15", B: "bb3", C: "[bb3@21 ~@11]/2", D: "[bb3@5 ~@3]/2", E: "bb3@3 ~", F: "bb3 ~@7 bb3 ~@7",
  G: "bb3 ~@3 bb3 ~@3 bb3 ~@3 bb3 ~@3", H: "bb3@9 ~@7", I: "[bb3@19 ~@13]/2",
})).s("gm_taiko_drum").gain(0.44)

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

// drums · clap
const clap = s("cp").struct("<~@16 A@7 B A@8 ~@11 C D@4 ~ A@28 D@4 A@7 B A@4 E@4 A@12 D@4 ~@18>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@5 x!11", D: "x!16", E: "x!4",
})).gain(0.35)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@42 [x!16] [x!5 ~@11] ~@87>").gain(0.25)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@16 A@4 B@12 ~@17 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 A@4 B@12 C D C D C D C D C D C D C
  D C D ~@18
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "x!3 ~ x!3 ~ x!3 ~ x!3 ~", C: "x ~ x!3 ~ x!7 ~ x!2", D: "x ~ x!3 ~ x!6 ~@2 x!2",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@50 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@18
>`.pickRestart({
  A: "~@3 x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A@2 B ~@15 B ~@3 B ~@3 B ~ B ~ B@2 C A ~ B ~@7 B ~@7 B ~@7 B ~@6 A B ~@7 B ~@3 B ~ C A B ~@7 B ~@6 A B ~@3 B ~@3
  B ~ B ~ B ~@2 A B ~
>`.pickRestart({
  A: "x!4", B: "x", C: "x!2",
})).gain(0.45)

// drums · ride bell
const ride_bell = s("rd").struct("<~@44 x ~@86>").gain(0.25)

stack(
  bass, bass_soft, synth_strings_1, lead_4_chiff, lead_2_sawtooth, pad_choir, bass_2, epiano2, taiko_drum, kick, clap,
  clap_soft, hihat, open_hat, crash, ride_bell
)

More by DJ Quicksilver