Strudelify

Blue (Da Ba Dee)

Eiffel 65

KeyG minorTempo130 bpm
0:00/0:00
// Blue (Da Ba Dee) — Eiffel 65
// 130 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/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 · synth bass 2 · "tk2"
const bass = note(`<
  ~@8 A B C B ~@4 A B C B ~@4 A B C B ~@4 D E@3 ~@4 D E@3 ~@4 D E@3 ~@4 D E@3 ~@4 D E@3 ~@4 A B C B ~@4 A B C B ~@5
>`.pickRestart({
  A: "bb1 f1", B: "g1", C: "d1 f1", D: "~@3 bb1 ~ bb1 ~ bb1", E: "~ bb1 ~ bb1 ~ bb1 ~ bb1",
})).s("gm_synth_bass_2").gain(0.4)

// other · lead 2 sawtooth · "tk3"
const lead_2_sawtooth = note("<A@2 B@2 ~@28 C D E D ~@4 C D E D ~@45>".pickRestart({
  A: "[~@4 f2@25 ~@3, c3@29 ~@3, ~ [bb2,b2]@28 ~@3, ~@2 [ab2,a2]@27 ~@3, ~@3 [gb2,g2]@26 ~@3]/2", // Bmaj7 Amaj7 Gmaj7
  B: "[~@5 [f4,gb4,g4]@7 ~@4, ~ [c4,db4]@2 ~, ~@9 [d4,eb4,e4]@15 ~@8]/2", C: "~@2 a3@2 bb3@2 g3 bb3",
  D: "c4!2 a3 bb3@2 f3 bb3 d4", E: "eb4@2 d4 c4 bb3@2 f3 bb3",
})).s("gm_lead_2_sawtooth").gain(0.01)

// other · overdriven guitar · "tk3"
const overdriven_guitar = note(`<
  ~@48
  [~ d3 g3 bb3 c4 bb2 f3 a3]
  [bb3@2 g2@2 d3@2 f3@2 g3@5 ~ f3@2]
  [bb3 d4 eb4 g3 d4 c4 bb3 d3]
  [g3 bb3 c4 d3 f3 a3 bb3@2]
  ~@37
>`).s("gm_overdriven_guitar").gain(0.01)

// other · lead 1 square · "tk3"
const lead_1_square = note(`<
  ~@56
  [~@2 a4@2 bb4@2 g4 bb4]
  [c5!2 a4 bb4@2 f4 bb4 d5]
  [eb5@2 d5 c5 bb4@2 f4 bb4]
  [c5!2 a4 bb4@2 f4 bb4 d5]
  ~@29
>`).s("gm_lead_1_square").gain(0.01)

// other · lead 8 bass lead · "tk3"
const lead_8_bass_lead = note(`<
  ~@64
  [~@2 a3@2 bb3@2 g3 bb3]
  [c4!2 a3 bb3@2 f3 bb3 d4]
  [eb4@2 d4 c4 bb3@2 f3 bb3]
  [c4!2 a3 bb3@2 f3 bb3 d4]
  ~@21
>`).s("gm_lead_8_bass_lead").gain(0.01)

// other · synth bass 1 · "tk4"
const synth_bass_1 = note("<~@24 A B A B ~@52 A B A B ~@5>".pickRestart({
  A: "bb3 d3 g3 bb3 c4 f3 a3 bb3", B: "~ g3 bb3 d4 eb4 g3 d4 c4",
})).s("gm_synth_bass_1").gain(0.01)

// other · pad choir · "tk4"
const pad_choir = note("<~@48 A B C D ~@12 E F G F ~@21>".pickRestart({
  A: "~ d4 g4 bb4 c5 bb3 f4 a4", B: "bb4@2 g3@2 d4@2 f4@2 g4@5 ~ f4@2", C: "bb4 d5 eb5 g4 d5 c5 bb4 d4",
  D: "g4 bb4 c5 d4 f4 a4 bb4@2", E: "~@2 a4@2 bb4@2 g4 bb4", F: "c5!2 a4 bb4@2 f4 bb4 d5",
  G: "eb5@2 d5 c5 bb4@2 f4 bb4",
})).s("gm_pad_choir").gain(0.01).pan(0.3)

