Strudelify
Sempre sempre cover art

1986 · Sempre Sempre

Sempre sempre

Romina Power Al Bano

KeyF♯ majorTempo120 bpm
0:00/0:00
// Sempre sempre — Romina Power Al Bano
// 120 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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, A@4 for four bars: edit a riff to change every repeat.

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  A B A C A B D E A B F G H I H I J K L I M N H O H I H O J K H I P N H Q J R H S J K H Q J T U P H I V I H S H I W K H
  I M X H I J R H Y Z K H Y AA P AB AC A B A AD A C AE AF A AD AG AH J K H Y J K H Y J M AI M J K H AJ J K H Y J P AB AK
  H I H AL H S J AM H I P AN AO@2 ~@6
>`.pickRestart({
  A: "f#2 c#2 d#2 f#2 ~ f#2 f#1 ~", B: "f#1@2 f#2@2 ~@2 e2@2 f#2@4 f#1@3 ~", C: "f#1 ~@3",
  D: "b1@2 f#1@2 g#1@2 b1@3 ~ b2@2 b1@2 ~@2", E: "b1@2 b2@2 ~@2 a2@2 b2@4 b1@3 ~",
  F: "c#2@2 g#1@2 a#1@2 c#2 ~@3 c#3@2 c#2@2 ~@2", G: "c#2@2 g#1@2 a#1@2 c#2@2 ~@2 c#2@5 ~",
  H: "f#2 ~ c#2@2 d#2@2 f#2 ~ f#2 ~ f#2 ~ f#1@2 f#2 ~, ~@2 f#2 ~ f#2 ~@7 f#2 ~@3",
  I: "f#1@2 f#2 ~ f#2 ~ e2@2 f#2 ~ f#2 ~ f#1@2 f#2 ~, f#2 ~@5 f#2 ~@5 f#2 ~@3",
  J: "b1@2 f#1@2 g#1@2 b1@2 b2 ~ b2 ~ b1@2 b2 ~, b2 ~ b2 ~ b2 ~ b2 ~@5 b2 ~@3",
  K: "b1@2 b2 ~ b2 ~ a2@2 b2 ~ b2 ~ b1@2 b2 ~, b2 ~@5 b2 ~@5 b2 ~@3",
  L: "f#2 ~ c#2@2 d#2@2 f#2 ~ f#2 ~ [c#2,f#2] ~ f#2 ~ f#2 ~, ~@2 f#2 ~ f#2 ~@11", // F#5
  M: "c#2@2 g#1@2 a#1@2 [c#2,c#3] ~ c#3 ~ c#3 ~ c#2@2 c#3 ~, c#3 ~ c#3 ~ c#3 ~@7 c#3 ~@3", // C#
  N: "c#2@2 c#3 ~ c#3 ~ b2@2 c#3 ~ c#3 ~ c#2@2 c#3 ~, c#3 ~@5 c#3 ~@5 c#3 ~@3",
  O: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~, f#1@7 ~@9",
  P: "c#2@2 g#1@2 a#1@2 c#2@2 c#3 ~ c#3 ~ c#2@2 c#3 ~, c#3 ~ c#3 ~ c#3 ~ c#3 ~@5 c#3 ~@3",
  Q: "f#1@2 f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~, f#2 ~@7 f#1@4 ~@4",
  R: "b1@2 b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~ b2 ~, b2 ~@15", S: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~, f#1 ~@3",
  T: "c#2@2 g#1@2 a#1@2 c#3 ~ c#3 ~ c#3 ~ c#2@2 c#3 ~, c#3 ~ c#3 ~ c#3 ~ c#2@4 ~@2 c#3 ~@3",
  U: "g#1@2 g#2 ~ g#2 ~ g#2 ~ b2 ~ b2 ~ b2 ~ b2 ~, g#2 ~@3 g#1@4 b1@4 ~@4",
  V: "[f#1,f#2] ~ c#2@2 d#2@2 f#2 ~ f#2 ~ f#2 ~ f#1@2 f#2 ~, ~@2 f#2 ~ f#2 ~@7 f#2 ~@3", // F#
  W: "b1@2 f#1@2 g#1@2 b1@2 ~@2 b2 ~ b1@2 b2 ~, b2 ~ b2 ~ b2 ~ b2 ~@5 b2 ~@3",
  X: "c#2@2 c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~, c#3 ~@15",
  Y: "f#1@2 f#2 ~ f#2 ~ f#1@2 f#2 ~ f#2 ~ f#1@2 f#2 ~, f#2 ~@5 f#2 ~@5 f#2 ~@3",
  Z: "b1@2 f#1@2 g#1@2 [b1,b2] ~ b2 ~ b2 ~ b1@2 b2 ~, b2 ~ b2 ~ b2 ~@7 b2 ~@3", // B
  AA: "b1@2 f#1@2 g#1@2 b1@2 b2 ~ f#1@2 b1@2 b2 ~, b2 ~ b2 ~ b2 ~ b2 ~@3 b2 ~ b2 ~@3",
  AB: "g#1@2 g#2 ~ g#2 ~ g#2 ~ [b1,b2] ~ b1@2 g#1@2 f#1@2, g#2 ~@3 g#1@4 ~@2 b2 ~ b2 ~ b2 ~", // B
  AC: "c#2@2 c#3 ~ c#2@2 c#3 ~ c#3 ~ c#2@2 c#3 ~ [c#2,c#3] ~, c#3 ~@3 c#3 ~@5 c#3 ~@5", // C#
  AD: "f#1@2 f#2 ~@3 e2@2 f#2@4 f#1@3 ~", AE: "b1 f#1 g#1 b1 ~ b2 b1 ~", AF: "b1@2 b2 ~@3 a2@2 b2@4 b1@2 ~@2",
  AG: "c#2 g#1 a#1 c#2 ~ c#3 c#2 ~", AH: "c#2@2 c#3 ~@3 b2@2 c#3@4 c#2@3 ~",
  AI: "g#1@2 g#2 ~ g#2 ~ g#1@2 b1@2 b2 ~ b1@2 b2 ~, g#2 ~@5 g#2 ~ b2 ~@3 b2 ~@3",
  AJ: "f#1@2 f#2 ~ f#2 ~ f#1@2 f#2 ~ f#2 ~ f#2 ~ f#2 ~, f#2 ~@5 f#2 ~@5 f#1@4",
  AK: "c#2@2 g#1@2 a#1@2 c#2@2 c#3 ~ c#2@2 c#3 ~ [c#2,c#3] ~, c#3 ~ c#3 ~ c#3 ~ c#3 ~@3 c#3 ~@5", // C#
  AL: "f#1@2 f#2 ~ f#2 ~ e2@2 f#2 ~ f#2 ~ f#2 ~ f#2 ~, f#2 ~@5 f#2 ~@5 f#1@4",
  AM: "b1@2 b2 ~ b2 ~ a2@2 b2 ~ b2 ~ b2 ~ b2 ~, b2 ~@5 b2 ~@5 b1@4",
  AN: "c#2@2 c#3 ~ c#3 ~ b2@2 c#3 ~ c#3 ~ c#3 ~ c#3 ~, c#3 ~@5 c#3 ~@5 c#2@4", AO: "[f#1@9 ~@7, f#2 ~@7]/2",
})).s("gm_synth_bass_1").gain(0.35)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  A@8 B@8 C D E@8 ~@2 F@2 G@4 H@2 I@2 H@2 I@2 J@3 K@2 L@8 ~ M@8 I@2 N@6 C O P@8 Q@2 R@4 S@4 T@4 C U V U W@8 X@3 Y@7 F@2
  Z@5 ~@7
>`.pickRestart({
  A: "[a#4@95 ~ b4@32, f#4@127 ~, c#4@94 ~ d#4@31 ~@2]/8", B: "[[f#4,a#4] [f4,g#4] [f#4,a#4]@2, c#4@63 ~]/8",
  C: "[d#4,f#4,b4]", D: "~@15 [f#4,a#4]", E: "[~ f4 [f#4,a#4]@2, c#4, ~@31 g#4@32 ~@65]/8", F: "[[d#4,f#4,b4]@31 ~]/2",
  G: "[[f#4,a#4] [f4,g#4], c#4@63 ~]/4", H: "[[c#4,f#4,a#4]@24 [d#4,f#4,b4]@3 ~ [c#4,f#4,a#4]@3 ~]/2",
  I: "[[f#4,b4], d#4@15 ~]/2", J: "[[c#4,f#4,a#4]@22 [d#4,b4]@5 ~ a#4@4 [d#4,b4]@16, ~@22 f#4@25 ~, ~@28 c#4@3 ~@17]/3",
  K: "[[c#4,f4,g#4]@15 g#4@9 f#4@7 f4, ~@15 [d#4,b4]@16 ~]/2", L: "[g#4 [f#4,a#4]@7, c#4]/8",
  M: "[[f#4,b4]@31 [f#4,a#4]@32 [f4,g#4]@33 [f#4,a#4]@23 ~ [d#4,f#4,b4]@3 ~ [c#4,f#4,a#4]@3 ~, d#4@30 ~ c#4@87 ~@10]/8", // B5 F# Fm F# B F#
  N: "[[c#4,f#4,a#4]@24 [d#4,f#4,b4]@3 ~ [c#4,f#4,a#4]@3 ~ [f#4,b4]@31 ~ f#4@21 ~ [d#4,f#4,b4]@5 ~ [c#4,f#4,a#4]@4, ~@31 d#4@31 ~ [c#4,a#4]@22 ~@11]/6", // F# B F# B5 B F#
  O: "~ f4@13 ~ [d#4,g#4,b4], [c#4,g#4]@7 ~", P: "[~@7 f#4@8 ~ [f4,g#4]@16 [f#4,a#4]@96, ~@15 c#4@111 ~@2]/8",
  Q: "[d#4,b4]/2", R: "[a#4@32 [f4,g#4]@31 ~, c#4@31 ~]/4",
  S: "[[f#4,b4]@31 ~ [c#4,f#4]@23 ~ [d#4,f#4,b4]@3 ~ [c#4,f#4,a#4]@3 ~, d#4@30 ~ a#4@24 ~@9]/4", // B5 F#5 B F#
  T: "[[f#4,b4]@31 ~ f#4@21 ~ [d#4,f#4,b4]@5 ~ [c#4,f#4,a#4]@4, d#4@30 ~ [c#4,a#4]@22 ~@11]/4", U: "[c#4,f4,g#4]@15 ~",
  V: "g#4 f#4, [d#4,b4]@15 ~", // G#m
  W: "[[f#4,b4]@31 [c#4,f#4,a#4]@24 ~ [d#4,f#4,b4]@3 ~ [c#4,f#4,a#4]@3 ~ [d#4,b4]@31 ~ [c#4,f#4]@21 ~ [d#4,f#4,b4]@5 ~ [c#4,f#4,a#4]@4, d#4@30 ~@33 f#4@31 ~ a#4@22 ~@11]/8", // B5 F# B F# G#m F#5 B F#
  X: "[[d#4,f#4,b4]@15 [c#4,f4,g#4]@16 ~@9 f#4@8, ~@31 g#4@9 ~@8, ~@32 [d#4,b4]@15 ~]/3", // B C# G#m
  Y: "[[f4,g#4] [f#4,a#4]@6, c#4@111 ~]/7", Z: "[a#4@32 [f4,g#4]@31 [c#4,f#4,a#4]@17, c#4@31 ~@9, f#4@29 ~@51]/5",
})).s("gm_string_ensemble_1").gain(0.3)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  ~@35 A B ~@2 A C ~@2 D E ~@18 A C ~@2 A C ~@2 D E ~@18 A C ~@2 D E ~@6 A C ~@2 D E ~@23
>`.pickRestart({
  A: "~@8 [d#4,f#4,b4]@3 ~ [c#4,f#4,a#4]@3 ~", B: "[d#4,f#4,b4]@15 ~", C: "[d#4,f#4,b4]",
  D: "~@6 [d#4,f#4,b4]@5 ~ [c#4,f#4,a#4]@3 ~", E: "[d#4,f#4,b4]@7 ~",
})).s("gm_overdriven_guitar").gain(0.45)

// other · glockenspiel · "GLOCKENSPL"
const glockenspiel = note(`<
  A B C@2 A B D E@4 F ~@23 G H I J K D I A L H M N O P@2 Q@2 ~@11 G D I R@2 H I A L D S T U V W X@2 V Y Z AA@4 AB AC I V
  G D AD V L D M AE O Z AF AG AH H AD V AI D M T AJ V B X@2 A B AK AL@4 AM AN ~@7
