Strudelify
Senza pieta cover art

1999 · Senza Pieta'

Senza pieta

Anna Oxa

KeyF♯ majorTempo110 bpm
0:00/0:00
// Senza pieta — Anna Oxa
// 110 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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 · electric bass finger · "Remixed"
const bass = note(`<
  ~@4 A@8 ~@2 A@21 B C D E F C D G H A@4 ~@2 A@13 B C D E F C D G H A@4 I J I J K L M N@2 C D E F C D G H C D E F C D G
  H A@16 O@2
>`.pickRestart({
  A: "f#1 ~ f#1@2 ~ f#1 ~ f#1!2 ~ f#1@2 ~ f#1 ~ f#1", B: "f#1 ~ f#1@2 ~ f#1 ~ f#1 f#2@2 f#2@2 f#2!4",
  C: "d#2@2 d#2@3 d#2@2 d#2 d#2@2 d#2@3 d#2@2 d#2", D: "b1@2 b1@5 b1 b1@2 b1@5 b1",
  E: "f#1@2 f#1@5 f#1 f#1@2 f#1@5 f#1", F: "f#1@2 f#1@5 f#1 f#2@2 f#2@2 f#2!4", G: "e2@2 e2@5 e2 e2@2 e2@5 e2",
  H: "b1@2 b1@5 b1 c#2@2 c#2@5 c#2", I: "g#3 f#3", J: "e3 d#3", K: "e3", L: "d#3@3 b2", M: "d3", N: "[e3@3 ~]/2",
  O: "f#1/2",
})).s("gm_electric_bass_finger").gain(0.57)

// chords · pad warm · "Remixed"
const pad_warm = note("<~@76 A B A C D@5 ~@34>".pickRestart({
  A: "[g#4,b4,d#5] [f#4,a#4,c#5]", B: "[g#4,e5] [f#4,d#5], b4", C: "[e4,g#4] [d#4,f#4], b4",
  D: "[[e5,g#5]@2 [d#5,f#5]@2 [f#4,d5]@2 e5@3 ~, b4@9 ~]/5", // E D#m D
})).s("gm_pad_warm").gain(0.32)

// other · church organ · "Remixed"
const church_organ = note("<~@12 A@6 ~@2 A@6 ~@93>".pickRestart({
  A: "f#4/6",
})).s("gm_church_organ").gain(0.25)

// chords · rock organ · "Remixed"
const rock_organ = note(`<
  ~@35 A@5 B@2 C D ~@4 E@6 ~@9 A@5 B@2 C D ~@13 F@2 G@2 B@2 C D F@2 G@2 B@2 C D ~@18
>`.pickRestart({
  A: "[[c#6,f#6] ~ b5 [a#5,c#6]@2, f#5, a#5@2 ~@3, ~ d#6@2 ~@2]/5", B: "[a#5 b5, [f#5,d#6]]/2", C: "[e5,b5,e6]",
  D: "[b4,f#5,b5] [c#5,g#5,c#6]", E: "f#4/6", F: "[~ b5, d#6]/2", G: "[a#5,c#6]/2",
})).s("gm_rock_organ").gain(0.32).pan(0.6)

// chords · pad poly · "Remixed"
const pad_poly = note("<~@16 A B ~@6 A B ~@2 C D E D C D E D ~@16 A B ~@2 C D E D C D E D ~@55>".pickRestart({
  A: "[f#4,g#4,c#5]", B: "[f#4,g#4,b4,d#5]", C: "[a#3,c#4]", D: "[b3,d#4]", E: "[c#4,e4]",
})).s("gm_pad_poly").gain(0.45)

// other · string ensemble 1 · "Remixed"
const string_ensemble_1 = note("<~@4 A@8 ~@6 A@2 ~@6 A@2 ~@16 A@4 ~@6 A@2 ~@16 A@4 ~@25 A@16 B@2>".pickRestart({
  A: "[f#3@2 f#3@2 e4@2 f#3@2 c#4@2 f#3@2 c#4@2 e4@4 f#3@2 d#4 e4 d#4@4 f#3@2 [c#4,d#4] c#4 b3@2]/2", B: "[f#3,c#4]/2",
})).s("gm_string_ensemble_1").gain(0.51).pan(0.4)

// chords · koto · "Remixed"
const koto = note("<A@12 ~@6 A@2 ~@6 A@2 ~@16 A@4 ~@6 A@2 ~@16 A@4 ~@25 A@16 B@2>".pickRestart({
  A: "[f#3@2 ~@18 d#4 ~ d#4@4 f#3@2 c#4@2 b3@2, ~ f#4@2 f#3@2 f#3@4 f#3@4 ~@3, ~@4 e4@4 c#4@4 c#4@7 ~@13, ~@7 e4@3 ~@6]/2",
  B: "[f#3,f#4]/2", // F#
})).s("gm_koto").gain(0.32).pan(0.3)

