Strudelify

Everybody

DJ BoBo

KeyB♭ minorTempo101 bpm
0:00/0:00
// Everybody — DJ BoBo
// 101 bpm, 4/4, key A# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(101/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 · synth bass 1
const bass = note(`<
  ~@8 A B C D A B C D A B C D A B C E A B C D A B C D ~@12 A B F E A B F D A B F D ~@8 G H I J G H I J K L M N K L M O A
  B C D A B C D A
>`.pickRestart({
  A: "gb1@2 ~ gb1!5 eb1@2 gb1@3 ~@3", B: "ab1@2 ~ ab1!5 f1@2 ab1@2 f1@2 ab1 ~", C: "bb1@3 bb1!5 f1@2 bb1@3 ~@3",
  D: "gb1@2 ~ gb1!5 eb1@2 gb1@2 eb1@2 gb1@2", E: "gb1@7 ~ ab1@7 ~", F: "bb1@2 ~ bb1!5 f1@2 bb1@3 ~@3",
  G: "bb1@3 ~ bb1@2 ~ bb1@2 bb1 ~ bb1 bb1@3 ~", H: "db2@3 ~ db2@2 ~ db2@2 db2 ~ db2 db2@3 ~",
  I: "eb2@3 ~ eb2@2 ~ eb2@2 eb2 ~ eb2 eb2@3 ~", J: "gb1@3 ~ gb1@2 ~ ab1@2 ab1 ~ ab1 ab1@3 ~",
  K: "bb1@2 ~ bb1!5 ab1@2 bb1@2 ~@4", L: "bb1@2 ~ bb1!5 ab1@2 bb1@2 ab1@2 bb1 ~", M: "ab1@2 ~ ab1!5 gb1@2 ab1@2 ~@4",
  N: "eb1@2 ~ eb1!5 db1@2 eb1@2 db1@2 eb1 ~", O: "gb1@3 ~ ab1@3 ~",
})).s("gm_synth_bass_1").gain(0.56)

// other · electric guitar muted
const electric_guitar_muted = note("<~@4 A B A B ~@52 A B A B ~@4 A B A B ~@17>".pickRestart({
  A: "bb3!2 ab3 ~ bb3 ~ ab3 bb3 ~ bb3 ab3 ~ f3 ~ ab3 ~", B: "bb3!2 ab3 ~ bb3 ~ ab3 bb3 ~ bb3 ab3!2 f3 ~ ab3 ~",
})).s("gm_electric_guitar_muted").gain(0.33).pan(0.8)

// other · lead 8 bass lead
const lead_8_bass_lead = note(`<
  ~@15 A B C D@2 B C E@2 F G H F@2 I J K ~@7 A B C D@2 B C E@2 F G H F@2 I J K ~@23 A F G H L F G H F@2
>`.pickRestart({
  A: "~@10 f4!2 eb4@2 db4 ~", B: "db4@4 eb4@2 ~ db4@2 ~ f4@2 eb4@2 db4@2", C: "eb4@3 ~ eb4@2 ~ ab3@5 ~@4",
  D: "[~@10 f4@2 eb4@2 db4@7 ~@5 f4!2 eb4@2 db4 ~]/2", E: "[~@10 f4@2 eb4@2 db4@8 f4 eb4 ~@2 f4!2 eb4@2 db4 ~]/2",
  F: "db4@4 eb4@3 db4 ~@2 f4!2 eb4@2 db4@2", G: "eb4@4 eb4@3 ab3 ~@2 eb4@2 f4@2 ab4 ~",
  H: "bb4@4 bb4@3 ab4@2 ~ f4!2 eb4@2 db4 ~", I: "eb4@3 ~ eb4@3 ab3@2 ~ eb4!2 f4@2 ab4 ~",
  J: "bb4@4 bb4@3 ab4@2 ~ f4!2 eb4@2 db4@2", K: "db4@5 ~@3", L: "db4@10 f4!2 eb4@2 db4 ~",
})).s("gm_lead_8_bass_lead").gain(0.44)