>`.pickRestart({
  A: "c#6@13 ~@3", B: "c#7@5 ~ b6@6 a#6@4", C: "[c#6@11 ~@5]/2", D: "d#6@7 ~",
  E: "[~@8 f#6@2 g#6@2 f#6@2 a#6@19 ~@7 a#6@2 c#7@2 d#7@2 g#6@15 ~@3]/4", F: "~@6 a#6@2 c#7@2 a#6@2 g#6@3 ~",
  G: "~@8 b6 ~@3 a#6 ~@3", H: "d#6@3 ~", I: "f#6@5 ~ g#6@6 f#6@4", J: "c#6@5 ~@3", K: "~@8 b6@2 ~@2 a#6 ~@3",
  L: "~@6 d#6@5 ~ c#6@2 ~@2", M: "f6@7 ~", N: "f#6 ~@7 d#6@7 ~", O: "g#6@9 ~@7",
  P: "[c#6 ~ c#6@3 ~ d#6 ~ d#6@2 ~@2 f6 ~ f6@4 ~@2 f#6 ~ f#6@5 ~ g#6@2 f#6 ~]/2", Q: "[g#6 a#6@9 ~@6]/2",
  R: "[c#6@19 ~@5 b6 ~@3 a#6 ~@3]/2", S: "f6@15 ~", T: "f#6@8 d#6@7 ~", U: "g#6@3 ~", V: "c#6",
  W: "c#7@5 ~ b6@5 ~ a#6@2 ~@2", X: "[c#6@19 ~@13]/2", Y: "c#7@3 b6@3 a#6@2", Z: "d#6@15 ~",
  AA: "[~@8 f#6@2 g#6@2 f#6 ~ a#6@19 ~@7 a#6@2 c#7@2 d#7@2 g#6@8 a#6@9 ~]/4", AB: "b6@5 ~ c#7@7 ~@3", AC: "d#6@5 ~@3",
  AD: "f#6@5 ~ g#6@5 ~ f#6@3 ~", AE: "f#6@11 ~ d#6@3 ~", AF: "f#6@3 g#6@3 f#6@2", AG: "c#6@15 ~", AH: "~@4 b6 ~ a#6 ~",
  AI: "~@6 d#6@5 ~ c#6@3 ~", AJ: "g#6@3 ~@5", AK: "d#6",
  AL: "[~@8 f#6@2 g#6@2 f#6 ~ a#6@25 ~ a#6@2 c#7@2 d#7@2 g#6@10 a#6@8]/4", AM: "b6@2 c#7 ~", AN: "[a#5,f#6]@9 ~@7",
})).s("gm_glockenspiel").gain(0.36)

// other · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@12 A B C B D E B@2 F G H I J K L J M D B K G@2 N B ~@16 N K H O P@2 K B Q R B S ~@68
>`.pickRestart({
  A: "~@4 a#3 g#3 ~ a#3 ~ a#3 ~@6", B: "~@2 a#3 g#3 a#3 g#3 ~ a#3 ~ a#3 ~@6",
  C: "~@2 a#3 g#3 a#3 ~@2 a#3 ~ a#3 g#3 ~ a#3 ~@3", D: "~@2 d#4 c#4 d#4 c#4 ~ d#4 ~ d#4 c#4 ~@5",
  E: "~@2 d#4 ~ d#4 c#4 ~ d#4 ~ d#4 c#4 ~@5", F: "~@2 d#4 ~ c#4 ~@2 c#4 ~ c#4 ~@6",
  G: "~@2 c#4!2 ~ c#4 ~ c#4 ~ c#4 ~@6", H: "~@2 a#3 g#3 a#3 g#3 ~ a#3 ~ a#3 ~ a#3 ~@4",
  I: "~@2 a#3 g#3 a#3 g#3 ~ a#3 ~ a#3 g#3 ~ a#3 ~ a#3 ~", J: "~@2 a#3 ~@2 g#3 ~ a#3 ~ a#3 ~@6",
  K: "~@2 a#3 g#3 ~ g#3 ~ a#3 ~ a#3 ~@6", L: "~@2 a#3 g#3 a#3 g#3 ~ a#3 ~ a#3 ~@2 a#3 ~ a#3 ~",
  M: "~@2 d#4 c#4 ~ c#4 ~ d#4 ~ d#4 ~@6", N: "~@2 a#3 ~ a#3 g#3 ~ a#3 ~ a#3 ~@6", O: "~@2 a#3!3 g#3 a#3!2 ~ a#3 ~@6",
  P: "~@2 d#4 c#4 d#4 c#4 ~ d#4 ~ d#4 ~ d#4 ~@4", Q: "~@2 c#4!2 ~ c#4 ~ c#4 ~ c#4 a#3 ~@5",
  R: "~@2 c#4 ~ c#4 a#3 g#3 c#4 ~ c#4 ~@6", S: "~@2 a#3!2 ~ a#3 ~ a#3 ~ a#3 ~@6",
})).s("gm_electric_guitar_clean").gain(0.5)

