Strudelify
Volare cover art

1995 · Spanish Eyes

Volare

Al Martino

KeyA majorTempo121 bpm
0:00/0:00
// Volare — Al Martino
// 121 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(121/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.

// chords · piano · "A.PIANO 3"
const piano = note(`<
  ~@16 A B A B C D E@2 F G F G H I J K L M N@2 O P Q R A B A B C D E@2 F G F S A B A B C D E@2 F G F G H I J K L M N@2 O
  P Q T U V W X W Y Z AA@2 AB AC AB AC AB AC AB AC AB AC AB AC AB AC AD ~
>`.pickRestart({
  A: "b2 ~ [a3,b3,d4,f#4] ~@2 [a3,b3,d4,f#4] b2 ~ [a3,b3,d4,f#4] ~@2 [a3,b3,d4,f#4] ~@2 [a3,b3,d4,f#4] ~", // Bm7
  B: "e2 ~ [g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4] e2 ~ [g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4] ~", // E7
  C: "a2 ~ [a3,b3,c#4,e4] ~@2 [a3,b3,c#4,e4] a2 ~ [a3,b3,c#4,e4] ~@2 [a3,b3,c#4,e4] ~@2 [a3,b3,c#4,e4] ~", // A
  D: "e2 ~ [a3,b3,d4,f#4] ~@2 [a3,b3,d4,f#4] e2 ~ [g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4] ~", // Bm7 E7
  E: "f#2 ~ [a3,c#4,e4,f#4] ~@2 [a3,c#4,e4,f#4] f#2 ~ [a3,c#4,e4,f#4] ~@2 [a3,c#4,e4,f#4] ~@2 [a3,c#4,e4,f#4] ~", // F#m7
  F: "b2 ~ [a3,b3,d4,f#4] ~@2 [a3,b3,d4,f#4] b2 ~ [g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4] ~@2 [g#3,b3,d4,e4] ~", // Bm7 E7
  G: "a2 ~ [a3,c#4,e4,g#4] ~@2 [a3,c#4,e4,g#4] a2 ~ [a3,c#4,e4,f#4] ~@2 [a3,c#4,e4,f#4] ~@2 [a3,c#4,e4,f#4] ~", // Amaj7 F#m7
  H: "f#2 ~ [f#3,a3,c#4,f#4] ~@2 [f#3,a3,c#4,f#4] f#2 ~ [f#3,a3,c#4,f4] ~@2 [f#3,a3,c#4,f4] ~@2 [f#3,a3,c#4,f4] ~", // F#m
  I: "f#2 ~ [f#3,a3,c#4,e4] ~@2 [f#3,a3,c#4,e4] f#2 ~ [f#3,a3,c#4,d#4] ~@2 [f#3,a3,c#4,d#4] ~@2 [f#3,a3,c#4,d#4] ~", // F#m7 D#m7b5
  J: "c#3 ~ [b3,c#4,e4,g#4] ~@2 [b3,c#4,e4,g#4] c#3 ~ [g#3,c4,e4,g#4] ~@2 [g#3,c4,e4,g#4] ~@2 [g#3,c4,e4,g#4] ~", // C#m7 G#aug
  K: "c#3 ~ [b3,c#4,e4,g#4] ~@2 [b3,c#4,e4,g#4] c#3 ~ [b3,c#4,e4,g#4] ~@2 [b3,c#4,e4,g#4] ~@2 [b3,c#4,e4,g#4] ~", // C#m7
  L: "c#3 ~ [b3,c#4,f4,g#4] ~@2 [b3,c#4,f4,g#4] c#3 ~ [b3,d4,f4,g#4] ~@2 [b3,d4,f4,g#4] ~@2 [b3,d4,f4,g#4] ~", // C#7 Bdim
  M: "c#3 ~ [b3,c#4,f4,g#4] ~@2 [b3,c#4,f4,g#4] c#3 ~ [b3,c#4,f4,g#4] ~@2 [b3,c#4,f4,g#4] ~@2 [b3,c#4,f4,g#4] ~", // C#7
  N: "f#2 ~ [a3,c#4,g#4] ~@2 [a3,c#4,g#4] f#2 ~ [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~@2 [a3,c#4,f#4] ~", // Amaj7 F#m
  O: "d3 ~ [f3,a3,d4,f4] ~@2 [f3,a3,d4,f4] d3 ~ [f3,a3,c#4,f4] ~@2 [f3,a3,c#4,f4] ~@2 [f3,a3,c#4,f4] ~", // Dm Faug
  P: "d3 ~ [f3,a3,c4,f4] ~@2 [f3,a3,c4,f4] d3 ~ [f3,a3,b3,f4] ~@2 [f3,a3,b3,f4] ~@2 [f3,a3,b3,f4] ~", // F Bm7b5
  Q: "[c3,b3,d4,e4,g4] ~ [c3,b3,d4,e4,g4] ~ [c3,b3,d4,e4,g4] ~ [c3,b3,d4,e4,g4] ~ [c3,b3,d4,e4,g4] ~ [c3,b3,d4,e4,g4] ~ [c3,b3,d4,e4,g4] ~ [c3,b3,d4,e4,g4] ~", // Cmaj7
  R: "[b3,d4,e4,g4]@2 ~@2 [f#2,f#3,a#3,c#4,e4]@11 ~, e2 ~@3", // Em7 F#7
  S: "[c#4,e4,g#4] ~@3 [f#2,c#4,e4,f#4,a#4]@11 ~, e2 ~@3, b4 ~@7", T: "[e1,e2]",
  U: "~@10 [a6,b6,c7] [e6,f6,g6] [a5,b5,c6,d6] [d5,e5,f5,g5] [a4,b4,c5] [c4,d4,e4,f4,g4], [a1,a2]", // Am Em D7 Em7 Am C A
  V: "[d3,g3,a3,b3] ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] d3 ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~", // G Dm7
  W: "g2 ~ [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] g2 ~ [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~", // G7
  X: "d3 ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] d3 ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] ~", // Dm7
  Y: "c3 ~ [c4,d4,e4,g4] ~@2 [c4,d4,e4,g4] c3 ~ [c4,d4,e4,g4] ~@2 [c4,d4,e4,g4] ~@2 [c4,d4,e4,g4] ~", // C
  Z: "g2 ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] g2 ~ [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~", // Dm7 G7
  AA: "a2 ~ [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] a2 ~ [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~", // Am7
  AB: "d3 ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] d3 ~ [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~@2 [b3,d4,f4,g4] ~", // Dm7 G7
  AC: "c3 ~ [c4,e4,g4,b4] ~@2 [c4,e4,g4,b4] c3 ~ [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~@2 [c4,e4,g4,a4] ~", // Cmaj7 Am7
  AD: "d3 ~ [c4,d4,f4,a4] ~@2 [c4,d4,f4,a4] d3 ~@9", // Dm7
})).s("gm_piano").gain(0.25)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@16 A B A B C B D@2 E C E C D@2 F@2 G H D@2 I@2 J K A B A B C B D@2 E C E L A B A B C B D@2 E C E C D@2 F@2 G H D@2
  I@2 J M N O P I P Q P R@2 S Q S Q S Q S Q S Q S Q S Q S ~