// other · epiano1 · "tk5"
const epiano1 = note("<~@16 A B C D ~@4 A B C D ~@52 A B C D ~@5>".pickRestart({
  A: "bb5 d5 g5 bb5 c6 f5 a5 bb5", B: "~ g5 bb5 d6 eb6 g5 d6 c6", C: "bb5@2 d5@2 g5@2 bb5 ~ a5@2 c5 ~ f5@2 g5@2",
  D: "~ g5 bb5 d6 eb6 f5 g5 a5",
})).s("gm_epiano1").gain(0.25).pan(0.7)

// bass · synth bass 2 · "tk12"
const bass_2 = note(`<
  ~@4 A B C B ~@4 A B C B ~@4 A B C B ~@4 A B D@2 ~@4 E F@3 ~@4 E F@3 ~@4 E F@3 ~@4 E F@3 ~@4 E F@3 ~@4 A B C B ~@4 A B
  D@2 ~
>`.pickRestart({
  A: "bb1 f1", B: "g1", C: "d1 f1", D: "[d1@4 f1@5 g2@2 g2@2 g2@2 ~]/2", E: "bb1!2 bb1@2 ~@2 bb1@2 ~@2 bb1@2 ~@2 bb1@2",
  F: "~ bb1 ~ bb1 ~ bb1 ~ bb1",
})).s("gm_synth_bass_2").gain(0.06)

// other · lead 2 sawtooth · "tk13"
const lead_2_sawtooth_2 = note("<~@36 A B C D ~@4 A B C D ~@41>".pickRestart({
  A: "eb4 d4@2 c4 bb3@2 f3 bb3", B: "c4!2 a3 bb3@2 g3 bb3 d4", C: "eb4@2 d4 c4 bb3@2 g3 bb3", D: "c4!2 f3 g3@2 ~@3",
})).s("gm_lead_2_sawtooth").gain(0.57)

// other · overdriven guitar · "tk13"
const overdriven_guitar_2 = note(`<
  ~@52
  [~ g2 g3 bb3 c4 bb2 f3 a3]
  [bb3@2 ~ g3 bb3 d4 eb4 g3]
  [d4 c4 bb3 d3 f3 bb3 a3 g2]
  [d3 f3 g3@2 g3@2 g3@2]
  ~@33
>`).s("gm_overdriven_guitar").gain(0.4)

// other · lead 1 square · "tk13"
const lead_1_square_2 = note(`<
  ~@60
  [eb5 d5@2 c5 bb4@2 f4 bb4]
  [c5!2 a4 bb4@2 g4 bb4 d5]
  [eb5@2 d5 c5 bb4@2 g4 bb4]
  [c5!2 f4 g4@2 ~@3]
  ~@25
>`).s("gm_lead_1_square").gain(0.57)

// other · lead 8 bass lead · "tk13"
const lead_8_bass_lead_2 = note(`<
  ~@68
  [eb4 d4@2 c4 bb3@2 f3 bb3]
  [c4!2 a3 bb3@2 g3 bb3 d4]
  [eb4@2 d4 c4 bb3@2 g3 bb3]
  [c4!2 f3 g3@2 ~@3]
  ~@17
>`).s("gm_lead_8_bass_lead").gain(0.57)

// other · synth bass 1 · "tk14"
const synth_bass_1_2 = note("<~@20 A B A B ~@4 A B C@2 ~@52 A B C@2 ~>".pickRestart({
  A: "bb3 d3 g3 bb3 c4 f3 a3 bb3", B: "~ g3 bb3 d4 eb4 g3 d4 c4",
  C: "[bb3 d3 g3 bb3 c4 f3 a3 bb3@2 bb3@2 bb3@2 bb3@2 ~]/2",
})).s("gm_synth_bass_1").gain(0.4)

