Strudelify

Up & Down

Vengaboys

KeyF♯ majorTempo136 bpm
0:00/0:00
// Up & Down — Vengaboys
// 136 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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 · percussive organ
const bass = note(`<
  ~@16 A B C B C B C B C B C B C B C B ~@9 B C B C B C B C B C B C B C B C B C B C B C B ~@30 B C B C B C B ~ B C B C B
  C B ~ B C B C B C D@2 B C B C B C B ~@2
>`.pickRestart({
  A: "~@14 f#2 f#3", B: "f#1 f#2 f#1 f#2 f#1 f#2 f#1 f#2", C: "f#1@2 f#2@2 f#1@2 f#2@2 f#1@2 f#2@2 f#1@2 f#2 f#3",
  D: "f#1@2 f#2@2 f#1@2 f#2@2 f#1@2 f#2@2 f#1@2 ~ f#3, ~@7 f#2",
})).s("gm_percussive_organ").gain(0.8)

// bass · synth bass 1
const bass_2 = note("<~@16 A B@15 ~@9 B@23 ~@30 B@7 ~ B@7 ~ B@15 ~@2>".pickRestart({
  A: "~@8 c#1 ~ c#1 ~ g#1 ~ g#1 ~", B: "f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3",
})).s("gm_synth_bass_1").gain(0.56)

// other · string ensemble 1
const string_ensemble_1 = note("<~@65 A@7 ~@50 B@3 ~@2>".pickRestart({
  A: "[f#6,f#7]/7", B: "[f#6,f#7]/3",
})).s("gm_string_ensemble_1").gain(0.25)

// chords · synth bass 1
const synth_bass_1 = note(`<
  ~ A ~ A ~ A ~ A ~ B C D E F G D H I J K L I J K L I J K L I J K M B C D E F G D H I J K L I J K L I J K L I J K N O P
  Q R O P Q S I J K L I J K M B C B E B C D E B C D E B C D E B C D T U O P Q R O P Q S O P Q R O P Q S O P Q R O P Q S
  O P Q R O P Q V ~
>`.pickRestart({
  A: "[f#2,a#3]@3 ~@13", B: "[f#2,a#3] ~@2 [f#2,a#3] [b2,d#4] ~ [b2,d#4] ~",
  C: "[c#3,f4]@3 ~@3 [c#3,f4]@2 [b2,d#4]@3 ~ [b2,d#4]@3 ~", // C# B
  D: "[f#2,a#3]@3 ~@3 [f#2,a#3]@2 [b2,d#4]@2 ~@2 [b2,d#4]@2 ~@2", // F# B
  E: "[c#3,f4]@3 ~@3 [c#3,f4]@2 [b2,d#4]@3 ~ [b2,d#4]@2 ~@2", // C# B
  F: "[f#2,a#3]@3 ~@3 [f#2,a#3]@2 [b2,d#4]@3 ~ [b2,d#4]@2 ~@2", // F# B
  G: "[c#3,f4]@3 ~@3 [c#3,f4]@2 [b2,d#4]@2 ~@2 [b2,d#4]@2 ~@2", // C# B
  H: "[c#3,f4]@3 ~@3 [c#3,f4]!3 ~ [c#3,f4] ~ [b2,d#4] ~ [b2,d#4] ~", // C# B
  I: "[f#2,a#3]@2 ~ [f#2,a#3] ~@2 [c#3,f4] ~ [c#3,f4] ~ [c#3,f4] ~ [b2,d#4] ~ [b2,d#4] ~", // F# C# B
  J: "[f#2,a#3] ~ [f#2,a#3] ~ [f#2,a#3] ~ [c#3,f4]!3 ~ [c#3,f4] ~ [b2,d#4] ~ [b2,d#4] ~", // F# C# B
  K: "[f#2,a#3]@2 ~ [f#2,a#3] ~@2 [c#3,f4] ~ [c#3,f4]!3 ~ [b2,d#4] ~ [b2,d#4] ~", // F# C# B
  L: "[f#2,a#3]@2 ~@4 [c#3,f4]!3 ~ [c#3,f4] ~ [b2,d#4] ~ [b2,d#4] ~", M: "[f#2,a#3] ~@7",
  N: "[f#2,a#3]@2 ~@4 [c#3,f4,g#4]!3 ~ [c#3,f4,g#4] ~ [b2,d#4,f#4] ~ [b2,d#4,f#4] ~", // F# C# B
  O: "[f#2,a#3,c#4]@2 ~ [f#2,a#3,c#4] ~@2 [c#3,f4,g#4] ~ [c#3,f4,g#4] ~ [c#3,f4,g#4] ~ [b2,d#4,f#4] ~ [b2,d#4,f#4] ~", // F# C# B
  P: "[f#2,a#3,c#4] ~ [f#2,a#3,c#4] ~ [f#2,a#3,c#4] ~ [c#3,f4,g#4]!3 ~ [c#3,f4,g#4] ~ [b2,d#4,f#4] ~ [b2,d#4,f#4] ~", // F# C# B
  Q: "[f#2,a#3,c#4]@2 ~ [f#2,a#3,c#4] ~@2 [c#3,f4,g#4] ~ [c#3,f4,g#4]!3 ~ [b2,d#4,f#4] ~ [b2,d#4,f#4] ~", // F# C# B
  R: "[f#2,a#3,c#4]@2 ~@4 [c#3,f4,g#4]!3 ~ [c#3,f4,g#4] ~ [b2,d#4,f#4] ~ [b2,d#4,f#4] ~", // F# C# B
  S: "[f#2,a#3,c#4]@2 ~@4 [c#3,f4]!3 ~ [c#3,f4] ~ [b2,d#4] ~ [b2,d#4] ~", T: "[c#3,f4]@3 ~@13",
  U: "~@6 [c#3,f4,g#4]!3 ~ [c#3,f4,g#4] ~ [b2,d#4,f#4] ~ [b2,d#4,f#4] ~", V: "[f#2,a#3,c#4] ~@7",
})).s("gm_synth_bass_1").gain(0.49)

