Strudelify

Beyond - Original EDM Track

somebuddy

KeyE majorTempo92 bpm
0:00/0:00
// Beyond - Original EDM Track — somebuddy
// 92 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5167030; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 79 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(92/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 · lead 2 sawtooth · "Saw Synthesiser"
const lead_2_sawtooth = note(`<
  ~@12 A B C D E F G H I F G H J K L M ~@20 N I F G H J K L M J K L O P Q R S P Q R S P Q R S P Q R S T@2
>`.pickRestart({
  A: "c#4@3 c#4@3 c#4@3 c#4@3 c#4@3 c#4@3 c#4@2 b3 c#4@2 d#4", B: "e4@3 e4@3 e4@3 e4@3 e4@3 e4@3 e4@2 e4 g#4@2 g#4",
  C: "a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@2 a4 e4@2 e4", D: "f#4@3 f#4@3 f#4@3 f#4@3 f#4@3 f#4@3 g#4@2 g#4 d#4@2 d#4",
  E: "[e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@2 [e3,g#3,b3] [e3,g#3,c#4]@2 [g#3,b3,d#4]", // C#m E C#m G#m
  F: "[g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@2 [g#3,b3,e4] [b3,e4,g#4]@2 [b3,e4,g#4]", // E
  G: "[c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@2 [c#4,e4,a4] [a3,c#4,e4]@2 [a3,c#4,e4]", // A
  H: "[b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,g#4]@2 [b3,d#4,g#4] [f#3,b3,d#4]@2 [f#3,b3,d#4]", // B G#m B
  I: "~@6 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@2 [e3,g#3,b3] [e3,g#3,c#4]@2 [g#3,b3,d#4]", // C#m E C#m G#m
  J: "[e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4,c#5]@3 [e3,g#3,c#4,b4]@3 [e3,g#3,c#4]@2 [e3,g#3,b3] [e3,g#3,c#4]@2 [g#3,b3,d#4]", // C#m C#m7 C#m E C#m G#m
  K: "[g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4,b4]@3 [g#3,b3,e4,g#4]@3 [g#3,b3,e4]@2 [g#3,b3,e4] [b3,e4,g#4]@2 [b3,e4,g#4]", // E
  L: "[c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4,e5]@3 [c#4,e4,a4,c#5]@3 [c#4,e4,a4]@2 [c#4,e4,a4] [a3,c#4,e4]@2 [a3,c#4,e4]", // A
  M: "[b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4,b4]@3 [b3,d#4,f#4,d#5]@3 [b3,d#4,g#4]@2 [b3,d#4,g#4] [f#3,b3,d#4]@2 [f#3,b3,d#4]", // B G#m B
  N: "c#4",
  O: "[b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4,b4]@3 [b3,d#4,f#4,d#5]@3 [b3,d#4,g#4,f#5]@2 [b3,d#4,g#4] [f#3,b3,d#4,d#5]@2 [f#3,b3,d#4]", // B G#m7 G#m B
  P: "[e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4,c#5,c#6]@3 [e3,g#3,c#4,b4,b5]@3 [e3,g#3,c#4]@2 [e3,g#3,b3] [e3,g#3,c#4]@2 [g#3,b3,d#4], e5@2 ~ [g#4,g#5]", // C#m C#m7 C#m E C#m G#m G#
  Q: "[g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4,b4,b5]@3 [g#3,b3,e4,g#4,g#5]@3 [g#3,b3,e4,g#5]@2 [g#3,b3,e4,b5] [b3,e4,g#4,g#5]@2 [b3,e4,g#4,e5], g#5 ~", // E
  R: "[c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4,e5]@3 [c#4,e4,a4,c#5]@3 [c#4,e4,a4,c#6]@2 [c#4,e4,a4,a5] [a3,c#4,e4,c#6]@2 [a3,c#4,e4,a5], a5 ~", // A
  S: "[b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4,b4]@3 [b3,d#4,f#4,d#5]@3 [b3,d#4,g#4,f#5]@2 [b3,d#4,g#4] [f#3,b3,d#4,d#5]@2 [f#3,b3,d#4], b5 ~", // B G#m7 G#m B
  T: "[[e5,e6]@5 ~@3]/2", // E
})).s("gm_lead_2_sawtooth").gain(0.5)