// chords · koto · "Remixed" · soft notes
const koto_soft = note(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~@7 A ~@7 A ~@17 A ~ A ~@7 A ~@17 A ~ A ~@26 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@5 e4 ~@10",
})).s("gm_koto").gain(0.19).pan(0.3)

// other · sitar · "Remixed"
const sitar = note("<A@6 B@6 C@2 ~@4 B@2 C@2 ~@4 B@2 ~@16 B@4 C@2 ~@4 B@2 ~@16 B@4 ~@25 B@16 D@2>".pickRestart({
  A: "[f#3 f#3@2 f#3@2 f#3@4 f#3@4 f#3@3]/2", B: "f#3 f#3@2 f#3@2 f#3@3", C: "f#2/2", D: "[f#3,a#3,c#4]/2",
})).s("gm_sitar").gain(0.25)

// chords · acoustic guitar steel · "Remixed"
const acoustic_guitar_steel = note(`<
  A@12 ~@3 B@2 C A@2 ~ D@2 E@2 C A@2 ~@16 A@4 ~@3 B@2 C A@2 ~@16 A@4 F@2 G H I J K L@2 ~@16 A@16 M@2
>`.pickRestart({
  A: "[f#3@2 ~@18 d#4 e4 d#4@4 f#3@2 c#4@2 b3@2, ~ f#4@2 f#3@2 f#3@4 f#3@4 ~@3, ~@4 e4@4 c#4@4 c#4@7 ~@13, ~@7 e4@3 ~@6]/2",
  B: "[~@8 a#4 b4 a#4 g#4 b4 ~@3 [f#4,g#4,c#5] [g#4,c#5] [f#4,g#4] [f#4,g#4,c#5]!2 ~ [f#4,g#4,c#5]!2 ~ [f#4,g#4,c#5]!2 ~ [f#4,g#4,c#5]!2 ~ [f#4,g#4,c#5], ~@7 a#4@6 ~@3]/2", // F#sus2 C#5 F#sus2
  C: "[f#4,g#4,d#5] [g#4,d#5] [f#4,g#4] [f#4,g#4,d#5]!2 ~ [f#4,g#4,d#5]!2 ~ [f#4,g#4,d#5]!2 ~ [f#4,g#4,d#5]!2 ~ [f#4,g#4,d#5]", // G#7 G#5 F#sus2 G#7
  D: "[~@10 b4 a#4 ~ f#4@18 ~]/2",
  E: "[~@10 c#5 b4 a#4 ~@3 [g#4,c#5] ~ g#4 [g#4,c#5] [f#4,g#4,c#5] ~ [f#4,g#4,c#5]!2 ~ [f#4,g#4,c#5]!2 ~ [f#4,g#4,c#5]!2 ~ [f#4,g#4,c#5], ~@13 f#4@7 ~@12, ~@17 [g#4,c#5]@2 ~@13]/2", // C#5 F#sus2 C#5
  F: "[[g#3,b3,d#4]@8 [f#3,a#3,c#4]@6 [b3,e4,f#4,b4]@8 [b3,d#4,f#4,b4]@7 [a#3,c#4,f#4] [a#3,c#4,f#4]@2]/2", // G#m F# Bsus4 B F#
  G: "[b3,d#4,g#4] [a#3,c#4,f#4]", H: "[g#3,b3,e4]@6 [f#3,b3,d#4]@7 [f#3,b3,d#4] [f#3,b3,d#4]@2", I: "[g#3,b3,e4]",
  J: "[f#3,b3,d#4]", K: "[f#3,b3,d4]", L: "[[e3,a3,b3,e4]@3 ~]/2", M: "[f#3,c#4,f#4]/2",
})).s("gm_acoustic_guitar_steel").gain(0.38).pan(0.7)