// chords · piano
const piano = note(`<
  A B C A@2 B C A ~@4 D E F D A B C A@2 B C G D E F D@2 E F D ~@8 A B C A@2 B C G D E F D@2 E F D H I J K H I J K L M N
  O L M N O ~@7 G D E F D@2 E F D@2
>`.pickRestart({
  A: "[gb2,gb3,bb3,db4]", B: "[ab2,ab3,c4,eb4]", C: "[bb3,db4,f4]@3 [ab3,c4,eb4], bb2",
  D: "[gb3,bb3,db4] ~ [gb3,bb3,db4]!2 [gb3,bb3,eb4] ~ [gb3,bb3,eb4] [gb3,bb3,db4] ~ [gb3,bb3,db4] ~ [gb3,bb3,db4]!2 ~ [gb3,bb3,db4] ~", // Gb Ebm Gb
  E: "[ab3,c4,eb4] ~ [ab3,c4,eb4]!2 [ab3,c4,eb4,f4] ~ [ab3,c4,eb4,f4] [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4]!2 ~ [ab3,c4,eb4] ~", // Ab Fm7 Ab
  F: "[bb3,db4,f4] ~ [bb3,db4,f4]!3 ~ [bb3,db4,f4]!2 ~ [bb3,db4,f4] ~ [bb3,db4,f4] [ab3,c4,eb4,f4] ~ [ab3,c4,eb4,f4] ~", // Bbm Fm7
  G: "[gb2,gb3,bb3,db4] [ab2,ab3,c4,eb4]", H: "[bb2,bb3,db4,f4]", I: "[db3,ab3,db4,f4]", J: "[eb3,bb3,eb4,gb4]",
  K: "[gb2,bb3,db4,gb4] [ab2,ab3,c4,eb4]", // Gb Ab
  L: "[bb3,db4,f4] ~ [bb3,db4,f4]!3 ~ [bb3,db4,f4]!2 ~ [bb3,db4,f4] ~ [bb3,db4,f4]!2 ~ [bb3,db4,f4] ~", // Bbm
  M: "[ab3,db4,f4] ~ [ab3,db4,f4]!3 ~ [ab3,db4,f4]!2 ~ [ab3,db4,f4] ~ [ab3,db4,f4]!2 ~ [ab3,db4,f4] ~", // Db
  N: "[bb3,eb4,gb4] ~ [bb3,eb4,gb4]!3 ~ [bb3,eb4,gb4]!2 ~ [bb3,eb4,gb4] ~ [bb3,eb4,gb4]!2 ~ [bb3,eb4,gb4] ~", // Ebm
  O: "[bb3,db4,gb4] ~ [bb3,db4,gb4]!3 ~ [bb3,db4,gb4] [ab3,c4,eb4] ~ [ab3,c4,eb4] ~ [ab3,c4,eb4]!2 ~ [ab3,c4,eb4] ~", // Gb Ab
})).s("gm_piano").gain(0.38).pan(0.4)

// chords · shamisen
const shamisen = note("<A B C A@2 B C A ~@48 D E F G D E F G ~@25>".pickRestart({
  A: "~@3 [gb3,bb3,db4]!2 gb3!2 [gb3,bb3,db4] ~@3 [gb3,bb3,db4]!2 gb3!2 [gb3,bb3,db4]", // Gb
  B: "~@3 [ab3,c4,eb4]!2 ab3!2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ab3!2 [ab3,c4,eb4]", // Ab
  C: "~@3 [bb3,db4,f4]!2 bb3!2 [bb3,db4,f4] ~@3 [bb3,db4,f4]!2 ab3!2 [ab3,c4,eb4]", // Bbm Ab
  D: "~@3 [db4,f4]!2 bb3 ~@5 [db4,f4]!2 bb3 ~@2", E: "~@3 [db4,f4]!2 ab3 ~@5 [db4,f4]!2 ab3 ~@2",
  F: "~@3 [eb4,gb4]!2 bb3 ~@5 [eb4,gb4]!2 bb3 ~@2", G: "~@3 [db4,gb4]!2 bb3 ~@5 [c4,eb4]!2 ab3 ~@2",
})).s("gm_shamisen").gain(0.1).pan(0.4)