// chords · lead 1 square · "Square Synthesiser"
const lead_1_square = note(`<
  A B C D ~@3 E F G H I J K L M N K L M O K L M N K L M ~@11 P Q ~@6 R Q O K L M N K L M N K L S N K L M T U V W T U V W
  ~@6
>`.pickRestart({
  A: "c#4 ~@3", B: "e4 ~@3", C: "g#4 ~@3", D: "f#4 ~@3", E: "~@6 f#4@4 ~ f#4@4 f#4@3 g#4@3 d#4@3",
  F: "[c#4,e4,g#4]@6 c#4@4 ~ c#4@4 c#4@3 ~@3 d#4@3", G: "[g#3,b3,f#4]@6 b3@4 ~ b3@4 b3@3 g#3@3 c#4@3",
  H: "[c#4,e4,a4]@6 a4@4 ~ a4@4 a4@3 a4@3 e4@3", I: "[b3,d#4,f#4]@6 f#4@4 ~ f#4@4 f#4@3 g#4@3 d#4@3",
  J: "[c#4,e4,g#4]@6 c#4@4 ~ c#4@4 c#4@3 ~@3 d#4@3, [c#2,c#3,e3]", K: "[e2,e3,g#3], [b3,e4,g#4] ~@3",
  L: "[a2,c#3,a3], [c#4,e4,a4] ~@3", M: "[b1,b2,d#3], [b3,d#4,f#4] ~@3", N: "[c#2,c#3,e3], [c#4,e4,g#4] ~@3",
  O: "~ [c#2,c#3,e3]@3, ~ [c#4,e4,g#4] ~@2", // C#m
  P: "~@12 [c#3,e3,a3] ~@2 [c#3,e3,a3] ~@2 [c#3,e3,a3] ~ [c#3,e3,a3]!2 ~ [c#3,e3,a3]", // A
  Q: "[b2,d#3,f#3] ~@2 [b2,d#3,f#3] ~@2 [b2,d#3,f#3] ~@2 [b2,d#3,f#3] ~@2 [b2,d#3,f#3] ~@2 [b2,d#3,f#3] ~@2 [b2,d#3,f#3] ~ [b2,d#3,f#3]!2 ~ [b2,d#3,f#3]", // B
  R: "~@15 [c#3,e3,a3] ~@2 [c#3,e3,a3] ~ [c#3,e3,a3]!2 ~ [c#3,e3,a3]", S: "[b3,d#4,f#4]@2 ~@4 f#5 d#5, [b1,b2,d#3]",
  T: "[c#4,e4,g#4] ~@3", U: "[b3,e4,g#4] ~@3", V: "[c#4,e4,a4] ~@3", W: "[b3,d#4,f#4] ~@3",
})).s("gm_lead_1_square").gain(0.3)

// chords · lead 1 square · "Square Synthesiser" · soft notes
const lead_1_square_soft = note("<A B C D ~@3 E ~@31 F ~@7 G ~@31>".pickRestart({
  A: "[e3,g#3] ~@7", B: "[g#3,b3] ~@7", C: "[g#3,c#4] ~@7", D: "[d#3,b3] ~@7", E: "[b3,d#4,f#4] ~@3",
  F: "[c#3,e3,a3] ~@2 [c#3,e3,a3] ~@2 [c#3,e3,a3] ~@2 [c#3,e3,a3] ~@14", // A
  G: "[c#3,e3,a3] ~@2 [c#3,e3,a3] ~@2 [c#3,e3,a3] ~@2 [c#3,e3,a3] ~@2 [c#3,e3,a3] ~@11", // A
})).s("gm_lead_1_square").gain(0.2)

