Strudelify

Doctor Jones

Aqua

KeyE♭ majorTempo139 bpm
0:00/0:00
// Doctor Jones — Aqua
// 139 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 "Bass" acoustic bass (copy of ch 6 "GunShots-" fretless bass)
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(139/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.

// other · acoustic guitar nylon · "Guitar1"
const acoustic_guitar_nylon = note(`<
  ~ A B A C A B A C A B A C ~@24 A B A C ~@28 A B A C ~@32 A B A C A B A D ~@3
>`.pickRestart({
  A: "eb4@2 bb4 eb4 eb5@2 bb4 eb4 f4@2 bb4 f4 f5@2 bb4 f4", B: "ab4@2 c5 ab4 eb5@2 eb4 eb5 bb4@2 eb5 bb4 f5 bb4 g5@2",
  C: "g4@2 c5 g4 d5@2 g4 eb5 bb4@2 eb5 bb4 f5 bb4 g5 ~", D: "g4@2 c5 g4 d5@2 g4 eb5 bb4@2 eb5 bb4 f5 bb4 g5@2",
})).s("gm_acoustic_guitar_nylon").gain(0.24)

// chords · string ensemble 1 · "Strings1"
const string_ensemble_1 = note(`<
  ~ A B A C A B A C A B A C ~@12 D@2 E F G@2 E ~ H I H J H I H J K@8 ~@8 D@2 E F G@2 E ~ H I H J H I H J K@8 L M N O L M
  N O P@8 K@8 H I H J H I H Q R ~ S
>`.pickRestart({
  A: "[eb3,g3,bb3,eb4] [d3,f3,bb3,d4]", B: "[eb3,ab3,c4,eb4] [d3,f3,bb3,d4]", C: "[d3,g3,bb3,d4] [eb3,ab3,c4,eb4]",
  D: "[c3@8 ab2@7 bb2@17]/2", E: "ab2 c3", F: "bb2", G: "[c3@8 ab2@7 bb2@16 ~]/2", H: "eb6 ~ eb6 ~ eb6 ~ eb6 ~",
  I: "eb6@2 ~@2 eb6@2 ~@2 eb6@2 ~@2 eb6@2 f6 ~", J: "eb6 ~ eb6 ~ eb6 ~ f6 eb6", K: "[eb6@31 ~]/8",
  L: "[bb3,eb4,g4]@8 [bb3,d4,f4]@7 ~", M: "~@2 eb6 eb5 eb6 eb5 eb6 eb5, [c4,eb4,ab4]@7 ~ [bb3,d4,f4]@7 ~",
  N: "[bb3,eb4,g4]@7 ~ [bb3,d4,f4]@7 ~", O: "~@2 eb6 eb5 eb6 eb5 eb6 eb5, [ab3,c4,eb4]@7 ~ [bb3,d4,f4]@7 ~",
  P: "[~@96 eb6@29 ~@3, eb2@63 ~, ~@32 eb4@93 ~@3, ~@64 eb5@61 ~@3]/8", Q: "g3 ab3, [c4,eb4]", R: "[eb3,bb3,eb4,g4]",
  S: "eb2 ~@15",
})).s("gm_string_ensemble_1").gain(0.29)

// chords · synth strings 2 · "Strings2"
const synth_strings_2 = note("<A@2 B C D@8 E ~@12 F G H G F G H I ~@24 F G H G F G H I ~@51>".pickRestart({
  A: "[~@2 eb4 [d3,f3,bb3,d4], [eb3,g3,bb3]@3 ~]/2", B: "[eb3,ab3,c4,eb4] [d3,f3,bb3,d4]",
  C: "[eb3,g3,bb3,eb4] [d3,f3,bb3,d4]", // Eb Bb
  D: "[[d3,g3,bb3,d4]@8 [eb3,ab3,c4,eb4]@7 ~ eb4@8 [d3,f3,bb3,d4]@8 [eb3,ab3,c4,eb4]@8 [d3,f3,bb3,d4]@8 [eb3,g3,bb3,eb4]@8 [d3,f3,bb3,d4]@8 [d3,g3,bb3,d4]@8 [eb3,ab3,c4,eb4]@8 eb4@8 [d3,f3,bb3,d4]@8 [eb3,ab3,c4,eb4]@8 [d3,f3,bb3,d4]@8 [eb3,g3,bb3,eb4]@8 [d3,f3,bb3,d4]@8, ~@15 eb6@113]/8", // Gm Ab Bb Ab Bb Eb Bb Gm …
  E: "[d3,g3,bb3,d4] [eb3,ab3,c4,eb4]", F: "g3 eb3", G: "f3", H: "eb3 g3", I: "bb3@9 ~@7",
})).s("gm_synth_strings_2").gain(0.26)

// bass · fretless bass · "GunShots-"
const bass = note(`<
  ~@17 A B A C A B A C@2 D E D C D E F A B A C A B A C B G B H B G B I A B A C A B A C@2 D E D C D E F A B A C A B A C B
  G B H B G B I ~@16 B G B H B G B I A B A C A B A J ~@3
>`.pickRestart({
  A: "eb2 ~ eb2!3 ~ eb2!2 bb1 ~ bb1!3 ~ bb1!2", B: "ab1 ~ ab1!3 ~ ab1!2 bb1 ~ bb1!3 ~ bb1!2",
  C: "c2 ~ c2!3 ~ c2!2 ab1 ~ ab1!3 ~ ab1!2", D: "bb1 ~ bb1!3 ~ bb1!3 ~ bb1!3 ~ bb1!2",
  E: "ab1 ~ ab1!3 ~ ab1!2 c2 ~ c2!3 ~ c2!2", F: "bb1 ~ bb1!3 ~ bb1!3 ~@7", G: "eb2 ~ eb2!3 ~ eb2!2 c2 ~ c2!3 ~ c2!2",
  H: "eb2 ~ eb2!3 ~ eb2!3 ~ eb2!3 ~ eb2!2", I: "eb2 ~ eb2!3 ~ eb2!3 ~ eb2!3 ~@3", J: "c2 ~@7 ab1 ~@7",
})).s("gm_fretless_bass").gain(0.64)

// other · brass section · "Brass"
const brass_section = note(`<
  ~@13
  [eb4 ~@2 eb4 ~@2 eb4 ~@2 eb4 ~ eb4 g4@2 bb4@2]
  [eb4 ~@2 eb4 ~@2 eb4@2 ~ eb4 ~ eb4 c4@2 bb3 ~]
  [eb4 ~@2 eb4 ~@2 eb4 ~@2 eb4 ~ eb4 g4@2 bb4@2]
  [eb4 ~@2 eb4 ~@2 eb4@2 ~ eb4 ~ eb4 ~@4]
  ~@99
>`).s("gm_brass_section").gain(0.41)

// other · brass section · "Brass" · soft notes
const brass_section_soft = note(`<
  ~@13
  [~@8 eb4 ~@5 eb4 ~]
  [~ eb4 ~@2 g4@2 bb4@2 eb4 ~@5 eb4@2]
  [~ eb4 ~@2 c4@2 bb3 ~ eb4 ~@5 eb4 ~]
  [~ eb4 ~@2 g4@2 bb4@2 eb4 ~@7]
  ~@99
>`).s("gm_brass_section").gain(0.26)

// chords · lead 2 sawtooth · "Lead"
const lead_2_sawtooth = note(`<
  ~@13 A B C D E F E G E F E G H I J I H I J K L M L N L M L N O P O Q O P O R E F E G E F E G H I J I H I J K L M L N L
  M L N O P O Q O P O R ~@8 S T S T S U V W X P O Q O P O Q L M L N L M L ~@4
>`.pickRestart({
  A: "eb4 ~@2 eb4 ~@2 eb4 ~ eb4!2 ~ eb4 g4@2 bb4@2, ~@14 eb4 ~",
  B: "eb4!2 ~ eb4 g4@2 [eb4,bb4]@2 eb4!2 ~ eb4 c4@2 eb4@2, ~@14 bb3 ~", // Eb5
  C: "eb4!2 ~ eb4 c4@2 [bb3,eb4] ~ eb4!2 ~ eb4 g4@2 bb4@2, ~@14 eb4 ~", // Eb5
  D: "eb4!2 ~ eb4 g4@2 [eb4,bb4]@2 eb4!2 ~ eb4 ~@4", // Eb5
  E: "~@2 [bb3,eb4,g4] ~@3 [bb3,eb4,g4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Eb Bb
  F: "~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [bb3,d4,f4] ~@3 [bb3,d4,f4] ~", // Ab Bb
  G: "~@2 [c4,eb4,g4] ~@3 [c4,eb4,g4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~", // Cm Ab
  H: "~@2 [eb4,g4,c5] ~@3 [eb4,g4,c5] ~@3 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~", // Cm Ab
  I: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~", // Bb
  J: "~@2 [c4,eb4,ab4] ~@3 [c4,eb4,ab4] ~@3 [eb4,g4,c5] ~@3 [eb4,g4,c5] ~", K: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@9",
  L: "~@2 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~@3 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~@2 [eb4,g4,c5] ~", // Eb Bb Cm
  M: "~@2 [eb4,ab4,c5] ~ [eb4,ab4,c5] ~@3 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~@2 [g4,bb4,eb5] ~", // Ab Bb Eb
  N: "~@2 [eb4,g4,c5] ~ [eb4,g4,c5] ~@3 [f4,bb4,d5] ~@2 [f4,bb4,d5] ~@2 [g4,bb4,eb5] ~", // Cm Bb Eb
  O: "~@2 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5] ~", // Ab Bb
  P: "~@2 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,c5,eb5] ~@3 [g4,c5,eb5] ~", // Eb Cm
  Q: "~@2 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~", // Eb
  R: "~@2 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~@5", S: "bb3@2 ~@2 bb3 ~@5 bb3@2 ~@2 bb3 ~",
  T: "bb3 ~@3 bb3@2 ~@4 bb3@2 ~@2 bb3@2", U: "[bb3,bb4] ~@3 [bb3,bb4]@2 ~@4 [bb3,bb4]@2 ~@2 [bb3,bb4]@2",
  V: "[bb3,bb4]@2 ~@2 [bb3,bb4] ~@5 [bb3,bb4]@2 ~@2 [bb3,bb4] ~", W: "~@2 bb3!2 eb3!2 bb4!2 eb4!2 bb5!2 eb5!2 bb6!2",
  X: "~@2 [ab4,c5,eb5] ~@3 [ab4,c5,eb5] ~@3 [f4,bb4,d5] ~@3 [f4,bb4,d5,bb6] bb6", // Ab Bb
})).s("gm_lead_2_sawtooth").gain(0.23)

// chords · piano · "Appregio"
const piano = note(`<
  ~@17 A B C D A B C D ~@16 B C E ~ B C E ~ F B C E F B C E ~@17 G H ~@2 G H ~@18 G H ~@2 G H ~@12
>`.pickRestart({
  A: "~@10 [bb3,eb4] ~ [eb4,g4] eb4 [g4,bb4] g4", // Eb5 Eb Gm
  B: "[ab3,c4] [eb4,ab4] eb4 [c4,eb4] [ab4,c5] ab4 [f4,bb4] [bb4,d5] bb4 [d5,f5] [bb4,d5] bb4 [d5,f5] f5 [d5,bb5] d5", // Ab Ab5 Cm Ab Bb5 Bb Dm Bb …
  C: "eb5 g5 eb5 bb4 eb5 bb4 [eb4,ab4] [f4,bb4] f4 [c4,f4] [eb4,ab4] eb4 [eb4,g4] eb4 [c4,eb4] c4, bb4@2 ~ g4@2 ~@11", // Ab5 Bb5 F5 Ab5 Eb Cm
  D: "g4 c4!2 [ab3,c4] ab3!2 [eb3,bb3] f3!2 ~@7, eb4@2 ~@5 bb3@2 ~@7", // Ab Eb5
  E: "g4 c4!2 [ab3,c4] ab3!2 [eb3,bb3] f3!2 eb3 f3 eb3 bb2 ~@3, eb4@2 ~@5 bb3@2 ~@7", // Ab Eb5
  F: "~@10 [bb3,eb4] bb3 [eb4,g4] eb4 [g4,bb4] g4", // Eb5 Eb Gm
  G: "~ g5 eb5 bb4 eb5 bb4 [eb4,ab4] [f4,bb4] f4 [c4,f4] [eb4,ab4] eb4 [eb4,g4] eb4 [c4,eb4] c4, ~@3 g4@2 ~@11", // Ab5 Bb5 F5 Ab5 Eb Cm
  H: "g4 c4!2 [ab3,c4] ~@12, eb4 ~@7", // Ab
})).s("gm_piano").gain(0.37)

// chords · piano · "Appregio" · soft notes
const piano_soft = note("<~@17 A ~@2 B A ~@2 B ~@48 C D E ~ C D E ~@17 C D E ~ C D E ~@12>".pickRestart({
  A: "~@11 bb3 ~@4", B: "~@9 eb3 f3 eb3 bb2 ~@3",
  C: "[ab3,c4] [eb4,ab4] eb4 [c4,eb4] [ab4,c5] ab4 [f4,bb4] [bb4,d5] bb4 [d5,f5] [bb4,d5] bb4 [d5,f5] f5 [d5,bb5] d5", // Ab Ab5 Cm Ab Bb5 Bb Dm Bb …
  D: "bb4 ~@7, eb5 ~@15", E: "~@4 ab3!2 [eb3,bb3] f3!2 eb3 f3 eb3 bb2 ~@3, ~@7 bb3@2 ~@7",
})).s("gm_piano").gain(0.19)

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

// drums · clap
const clap = s("cp").struct("<~@13 [~ x ~ x]!83 [~ x ~@2] [~ x ~ x]!15 ~@4>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~@40 A ~@31 A ~@15 A ~@2 B C@5 ~@7 C ~@11>".pickRestart({
  A: "~@2 x!14", B: "~@10 x!6", C: "x!16",
})).gain(0.48)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@40 A ~@31 A ~@15 A ~@2 B ~@24>".pickRestart({
  A: "x!2 ~@14", B: "x!10 ~@6",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<~@13 A@4 B@15 C B@15 D B@15 C B@15 D A@8 B@7 E B@15 ~@4>".pickRestart({
  A: "x!4", B: "x!16", C: "x!9 ~@3 x ~@3", D: "x!13 ~@3", E: "x!9 ~@7",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@13 A@3 B A@15 C A@15 B A@15 C A@15 B A@15 C A@15 D ~@3>".pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~ x ~ x ~@4", D: "x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A ~@7 A ~@5 B ~ A ~@6 C A ~@5 B ~ A ~@7 A ~@5 B ~ A ~@6 C A ~@5 B ~@5 A ~@2 C A ~ D E@5 A ~@5 B F A ~@6 A ~@3
>`.pickRestart({
  A: "x", B: "~@13 x ~@2", C: "~@2 x!14", D: "~@13 x!3", E: "x!16", F: "~ x!15",
})).gain(0.48)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@40 A ~@31 A ~@15 A ~@2 B ~@12 C ~@11>".pickRestart({
  A: "x!2 ~@14", B: "x!13 ~@3", C: "x",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct("<~@13 A@3 B A@15 B A@31 B A@16 ~@8 A@7 B A@15 ~@4>".pickRestart({
  A: "~@2 x!3 ~ x!2 ~ x!2 ~@5", B: "~@2 x!3 ~ x!2 ~@8",
})).gain(0.4)

// drums · woodblocks
const woodblocks = s("woodblock:5").struct("<~@81 [~ x ~ x ~ x ~ x]!8 ~@27>").gain(0.7)

// drums · woodblocks
const woodblocks_2 = s("woodblock:4").struct("<~@81 [~@4 x ~@6 x ~ x ~@2]!8 ~@27>").gain(0.7)

// drums · rim
const rim = s("rim").struct("<~@81 [~@2 x ~ x ~ x!2 ~@2 x ~ x ~ x!2]!8 ~@27>").gain(0.64)

stack(
  acoustic_guitar_nylon, string_ensemble_1, synth_strings_2, bass, brass_section, brass_section_soft, lead_2_sawtooth,
  piano, piano_soft, kick, clap, snare, snare_soft, hihat, open_hat, crash, crash_soft, ride, woodblocks, woodblocks_2,
  rim
)

More by Aqua