Strudelify

Swim

Madonna

KeyF♯ majorTempo102 bpm
0:00/0:00
// Swim — Madonna
// 102 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 124 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(102/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.

// other · piano
const piano = note("<~@28 A B ~@2 A B ~@18 A B ~@2 A B ~@26 A B ~@2 A B ~@14 A B ~@18>".pickRestart({
  A: "e4", B: "f#4 g#4",
})).s("gm_piano").gain(0.05)

// bass · fretless bass
const bass = note(`<
  ~@20 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 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 B A B ~@8 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 ~
>`.pickRestart({
  A: "b1@2 c#2@2 c#2@2 c#2@4 c#2@3 ~ c#2@2", B: "e1 f#1!2 f#1@2 f#1@2 f#1",
})).s("gm_fretless_bass").gain(0.51)

// bass · fretless bass · soft notes
const bass_soft = note("<~@8 A B A B A B A B A B A B ~@104>".pickRestart({
  A: "~@2 f#2@2 c#3@2 c#3 ~@3 b2 ~@3 c#3 ~", B: "e2 ~ f#2 ~@3 f#2@8 ~@2",
})).s("gm_fretless_bass").gain(0.29)

// bass · synth bass 1
const bass_2 = note(`<
  ~@9 A ~ 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 B A B A B A B A B A B A B A B A B A B A ~@5
  A ~ A ~ A ~ A@14 ~@16 A ~@2 A@12 ~@4
>`.pickRestart({
  A: "~@13 c#2 c#3 ~", B: "~@13 c#2 f#2 ~",
})).s("gm_synth_bass_1").gain(0.48)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  A@3 B@2 C D@2 E@2 F@2 G@2 F@2 G@2 F@2 G@2 F@2 G@2 F@2 H@2 I@4 F@2 J ~@87
>`.pickRestart({
  A: "[~@7 f#3@17 b3@7 b3@17]/3", B: "[~@2 b3@12 ~ b3@7 g#3@5 ~ g#3@2 g#3@2, g#3 ~]/2",
  C: "~@2 g#3@2 b3 ~ b3@2 b3@4 a#3@4", D: "[b3@4 b3@4 b3 ~ b3@11 ~ b3@10]/2",
  E: "[~@4 b3 ~ b3 ~ b3@2 a#3@12 f#3@4 g#3@2 a#3@4]/2", F: "[b3@3 ~ b3 ~ b3 ~ b3@2 a#3@10 ~@2 b3 ~ b3@2 a#3@6]/2",
  G: "[~@4 b3 ~ b3 ~ b3@2 a#3@12 f#3@4 g#3@2 a#3@4, f#3@3 ~@13]/2",
  H: "[f#3@4 b3 ~ b3 ~ b3@2 a#3@12 f#3@4 g#3@2 a#3@4]/2",
  I: "[b3@3 ~ b3 ~ b3 ~ b3@2 c#5@12 b4@4 a#4@4 g#4@6 b3 ~ b3 ~ b3@2 a#3@12 f#3@4 g#3@2 a#3@4]/4", J: "f#3 ~@3",
})).s("gm_electric_guitar_jazz").gain(0.16).pan(1)

// other · pad choir
const pad_choir = note(`<
  ~@12 A@2 B ~@13 C D ~@2 C D ~@6 A@2 B ~@7 E@2 C D ~@2 C D ~@4 E@2 ~@8 A@2 F@2 ~@8 C D ~@2 C D ~@14 G@2 F@2 ~@2 E@2
  ~@12
>`.pickRestart({
  A: "[~@7 e4@2 f#4@2 g#4@4 c#4]/2", B: "e4 c#4@3 ~@4", C: "e4", D: "f#4 g#4", E: "[~@3 a#4@9 ~@4]/2",
  F: "[e4 ~@2 a#4@9 ~@4, ~ c#4@3 ~@12]/2", G: "[~ e4@17 f#4@4 g#4@8 c#4@2]/2",
})).s("gm_pad_choir").gain(0.22).pan(0.2)

// bass · synth bass 1
const bass_3 = note(`<
  ~@9 A B A B A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B
  ~@4 A B A B A B A D@13 B ~@15 A B ~ A D@10 B ~@4