>`.pickRestart({
  A: "b1@2 ~ b1 f#1@3 ~ b1@2 ~ b1 f#1@2 b1@2", B: "e1@2 ~ e1 b1@3 ~ e1@2 ~ e1 b1@2 e1@2",
  C: "a1@2 ~ a1 e1@3 ~ a1@2 ~ a1 e1@2 a1@2", D: "f#1@2 ~ f#1 c#2@3 ~ f#1@2 ~ f#1 c#2@2 f#1@2",
  E: "b1@2 ~ b1 f#1@3 ~ e1@2 ~ e1 b1@2 e1@2", F: "c#2@2 ~ c#2 g#1@3 ~ c#2@2 ~ c#2 g#1@2 b1@2",
  G: "c#2@2 ~ c#2 g#1@3 ~ d2@2 ~ d2 g#1@2 b1@2", H: "c#2@2 ~ c#2 g#1@3 ~ c#2@2 ~ c#2 g#1@2 c#2@2",
  I: "d2@2 ~ d2 a1@3 ~ d2@2 ~ d2 a1@2 d2@2", J: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", K: "e1@2 ~@2 f#1@11 ~",
  L: "e1 ~@3 f#1@11 ~", M: "e1", N: "a1@12 ~ g#2 [f#2,g2] [e2,f2], ~@6 a2 ~",
  O: "d2@2 ~ d2 a1@3 ~ d2@2 ~ d2 a1@2 d2@2, d#2 ~@15", P: "g1@2 ~ g1 d2@3 ~ g1@2 ~ g1 d2@2 g1@2",
  Q: "c2@2 ~ c2 g1@3 ~ c2@2 ~ c2 g1@2 c2@2", R: "a1@2 ~ a1 e2@3 ~ a1@2 ~ a1 e2@2 a1@2",
  S: "d2@2 ~ d2 a1@3 ~ g1@2 ~ g1 d2@2 g1@2",
})).s("gm_electric_bass_finger").gain(0.4)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@15 A@5 B@4 C@4 D@4 E@2 F@2 G H I J K L M@2 N O@5 P Q@5 B@4 C@4 D@4 R@2 F@2 G H I S T U V W@2 X Y Z AA@8 AB@8 ~
>`.pickRestart({
  A: "[~ d6@4, ~@15 d5@64 ~]/5", B: "[c#5,c#6]/4", C: "[[a4,a5] [g#4,g#5]@2 [f#4,f#5]]/2",
  D: "[f#5@8 f5@8 e5@8 d#5@7 ~ c#4@8 c4@8 ~@8 b4@4 [g#4,g#5]@2 [a4,a5]@2, [c#4,a4]@31 e5@29 ~@4, ~@8 g#4@7 ~, ~@3 b3]/4", // G# A F#m
  E: "[[b4,b5]@8 [d5,d6]@7 ~ c#6@12 [b4,b5]@4, ~@15 c#5@13 ~@4]/2", F: "[~@2 [g#4,g#5] [f#4,f#5], [a4,a5]@3 ~]/2",
  G: "[d4,d5]@7 [a4,a5]@8 ~", H: "[d5,d6]@7 ~ f5@8, ~@7 f6@8 ~", I: "[e5,e6]", J: "~ [e4,f#4,a#4]@3",
  K: "[f#5,f#6]@3 [d5,d6]", L: "[a4,a5]", M: "[[f#5,f#6]@12 [d5,d6]@3 ~ a5@8 [b4,b5]@8, ~@15 a4@9 ~@8]/2",
  N: "[a4,a5]@7 ~ e6@3 ~ c#6@4, ~@7 e5@4 c#5@4 ~", // A
  O: "[[a4,a5]@8 [g#4,g#5]@7 ~ b5@7 ~@9 [g#4,g#5]@8 [f#4,f#5]@7 [a4,a5]@9 [g#4,g#5]@16 [f#4,f#5]@8, ~@15 b4@8 a4@16 ~@41, ~@3 a5@2 ~@5]/5", // A G# F# A G# F#
  P: "f#4@8 g#4@7 ~, [d4,b4]", Q: "[[g#4,e5] ~@7 f#6@7 ~ d6@64, ~@4 [f#4,f#5]@11 d5@64 ~]/5",
  R: "[[b4,b5]@8 [d5,d6]@7 ~ c#6@8 [b4,b5]@4 [g#4,g#5]@4, ~@15 c#5@9 ~@8]/2", // B D B G#
  S: "[f#3,f#4] [g#3,g#4] [a3,a4] [b3,b4] [g#3,g#4] [a3,a4] [b3,b4] [c#4,c#5] [b3,b4] [c#4,c#5] [d4,d5] [e4,e5] [c#4,c#5] [d4,d5] [e4,e5] [f#4,f#5]", // F# G# A B G# A B C# …
  T: "[c#4,c#5] [d4,d5] [e4,e5] [f#4,f#5] [e4,e5] [f#4,f#5] [g4,g5] [a4,a5] [f#4,f#5] [g4,g5] [a4,a5] [b4,b5] [g4,g5] [a4,a5] [b4,b5] [c#5,c#6]", // C# D E F# E F# G A …
  U: "[a5,a6]@3 [f5,f6]", V: "[c5,c6]", W: "[[a5,a6]@12 [f5,f6]@3 ~ c6@8 [d5,d6]@8, ~@15 c5@9 ~@8]/2",
  X: "[c5,c6]@7 ~ g6@3 ~ e6@4, ~@7 g5@4 e5@4 ~", Y: "[c5,c6]@8 [b4,b5]@7 d5", Z: "d6@7 ~ c6@8, ~@7 c5@9",
  AA: "[[b4,b5]@8 [a4,c5,a5]@7 ~ a5@8 f5@8 g6@4 e6@3 ~ a5@4 a5@3 ~ a5@8 f5@8 g6@4 e6@3 ~ a5@4 a5@3 ~ a5@8 f5@8 g6@4 e6@3 ~ a5@4 a5@3 ~ a5@8 [b4,f5,b5]@8, ~@15 [c5,c6]@9 [b4,b5]@15 c6@5 ~@3 [c5,c6]@9 [b4,b5]@16 a4@8 ~@23 c6@5 ~@3 [c5,c6]@9 ~@8, ~@40 a4@8 ~@23 c6@5 ~@3 [c5,c6]@9 [b4,b5]@16 a4@8 ~@16]/8", // B Am Bdim C B C B C …
  AB: "[g6@4 e6@3 ~ a5@4 a5@3 ~ a5@8 f5@8 g6@4 e6@3 ~ a5@4 a5@3 ~ a5@8 f5@8 g6@4 e6@3 ~ a5@4 a5@3 ~ a5@8 f5@8 g6@4 e6@3 ~ a5@4 a5@3 ~ a5@8 [b4,f5,b5]@8, ~@7 c6@5 ~@3 [c5,c6]@9 [b4,b5]@16 a4@8 ~@23 c6@5 ~@3 [c5,c6]@9 [b4,b5]@16 a4@8 ~@16, ~@8 a4@8 ~@23 c6@5 ~@3 [c5,c6]@9 [b4,b5]@16 a4@8 ~@23 c6@5 ~@3 [c5,c6]@9 ~@8]/8", // Bdim C B C B C B C
})).s("gm_string_ensemble_1").gain(0.4)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@16 A B A B C D E@2 D F G F H I J K L M N@2 O P Q R A B A B C D E@2 D F G S A B A B C D E@2 D F G F H I J K L M N@2 O
  P Q T U V W V W X Y Z@2 Y AA AB AA Y AA AB AA Y AA AB AA Y AA AB ~
