Strudelify
Turn Back Time cover art

1997 · Aquarium

Turn Back Time

Aqua

KeyE♭ majorTempo102 bpm
0:00/0:00
// Turn Back Time — Aqua
// 102 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 102 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(102/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.

// chords · piano
const piano = note(`<
  A B A B ~@12 C D E@2 ~@2 F G A B A B H I A J ~@7 K L ~@2 M N@5 ~ F G A B A B H I ~@10 O B A B P Q A J A B A B H I A J
  A B A B H I A J A B A B H I A J ~@2
>`.pickRestart({
  A: "~@3 eb4@5, ab2, ~ ab3@7, ~ bb3@3", B: "~@5 d4@3, bb2, ~ f3@7, ~ bb3@3, ~@3 eb4@5",
  C: "[ab3,c4,eb4]@3 [ab3,c4,eb4]@5", D: "[bb3,d4,f4]@3 [bb3,d4,f4]@5", E: "[g3,c4,eb4]/2", F: "~@6 d5 eb5", G: "g5",
  H: "~@3 eb4@5, ~ ab3@7, ~ bb3@3", I: "~@3 eb4@5, ~ f3@7, ~ bb3@3", J: "~@5 d4@3, bb2, ~ f3@7, ~ bb3@3",
  K: "~@6 eb4@2 d4@3 c4@3 ab3@2", L: "g3", M: "~@5 c5 d5 eb5",
  N: "[bb5@7 bb5@8 ~@13 d5 eb5 c5 d5@9, ~@15 bb5@9 ~@16, ~@2 [g3,c4,eb4]@2 ~]/5", // Cm
  O: "~@3 eb4@5, [ab2,c4], ~ ab3@7, ~ bb3@3", P: "~@3 eb4@5, f2, ~ ab3@7, ~ bb3@3", Q: "~@3 eb4@5, g2, ~ f3@7, ~ bb3@3",
})).s("gm_piano").gain(0.4).pan(0.6)

// bass · fretless bass · "Electric Bass"
const bass = note(`<
  ~@3 A B@2 C D B@2 C D B@2 C D E F B G E@2 H I J K J K L M J N B@2 C D B@2 C D B@2 C D E F B G E@2 H I J K J K L M ~@16
  O P J K J K L M J N J K J K L M J N J K J K L M J N Q@2
>`.pickRestart({
  A: "eb2 c2 bb1 g1", B: "c2 eb2 ~ c2 g2@4", C: "c2@2 eb2@2 ~@2 c2@2 f2 ~ f2 ~ f2@4", D: "f2 eb2 c2 bb1",
  E: "ab1@3 ab1@5", F: "bb1@3 bb1@5", G: "g2 f2 eb2 d2", H: "g1@3 d2@5", I: "g2 f2 d2 b1", J: "ab1@3 ab1 ab1@2 f1@2",
  K: "bb1@3 bb1 bb1@2 g1@2", L: "f1@3 f1 f1@2 f1@2", M: "g1@3 g1 g1@2 g1@2", N: "bb1@3 bb1 eb2@2 d2@2", O: "~@6 f1 ab1",
  P: "bb1", Q: "c2/2",
})).s("gm_fretless_bass").gain(0.59).pan(0.4)

// chords · synth strings 1 · "Strings"
const synth_strings_1 = note(`<
  ~@2 A@2 B@12 C D E@2 F@2 G@2 H I H I H I H I B@12 C D E@2 F@2 G@2 H I H I H I ~@10 H I H I H I H I H I H I H I H I H I
  H I H I H I H I H I H I H I E@2
>`.pickRestart({
  A: "[c4 bb3, [ab2,ab3,eb4]]/2", B: "[[eb3,g3]@2 a3 ab3, c4, ~ f3]/4", C: "[eb3,ab3,c4]", D: "[f3,bb3,d4]",
  E: "[eb3,g3,c4]/2", F: "[f3,ab3,c4,d4]/2", G: "[c4 b3, [d3,g3]]/2", H: "[ab3,c4,eb4,bb4]", I: "[bb3,d4,f4,bb4]",
})).s("gm_synth_strings_1").gain(0.14)