>`.pickRestart({
  A: "~@15 c#2", B: "c#3 ~ c#3@2 ~@12", C: "c#2 f#2 c#2 f#2 ~@11 c#2", D: "c#3 ~ c#3@2 ~@11 c#2",
})).s("gm_synth_bass_1").gain(0.31).pan(1)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@4 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@8 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@4
  A@2 B@2 A@2 C@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@32
>`.pickRestart({
  A: "[c#3@2 ~@2 [e3,g#3,c#4,e4]@3 [c#4,e4]!2 ~ [b2,f#3,b3,d#4]@2 ~@2 f#2@4 ~@2 [a#3,c#4,f#4]@3 [a#3,c#4,f#4]!2 ~@3 [a#3,c#4,f#4]@3 ~, ~ c#3@3 ~@3 [c#3,f#3,a#3,c#4]@3 ~@6, ~@9 f#2@3 ~ f#2@3]/2", // C#m B F#
  B: "[c#3@2 ~@2 [e3,g#3,c#4,e4]@3 [c#4,e4]!2 ~ [b2,f#3,b3,d#4]@2 ~@2 f#2@4 ~@2 [a#3,c#4,f#4]@3 [a#3,c#4,f#4]!2 ~@3 [a#3,c#4,f#4]@3 ~, ~ c#3@3 ~@3 [c#3,f#3,a#3,c#4]@3 ~@6, ~@18 f#2@6 ~@2 f#2@5 ~]/2", // C#m B F#
  C: "[c#3@2 ~@2 [e3,g#3,c#4,e4]@3 [c#4,e4]!2 ~ [b2,f#3,b3,d#4]@2 ~@2 [f#2,c#3,f#3,a#3,c#4]@17 ~, ~ c#3@3 ~@12]/2", // C#m B F#
})).s("gm_electric_guitar_clean").gain(0.15).pan(0)

// other · overdriven guitar
const overdriven_guitar = note("<~@43 A@2 B@6 C@8 D@6 ~@9 E@2 ~@17 F ~ G@2 ~@2 H@2 ~@23>".pickRestart({
  A: "[~@11 g#5@5, ~@3 c#5@5]/2",
  B: "[~ f#5@3 c#5@2 f#5@5 c#5@3 e5@6 ~ e5@7 c#5@2 d#5@6 c#5@2 d#5@2 e5@4 ~@2 g#5@6 ~@2 g#5@6 ~@2 f#5@6 c#5@2 f#5@5 c#5@3 e5@6 c#5@2 e5@6 c#5@2 d#5@2, ~@20 c#5@3 ~@21 c#5@8 c#5@8 c#5@8 ~@28]/6",
  C: "[~@2 e5@5 d#5@3 e5@2 d#5@2 ~@8 g#5@6 ~@2 f#5@6 ~@2 f#5@5 c#5@3 e5@6 c#5@2 e5@6 c#5@2 d#5@4 e5@5 d#5@3 e5@2 d#5@2 ~@2 g#5@4 ~@2 g#5@6 ~@2 f#5@6 c#5@2 f#5@5 c#5@3 e5@6 c#5@2 e5@6 c#5@2 d#5@2, ~@14 c#5@6 c#5@8 c#5@8 c#5@7 ~@35 c#5@5 ~ c#5@8 c#5@8 ~@28, ~@8 g#5@3 ~@53]/8",
  D: "[~@2 e5@5 d#5@3 e5@2 d#5@2 ~@8 g#5@6 ~@2 f#5@6 c#5@2 f#5@5 c#5@3 e5@6 c#5@2 e5@6 c#5@2 d#5@4 e5@5 d#5@3 e5@14 ~@8, ~@7 c#5@3 c#5@4 c#5@4 ~@30, ~@8 g#5@3 ~@37]/6",
  E: "[~@13 a#4@14 ~@5]/2", F: "a#4@15 ~", G: "[~@4 f#4@7 ~@5]/2", H: "[~@4 b3@21 ~@7]/2",
})).s("gm_overdriven_guitar").gain(0.23).pan(1)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  ~@8 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 ~@8 A B A B A B A B A B A B A B A B A B A B ~@12 A B A B A
  B A B ~@24 A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "f#3 [f#3,a3] f#3 [f#3,a3]", B: "g#3@6 [g#3,b3]@9 ~",
})).s("gm_electric_guitar_muted").gain(0.23)

