Strudelify

in the name of love

Martin Garrix & Bebe Rexha

KeyG majorTempo130 bpm
0:00/0:00
// in the name of love — Martin Garrix & Bebe Rexha
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4101366; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 52 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// chords · flute
const flute = note("<~@3 A ~@8 B@2 C@2 B@2 C@2 D E F G D E F G ~@8 B@2 C@2 B@2 C@2 D E F G D E F H>".pickRestart({
  A: "~@8 [f#4,a4] ~@7", B: "[[f#5,d6]@2 [g5,e6]@19 ~@11]/2", C: "[[f#5,d6] e6@2 f#6@3 [a5,d6]@5 ~@5, ~ g5@5 ~@10]/2",
  D: "[c5,e5]!2 ~ [b4,e5]", E: "[b4,e5]@4 e5@2 g5 a5 a5@2 g5@2 a5@2 g5@2, ~ b4 ~@2", F: "[b4,g5]!2 ~ [a4,f#5]",
  G: "[a4,f#5]!2 [a4,f#5]@2", H: "[a4,f#5]!2 ~@2",
})).s("gm_flute").gain(0.4)

// chords · flute · soft notes
const flute_soft = note("<A@2 B@2 A@2 C@2 A@2 C@2 ~@16 A@2 C@2 A@2 C@2 ~@16>".pickRestart({
  A: "[[c5,e5]@15 ~]/2", B: "[[b4,g5]@11 ~ [a4,f#5]@11 ~@9]/2", C: "[[b4,g5]@11 ~ [a4,f#5]@19 ~]/2",
})).s("gm_flute").gain(0.2)

// other · flute
const flute_2 = note("<~@3 A ~@12 B@2 C@2 D E F G D E F G ~@12 B@2 C@2 D E F G D E F H>".pickRestart({
  A: "~@8 d4 ~@7", B: "[d5@2 e5@19 ~@11]/2", C: "[d5 e5@5 d5@5 ~@5]/2", D: "g4!2 ~ g4", E: "g4!2 ~@2", F: "e4!2 ~ d4",
  G: "d4!2 d4@2", H: "d4!2 ~@2",
})).s("gm_flute").gain(0.45)

// other · flute · soft notes
const flute_soft_2 = note("<A@2 B@2 A@2 C@2 A@2 C@2 D@2 E@2 ~@12 A@2 C@2 A@2 C@2 D@2 E@2 ~@12>".pickRestart({
  A: "[g4@15 ~]/2", B: "[e4@11 ~ d4@11 ~@9]/2", C: "[e4@11 ~ d4@19 ~]/2", D: "[d5@2 e5@19 ~@11]/2",
  E: "[d5 e5@5 d5@5 ~@5]/2",
})).s("gm_flute").gain(0.2)

stack(flute, flute_soft, flute_2, flute_soft_2)