// chords · pizzicato strings · "PIZZICATO"
const pizzicato_strings = note(`<
  A@6 B@2 A C D@2 A@4 B@2 A@2 D@2 A@6 B@2 A@2 D@2 A E B@2 A E B@2 A E B D F D A@4 G A@3 B@2 A@2 D@2 A E B@2 A E B@2 A E
  B D H D A@6 B@2 A C D@2 B@2 A E B@2 A E B D I D B@2 A E B@2 A J B D H K A@3 C A@2 L B A@2 D M@8 ~
>`.pickRestart({
  A: "~@2 [a#4,c#5,f#5]!5 ~@3 [a#4,c#5,f#5] ~@3 [a#4,c#5,f#5] ~", // F#
  B: "~@2 [b4,d#5,f#5]!5 ~@3 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~", // B
  C: "~@2 [a#4,c#5,f#5]!3 [c#5,f#5] [a#4,c#5,f#5] ~@3 [a#4,c#5,f#5] ~@3 [a#4,c#5,f#5] ~", // F# F#5 F#
  D: "~@2 [g#4,c#5,f5]!5 ~@3 [g#4,c#5,f5] ~@3 [g#4,c#5,f5] ~", // C#
  E: "~@2 [a#4,c#5,f#5]!5 ~@3 [b4,d#5,f#5] ~@3 [a#4,c#5,f#5] ~", // F# B F#
  F: "~@2 [g#4,b4,d#5]!5 ~@3 [g#4,b4,d#5] ~@3 [f#4,b4,d#5] ~", // G#m B
  G: "~@2 [c#5,f#5] [a#4,c#5,f#5]!4 ~@3 [a#4,c#5,f#5] ~@3 [a#4,c#5,f#5] ~", // F#5 F#
  H: "~@2 [g#4,b4,d#5]!5 ~@3 [f#4,b4,d#5] ~@3 [f#4,b4,d#5] ~", // G#m B
  I: "~@2 [g#4,b4,d#5]!5 ~@3 [g#4,b4,d#5] ~@3 [g#4,b4,d#5] ~", // G#m
  J: "~@2 [a#4,c#5,f#5]!4 [c#5,f#5] ~@3 [b4,d#5,f#5] ~@3 [a#4,c#5,f#5] ~", // F# F#5 B F#
  K: "~@2 [g#4,c#5,f5]!3 [c#5,f5] [g#4,c#5,f5] ~@3 [g#4,c#5,f5] ~@3 [g#4,c#5,f5] ~", // C#
  L: "~@2 [b4,d#5,f#5] [d#5,f#5] [b4,d#5,f#5]!3 ~@3 [b4,d#5,f#5] ~@3 [b4,d#5,f#5] ~", // B D#m B
  M: "[~@2 [g#4,c#5,f5]!5 ~@3 [g#4,c#5,f5] ~@3 [g#4,c#5]@114]/8", // C# C#5
})).s("gm_pizzicato_strings").gain(0.25)

// drums · kick
const kick = s("bd").struct("<[x!4]!124 x ~@7>").gain(0.51)

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

// drums · clap
const clap = s("cp").struct(`<
  A B A B A B A B A B A B ~@36 A ~ A ~@25 A B A B A B A B A B A B ~@24 A B A B A B A B C B A B ~@8
>`.pickRestart({
  A: "~ x ~@2", B: "~@10 x!3 ~ x ~", C: "~@3 x",
})).gain(0.51)

// drums · low tom
const low_tom = s("lt").struct("<~@51 [~@14 x!2] ~@80>").gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!124 x ~@7>").gain(0.51)

// drums · mid tom
const mid_tom = s("mt").struct("<~@51 [~@5 x!2 ~] ~@80>").gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<~@51 [~@7 x!2 ~@7] ~@80>").gain(0.51)

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

// drums · congas
const congas = s("conga:33").struct("<~@56 [~ x] ~@75>").gain(1.31)

stack(
  bass, string_ensemble_1, overdriven_guitar, glockenspiel, electric_guitar_clean, pizzicato_strings, kick, snare, clap,
  low_tom, hihat, mid_tom, high_tom, crash, congas
)

More by Romina Power Al Bano