// other · electric guitar clean · "Clean Guitar"
const electric_guitar_clean = note(`<
  ~@4 A@19 B A C A C A C A C A@19 B A C A C A C A@2 D@2 A@2 D@2 A E ~@4 A C A C A C A C A C A C A C A C A C A C A C A C
  A C A C ~@2
>`.pickRestart({
  A: "[c3,c4,c5] [c4,c5] [c3,c4,c5] [c4,c5] [c3,c4,c5] [c4,c5] ~ [c4,c5] ~ [c3,c4,c5]!2 [c4,c5] [c3,c4,c5] ~ [c3,c4,c5] [c4,c5]", // C
  B: "[b2,b3,b4] [b3,b4] [b2,b3,b4] [b3,b4] [b2,b3,b4] [b3,b4] ~ [b3,b4] ~ [b2,b3,b4]!2 [b3,b4] [b2,b3,b4] ~ [b2,b3,b4] [b3,b4]", // B
  C: "[d3,d4,d5] [d4,d5] [d3,d4,d5] [d4,d5] [d3,d4,d5] [d4,d5] ~ [d4,d5] ~ [d3,d4,d5]!2 [d4,d5] [d3,d4,d5] ~ [d3,d4,d5] [d4,d5]", // D
  D: "[db3,db4,db5] [db4,db5] [db3,db4,db5] [db4,db5] [db3,db4,db5] [db4,db5] ~ [db4,db5] ~ [db3,db4,db5]!2 [db4,db5] [db3,db4,db5] ~ [db3,db4,db5] [db4,db5]", // Db
  E: "[c3,c4,c5] ~@15", // C
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.6)

// other · electric guitar clean · "Clean Guitar" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@4 A@19 B A C A C A C A C A@19 B A C A C A C A@2 D@2 A@2 D@2 A ~@5 A C A C A C A C A C A C A C A C A C A C A C A C A
  C A C ~@2
>`.pickRestart({
  A: "~ c3 ~ c3 ~ c3 ~ c3 ~@3 c3 ~@3 c3", B: "~ b2 ~ b2 ~ b2 ~ b2 ~@3 b2 ~@3 b2",
  C: "~ d3 ~ d3 ~ d3 ~ d3 ~@3 d3 ~@3 d3", D: "~ db3 ~ db3 ~ db3 ~ db3 ~@3 db3 ~@3 db3",
})).s("gm_electric_guitar_clean").gain(0.1).pan(0.6)

// other · lead 8 bass lead · "Bass & Lead"
const lead_8_bass_lead = note(`<
  ~@4 A B A B ~@24 A B A B A B A B A B A B A C A B A B ~@8 D@2 E@2 D@2 E@2 D ~@35
>`.pickRestart({
  A: "~@2 c4 c3 ~ c4 c3 c4 c5 ~ c4 c3 ~ c4 ~@2", B: "~@2 c4 c3 ~ c4 c3 ~ c5 ~ c4 c3 ~@2 c4 ~",
  C: "~@2 d4 d3 ~ d4 d3 d4 ~@2 d4 d3 ~ d4 ~@2", D: "~@2 c4 c3 ~ c4 c3 c4 ~@2 c4 c3 ~ c4 ~@2",
  E: "~@2 db4 db3 ~ db4 db3 db4 ~@2 db4 db3 ~ db4 ~@2",
})).s("gm_lead_8_bass_lead").gain(0.22).pan(0)

// other · lead 8 bass lead · "Bass & Lead" · soft notes
const lead_8_bass_lead_soft = note(`<
  ~@4 A ~ A ~@25 A ~ A ~ A ~ A ~ A ~ A ~ A B A ~ A ~@9 A@2 C@2 A@2 C@2 A ~@35
>`.pickRestart({
  A: "~@14 c3 ~", B: "~@14 d3 ~", C: "~@14 db3 ~",
})).s("gm_lead_8_bass_lead").gain(0.13).pan(0)

// bass · synth bass 1 · "Synth Bass"
const bass_2 = note(`<
  ~@58
  [c2 ~ bb1 ~ c2 ~ bb1 ~ c2 ~ bb1 ~ c2 ~ bb1 ~]!2
  [db2 ~ b1 ~ db2 ~ b1 ~ db2 ~ b1 ~ db2 ~ b1 ~]!2
  [c2 ~ bb1 ~ c2 ~ bb1 ~ c2 ~ bb1 ~ c2 ~ bb1 ~]!2
  [db2 ~ b1 ~ db2 ~ b1 ~ db2 ~ b1 ~ db2 ~ b1 ~]!2
  [c2 ~ bb1 ~ c2 ~ bb1 ~ c2 ~ bb1 ~ c2 ~ bb1 ~]
  [c2 ~@15]
  ~@34
>`).s("gm_synth_bass_1").gain(0.45).pan(0.6)

// other · orchestra hit
const orchestra_hit = note("<~@58 A B C D A B C D A E ~@32 F@2>".pickRestart({
  A: "[c3,c4] [c3,c4]@3", B: "[c3,c4]", C: "[db3,db4]!2", D: "[db3,db4]", E: "[c3,c4] ~", F: "[c2,c3]/2",
})).s("gm_orchestra_hit").gain(0.36).pan(0.3)

// chords · overdriven guitar · "Overdrive Guitar"
const overdriven_guitar = note("<~@58 A B C D ~@2 C D ~@36>".pickRestart({
  A: "~ [c3,g3,c4] ~ [c3,g3,c4]@3 ~@2", B: "~@2 [c3,g3,c4]!3 ~@3 [c3,g3,c4]@3 [c3,g3,c4] ~@4",
  C: "~ [db3,ab3,db4] ~@2 [db3,ab3,db4] ~@11", D: "[db3,ab3,db4] ~@15",
})).s("gm_overdriven_guitar").gain(0.16).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~@4 A@20 B@8 A@20 B@6 C@9 D ~@7 A B@24 D ~>".pickRestart({
  A: "x ~@2 x ~@4", B: "x ~@2 x!2 ~@3", C: "x!2 ~ x!3 ~@2", D: "x",
})).gain(0.64)

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

// drums · low tom
const low_tom = s("lt").struct("<~@58 [x!3 ~ x!3 ~]!3 [x!3 ~ x!4] [x!3 ~ x!3 ~]!5 ~@35>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B A C A B A B A B A B A B A B A B A D A B@6 E A B A F A B A B A B A B A B A B A B A G A B@8 H B@5 ~@9 A B@6 D A
  B@6 D A B@6 D ~@2
>`.pickRestart({
  A: "~ x!13 ~ x", B: "x!14 ~ x", C: "x!8 ~@8", D: "x!12 ~@4", E: "x!10 ~@6", F: "x!8 ~@5 x ~ x", G: "x!13 ~@2 x",
  H: "x!16",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@27 ~ A@35 ~@9 A@7 ~ A@7 ~ A@7 ~@3>".pickRestart({
  A: "~@7 x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@7 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~@8 A ~@8 A ~@7 A
  ~@7 A ~@7 A ~
>`.pickRestart({
  A: "x",
})).gain(0.72)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct(`<
  ~@4
  [x ~ x!3 ~ x!2 ~ x!4 ~ x!2]!63
  ~@9
  [x ~ x!3 ~ x!2 ~ x!4 ~ x!2]!24
  ~@2
>`).gain(0.35)

stack(
  piano, bass, synth_strings_1, electric_guitar_clean, electric_guitar_clean_2, lead_8_bass_lead, lead_8_bass_lead_soft,
  bass_2, orchestra_hit, overdriven_guitar, kick, snare, low_tom, hihat, open_hat, crash, woodblocks
)

More by Aqua