Strudelify

Five Minutes More

Frank Sinatra

KeyG majorTempo125 bpm
0:00/0:00
// Five Minutes More — Frank Sinatra
// 125 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/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 · acoustic bass
const bass = note(`<
  ~@8 A B C D A B C D A B C D A B E F B G D H I J K D A B C D A B C F B G L H J M A@2 N O P G N O P G N O P G N O Q R O
  B G D S T U G N O P G N O P R O B V D T W X Y X Z AA@2
>`.pickRestart({
  A: "g2@5 ~ g2 ~ g2@5 ~ g2 ~", B: "e2@5 ~ e2 ~ e2@5 ~ e2 ~", C: "a1@5 ~ a1 ~ a1@5 ~ a1 ~",
  D: "d2@5 ~ d2 ~ d2@5 ~ d2 ~", E: "a1@5 ~ a1 ~ a1@4 ~@2 a1 ~", F: "f#1@5 ~ f#1 ~ b1@5 ~ b1 ~",
  G: "d#2@5 ~ d#2 ~ d#2@5 ~ d#2 ~", H: "c#2@5 ~ c#2 ~ c#2@5 ~ c#2 ~", I: "a1@6 e2 ~ e2@5 ~ a1 ~",
  J: "a1@6 e2 ~ a2@6 e2 ~", K: "a1@6 e2 ~ e2@6 a1 ~", L: "d2@5 ~ d2 ~ d2@4 ~@2 d2 ~", M: "a1@5 ~ e2 ~ d2@5 ~ f#2 ~",
  N: "g#2@5 ~ g#2 ~ g#2@5 ~ g#2 ~", O: "f2@5 ~ f2 ~ f2@5 ~ f2 ~", P: "a#1@5 ~ a#1 ~ a#1@5 ~ a#1 ~",
  Q: "a#1@5 ~ a#1 ~ a#1@4 ~@2 a#1 ~", R: "g1@5 ~ g1 ~ c2@5 ~ c2 ~", S: "a#1@6 f2 ~ f2@5 ~ a#1 ~",
  T: "a#1@6 f2 ~ a#2@6 f2 ~", U: "a#1@6 f2 ~ f2@6 a#1 ~", V: "d#2@5 ~ d#2 ~ d#2@4 ~@2 d#2 ~",
  W: "a#1@5 ~ f2 ~ d#2@5 ~ g2 ~", X: "g#2@15 ~", Y: "f#2@15 ~", Z: "f#2", AA: "[~ g#2@5 ~@2]/2",
})).s("gm_acoustic_bass").gain(0.4)

// chords · string ensemble 2
const string_ensemble_2 = note(`<
  ~@10 A B C@2 D@7 E@3 F@4 G@4 H@8 I@4 J@4 ~@2 K L M@2 N@7 O@3 P@4 Q@4 R@8 S@4 T@3 ~@5
>`.pickRestart({
  A: "~ g4", B: "f#4", C: "[a4@15 g4@16 b4]/2",
  D: "[~@24 e5@8 ~@31 b4@16 ~ a4@32, ~@15 a4@33 g4@32 ~@32, ~@32 d5@32 ~@15 f#4@32 ~]/7", E: "[[e4,g4]@31 f#4@16 ~]/3",
  F: "[~@3 f#5 e5@3 [f#5,a5], b4@7 ~]/4", G: "[e5@16 f#5@15 e5@25 [a#4,d#5]@8, b5@57 ~@7]/4",
  H: "[a4@16 b4@15 ~@80 f#4@16 ~, d5@31 g4@16 ~ f#4@32 g4@32 ~@16, ~@32 c5@32 b4@31 a4@32 ~]/8",
  I: "[g4@3 f#5 g5@4, b4]/4", J: "[[e4,a4]@31 [d4,b4]@33]/4", K: "~ g#4", L: "g4", M: "[a#4@15 g#4@16 c5]/2",
  N: "[~@24 f5@8 ~@31 c5@16 ~ a#4@32, ~@15 a#4@33 g#4@32 ~@32, ~@32 d#5@32 ~@15 g4@32 ~]/7",
  O: "[[f4,g#4]@31 g4@16 ~]/3", P: "[~@3 g5 f5@3 [g5,a#5], c5@7 ~]/4", Q: "[f5@16 g5@15 f5@25 [b4,e5]@8, c6@57 ~@7]/4",
  R: "[a#4@16 c5@15 ~@80 g4@16 ~, d#5@31 g#4@16 ~ g4@32 g#4@32 ~@16, ~@32 c#5@32 c5@31 a#4@32 ~]/8",
  S: "[g#4@3 g5 g#5@4, c5]/4", T: "[[f4,a#4]@31 [d#4,c5]@17]/3",
})).s("gm_string_ensemble_2").gain(0.18)