// chords · slap bass 1
const slap_bass_1 = note(`<
  A B C A@2 B C A D E F D@2 E F D@2 E F D@2 E F G D E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F G D E F D@2 E F D H@2 I
  J H@2 I J ~@16 D E F D@2 E F D@2
>`.pickRestart({
  A: "~@2 [gb3,bb3,db4] ~@3 [gb3,bb3,db4] ~@3 [gb3,bb3,db4] ~@3 [gb3,bb3,db4] ~", // Gb
  B: "~@2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~@3 [ab3,c4,eb4] ~", // Ab
  C: "~@2 [bb3,db4,f4] ~@3 [bb3,db4,f4] ~@3 [bb3,db4,f4] ~@3 [ab3,c4,eb4] ~", // Bbm Ab
  D: "~@2 [gb3,bb3] ~@3 [gb3,bb3] ~@3 [gb3,bb3] ~@3 [gb3,bb3] ~", // Gb
  E: "~@2 [ab3,c4] ~@3 [ab3,c4] ~@3 [ab3,c4] ~@3 [ab3,c4] ~", // Ab
  F: "~@2 [bb3,db4] ~@3 [bb3,db4] ~@3 [bb3,db4] ~@3 [ab3,c4] ~", // Bbm Ab
  G: "~@2 [gb3,bb3] ~@3 [gb3,bb3] ~@3 [ab3,c4] ~@3 [ab3,c4] ~", // Gb Ab
  H: "~@2 [db4,f4] ~@3 [db4,f4] ~@3 [db4,f4] ~@3 [db4,f4] ~", // Db
  I: "~@2 [eb4,gb4] ~@3 [eb4,gb4] ~@3 [eb4,gb4] ~@3 [eb4,gb4] ~", // Ebm
  J: "~@2 [db4,gb4] ~@3 [db4,gb4] ~@3 [c4,eb4] ~@3 [c4,eb4] ~", // Gb5 Cm
})).s("gm_slap_bass_1").gain(0.1).pan(0.7)

