Strudelify

I Wanna Be With You

Fun Factory

KeyD majorTempo100 bpm
0:00/0:00
// I Wanna Be With You — Fun Factory
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 87 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · electric bass finger
const bass = note(`<
  ~@12 A B C D A B C D A B C D A B C D A B C ~ A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C ~ A B C D A
  B C D A B C D A B C D ~@7
>`.pickRestart({
  A: "d1@3 d1 ~@2 d1@2 g1 ~ g1@2 d1@2 g1@2", B: "a1@2 ~ a1 ~@2 a1@2 g1 ~ g1@2 a1@2 g1@2",
  C: "d1@2 ~ d1 ~@2 d1@2 g1 ~ g1@2 d1@2 g1@2", D: "a1@2 ~ a1 ~@2 a1 ~ g1!2 g1@2 a1@2 g1@2",
})).s("gm_electric_bass_finger").gain(0.5)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@4 A B@3 A C@3 ~@20 A B@3 A C@3 ~@24 A B@3 A B@3 A B@3 A C@3 ~@7>".pickRestart({
  A: "a4@3 ~ a4@2 a4@2 b4@4 b4@2 c#5@2",
  B: "[~@2 c#5@2 c#5@2 c#5@2 b4@2 b4@2 b4@2 c#5@4 a4@7 ~ g4@3 ~ a4@4 e4@7 ~@7]/3",
  C: "[~@2 c#5@2 c#5@2 c#5@2 b4@2 b4@2 b4@2 c#5@4 a4@7 ~ g4@3 ~ a4@4 e4@4 ~@10]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.2)

// other · pad choir
const pad_choir = note(`<
  ~@12 A B A B ~@16 A B A B A B A B A B A B ~@20 A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~@2 f#4 ~@3 g4 ~", B: "~@2 a4 ~@3 g4 ~",
})).s("gm_pad_choir").gain(0.13).pan(0.8)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A ~ A B A B A B A B A B A B A B A B ~@7
>`.pickRestart({
  A: "~@2 [f#3,a3,d4] ~@3 [f#3,a3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // D G
  B: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~", // A G
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.4)

// chords · epiano1
const epiano1 = note(`<
  ~@4 A B A B A B A B A B A B A B A B A B A B A B A B A B A ~ A B A B A B A B A B A B A B A B A B A B ~@4 A B A B A B A
  ~ A B A B A B A B A B A B A B A B ~@7
>`.pickRestart({
  A: "[a3,d4,f#4] [b3,d4,g4]", B: "[c#4,e4,a4] [b3,d4,g4]",
})).s("gm_epiano1").gain(0.2)

// other · string ensemble 1
const string_ensemble_1 = note("<~@4 A@8 B C B D ~@7 E ~@8 A@8 B C B D ~@7 E ~@12 A@8 ~@15>".pickRestart({
  A: "[[f#4,f#5]@8 [g4,g5]@6 [a4,a5]@10 [g4,g5]@6 [a4,a5]@4 [f#4,f#5]@7 ~ [d4,d5]@4 [e4,e5]@4 [a3,a4]@13 ~]/4", // F# G A G A F# D E …
  B: "[d5,d6] ~@3 [d5,d6] ~@3 [d5,d6] ~@3 [d5,d6] ~@3", C: "[d5,d6] ~@3 [d5,d6] ~@3 [d5,d6] ~@3 [d5,d6] [e5,e6]@3",
  D: "[d5,d6] ~@3 [d5,d6] ~@3 [d5,d6] ~ [a4,a5] ~ [a4,a5] [b4,b5] [d5,d6] ~", // D A B D
  E: "~@8 [d5,d6] ~ [a4,a5] ~ [a4,a5] [b4,b5] [d5,d6] ~", // D A B D
})).s("gm_string_ensemble_1").gain(0.19).pan(0.6)

// other · celesta
const celesta = note(`<
  A B C D A B E D A B E D ~@8 A B C D ~@8 A B E D A B E D ~@8 A B C D ~@12 A B E D A B E D A B E D A B E D ~@7
>`.pickRestart({
  A: "f#6@3 ~ f#6 ~ f#6 ~ g6@2 ~@2 g6 ~ a6@2", B: "~@2 a6 ~ a6 ~ a6 ~ g6 ~ g6 ~ g6 ~ a6@2",
  C: "~@2 f#6@7 ~@3 d6@2 e6@2", D: "~ a5@4 ~@3", E: "~@2 f#6@7 ~ d6@3 ~ e6@2",
})).s("gm_celesta").gain(0.11)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@12 A B A B ~@7 C ~@8 A B A B A B A B A B A B ~@7 C ~@12 A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "d3 ~@2 d3 ~@2 d3 ~@3 d3 ~@3 d3 ~", B: "d3 ~@2 d3 ~@2 d3 ~@3 a2 ~ a2 b2 d3 ~", C: "~@10 a2 ~ a2 b2 d3 ~",
})).s("gm_electric_guitar_muted").gain(0.35).pan(0.3)