// chords · piano
const piano = note(`<
  ~@4 A B C D A B C D E F G H I J K L ~@4 M N O P ~@5 I J K L I J K L ~@4 I J K L Q N O P M N O P M N O R M N O P M N O
  P M N O S ~@6
>`.pickRestart({
  A: "[c#4,e4,g#4]@9 [c#4,e4,g#4]@3 [c#4,e4,g#4]@5 [c#4,e4,g#4]@4 [c#4,e4,g#4]@3", // C#m
  B: "[b3,e4,g#4]@9 [b3,e4,g#4]@3 [b3,e4,g#4]@5 [b3,e4,g#4]@4 [b3,e4,g#4]@3", // E
  C: "[c#4,e4,a4]@9 [c#4,e4,a4]@3 a4@5 ~@4 e4@3, ~ c#4, ~@4 e4@3 ~, ~@17 a4@7", // A
  D: "[b3,d#4,f#4]@9 [b3,d#4,f#4]@3 [b3,d#4,f#4]@5 [b3,d#4,f#4]@4 [b3,d#4,f#4]@3", // B
  E: "[c#4,e4,g#4] ~ [c#4,e4,g#4] ~@6 [c#4,e4,g#4]@3 [c#4,e4,g#4]@4 ~ [c#4,e4,g#4]@4 [c#4,e4,g#4]@3, [c#2,c#3,e3]@23 ~", // C#m
  F: "[b3,e4,g#4] ~ [b3,e4,g#4] ~@6 [b3,e4,g#4]@3 [b3,e4,g#4]@4 ~ [b3,e4,g#4]@4 [b3,e4,g#4]@3, [e2,e3,g#3]@23 ~", // E
  G: "[c#4,e4,a4] ~ [c#4,e4,a4] ~@6 [c#4,e4,a4]@3 a4@4 ~@5 e4@3, [a2,c#3,a3]@23 ~, ~@12 c#4@11 ~, ~@4 e4@3 ~, ~@17 a4@7", // A
  H: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~@6 [b3,d#4,f#4]@3 [b3,d#4,f#4]@4 ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@3, [b1,b2,d#3]@23 ~", // B
  I: "[c#4,e4,g#4] ~ [c#4,e4,g#4] ~@6 [c#4,e4,g#4]@3 [c#4,e4,g#4]@4 ~ [c#4,e4,g#4]@4 [c#4,e4,g#4]@3", // C#m
  J: "[b3,e4,g#4] ~ [b3,e4,g#4] ~@6 [b3,e4,g#4]@3 [b3,e4,g#4]@4 ~ [b3,e4,g#4]@4 [b3,e4,g#4]@3", // E
  K: "[c#4,e4,a4] ~ [c#4,e4,a4] ~@6 [c#4,e4,a4]@3 [c#4,e4,a4]@4 ~ [c#4,e4,a4]@4 [c#4,e4,a4]@3", // A
  L: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~@6 [b3,d#4,f#4]@3 [b3,d#4,f#4]@4 ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@3", // B
  M: "[c#2,c#3,e3]@23 ~, [c#4,e4,g#4] ~@3", N: "[e2,e3,g#3]@23 ~, [b3,e4,g#4] ~@3",
  O: "[a2,c#3,a3]@23 ~, [c#4,e4,a4] ~@3", P: "[b1,b2,d#3]@23 ~, [b3,d#4,f#4] ~@3",
  Q: "~@6 [c#2,c#3,e3]@17 ~, ~ [c#4,e4,g#4] ~@2", R: "[b3,d#4,f#4]@2 ~@4 f#5 d#5, [b1,b2,d#3]@23 ~",
  S: "[b3,d#4,f#4] ~@3", // B
})).s("gm_piano").gain(0.3)

// chords · steel drums
const steel_drums = note(`<
  ~@4 A B C D A B C D A B C D E F G H I F G H E F G H ~@9 J K L M ~@4 N O P Q R S T U V S T U V S T W ~@4 V S T X V S T
  X V S ~@4
>`.pickRestart({
  A: "[c#4,e4,g#4] ~ [c#4,e4,g#4] ~@6 [c#4,e4,g#4]@3 [c#4,e4,g#4]@4 ~ [c#4,e4,g#4]@4 [c#4,e4,g#4]@3", // C#m
  B: "[b3,e4,g#4] ~ [b3,e4,g#4] ~@6 [b3,e4,g#4]@3 [b3,e4,g#4]@4 ~ [b3,e4,g#4]@4 [b3,e4,g#4]@3", // E
  C: "[c#4,e4,a4] ~ [c#4,e4,a4] ~@6 [c#4,e4,a4]@3 a4@4 ~@5 e4@3, ~ c#4, ~@4 e4@3 ~, ~@17 a4@7", // A
  D: "[b3,d#4,f#4] ~ [b3,d#4,f#4] ~@6 [b3,d#4,f#4]@3 [b3,d#4,f#4]@4 ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@3", // B
  E: "[c#4,e4,g#4]@3 ~@6 [c#4,e4,g#4]@3 [c#4,e4,g#4]@4 ~ [c#4,e4,g#4]@4 [c#4,e4,g#4]@3", // C#m
  F: "[b3,e4,g#4]@3 ~@6 [b3,e4,g#4]@3 [b3,e4,g#4]@4 ~ [b3,e4,g#4]@4 [b3,e4,g#4]@3", // E
  G: "[c#4,e4,a4]@3 ~@6 [c#4,e4,a4]@3 [c#4,e4,a4]@4 ~ [c#4,e4,a4]@4 [c#4,e4,a4]@3", // A
  H: "[b3,d#4,f#4]@3 ~@6 [b3,d#4,f#4]@3 [b3,d#4,f#4]@4 ~ [b3,d#4,f#4]@4 [b3,d#4,f#4]@3", // B
  I: "~@9 [c#4,e4,g#4]@3 [c#4,e4,g#4]@4 ~ [c#4,e4,g#4]@4 [c#4,e4,g#4]@3", // C#m
  J: "c#4@3 c#4@3 c#4@3 c#4@3 c#4@3 c#4@3 c#4@2 b3 c#4@2 d#4", K: "e4@3 e4@3 e4@3 e4@3 e4@3 e4@3 e4@2 e4 g#4@2 g#4",
  L: "a4@3 a4@3 a4@3 a4@3 a4@3 a4@3 a4@2 a4 e4@2 e4", M: "f#4@3 f#4@3 f#4@3 f#4@3 f#4@3 f#4@3 g#4@2 g#4 d#4@2 d#4",
  N: "~@4 c#5 b4 ~@2", O: "~@4 b4 g#4 ~@2", P: "~@4 e5 c#5 ~@2", Q: "~@4 b4 d#5 ~@2",
  R: "~@6 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@2 [e3,g#3,b3] [e3,g#3,c#4]@2 [g#3,b3,d#4]", // C#m E C#m G#m
  S: "[g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@3 [g#3,b3,e4]@2 [g#3,b3,e4] [b3,e4,g#4]@2 [b3,e4,g#4]", // E
  T: "[c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@3 [c#4,e4,a4]@2 [c#4,e4,a4] [c#4,e4,a4]@2 [c#4,e4,a4]", // A
  U: "[b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@2 [b3,d#4,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4]", // B
  V: "[e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@3 [e3,g#3,c#4]@2 [e3,g#3,b3] [e3,g#3,c#4]@2 [g#3,b3,d#4]", // C#m E C#m G#m
  W: "[b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@2 [b3,d#4,f#4] [b3,d#4,f#4]@2 [b3,d#4,f#4], ~@18 f#5 ~@2 d#5 ~@2", // B
  X: "[b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@3 [b3,d#4,f#4]@2 [b3,d#4,f#4] b3!2 [b3,d#4,f#4], ~@21 [d#4,f#4]@2 ~", // B D#m
})).s("gm_steel_drums").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~@12 A@8 B C@7 ~@19 A@2 D E@10 ~@5 E@7 ~@7>".pickRestart({
  A: "x ~@8 x ~ x ~@2 x!2 ~@8", B: "~@12 x ~@4 x ~@6", C: "x ~@11 x ~@4 x ~@3 x ~@2", D: "~@9 x ~@2 x ~ x!2 ~@5 x ~@2",
  E: "x ~@2 x ~@5 x ~@2 x ~ x!2 ~@5 x ~@2",
})).gain(0.5)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@43
  [x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~ x]
  [x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2]
  ~@34
>`).gain(0.2)

// drums · crash
const crash = s("cr").struct("<A ~@2 B ~@16 C@8 A ~@11 D C ~@7 C ~@3 C@20 ~@6>".pickRestart({
  A: "x!12 ~@12", B: "~@12 x!12", C: "x", D: "x!24",
})).gain(0.2)

// drums · whistle
const whistle = s("ballwhistle:0").struct("<~@20 x ~@7 x ~@50>").gain(0.39)

// drums · guiro
const guiro = s("guiro:4").struct("<~@19 A ~@8 B ~@19 A B ~@14 C ~@14>".pickRestart({
  A: "~@12 x!12", B: "x", C: "x!24",
})).gain(6.29)

// drums · guiro · soft notes
const guiro_soft = s("guiro:4").struct("<~@19 [x!12 ~@12] ~@28 [x!12 ~@12] ~@30>").gain(4.19)

stack(
  lead_2_sawtooth, lead_1_square, lead_1_square_soft, piano, steel_drums, kick, snare, snare_soft, crash, whistle,
  guiro, guiro_soft
)