// chords · shamisen
const shamisen_2 = note(`<
  A B C A@2 B C A D E F D@2 E F D@2 E F D@2 E F G D E F D@2 E F D@2 E F D@2 E F D@2 E F D@2 E F G D E F D@2 E F D H I J
  K H I J K L@2 M N L@2 M N L@2 E O L@2 E G D E F D@2 E F D P
>`.pickRestart({
  A: "~@2 [gb3,bb3,db4]!2 gb3!2 [gb3,bb3,db4] ~@3 [gb3,bb3,db4]!2 gb3!2 [gb3,bb3,db4] ~", // Gb
  B: "~@2 [ab3,c4,eb4]!2 ab3!2 [ab3,c4,eb4] ~@3 [ab3,c4,eb4]!2 ab3!2 [ab3,c4,eb4] ~", // Ab
  C: "~@2 [bb3,db4,f4]!2 bb3!2 [bb3,db4,f4] ~@3 [bb3,db4,f4]!2 ab3!2 [ab3,c4,eb4] ~", // Bbm Ab
  D: "~@2 [bb3,db4]!2 ~@2 [bb3,db4] ~@3 [bb3,db4]!2 ~@2 [bb3,db4] ~", // Bbm
  E: "~@2 [c4,eb4]!2 ~@2 [c4,eb4] ~@3 [c4,eb4]!2 ~@2 [c4,eb4] ~", // Cm
  F: "~@2 [db4,f4]!2 ~@2 [db4,f4] ~@3 [db4,f4]!2 ~@2 [c4,eb4] ~", // Db Cm
  G: "~@2 [bb3,db4]!2 ~@2 [bb3,db4] ~@3 [c4,eb4]!2 ~@2 [c4,eb4] ~", // Bbm Cm
  H: "~@2 [db4,f4]!2 bb3 ~ [db4,f4] ~@3 [db4,f4]!2 bb3 ~ [db4,f4] ~", // Db
  I: "~@2 [db4,f4]!2 ab3 ~ [db4,f4] ~@3 [db4,f4]!2 ab3 ~ [db4,f4] ~", // Db
  J: "~@2 [eb4,gb4]!2 bb3 ~ [eb4,gb4] ~@3 [eb4,gb4]!2 bb3 ~ [eb4,gb4] ~", // Ebm
  K: "~@2 [db4,gb4]!2 bb3 ~ [db4,gb4] ~@3 [c4,eb4]!2 ab3 ~ [c4,eb4] ~", // Gb5 Cm
  L: "~@2 [db4,f4]!2 ~@2 [db4,f4] ~@3 [db4,f4]!2 ~@2 [db4,f4] ~", // Db
  M: "~@2 [eb4,gb4]!2 ~@2 [eb4,gb4] ~@3 [eb4,gb4]!2 ~@2 [eb4,gb4] ~", // Ebm
  N: "~@2 [db4,gb4]!2 ~@2 [db4,gb4] ~@3 [c4,eb4]!2 ~@2 [c4,eb4] ~", // Gb5 Cm
  O: "~@2 [bb3,eb4]!2 ~@2 [bb3,eb4] ~@3 [bb3,eb4]!2 ~@2 [bb3,eb4] ~", // Eb5
  P: "~@2 [bb3,db4]!2 ~@2 [bb3,db4] ~@3 [bb3,db4]!2 ~@4", // Bbm
})).s("gm_shamisen").gain(0.14).pan(0.7)