// bass · synth bass 1
const bass_2 = note("<~@23 A ~@16 A@4 ~@7 A@5 ~@16 A@14 ~>".pickRestart({
  A: "d1 ~@2 d1 ~ d1 d1@2 ~@8",
})).s("gm_synth_bass_1").gain(0.17).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  ~@12
  [x ~@2 x ~@2 x ~ x ~@2 x ~@4]!19
  [x ~@2 x ~@2 x ~ x ~@7]
  [x ~@2 x ~@2 x ~ x ~@2 x ~@4]!52
  [x ~@2 x ~@2 x ~ x ~@7]
  [x ~@2 x ~@2 x ~ x ~@2 x ~@4]
  [x ~@2 x ~@2 x ~ x ~@7]
>`).gain(0.69)

// drums · rim
const rim = s("rim").struct("<~@8 [x!4]!4 ~@75>").gain(0.35)

// drums · snare
const snare = s("sd").struct("<~@12 [~ x ~ x]!19 [~ x ~@2] [~ x ~ x]!52 ~@3>").gain(0.41)

// drums · clap
const clap = s("cp").struct("<~@7 [~@3 x]!24 ~ [~@3 x]!54 ~>").gain(0.41)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4
  [x!2 ~@2 x!2 ~@2 x!2 ~ x!3 ~@2]!27
  [x!2 ~@2 x!2 ~@2 x ~@2 x!2 ~@3]
  [x!2 ~@2 x!2 ~@2 x!2 ~ x!3 ~@2]!31
  [x!2 ~@2 x!2 ~@2 x ~@7]
  [x!2 ~@2 x!2 ~@2 x!2 ~ x!3 ~@2]!20
  ~@3
>`).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@11 A ~@19 B ~@7 A ~@23 C ~@15 B ~@7>".pickRestart({
  A: "~@6 x ~ x ~@4 x!2 ~", B: "~@11 x!2 ~ x ~", C: "~@6 x ~ x ~@2 x ~@4",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4
  [~ x ~ x ~ x ~ x]!27
  [~ x ~ x ~@3 x]
  [~ x ~ x ~ x ~ x]!31
  [~ x ~ x ~@4]
  [~ x ~ x ~ x ~ x]!20
  ~@3
>`).gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@12 A ~@7 A ~@11 A ~@7 A ~@11 A ~@11 A ~@15 A ~@6>".pickRestart({
  A: "x",
})).gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct("<~@4 [x!8]!27 [x!5 ~@3] [x!8]!31 [x!5 ~ x!2] [x!8]!22 [x!5 ~@3]>").gain(0.35)

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

stack(
  bass, acoustic_guitar_nylon, pad_choir, electric_guitar_clean, epiano1, string_ensemble_1, celesta,
  electric_guitar_muted, bass_2, kick, rim, snare, clap, hihat, mid_tom, open_hat, crash, tambourine, ht
)

More by Fun Factory