// chords · string ensemble 2
const string_ensemble_2_2 = note(`<
  ~@8 A@4 B@4 C@2 D@2 E@4 F@7 G@3 H@6 I@8 J@4 K@4 L@2 M@2 N@4 O@7 P@3 Q@6 R@7 ~@5
>`.pickRestart({
  A: "[[g3,b3]@31 ~ a3@32, ~@31 c4@32 ~]/4", B: "[[b3,d4]@31 [c4,e4]@32 ~]/4", C: "[b3,d4]/2", D: "[c4,e4]/2",
  E: "[[b3,d4]@31 c4@16 c#4@8 d#4@9, ~@31 a3@33]/4", F: "[e4@15 d#4@17 d4@16 c#4@15 c4@16 c#4@16 c4@16 f#3, g3]/7",
  G: "[~@15 [g3,b3]@32 ~]/3", H: "[[a3,c4]@31 [b3,d4]@32 c4@16 c#4@8 d#4@8 ~, ~@63 a3@32 ~]/6",
  I: "[e4@16 d#4@15 d4@16 c#4@16 ~@24 d3@8 [g3,b3]@33, g3@11 ~@5, ~@2 c4 ~]/8", // G
  J: "[[g#3,c4]@31 ~ a#3@32, ~@31 c#4@32 ~]/4", K: "[[c4,d#4]@31 [c#4,f4]@32 ~]/4", L: "[c4,d#4]/2", M: "[c#4,f4]/2",
  N: "[[c4,d#4]@31 c#4@16 d4@8 e4@9, ~@31 a#3@33]/4", O: "[f4@15 e4@17 d#4@16 d4@15 c#4@16 d4@16 c#4@16 g3, g#3]/7",
  P: "[~@15 [g#3,c4]@32 ~]/3", Q: "[[a#3,c#4]@31 [c4,d#4]@32 c#4@16 d4@8 e4@8 ~, ~@63 a#3@32 ~]/6",
  R: "[f4@16 e4@15 d#4@16 d4@16 ~@24 d#3@8 [g#3,c4]@17, g#3@11 ~@3, ~@4 c#4@2 ~]/7", // G#
})).s("gm_string_ensemble_2").gain(0.2)