// other · pad choir · "tk14"
const pad_choir_2 = note("<~@52 A B C D ~@12 E F G H ~@17>".pickRestart({
  A: "~ d4 g4 bb4 c5 bb3 f4 a4", B: "bb4@2 g3@2 d4@2 f4@2 g4@5 ~ f4@2", C: "bb4 d5 eb5 g4 d5 c5 bb4 d4",
  D: "g4 bb4 c5 d4 f4 a4 bb4@2", E: "eb5 d5@2 c5 bb4@2 f4 bb4", F: "c5!2 a4 bb4@2 g4 bb4 d5",
  G: "eb5@2 d5 c5 bb4@2 g4 bb4", H: "c5!2 f4 g4@2 ~@3",
})).s("gm_pad_choir").gain(0.04).pan(0.3)

// other · epiano1 · "tk15"
const epiano1_2 = note("<~@12 A B C D ~@4 A B C D ~@4 A B E@2 ~@44 A B C D ~@4 A B E@2 ~>".pickRestart({
  A: "bb5 d5 g5 bb5 c6 f5 a5 bb5", B: "~ g5 bb5 d6 eb6 g5 d6 c6", C: "bb5@2 d5@2 g5@2 bb5 ~ a5@2 c5 ~ f5@2 g5@2",
  D: "~ g5 bb5 d6 eb6 f5 g5 a5", E: "[bb5@2 d5@2 g5@2 bb5 ~ a5@2 c5 ~ f5@2 g5@4 g5@4 g5@4 g5@4 ~@2]/2",
})).s("gm_epiano1").gain(0.25).pan(0.7)

// other · piano · "tk16"
const piano = note(`<
  ~@4 A B A B ~@4 A B A B ~@4 A B A B ~@4 A B C@2 ~@12 D E F E G ~@11 D E F E G ~@3 D E F H ~@4 A B A B ~@4 A B C@2 ~
>`.pickRestart({
  A: "bb4 d4 g4 bb4 c5 f4 a4 bb4", B: "~ g4 bb4 d5 eb5 g4 d5 c5",
  C: "[bb4 d4 g4 bb4 c5 f4 a4 bb4@2 bb4@2 bb4@2 bb4@2 ~]/2", D: "~@4 bb5 d5 g5 bb5", E: "c6 f5 a5 bb5 ~ g5 bb5 d6",
  F: "eb6 g5 d6 c6 bb5 d5 g5 bb5", G: "eb6 g5 d6 c6 ~@4", H: "c6 f5 a5 bb5 ~@4",
})).s("gm_piano").gain(0.06).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~@32 [~@2 x!2] [x!4]!39 ~@17>").gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@3 A ~@19 B ~@7 C D ~@6 C D ~@6 B ~@7 B ~@7 B E F@6 B ~@11 B ~@3 C D>".pickRestart({
  A: "~@10 x!4 ~@2", B: "~@2 x!14", C: "~@4 x!2 ~ x!3 ~ x!5", D: "x", E: "~ x!3", F: "x!4",
})).gain(0.45)

// drums · clap
const clap = s("cp").struct("<~@56 [~ x!3] [x!4]!7 ~@25>").gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@3 [~@14 x!2] ~@85>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@20 [x!4]!12 ~@40 [x!4]!16 ~>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@20 [~ x ~ x ~ x ~ x]!12 ~@40 [~ x ~ x ~ x ~ x]!16 ~>").gain(0.35)

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

// drums · ride bell
const ride_bell = s("rd").struct("<~@4 x ~@84>").gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~@40 [~ x ~ x ~ x ~ x]!32 ~@17>").gain(0.4)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@56 [~ x ~ x ~ x ~ x]!4 ~@4 [~ x ~ x ~ x ~ x]!4 ~@21>").gain(2.01)

stack(
  bass, lead_2_sawtooth, overdriven_guitar, lead_1_square, lead_8_bass_lead, synth_bass_1, pad_choir, epiano1, bass_2,
  lead_2_sawtooth_2, overdriven_guitar_2, lead_1_square_2, lead_8_bass_lead_2, synth_bass_1_2, pad_choir_2, epiano1_2,
  piano, kick, snare, clap, low_tom, hihat, open_hat, crash, ride_bell, tambourine, cabasa
)

More by Eiffel 65