Strudelify

wonder woman theme

Junkie XL

KeyG majorTempo140 bpm
0:00/0:00
// wonder woman theme — Junkie XL
// 140 bpm, 7/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 7/4 at bar 2) are rendered on a constant 7/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/2805316; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 48 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/7)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 · xylophone
const xylophone = note("<~ A@2 B C A@4 D E D E D E D E D E D E D F D E D E G H G H G H G H G@12 I>".pickRestart({
  A: "e6@3 e6@3 ~ e6@3 e6@3 ~ e6@3 e6@3 ~ e6@3 e6@3 e6@3 ~ e6@3 e6@3 ~ e6@3 e6@3 ~ e6@3",
  B: "a#5@7 ~@14 b5@3 a#5@3 ~@18 a#5@3", C: "b5@7 ~@14 a#5@3 b5@3 ~@14 g6@3 ~ g6@3",
  D: "g6@2 ~ g6@2 e6@2 g6@2 ~ g6@2 e6@2 ~ e6@2 g6@2 e6@2 ~ e6@2 g6@2 ~ g6@2 e6@2 g6@2 ~ g6@2 e6@2 ~ e6@2 g6@2 e6@2 ~ e6@2, ~@2 e6@2 ~@5 e6@2 ~@3 g6@2 ~@5 g6@2 ~@3 e6@2 ~@5 e6@2 ~@3 g6@2 ~@5 g6@2 ~",
  E: "g6@2 ~ g6@2 d#6@2 g6@2 ~ g6@2 d#6@2 ~ d#6@2 g6@2 d#6@2 ~ d#6@2 g6@2 ~ g6@2 d#6@2 g6@2 ~ g6@2 d#6@2 ~ d#6@2 g6@2 d#6@2 ~ d#6@2, ~@2 d#6@2 ~@5 d#6@2 ~@3 g6@2 ~@5 g6@2 ~@3 d#6@2 ~@5 d#6@2 ~@3 g6@2 ~@5 g6@2 ~",
  F: "g6@2 ~ g6@2 d#6@2 g6@2 ~ g6@2 d#6@2 ~ d#6@2 g6@2 d#6@2 ~ d#6@2 g6@2 ~ g6@2 d#6@2 g6@2 ~ g6@2 d#6@2 ~ d#6@2 g6@2 d#6@2 g6@3, ~@2 d#6@2 ~@5 d#6@2 ~@3 g6@2 ~@5 g6@2 ~@3 d#6@2 ~@5 d#6@2 ~@3 g6@2 ~@8",
  G: "e6@7 e6@7 e6@7 e6@3 e6@7 e6@7 e6@7 e6@3", H: "d#6@7 d#6@7 d#6@7 d#6@3 d#6@7 d#6@7 d#6@7 d#6@3", I: "e6@7 ~@41",
})).s("gm_xylophone").gain(0.35)

// other · trumpet · "B♭ Trumpet"
const trumpet = note("<A B C ~ A B C B C ~@13 D B C B C E F E F E F E F G H I J G H I J ~@3 A K>".pickRestart({
  A: "~@38 e5@3 g5@3 ~ b5@3",
  B: "a#5@3 g5@3 ~ a#5@3 g5@3 ~ a#5@3 g5@3 ~ b5@3 a#5@3 g5@3 ~ a#5@3 g5@3 ~ a#5@3 g5@3 ~ a#5@3",
  C: "b5@3 g5@3 ~ b5@3 g5@3 ~ b5@3 g5@3 ~ a#5@3 b5@3 g5@3 ~ b5@3 g5@3 ~ b5@3 g5@3 ~@4", D: "~@15 b5",
  E: "c5@7 b4 c5@7 d5", F: "b4@21 c5@3 d5@14 c5@7 b4@3", G: "g4", H: "a4", I: "b4", J: "c5", K: "a#5@7 ~@41",
})).s("gm_trumpet").gain(0.15)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note("<A B C ~ A B C B C ~@4 D ~@8 E B C B C ~@2 F@2 ~@2 F@2 ~@11 A G>".pickRestart({
  A: "~@38 e4@3 g4@3 ~ b4@3",
  B: "a#4@3 g4@3 ~ a#4@3 g4@3 ~ a#4@3 g4@3 ~ b4@3 a#4@3 g4@3 ~ a#4@3 g4@3 ~ a#4@3 g4@3 ~ a#4@3",
  C: "b4@3 g4@3 ~ b4@3 g4@3 ~ b4@3 g4@3 ~ a#4@3 b4@3 g4@3 ~ b4@3 g4@3 ~ b4@3 g4@3 ~@4", D: "g4@9 ~@7", E: "~@15 b4",
  F: "f4/2", G: "a#4@7 ~@41",
})).s("gm_trumpet").gain(0.16)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~ A@8 ~ B C D E F C G H ~@3 I@2 A@4 ~@8 H@2 J K H@2 J K L@4 M>".pickRestart({
  A: "e3@3 ~@4 e3@3 ~@4 e3@3 ~@4 e3@3 e3@3 ~@4 e3@3 ~@4 e3@3 ~@4 e3@3", B: "~@38 e3@3 g3@3 ~ b3@3", C: "c4@17 g3@7",
  D: "d#3@17 c4@7", E: "b3", F: "~@38 b3@3 e4@3 ~ b3@3", G: "d#3@34 ~@4 b2@3 d#3@3 ~ g3@3", H: "e3",
  I: "[e3@89 ~@4 e3@3]/2", J: "f#3", K: "g3", L: "e3@7 e3@7 e3@7 e3@3 e3@7 e3@7 e3@7 e3@3", M: "e3@7 ~@41",
})).s("gm_tenor_sax").gain(0.4)

// bass · electric bass pick · "Bass Guitar"
const bass = note("<~ A B C@2 A B A B D@3 E@3 D E@2 ~@9 F@4 G@4 H G I J H G I J K@4 L>".pickRestart({
  A: "a#1@7 a#1@7 a#1@7 b1@3 a#1@7 a#1@7 a#1@7 a#1@3", B: "b1@7 b1@7 b1@7 a#1@3 b1@7 b1@7 b1@7 b1@3", C: "e2/2",
  D: "c2", E: "b1", F: "e1@7 e1@7 e1@7 e1@3 e1@7 e1@7 e1@7 e1@3", G: "a1@7 a1@7 a1@7 a1@3 a1@7 a1@7 a1@7 a1@3",
  H: "g1@7 g1@7 g1@7 g1@3 g1@7 g1@7 g1@7 g1@3", I: "b1@7 b1@7 b1@7 b1@3 b1@7 b1@7 b1@7 b1@3",
  J: "c2@7 c2@7 c2@7 c2@3 c2@7 c2@7 c2@7 c2@3", K: "e2@7 e2@7 e2@7 e2@3 e2@7 e2@7 e2@7 e2@3", L: "e2@7 ~@41",
})).s("gm_electric_bass_pick").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x ~@6 x ~@6 x ~@6 x ~@2 x ~@6 x ~@6 x ~@6 x ~@2]!46 ~>").gain(0.5)

// drums · crash
const crash = s("cr").struct("<~@27 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@5>".pickRestart({
  A: "x",
})).gain(0.3)

stack(xylophone, trumpet, trumpet_2, tenor_sax, bass, kick, crash)