// chords · french horn
const french_horn = note(`<
  ~@24 A B C ~@4 D E ~@7 A B C ~@2 F G@2 ~@16 H I J ~@4 K L ~@7 H I J ~@2 M N ~@5
>`.pickRestart({
  A: "~@4 [g4,b4] ~@3 [f#4,a4] ~ [g4,b4] ~@5", B: "~@10 [g4,b4] ~ [f#4,a4] ~ [d#4,g4] ~",
  C: "[f#4,a4] ~ [f#4,a4] ~ [g4,b4] ~ [d4,g4] ~@9", D: "f#4@7 d5 e5@3 ~ d#5@4, ~@8 d#5 ~@7", E: "d5",
  F: "~@7 [a#4,b4] c5@8", G: "[b4@15 ~]/2", H: "~@4 [g#4,c5] ~@3 [g4,a#4] ~ [g#4,c5] ~@5",
  I: "~@10 [g#4,c5] ~ [g4,a#4] ~ [e4,g#4] ~", J: "[g4,a#4] ~ [g4,a#4] ~ [g#4,c5] ~ [d#4,g#4] ~@9",
  K: "g4@7 d#5 f5@3 ~ e5@4, ~@8 e5 ~@7", L: "d#5", M: "~@7 [b4,c5] c#5@8", N: "c5",
})).s("gm_french_horn").gain(0.24)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@8 A B A C A B A C A B A C A B A C ~@8 A B A C A B A C ~@8 D E D B D E D B D E D B D E D B ~@8 D E D B D E D B ~@12
>`.pickRestart({
  A: "g3 ~@2 g3 ~@9 d3 e3 ~", B: "g3 ~@2 g3 ~@12", C: "f#3 ~@2 f#3 ~@12", D: "g#3 ~@2 g#3 ~@9 d#3 f3 ~",
  E: "g#3 ~@2 g#3 ~@12",
})).s("gm_electric_guitar_muted").gain(0.25).pan(0.4)

// other · oboe
const oboe = note("<~ A B C D E F G H ~@83>".pickRestart({
  A: "~@13 d5 e5 g5", B: "~ f#5@13 e5 b4", C: "~ d5@11 g#5 a5@2 g#5", D: "g5 f#5@13 b4 e5", E: "~ d5@14 c#5",
  F: "c5 b4@9 c5@3 d5@3", G: "a4@12 d#5 e5@3", H: "d5@15 ~",
})).s("gm_oboe").gain(0.11)

// other · flute
const flute = note("<~@48 A B C D E F G H I J K L M N O P Q ~@27>".pickRestart({
  A: "~@5 f5 g#5 f5 c6 f5 a#5 f5 g#5@2 a#5 ~", B: "~@4 b5 c6 f6 a#5 ~ [a#5,b5] [f5,g#5] ~ a#5 f5 ~@2",
  C: "~@6 c6 c#6 c6 g#5 g5 ~ [f5,a#5] g#5 f5 f#5", D: "g5 f#5 f5 c#5 c5 ~ d#5 c#5 g#4 ~ c5 f4 g#4 c5 b4 g4",
  E: "a#4 ~ a#4 f#4 g4!2 d#4@2 ~@8", F: "~@6 g5 g#5 g5 f#5 f5 c#5 c5 a#4 d#5 c#5", G: "c5@3 c#5 c5 ~@8 c5 ~ c#5",
  H: "c5@2 c#5 c5 ~ c5 ~@2 c5@2 c#5 d#5 ~ d#5 ~ d#5", I: "f5 ~ f5 d#5 ~ d#5 c5 ~ g5 ~ g5 d#5 ~ d#5 c5@2",
  J: "~@6 g5 g#5 g5 ~ f#5 f5 ~ d#5 ~ c5", K: "~ c#5 ~@3 f5 g#5 c6 d#6 ~ d#6 ~ c#6 c6 ~ a#5",
  L: "~ g#5 ~@6 g5 g#5 a#5 f#5 g5 f5 ~ g5", M: "~ f5 ~@2 f5@2 d#5 c5 ~@5 c5 d#5 c5",
  N: "g5 c5 f5 c5 d#5@2 f5 ~@5 a#5 b5 [g#5,a#5] f5", O: "a#5@2 g#5 ~@5 b5 c6 f6 a#5 b5 a#5 [f5,g#5] ~",
  P: "~@5 g5 a#5 [d6,f6] ~ d#6 c#6 ~ c6 ~ a#5 a5", Q: "~ g#5 ~@14",
})).s("gm_flute").gain(0.27)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@2 x]!89 [x ~@2 x!2 ~@3] [x!2 ~@2] ~>").gain(0.12)

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

// drums · low tom
const low_tom = s("lt").struct("<~@7 [~@6 x!2] ~@39 [~@5 x!3] ~@41 [~@10 x ~@2 x ~@2] x ~>").gain(0.14)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!89 [x ~ x ~ x ~ x ~ x ~ x ~@2 x ~@2] x ~>").gain(0.12)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 [~@5 x ~@2] ~@39 [~ x] ~@41 [~ x] ~@2>").gain(0.11)

// drums · splash
const splash = s("cr").struct("<x ~@7 x ~@39 x ~@43>").gain(0.18)

// drums · cowbell
const cowbell = s("cb").struct(`<
  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 A B A B A B A B A B A B A B A B A B A B A C A D E ~
>`.pickRestart({
  A: "x ~ x!2 ~ x ~ x", B: "x ~ x ~ x!2 ~ x", C: "x ~ x ~@2 x ~ x", D: "x ~ x ~ x!2 ~@2", E: "x",
})).gain(0.12)

// drums · ride
const ride = s("rd").struct("<~@90 [~ x ~@2] ~>").gain(0.16)

// drums · bongos
const bongos = s("bongo:4").struct("<[x!2]!90 ~@2>").gain(0.42)

// drums · bongos
const bongos_2 = s("bongo:18").struct("<[~@3 x]!89 [~@13 x ~@2] ~@2>").gain(0.42)

// drums · congas
const congas = s("conga:13").struct("<[~ x ~@2]!90 ~@2>").gain(0.45)

// drums · congas
const congas_2 = s("conga:18").struct("<[~@6 x!2]!89 [~@13 x ~@2] x ~>").gain(0.45)

// drums · congas
const congas_3 = s("conga:33").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~@2
>`.pickRestart({
  A: "~@3 x!2 ~@3", B: "~@3 x ~@4",
})).gain(0.45)

// drums · guiro
const guiro = s("guiro:0").struct("<[~@2 x!2 ~@2 x!2]!89 [~@4 x ~ x ~@6 x ~@2] x ~>").gain(1.88)

// drums · guiro
const guiro_2 = s("guiro:4").struct("<[x!2]!90 ~@2>").gain(1.88)

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

// drums · shaker
const shaker = s("sh").struct("<[x!8]!89 [x ~ x ~ x ~ x ~ x ~ x ~@2 x ~@2] x ~>").gain(0.09)

stack(
  bass, string_ensemble_2, string_ensemble_2_2, french_horn, electric_guitar_muted, oboe, flute, kick, rim, low_tom,
  hihat, mid_tom, splash, cowbell, ride, bongos, bongos_2, congas, congas_2, congas_3, guiro, guiro_2, claves, shaker
)

More by Frank Sinatra