>`.pickRestart({
  A: "[a3,b3,d4,f#4]@15 ~", B: "[g#3,b3,d4,f#4]@15 ~", C: "[a3,c#4,e4]@15 ~",
  D: "[a3,b3,d4,f#4]@7 ~ [g#3,b3,d4,e4]@7 ~", E: "[a3,c#4,e4,f#4]@15 ~", F: "[a3,c#4,e4,g#4]@7 ~ [a3,c#4,e4,f#4]@7 ~",
  G: "[b3,d4,f#4,a4]@7 ~ [b3,d4,e4,g#4]@7 ~", H: "[a3,c#4,f#4]@7 ~ [a3,c#4,f4]@7 ~",
  I: "[a3,c#4,e4]@7 ~ [a3,c#4,d#4]@7 ~", J: "[c#4,e4,g#4]@7 ~ [c4,e4,g#4]@7 ~", K: "[b3,e4,g#4]@15 ~",
  L: "[b3,c#4,f4,g#4]@7 ~ [b3,d4,f4,g#4]@7 ~", M: "[b3,c#4,f4,g#4]@15 ~", N: "[a3,c#4,g#4]@7 ~ [a3,c#4,f#4]@7 ~",
  O: "[a3,d4,f4]@7 ~ [a3,c#4,f4]@7 ~", P: "[a3,c4,f4]@7 ~ [a3,b3,f4]@7 ~", Q: "[b3,d4,e4,g4]",
  R: "[b3,d4,e4,g4]@2 ~@2 [f#3,a#3,c#4,e4]@11 ~", S: "[c#4,e4,g#4,b4]@2 ~@2 [c#4,e4,f#4,a#4]@11 ~", T: "e3@15 ~",
  U: "a3@15 ~", V: "[c4,d4,f4,a4]@15 ~", W: "[b3,d4,f4,a4]@15 ~", X: "[c4,e4,g4]@15 ~",
  Y: "[c4,d4,f4,a4]@7 ~ [b3,d4,f4,g4]@7 ~", Z: "[c4,e4,g4,a4]@15 ~", AA: "[c4,e4,g4,b4]@7 ~ [c4,e4,g4,a4]@7 ~",
  AB: "[d4,f4,a4,c5]@7 ~ [d4,f4,g4,b4]@7 ~", // Dm7 G7
})).s("gm_epiano2").gain(0.35)

// chords · tremolo strings · "TREMOLOSTR"
const tremolo_strings = note("<A@5 B@4 C@7 ~@85>".pickRestart({
  A: "[[a2,c#4,e4] [b2,d4,f#4], a3]/5", B: "[~@8 b3@7 ~@41 g#4@8, ~@7 g#4@8 a4@40 ~@9, ~ e4@7, ~ [a2,c#4]@3]/4",
  C: "[~@15 f#4@5 [g#4,b4]@8, ~@7 d4@16 ~ d#4@36 ~@52, ~@2 [b2,b3,f#4]@13 [e2,b3,d4]@13, ~@2 b4@9 a4@9 ~@8]/7", // G#m B5 E7
})).s("gm_tremolo_strings").gain(0.16)

// drums · kick
const kick = s("bd").struct("<~@16 [x!4]!84 ~>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@16 A@23 B A@11 B A@23 ~@2 A@23 ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<~@16 [~ x ~@3 x ~@3 x ~@3 x ~@2]!84 ~>").gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@16 [~@3 x ~@3 x ~@3 x ~@3 x]!83 [~@3 x ~@3 x ~@3 x ~@4] ~>").gain(0.08)

// drums · open hat
const open_hat = s("oh").struct("<~@16 [~ x ~ x ~ x ~ x]!84 ~>").gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@16 A ~@22 B A ~@10 B A ~@22 A ~ A ~@23>".pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.48)

// drums · tambourine
const tambourine = s("tb").struct("<~@39 [~@4 x!8 ~@4] ~@11 [~@4 x!8 ~@4] ~@49>").gain(0.32)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@39 [~@12 x!4] ~@11 [~@12 x!4] ~@49>").gain(0.16)

// drums · congas
const congas = s("conga:13").struct("<~@51 [~@5 x ~@2] [~ x ~@3 x ~@2]!23 ~@2 [~ x ~@3 x ~@2]!23 ~>").gain(1.02)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@51
  [~@14 x!2]
  [~@6 x!2 ~@6 x!2]!23
  ~@2
  [~@6 x!2 ~@6 x!2]!22
  [~@6 x!2 ~@6 x ~]
  ~
>`).gain(1.02)

// drums · agogo bells
const agogo_bells = s("agogo:2").struct(`<
  ~@40
  [~ x ~@5 x ~ x ~ x ~@3 x]!35
  ~@2
  [~ x ~@5 x ~ x ~ x ~@3 x]!22
  [~ x ~@5 x ~ x ~ x ~@4]
  ~
>`).gain(2.04)

// drums · shaker
const shaker = s("sh").struct("<~@16 [x!16]!83 [x!15 ~] ~>").gain(0.56)

stack(
  piano, bass, string_ensemble_1, epiano2, tremolo_strings, kick, snare, hihat, hihat_soft, open_hat, crash, tambourine,
  tambourine_soft, congas, congas_2, agogo_bells, shaker
)

More by Al Martino