// chords · electric guitar jazz
const electric_guitar_jazz_2 = note("<~@92 A B A C D B A B A B A C D B A B ~@16>".pickRestart({
  A: "~@13 b3@2 g#3, c#3@7 g#3@2 g#3@5 ~@2, ~@3 g#3@2 b3@5 ~ b3@2 ~@3, ~@4 e4@7 ~ e4@4, ~ c#3",
  B: "~@13 e4@2 a#4, f#3!2, ~ e4@3 a#4@4 b4@4 b4@3 ~, ~@3 c#4@4 c#4@2 c#4@7, ~@5 e4@5 ~ e4@2 ~@3",
  C: "~@13 a#4@2 c#4, f#3!2, ~ e4@3 a#4@4 b4@4 e4@4, ~@3 c#4@4 c#4@2 c#4@5 ~@2, ~@5 e4@5 ~ f#4@3 ~@2",
  D: "~@13 e4@2 c#4, c#3@7 g#3@2 g#3@5 ~@2, ~@3 g#3@2 b3@5 ~ b3@2 ~@3, ~@4 e4@7 ~ g#4@4, ~ c#3",
})).s("gm_electric_guitar_jazz").gain(0.21).pan(0.3)

// other · pan flute
const pan_flute = note("<~@38 A@3 ~@21 A@3 ~@5 A@3 ~@51>".pickRestart({
  A: "[~@4 f5@2 g#5 f5@5 c#5@2 f5@21 ~@13]/3",
})).s("gm_pan_flute").gain(0.13).pan(0)

// chords · epiano1
const epiano1 = note(`<
  ~@8 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 ~@8 A B A B A B A B A B A B A B A B A B A B ~@12 A B A B A
  B A B ~@24 A B A B A B A B A B A B A B A B
>`.pickRestart({
  A: "a#4@2 c#5 ~ [f#4,c#5]@4 a#4@2 c#5 ~ [f#4,b4]@4, e4 ~ e4 ~", B: "a#4 ~ f#4@2 [g#4,c#5]@4, e4 ~@3, ~@2 c#5@5 ~@9",
})).s("gm_epiano1").gain(0.12).pan(0.6)

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

// drums · snare
const snare = s("sd").struct("<~@20 A@47 B C ~@7 A@11 B D A@2 B C ~@15 A@7 B D A@3 E ~@3>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!4", C: "x", D: "x!2 ~ x", E: "~ x ~@2",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@20
  [x!3 ~ x ~ x!5 ~ x ~ x ~]!48
  ~@8
  [x!3 ~ x ~ x!5 ~ x ~ x ~]!8
  ~@24
  [x!3 ~ x ~ x!5 ~ x ~ x ~]!12
  [x!3 ~ x ~ x!2 ~@8]
  ~@3
>`).gain(0.38)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@20 [~@11 x ~@4]!48 ~@8 [~@11 x ~@4]!8 ~@24 [~@11 x ~@4]!12 ~@4>").gain(0.23)

// drums · ride
const ride = s("rd").struct("<~@8 A@28 ~@16 A@16 ~@8 A@8 ~@24 A@12 B ~@3>".pickRestart({
  A: "x!4", B: "x!2 ~@2",
})).gain(0.38)

// drums · splash
const splash = s("cr").struct(`<
  ~@20 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~@25 A ~ A ~ A ~ A ~ A ~ A ~ B
  ~@3
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2",
})).gain(0.53)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@20
  [~ x ~ x ~ x ~ x]!48
  ~@8
  [~ x ~ x ~ x ~ x]!8
  ~@24
  [~ x ~ x ~ x ~ x]!12
  [~ x ~ x ~@4]
  ~@3
>`).gain(0.46)

// drums · lt
const lt = s("lt").struct("<~@64 [x!2 ~@3 x ~@2]!4 ~@52 [x!2 ~@6] ~@3>").gain(0.46)

stack(
  piano, bass, bass_soft, bass_2, electric_guitar_jazz, pad_choir, bass_3, electric_guitar_clean, overdriven_guitar,
  electric_guitar_muted, electric_guitar_jazz_2, pan_flute, epiano1, kick, snare, hihat, hihat_soft, ride, splash,
  shaker, lt
)

More by Madonna