// chords · acoustic guitar steel · "Remixed" · soft notes
const acoustic_guitar_steel_2 = note("<~@16 A B ~@6 C B ~@26 A B ~@65>".pickRestart({
  A: "~ f#4 ~@3 [f#4,g#4,c#5] ~@2 [f#4,g#4,c#5] ~@2 [f#4,g#4,c#5] ~@2 [f#4,g#4,c#5] ~", // F#sus2
  B: "~ f#4 ~@3 [f#4,g#4,d#5] ~@2 [f#4,g#4,d#5] ~@2 [f#4,g#4,d#5] ~@2 [f#4,g#4,d#5] ~", // G#7
  C: "~@5 [f#4,g#4,c#5] ~@2 [f#4,g#4,c#5] ~@2 [f#4,g#4,c#5] ~@2 [f#4,g#4,c#5] ~", // F#sus2
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.7)

// other · electric guitar muted · "Remixed"
const electric_guitar_muted = note("<~@4 A@8 B@2 A@22 ~@8 A@4 B@2 A@14 ~@8 A@4 ~@25 A@16 ~@2>".pickRestart({
  A: "f#2!16", B: "f#2!4 f#3 f#2!7 f#3 f#2!3",
})).s("gm_electric_guitar_muted").gain(0.38).pan(0.7)

// chords · electric guitar clean · "Remixed"
const electric_guitar_clean = note(`<
  ~@28 A B ~@2 A B ~@2 C ~@3 C ~@15 A B ~@2 A B ~@2 C ~@3 C ~@16 C ~@3 C ~@3 C ~@3 C ~@21
>`.pickRestart({
  A: "~ [f#3,a#3,c#4,f#4]@3", B: "~ [f#3,b3,d#4,f#4]@3", C: "[f#4,a#4,d#5]!9 [f#4,a#4,d#5]@7",
})).s("gm_electric_guitar_clean").gain(0.24)

// chords · overdriven guitar · "Remixed"
const overdriven_guitar = note(`<
  ~@36 A B C@2 A B D E ~@20 A B C@2 A B D E ~@13 A B C@2 A B D E A B C@2 A B D E ~@18
>`.pickRestart({
  A: "[f#4,a#4]!9 [f#4,a#4]@7", B: "[b2,f#3,b3]", C: "[f#2,c#3,f#3]", D: "[e3,b3,e4]", E: "[b2,f#3,b3] [c#3,c#4]",
})).s("gm_overdriven_guitar").gain(0.32).pan(0.6)

// chords · piano · "Remixed"
const piano = note("<~@37 A@3 ~@25 A@3 ~@18 A@3 ~@5 A@3 ~@22>".pickRestart({
  A: "[~@7 [c#4,f#4,c#5]@3 [b3,d#4,b4]@4 [c#4,f#4,c#5] [a#3,c#4,a#4]@3 ~@6]/3", // F#5 B F#5 A#m
})).s("gm_piano").gain(0.05)

// drums · kick
const kick = s("bd").struct("<~@4 A@8 ~@2 A@13 B A@7 B A@12 ~@2 A@5 B A@7 B A@20 ~ A@32 C ~>".pickRestart({
  A: "x ~ x ~@4 x!2 ~ x ~@4 x", B: "x ~ x ~@4 x ~@2 x ~@4 x", C: "x",
})).gain(0.8)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@4 A B A ~ A B A ~@3 A B A ~ A ~ A B A B A ~ A ~ A B A B A B A ~ A B A B A B A B A B A ~@3 A B A ~ A ~ A B A B A B A
  ~ A B A B A B A B A B A ~ A B A ~ A B A ~@2 A B A B A B A B A B A B A B A B A B A ~ A B A ~ A B A ~ A B A ~@3
>`.pickRestart({
  A: "~@9 x ~@6", B: "~@9 x ~@4 x!2",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@27 A B ~@6 A ~@19 A B ~@6 A ~@55>".pickRestart({
  A: "~@15 x", B: "~ x ~@2",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B C B A B A B ~@2 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 ~@2 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 C B C B C 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 ~@2
>`.pickRestart({
  A: "~ x!2 ~ x ~ x ~", B: "x!7 ~", C: "x!3 ~ x ~ x ~",
})).gain(0.72)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@4 A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
  A: "~@3 x ~ x ~@2", B: "x",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@27 A ~@7 A ~@19 A ~@7 A ~@55>".pickRestart({
  A: "~@13 x!2 ~",
})).gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A@8 ~@2 A@34 ~@2 A@34 ~ A@32 ~@2>".pickRestart({
  A: "~@7 x",
})).gain(0.64)

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

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@4 A B A B A B A B ~@2 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 ~@2 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 A B ~@2
>`.pickRestart({
  A: "x!3 ~ x!3 ~ x!3 ~ x!3 ~", B: "x!3 ~ x!7 ~ x!4",
})).gain(0.4)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@4 A B A B A B A B ~@2 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 ~@2 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 A B ~@2
>`.pickRestart({
  A: "~@3 x ~@3 x ~@3 x ~@3 x", B: "~@3 x ~@7 x ~@4",
})).gain(0.24)

stack(
  bass, pad_warm, church_organ, rock_organ, pad_poly, string_ensemble_1, koto, koto_soft, sitar, acoustic_guitar_steel,
  acoustic_guitar_steel_2, electric_guitar_muted, electric_guitar_clean, overdriven_guitar, piano, kick, snare,
  snare_soft, low_tom, hihat, hihat_soft, mid_tom, open_hat, crash, tambourine, tambourine_soft
)

More by Anna Oxa