Strudelify
No One cover art

Real Things

No One

2 Unlimited

KeyC minorTempo133 bpm
0:00/0:00
// No One — 2 Unlimited
// 133 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 "CALLIOPE" lead 3 calliope (copy of ch 1 "CALLIOPE" lead 3 calliope, 0.5 beats late); ch 8 "SYN BASS 1" synth bass 1 (copy of ch 2 "SYN BASS 1" synth bass 1, 0.5 beats late); ch 6 "SYN STR 1" synth strings 1 (copy of ch 3 "SYN STR 1" synth strings 1)
// note: Full arrangement: all 114 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(133/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.

// chords · lead 3 calliope · "CALLIOPE"
const lead_3_calliope = note(`<
  ~ A B C@2 A B C@2 D@2 E@2 D@2 E@2 A B F G A B F G D@2 E@2 D@2 E@2 ~@8 A B C@2 A B C@2 A B F G A B F G ~@8 A B C@2 A B
  C@2 A B F G A B F G ~@16 D@2 E@2 D@2 E@2 A B C@2 A B C@2 ~
>`.pickRestart({
  A: "~@2 [g3,bb3,c4,eb4] ~@3 [g3,bb3,c4,eb4] ~@3 [g3,bb3,c4,eb4] ~@3 [g3,bb3,c4,d4] ~", // Cm7 Gm
  B: "~@2 [g3,bb3,c4,d4] ~@3 [g3,bb3,c4,d4] ~@3 [g3,bb3,c4,d4] ~@3 [g3,bb3,c4] ~", // Gm C7
  C: "[~@2 [g3,bb3,c4] ~@3 [g3,bb3,c4] ~@3 [g3,bb3,c4] ~@3 [ab3,c4,eb4,f4]@4 [ab3,c4,eb4] ~@3 [ab3,c4,eb4,f4]@4 [ab3,c4,eb4] ~ [ab3,c4,eb4,f4] ~@3]/2", // C7 Fm7 Ab Fm7 Ab Fm7
  D: "[[c4,eb4,g4] ~@3 [c4,eb4,g4] ~@5 [c4,eb4,g4] ~@3 [ab3,c4,f4]@4 [ab3,c4,f4] ~@3 [bb3,d4,f4]@4 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~]/2", // Cm Fm Bb
  E: "[[c4,eb4,g4] ~@3 [c4,eb4,g4] ~@5 [c4,eb4,g4] ~@3 [ab3,c4,f4]@4 [ab3,c4,eb4] ~@3 [bb3,d4,f4]@4 [bb3,d4,eb4] ~ [bb3,d4,f4] ~@3]/2", // Cm Fm Ab Bb Ebmaj7 Bb
  F: "~@2 [g3,bb3,c4] ~@3 [g3,bb3,c4] ~@3 [g3,bb3,c4] ~@3 [ab3,c4,eb4,f4] ~", // C7 Fm7
  G: "~@2 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~@3 [ab3,c4,eb4,f4] ~", // Fm7
})).s("gm_lead_3_calliope").gain(0.48)

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~ A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B D B A B D A@2 B A C A B A C A B A C A B A C A B
  D B A B D A@2 B A C A B A C A B A C A B A C ~@8 A B D B A B D A@2 B A C A B A C A B A C A B A C ~
>`.pickRestart({
  A: "c2 ~@2 c2 ~ c2 ~ bb1", B: "c2 ~@2 c2 ~ c2 ~ eb2", C: "f2 ~@2 f2 ~ f2 ~ eb2", D: "bb1 ~@2 bb1 ~ bb1 ~ bb1",
})).s("gm_synth_bass_1").gain(0.59)

// chords · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@33 A B C D A B C D ~@16 A B C D A B C D ~@16 A B C D A B C D A B C D A B C D ~@17
>`.pickRestart({
  A: "[c3,c4,eb4,g4]", B: "[c3,ab3,c4,f4]", C: "[bb2,bb3,d4,f4]", D: "[c3,g3,c4,eb4]",
})).s("gm_synth_strings_1").gain(0.29)

// chords · vibraphone
const vibraphone = note(`<
  ~@9 A@2 B@2 A@2 B@2 ~@8 A@2 B@2 A@2 B@2 ~@32 C ~@3 C ~@27 A@2 B@2 A@2 B@2 C ~@3 C ~@4
>`.pickRestart({
  A: "[[c4,eb4,g4] ~@3 [c4,eb4,g4] ~@5 [c4,eb4,g4] ~@3 [ab3,c4,f4]@4 [ab3,c4,f4] ~@3 [bb3,d4,f4]@4 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~]/2", // Cm Fm Bb
  B: "[[c4,eb4,g4] ~@3 [c4,eb4,g4] ~@5 [c4,eb4,g4] ~@3 [ab3,c4,f4]@4 [ab3,c4,eb4] ~@3 [bb3,d4,f4]@4 [bb3,d4,eb4] ~ [bb3,d4,f4] ~@3]/2", // Cm Fm Ab Bb Ebmaj7 Bb
  C: "[c4,eb4,g4]", // Cm
})).s("gm_vibraphone").gain(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~ 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 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 ~@4 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 A B ~@8 C
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!64 ~@4 [~ x ~ x]!36 ~@9>").gain(0.56)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ [~@9 x ~@6]!64 ~@4 [~@9 x ~@6]!36 ~@9>").gain(0.32)

// drums · ride
const ride = s("rd").struct(`<
  ~ 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 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 ~@4 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 A B ~@9
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ 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 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 ~@4 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 A B ~@8 C
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x",
})).gain(0.4)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~ 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 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 ~@4 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 A B ~@9
>`.pickRestart({
  A: "~ x ~@3 x ~@3 x ~@3 x ~@2", B: "~ x ~@3 x ~@3 x ~@3 x ~ x",
})).gain(0.24)

// drums · crash
const crash = s("cr").struct("<~ A ~@39 A ~@23 A ~@6 B ~@15 B ~@8 A ~@15 A>".pickRestart({
  A: "x", B: "~ x ~@6",
})).gain(0.56)

// drums · ht
const ht = s("ht").struct("<A ~@15 B ~@23 C ~@7 C ~@23 D ~@15 E ~@7 F ~@7 C ~@7 G H>".pickRestart({
  A: "~@6 x!3 ~@7", B: "~@10 x!3 ~@3", C: "~@11 x!2 ~@3", D: "~@5 x!2 ~", E: "~@9 x!4 ~@3", F: "~@8 x ~ x!3 ~@3",
  G: "~@14 x!2", H: "x",
})).gain(0.48)

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

// drums · shaker
const shaker = s("sh").struct(`<
  ~ A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B
  A C A B A C ~@4 A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B A C A B C@2 ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x!3", C: "~@2 x ~@3 x ~@3 x!3 ~ x ~",
})).gain(0.4)

stack(
  lead_3_calliope, bass, synth_strings_1, vibraphone, kick, snare, snare_soft, ride, tambourine, tambourine_soft, crash,
  ht, mt, shaker
)

More by 2 Unlimited