// chords · pad warm
const pad_warm = note(`<
  A B C A@2 B C A ~@4 D E F G A B C A@2 B C H A B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C H A B C A@2 B C A I@2 J@2
  I@2 J@2 I@2 J@2 I@2 J@2 ~@4 K@2 B H A B C A@2 B C A@2
>`.pickRestart({
  A: "[gb2,gb3,bb3,db4]", B: "[ab2,ab3,c4,eb4]", C: "[bb3,db4,f4]@3 [ab3,c4,eb4], bb2",
  D: "[bb3,db4]@2 ~@2 [gb3,bb3,eb4]@2 ~ [gb3,bb3,db4] ~@4 [bb3,db4]@2 ~@2, gb3 ~@11 gb3 ~@3", // Bbm Ebm Gb Bbm
  E: "[ab3,c4,eb4] ~@3 [ab3,c4,f4]@2 ~ [ab3,c4,eb4] ~@4 [ab3,c4] ~@3, ~@6 eb4 ~", // Ab Fm Ab
  F: "[bb3,db4,f4] ~@3 [bb3,db4,f4]@3 [bb3,db4,f4] ~@4 [ab3,c4,eb4,f4] ~@3", // Bbm Fm7
  G: "[gb3,bb3,db4] ~@3 [gb3,bb3,eb4]@2 ~ [gb3,bb3,db4] ~@4 [gb3,bb3,db4] ~@3", H: "[gb2,gb3,bb3,db4] [ab2,ab3,c4,eb4]",
  I: "[[bb2,bb3] [db3,ab3], [db4,f4]]/2", J: "[[eb3,eb4]@2 [gb2,db4] [ab2,ab3,c4,eb4], [bb3,gb4]@3 ~]/2",
  K: "[bb2,bb3,db4,f4]/2", // Bbm
})).s("gm_pad_warm").gain(0.22).pan(0.6)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  A B C D A B C D ~@20 E F G@2 ~@20 A B H@2 I D J K I D J K I D J K I D J K ~@4 L M N O ~@4 A B P ~@2
>`.pickRestart({
  A: "[bb4,bb5]", B: "[c5,c6]", C: "[db5,db6]@2 [f5,f6] [eb5,eb6]", D: "[db5,db6]", E: "bb5", F: "c6",
  G: "[db6@5 f6 eb6 db6@9]/2", H: "[[db5,db6]@5 [f5,f6] [eb5,eb6] [db5,db6]@9]/2", I: "[bb4,bb5]@3 [c5,c6]",
  J: "[eb5,eb6]", K: "[db5,db6] [c5,c6]", L: "bb5@3 c6", M: "db6", N: "eb6", O: "db6 eb6", P: "db6@5 f6 ~@2",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.3)

// other · string ensemble 1 · soft notes
const string_ensemble_1_soft = note("<~@76 A B C D ~@6 E@2 ~>".pickRestart({
  A: "bb4@3 c5", B: "db5", C: "eb5", D: "db5 eb5", E: "[db5@5 f5 [eb5,eb6] db5@9]/2",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.3)

// other · woodblock
const woodblock = note("<~@8 A@15 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@16 ~@8 A@3 ~ A@4 ~>".pickRestart({
  A: "~@12 c5 ~@3",
})).s("gm_woodblock").gain(0.72).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A B A B A C A B A B A B A D A B A B A B A B A B A B A B A B A B A B A B A D A B A B A B A B E ~@7 A B A B A B
  A B A B A B A B A D A B A B A B A B F
>`.pickRestart({
  A: "x ~@2 x!2 ~ x ~ x ~ x!3 ~@3", B: "x ~@2 x!2 ~ x ~ x ~ x!3 ~ x ~", C: "x ~@2 x!2 ~ x ~ x ~@3 x ~ x ~", D: "x!2",
  E: "x", F: "x ~@2 x!2 ~ x ~ x ~@7",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B C B D E C B F B C B D E C B G B C B D E C B C B C B C B C B C B C B D E C B G B C B D E C B H I ~@6 A E C B D
  E C B C B C B C B C B A B C B H B C B D J
>`.pickRestart({
  A: "~@10 x ~ x ~ x!2", B: "~@2 x ~@3 x!2", C: "~ x ~ x", D: "~@4 x ~@7 x ~@2 x", E: "x ~ x ~@3 x!2",
  F: "~@2 x ~@2 x!3", G: "~@14 x!2", H: "~@4 x ~@7 x!4", I: "x", J: "x!2 ~@2",
})).gain(0.56)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@8 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@5 A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~@10
>`.pickRestart({
  A: "~@15 x",
})).gain(0.32)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@8 A B A B A B A C A B A B A B A D A B A B A B A E A B A B A B A B A B A F A B A D G B A B A B A E H ~@7 A B A F A B
  A B A B A B A B A I G B A E G B A B J
>`.pickRestart({
  A: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", B: "x ~ x ~ x ~ x!10", C: "x ~ x ~ x ~ x!3 ~ x ~ x ~ x ~", D: "x!8",
  E: "x ~ x ~ x ~ x!6 ~ x!3", F: "x ~ x ~ x ~ x!8 ~@2", G: "~@2 x ~ x ~ x ~ x ~ x ~ x!4", H: "x", I: "x!2",
  J: "x!5 ~@3",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@43 [~@7 x] ~@23 [~@7 x] ~@21>").gain(0.48)

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

// drums · tambourine
const tambourine = s("tb").struct("<~@24 A@8 ~@16 A@8 ~@20 A@3 B A@8 C>".pickRestart({
  A: "x!16", B: "x!2", C: "x!10 ~@6",
})).gain(0.32)

// drums · congas
const congas = s("conga:13").struct("<~@8 A@7 B A@8 ~@8 A@16 ~@16 A@15 ~@10>".pickRestart({
  A: "~@2 x ~@2 x ~@2", B: "~ x ~@2",
})).gain(0.77)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@8 A B A B A B A C 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 ~@16 A B A B A B A B A B A B A B A ~@10
>`.pickRestart({
  A: "~ x ~@4 x!2", B: "~ x ~@4 x ~", C: "~ x ~@6",
})).gain(0.77)
// … 19 more lines