Strudelify

Genie In a Bottle

Christina Aguilera

KeyF minorTempo90 bpm
0:00/0:00
// Genie In a Bottle — Christina Aguilera
// 90 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(90/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 · "Right Hand"
const piano = note(`<
  A B ~@11 C D C E F D F G F D F G ~@8 C D C D C D C E F D F G F D F G ~@7 H C D C I F D F G F D F G F D F G F D F G ~@3
>`.pickRestart({
  A: "c5 ab4 f4 [bb4,eb5]@3 [bb4,eb5]@3 [ab4,db5]@3 c5 bb4 ab4 g4, f5@3 ~@13", B: "f4@3 ~@13",
  C: "[c6,f6] ab5 f5 [c6,f6] ab5 f5 [c6,f6] ab5 f5 [bb5,eb6] ~ eb5 [bb5,eb6] ~ eb5@2, ~@10 g5@2 ~ g5@3", // F5 Eb5
  D: "[ab5,db6] ~@2 [ab5,db6] ~@2 [ab5,db6] f5 ~ [bb5,eb6] ~ eb5 [bb5,eb6] ~ eb5@2, ~ f5@2 ~ f5@2 ~@4 g5@2 ~ g5@3, ~@2 db5@2 ~ db5@3 db5@3 ~@5", // Db5 Eb5
  E: "[ab5,db6] ~@2 [ab5,db6] ~@2 [ab5,db6] f5 ~ [bb5,eb6] ~ eb5 c5 bb4 ab4 g4, ~ f5@2 ~ f5@2 ~@4 g5@2 ~@4, ~@2 db5@2 ~ db5@3 db5@3 ~@5", // Db5 Eb5
  F: "[c6,f6] ab5 f5 [c6,f6] ab5 f5 [c6,f6] ab5 f5 [bb5,eb6] ~ eb5 [bb5,eb6] ~ eb5@2, f4@3 ~@7 g5@2 ~ g5@3", // F5 Eb5
  G: "[ab5,db6] ~@2 [ab5,db6] ~@2 [ab5,db6] f5 ~ [g5,c6] e5 c5 [g5,c6] e5 c5@2, ~ f5@2 ~ f5@2 ~@10, ~@2 db5@2 ~ db5@3 db5@3 ~@5", // Db5 C5
  H: "~@12 c5 bb4 ab4 g4", I: "[ab5,db6] ~@2 [ab5,db6] ~@2 [ab5,db6]@2 ~@8, ~ f5@2 ~ f5@2 ~@10, ~@2 db5@2 ~ db5@3 ~@8",
})).s("gm_piano").gain(0.72)

// other · piano · "Left Hand"
const piano_2 = note("<[f3@3 eb3@3 eb3@3 db3@2 c3!2 bb2 ab2 g2] [f2@3 ~@13] ~@78>").s("gm_piano").gain(0.72)

// other · pizzicato strings · "Staff-2"
const pizzicato_strings = note("<~ A@16 ~@8 A@8 ~@4 A@4 ~@39>".pickRestart({
  A: "[f4 ab4 c5 g5@2 f5@3 eb4 g4 bb4 eb5@2 f5@2 eb5@2 db5@2 eb5@4 ~@9]/2",
})).s("gm_pizzicato_strings").gain(0.72)

// chords · pad sweep · "Staff-3"
const pad_sweep = note("<~ A B A B A B A B A B A B A B A B ~@8 A B A B A B A B A B A B A B A B ~@39>".pickRestart({
  A: "~@8 [g4,bb4,eb5]@3 ~@5", B: "[f4,ab4,db5]@7 ~@9",
})).s("gm_pad_sweep").gain(0.72)

// bass · electric bass pick · "Staff-5"
const bass = note(`<
  ~ A B A B A B A B A B A B A B A B A B A C A B A C A B A B A B A B A B A B A B A B A B A C A B A C A B A B A B A C A B
  A D A B A C A B A C A B A C A B A C ~@3
>`.pickRestart({
  A: "f1!2 f1@2 ~@3 f1 eb1@2 eb1@2 ab1@2 ab1@2", B: "db1@3 ~@5 c1!4 bb0 c1 eb1@2", C: "db1@3 ~@5 c1!4 bb0@2 ab0@2",
  D: "db1@3 ~@13",
})).s("gm_electric_bass_pick").gain(0.72)

// chords · overdriven guitar · "Staff-10"
const overdriven_guitar = note(`<
  ~@17 A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4
>`.pickRestart({
  A: "[f2,c3]@3 ~@13", // F5
})).s("gm_overdriven_guitar").gain(0.72)

// other · brass section · "Staff-8"
const brass_section = note(`<
  ~@13 A ~@3 B ~ B ~ B ~ B ~@13 A ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~ C ~@5 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@4
>`.pickRestart({
  A: "f4 f4@2 eb4@2 f4@2 ab4@4 ~@5", B: "f4 f4@2 eb4@2 f4@2 ab4@3 f4@2 ab4@2 bb4!2", C: "f4 f4@2 eb4@2 f4@2 ab4 ~@8",
})).s("gm_brass_section").gain(0.72)

// 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 C A B A B A B A B A B A B A B A B ~@3
>`.pickRestart({
  A: "x ~@8 x!2 ~@5", B: "x ~@7 x!4 ~ x ~ x", C: "x",
})).gain(0.72)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!59 [~ x ~@2] [~ x ~ x]!16 ~@3>").gain(0.72)

// drums · clap
const clap = s("cp").struct("<~ [~ x ~ x]!59 [~ x ~@2] [~ x ~ x]!16 ~@3>").gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@68 [~@3 x!2 ~@8 x!2 ~] ~@11>").gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@68 [x!2 ~@9 x!2 ~@3] ~@11>").gain(0.72)

stack(
  piano, piano_2, pizzicato_strings, pad_sweep, bass, overdriven_guitar, brass_section, kick, snare, clap, mid_tom,
  high_tom
)

More by Christina Aguilera