// chords · lead 1 square · D#m
const lead_1_square = note("<~@8 [~ f#6, [d#3,f#4]] ~@116 [~ f#6, [d#3,f#4]] ~>").s("gm_lead_1_square").gain(0.3)

// bass · synth bass 1
const bass_3 = note("<~@41 A@23 B ~@29 A@7 B A@7 B A@15 B ~>".pickRestart({
  A: "f#1 ~ f#2!2 f#1 ~ f#2!2 f#1 ~ f#2!2 f#1 ~ f#2!2", B: "f#1 ~@15",
})).s("gm_synth_bass_1").gain(0.34).pan(0.3)

// other · timpani
const timpani = note("<~@93 A B ~@14 A B ~@6 A B ~@6 A B>".pickRestart({
  A: "~@9 f#2!7", B: "f#2 ~@15",
})).s("gm_timpani").gain(0.42)

// other · timpani · soft notes
const timpani_soft = note("<~@93 A ~@15 A ~@7 A ~@7 A ~>".pickRestart({
  A: "~@8 f#2 ~@7",
})).s("gm_timpani").gain(0.24)

// other · lead 4 chiff
const lead_4_chiff = note("<~ [f#2 ~@5 f#2 ~ f#2 ~@5 f#2 ~]!7 [f#2 ~@15] ~@64 [f#2 ~@5 f#2 ~ f#2 ~@5 f#2 ~]!19 ~@35>")
  .s("gm_lead_4_chiff").gain(0.3)

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

// drums · rim · soft notes
const rim_soft = s("rim").struct("<~ [~ x ~@6]!7 ~@65 [~ x ~@6]!19 ~@35>").gain(0.32)

// drums · clap
const clap = s("cp").struct(`<
  ~ A@7 ~@5 A@3 ~ A@15 ~@5 A@3 ~ A@3 B A@7 B A@7 B A@4 ~@8 A@19 ~@2 A@3 B A@7 B A@7 B A@7 B A@3 ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~",
})).gain(0.8)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~ [~ x ~@6]!7 ~@29 [~ x ~@6]!3 ~@33 [~ x ~@6]!19 ~@35>").gain(0.32)

// drums · hihat
const hihat = s("hh").struct("<A@8 B ~@4 C@3 B D@8 E@7 ~@9 E@24 ~@29 E@31 ~@2>".pickRestart({
  A: "x!4", B: "x", C: "x!2", D: "~ x ~ x ~ x ~ x", E: "x!8",
})).gain(0.8)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@73 [x!4]!19 x ~@34>").gain(0.48)

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

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@48 A ~@7 A ~@7 A ~@26 B ~@9 A ~@7 A ~@7 A ~@3 A ~@5>".pickRestart({
  A: "~@3 x", B: "~@7 x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~ A ~@7 A ~@7 B@7 C B@7 A B@7 A B@7 C B@7 C B@7 A B@7 A ~@12 A ~@3 A@2 ~@3 B@7 A B@7 A B@15 A@2
>`.pickRestart({
  A: "x", B: "x!4", C: "x ~ x ~ x!3 ~",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  ~ A ~@7 A ~@7 B@7 C B@7 A B@7 A B@7 C B@7 C B@7 A B@7 A ~@12 A ~@5 D A ~ B@7 A B@7 A B@15 A@2
>`.pickRestart({
  A: "x", B: "x!4", C: "x ~ x ~ x!3 ~", D: "x!8",
})).gain(0.8)

// drums · tambourine
const tambourine = s("tb").struct("<~@57 A@7 ~@30 A@7 ~ A@7 ~ A@15 ~@2>".pickRestart({
  A: "x!4",
})).gain(0.48)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct("<~@89 x!2 ~@36>").gain(9.4)

// drums · congas
const congas = s("conga:18").struct("<~ [~ x ~ x]!7 ~@65 [~ x ~ x]!19 ~@35>").gain(1.02)

// drums · congas · soft notes
const congas_soft = s("conga:18").struct("<~ [~ x ~@3 x ~@2]!7 ~@65 [~ x ~@3 x ~@2]!19 ~@35>").gain(0.77)

// drums · congas
const congas_2 = s("conga:33").struct("<~ [x ~@2 x!2 ~@2 x]!7 x ~@64 [x ~@2 x!2 ~@2 x]!19 ~@35>").gain(1.02)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~ [~ x ~ x ~ x ~ x]!7 ~@65 [~ x ~ x ~ x ~ x]!19 ~@35>").gain(2.43)

// drums · shaker
const shaker = s("sh").struct("<~ [~ x ~ x ~ x ~ x]!7 ~@65 [~ x ~ x ~ x ~ x]!19 ~@35>").gain(0.48)

// drums · triangle
const triangle = s("triangles:35").struct("<~@33 [x!13 ~@3]!6 [x!16] ~@41 [x!13 ~@3]!10 [x!16] x ~@34>").gain(4.18)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~ [~@3 x ~@3 x]!7 ~@65 [~@3 x ~@3 x]!8 ~@46>").gain(3.81)

stack(
  bass, bass_2, string_ensemble_1, synth_bass_1, lead_1_square, bass_3, timpani, timpani_soft, lead_4_chiff, rim,
  rim_soft, clap, clap_soft, hihat, hihat_soft, crash, crash_soft, high_tom, ride, tambourine, vibraslap, congas,
  congas_soft, congas_2, cabasa, shaker, triangle, bell_tree
)

More by Vengaboys