Strudelify

Long Ago

Mariah Carey

KeyE majorTempo96 bpm
0:00/0:00
// Long Ago — Mariah Carey
// 96 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(96/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 · "Bass"
const bass = note("<A@16 B C ~ D ~ E F G A@16 B C ~ D ~ E F G A@16 B C ~ D ~ E F G A@22 ~@10>".pickRestart({
  A: "d2@2 c#2@3 c#3 c#3@2 ~@8", B: "f#2@3 g#2", C: "a2@3 b2", D: "c#2 d#2 f2 c#2", E: "a2", F: "f#2",
  G: "c3 c#3 d#3 c3",
})).s("gm_electric_bass_finger").gain(0.57)

// bass · electric bass finger · "Bass" · soft notes
const bass_soft = note("<~@94 [d2@2 c#2@3 c#3 c#3@2 ~@8]!10>").s("gm_electric_bass_finger").gain(0.21)

// chords · synth strings 1 · "Sinth"
const synth_strings_1 = note("<A@16 ~@4 B C D E A@16 ~@4 B C D E A@16 ~@4 B C D E A@22 ~@10>".pickRestart({
  A: "[g#4 a4 g#4 f#4, c#4]/2", B: "[c#4,f#4,g#4,a4]@3 [d#4,g#4,b4]", C: "[c#4,a4]", D: "[c#4,f#4,g#4]",
  E: "[c4,d#4,f#4,b4]", // Cdim
})).s("gm_synth_strings_1").gain(0.12)

// chords · synth strings 1 · "Sinth" · soft notes
const synth_strings_1_soft = note("<~@94 A@10>".pickRestart({
  A: "[g#4 a4 g#4 f#4, c#4]/2",
})).s("gm_synth_strings_1").gain(0.05)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@4 A@12 B C ~@6 A@16 B C ~@6 A@16 B C ~@6 A@14 D ~@17>".pickRestart({
  A: "x!8", B: "x ~@3 x ~@2 x", C: "~@4 x ~@2 x", D: "x!2 ~@6",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@16 A@2 ~@3 B@3 ~@16 A@2 ~@3 B@3 ~@16 A@2 ~@3 B@3 ~@32>".pickRestart({
  A: "~@3 x ~@4", B: "x!4",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@18 A B A ~@21 A B A ~@21 A B A ~@35>".pickRestart({
  A: "x", B: "x!4",
})).gain(0.4)

stack(bass, bass_soft, synth_strings_1, synth_strings_1_soft, kick, snare, hihat, open_hat, crash)

More by Mariah Carey