Strudelify

All The Way One For My Baby (And One More For The Road) - Duet with Frank Sinatra

Frank Sinatra

KeyD majorTempo100 bpm
0:00/0:00
// All The Way   One For My Baby (And One More For The Road) - Duet with Frank Sinatra — Frank Sinatra
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 86 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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(`<
  ~@2 A B C D E F G H I A J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AL AP AQ R AG
  AR AS AT AL AU AV Y AW AX AY AZ BA BB BC Y BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW Y@2
>`.pickRestart({
  A: "d2 a2", B: "d2@6 ~@2 a2@6 ~ a2, ~@7 d2@2 ~@7", C: "d2@8 a2@7 d1", D: "c#2@5 ~@3 c#3@2 ~ c#3 a#1@4, ~@7 c#2@2 ~@7",
  E: "c2@8 c2@6 ~ c2", F: "b1@6 ~@2 f#2@6 ~ f#2, ~@7 b1@2 ~@7", G: "e2@8 b1@6 ~ g#2", H: "d2 d3!2 b2",
  I: "c#2@8 e2@7 c#2", J: "d2@5 d1 ~ d2 d2@8", K: "d2@5 d1 ~ d2 e2@8", L: "g2 d3", M: "g#2 b2", N: "a1@8 a1@7 a0",
  O: "a1@7 a#1 a1@8", P: "d2 b2", Q: "d2@8 a2@6 ~ d#2", R: "d2 ~@3 e2@4 f#2@4 a2@4, ~@3 d2@2 ~@11", S: "c#2 g#2 a2 c#3",
  T: "a1@2 ~ a0 b1@4 c2@4 e2@3 a1", U: "b1 c#2 d#2 f#2", V: "e2@4 b2@4 e3@4 b2@3 g#2",
  W: "d2 ~@3 a2@4 b2@4 d3@4, ~@3 d2@2 ~@11", X: "c#3 c#2!2 e2", Y: "d2@4 a2@4 d3@4 a2@3 d#2",
  Z: "d2@4 d#2@4 ~ a2@2 f#2 d2@4, ~@4 d3 ~@3", AA: "d2@2 ~ d2 e2@4 e2@2 ~ e2 f#2@4", AB: "g2 a2 b2 d3",
  AC: "g#2@3 b1 b2@4 g2@4 g#2@2 ~ b1", AD: "a1 a2 f#2 a1", AE: "a1 g#1 a1 d#2", AF: "e2@3 e1 f#2@4 g2@4 b2@3 e2",
  AG: "d2 a2 f#2 d2", AH: "d2@3 ~ d2@4 e2@2 ~ e2 b2@4", AI: "d2@3 ~ d2@4 e2@3 ~ e2@4", AJ: "g2 f#2 g2 g#2",
  AK: "g2@3 g1 g2@4 g2@3 ~ g2@4", AL: "e2 e3 b2 g2", AM: "a1 e2 c#2 a1", AN: "f#2@2 ~ f#1 g#2@4 a2@4 c#3@3 f#2",
  AO: "b1 b2 f#2 d2", AP: "a1@3 e1 b1@4 c#2@3 e1 e2@3 e1", AQ: "d2 d3 b2 g2", AR: "c#2@3 c#2 g#2@4 a2@3 c#2 c#3@3 c#2",
  AS: "c2@3 e1 e2@4 c2@4 c2@2 ~ e1", AT: "b1@3 f#1 c#2@4 d2@3 f#1 d#2@4", AU: "d2@3 d2 a2@4 b2@3 d2 d3@3 d2",
  AV: "c#2@3 e1 b1@4 c#2@3 e1 e2@3 e1", AW: "d2@3 d1 d2@4 d3@4 a2@4", AX: "d2@3 e1 e2@3 e1 d2@4 d2@4",
  AY: "g2@3 d2 d3@4 b2@4 g2@2 ~ d2", AZ: "g#2 f#2 g2 b2", BA: "a1 e2 f#2 a2", BB: "a1@4 g#1@4 a1@2 ~ a1 e2@4",
  BC: "d2 f#2 g2 b2", BD: "d3 ~@2 d3 a2@4 d3@4 a2@4", BE: "d2@2 ~ d2 c#2@4 d2@4 f#2@4", BF: "g2@4 d3@4 g2@2 ~ g2 f#2@4",
  BG: "g2@3 g1 g2@4 g2@2 ~ g2 d#2@4", BH: "e2 ~@3 f#2@4 g2@4 b2@4, ~@3 e2@2 ~@11", BI: "a1@4 e2@4 a2@4 e2@3 g2",
  BJ: "f#2@3 c#2 g#2@4 a2@3 c#2 c#3@3 c#2", BK: "b1@3 f#1 c#2@4 d2@3 f#1 f#2@3 f#1", BL: "e2@2 ~ e2 d2@4 c#2@4 b1@4",
  BM: "a1@3 e1 e2@4 c#2@4 a1@2 ~ e1", BN: "e2@2 ~ e1 f#2@4 g2@4 b2@3 e2", BO: "d2@3 a1 a2@4 f#2@4 d2@2 ~ a1",
  BP: "d3 ~@2 d3 a2@4 c#2@2 ~ c#2 g#1@4", BQ: "c2@2 ~ c2 e2@4 c2@4 f#2@4", BR: "g2 f#2 g2!2", BS: "g2 g#2 g2 c#2",
  BT: "d2@2 ~ d2 a2@4 c#2@2 ~ c#2 d#2@4", BU: "e2 f#2 g2 b2", BV: "a2 a1 c#2 e2", BW: "d2@4 b2@4 d3@4 b2@3 d#2",
})).s("gm_acoustic_bass").gain(0.19)

// chords · piano
const piano = note(`<
  ~@2 A B A C@2 D E F G H I J K L A M N@2 O@2 P@2 Q F R B S@3 T A U V W X Y@2 Z@4 AA@2 AB@3 B AC@3 E K AD AE@7 AF AG@3
  AH@2 AI@4 AJ@2 AK@3 AL AM AN AO AP AQ AF AR B
>`.pickRestart({
  A: "[f#3,a3,d4]", B: "[f#3,d4,a4]", C: "[[f#3,a3,c#4,f#4]@15 [f#3,c4,e4,a4]@17]/2", D: "[a3,d#4,g4,c5]",
  E: "[g3,b3,e4]", F: "[b3,d4,g4]", G: "[c#4,g4,a#4,f5]", H: "[d4,f#4,a4,d5]", I: "[d4,f#4,a4] [c4,f#4,a#4,d5]",
  J: "[c4,g4,b4,e5] [d4,e4,g#4,b4]", K: "[b3,g4,d5]", L: "[g3,d4,f#4,b4]", M: "[g3,d4,f#4,b4] [g3,a3,c#4,e4]",
  N: "[[g3,b3,d4,e4]@15 [f#3,d4,a4]@17]/2", O: "[[f#3,d4,a4]@15 [f#3,a3,c#4]@17]/2",
  P: "[[f#3,c4,e4,a4]@15 [a3,d#4,g4,c5]@17]/2", Q: "[g3,e4,b4]", R: "~@7 [g3,c#4,f4,a#4]@9",
  S: "[[f#3,a3,d4]@8 [f#3,a#3,c4,d4]@7 [g3,c4,e4,a4]@9 [g#3,d4,f#4,b4]@7 [g3,b3,d4,g4]@17]/3", // D F#aug Am7 G#m7b5 G
  T: "~@7 [e4,b4] ~@3 [e4,b4] ~@3 e4, [e3,g3,b3,d4]", U: "~@7 [g3,d4,f#4,b4] [g4,c#5]@3 [e4,a4]@5, ~ [e3,g3,a3,c#4]",
  V: "[g3,b3,d4,f#4]@15 ~", W: "~@4 [f#3,d4,a4]@2 ~ [f#3,d4,a4] [f#3,d4,a4]@2 ~ [f#3,d4,a4] [f#3,d4,a4]@2 ~@2",
  X: "~@7 [f#3,a3,d4] [g#3,a#3,d4,f#4,c#5]@8", Y: "[[g3,b3,c4,e4]@8 [g#3,b3,d4,e4]@7 [b3,d4,g4]@8 [b3,d4,e4,g4]@9]/2",
  Z: "[[b3,f4,a4,e5]@8 ~@3 [g3,b3,d4,e4,d5,d6]@4 [d4,g4,b4,f#5]@16 [c#4,g4,b4,f#5]@16 [a3,e4,f#4,c#5]@17]/4", // Esus4 Em7 Gmaj7 F#sus4 F#m7
  AA: "[[a3,d4,f#4,b4]@15 [g3,b3,d4,f#4]@17]/2", AB: "[[g3,b3,c#4,f#4]@15 [g3,d4,e4,b4]@16 [f#3,d4,a4]@17]/3",
  AC: "[[f#3,a3,c#4,f#4]@15 [f#3,c4,e4,a4]@16 ~@8 [f#4,b4] ~@3 [f#4,b4] ~@3 f#4, ~@31 [f#3,a3,b3,d#4]@17]/3", // F#m F#m7b5 B5 B7
  AD: "[c#4,g4,a4,e5]", // A7
  AE: "[~@7 [d4,f#4,a4]@8 [d4,f#4,a4,d5]@8 [c5,f#5]@4 [a#4,d5]@4 [c4,e4,g4,b4]@8 [c4,f#4,a#4,d#5]@8 [b3,g4,d5]@16 [g3,d4,f#4,b4]@16 [f#3,a3,d4]@16 [g3,d4,f#4,b4]@9 [g3,c#4,f#4,b4]@8, ~@23 [a#3,c4,d4,f#4]@8 ~@81]/7", // D Cdim A# Cmaj7 Cm7b5 G Gmaj7 D …
  AF: "[g3,b3,d4,e4]", // Em7
  AG: "[~@4 [f#3,d4,a4]@2 ~ [f#3,d4,a4] [f#3,d4,a4]@2 ~ [f#3,d4,a4] [f#3,d4,a4]@2 ~ [f#3,d4,a4]@9 [f#3,c4,d4,a#4]@7 [g3,c4,e4,b4]@9 [c5,f#5]@3 [a4,d5]@5, ~@5 [a3,c4,d4,f#4]]/3", // D F#aug Cmaj7 Cdim D5 D7
  AH: "[[g3,b3,d4,g4]@7 [e3,g3,b3,d4]@8 [f3,b3,d#4,g4]@9 ~@3 [g3,b3,d4,e4,d5,d6]@5]/2", // G Em7 D#aug Em7
  AI: "[[g3,b3,d4,f#4]@15 [g3,c#4,f#4,b4]@16 [e3,a3,c#4,f#4]@16 [a3,d4,f#4,c#5]@17]/4", // Gmaj7 F#m7 Dmaj7
  AJ: "[~@7 [g3,b3,d4,f#4]@8 [g3,c#4,f#4,b4]@17]/2", // Gmaj7
  AK: "[[g3,d4,f#4,b4]@15 [f#3,d4,a4]@16 [f#3,a3,d4]@8 [c#5,a5]@4 f#5@5, ~@13 [a3,c#4,f#4,a4]@3]/3", // Gmaj7 D F#m
  AL: "[f#3,a3,c4,e4]@7 [d#3,f#3,a3,c4]@9", AM: "[f3,b3,e4,a4]@7 [g3,b3,d4,g4]@9", AN: "[f3,a#3,d4,a4]@7 [g3,a#3,d4]@9",
  AO: "[f#3,d4,a4]@8 [f#3,a3,c#4,f#4]@7 ~", AP: "~@7 [g3,b3,d4,f#4]@9", AQ: "[g3,c#4,f#4,b4]", AR: "~@7 [f#3,d4,a4]@9",
})).s("gm_piano").gain(0.12)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@2 A@3 B C D E F G A H I F J A K J A L M N O P Q G R S T U V L W X Y Z AA AB AC X AD AE AF X AD X L Y AG AH AI AJ U
  AK Y AL AM Q V R AN X R AL AO AP AQ V AK AE AR X AS X Y AT AU AV AW AX AY AS J A@2
>`.pickRestart({
  A: "~@4 [f#3,d4] ~@7 [f#3,d4] ~@3", B: "~@4 [f#3,c#4] ~@7 [f#3,c#4] ~@3", C: "~@4 [c3,f#3] ~@7 [c3,f#3] ~@3",
  D: "~@4 [d#3,a3] ~@7 [d#3,a3] ~@3", E: "~@4 [e3,b3] ~@7 [e3,b3] ~@3", F: "~@4 [g3,d4] ~@7 [g3,d4] ~@3",
  G: "~@4 [c#3,g3] ~@7 [c#3,g3] ~@3", H: "~@4 [f#3,d4] ~@7 [f#3,c4] ~@3", I: "~@4 g3 ~@7 g#3 ~@3",
  J: "~@4 [d3,g3] ~@7 [d3,g3] ~@3", K: "~@4 g3 ~@7 g3 ~@3", L: "[f#3,d4]@4 [f#3,d4] ~@7 [f#3,d4]@2 ~@2",
  M: "[f#3,c#4]@2 ~@2 [f#3,c#4] ~@7 [f#3,c#4] ~@3", N: "[c3,f#3]@4 [c3,f#3] ~@7 [c3,f#3]@2 ~@2",
  O: "[d#3,a3]@2 ~@2 [d#3,a3] ~@7 [d#3,a3] ~@3", P: "[e3,b3]@4 [e3,b3] ~@3 b3@4 b3 ~@3",
  Q: "[g3,d4]@2 ~@2 [g3,d4] ~@7 [g3,d4] ~@3", R: "[f#3,d4]@2 ~@2 [f#3,d4] ~@7 [f#3,d4] ~@3",
  S: "[f#3,d4]@2 ~@2 [f#3,d4] ~@3 [f#3,c4]@2 ~@2 [f#3,c4] ~@3", T: "[c3,g3]@4 [c3,g3] ~@3 [d3,g#3]@2 ~@2 [d3,g#3] ~@3",
  U: "[g3,d4]@4 [g3,d4] ~@7 [g3,d4]@2 ~@2", V: "[d3,g3]@4 [d3,g3] ~@3 g3@4 g3 ~@3",
  W: "[d3,g3]@2 ~@2 [d3,g3] ~@3 [c#3,g3]@2 ~@2 [c#3,g3] ~@3", X: "[d3,g3]@2 ~@2 [d3,g3] ~@7 [d3,g3] ~@3",
  Y: "[f#3,d4]@4 [f#3,d4] ~@3 d4@4 d4 ~@3", Z: "[f#3,d4]@2 ~@2 [f#3,d4] ~@3 [d3,g#3]@4 [d3,g#3] ~@3",
  AA: "[c3,g3]@2 ~@2 [c3,g3] ~@3 [d3,g#3]@3 ~ [d3,g#3] ~@3", AB: "[g3,d4]@3 ~ [g3,d4] ~@3 [e3,b3]@4 [e3,b3] ~@3",
  AC: "[f3,b3]@3 ~ [f3,b3] ~@3 [e3,b3]@3 ~ [e3,b3] ~@3", AD: "[c#3,g3]@4 [c#3,g3] ~@3 g3@4 g3 ~@3",
  AE: "[e3,a3]@4 [e3,a3] ~@3 a3@4 a3 ~@3", AF: "[d3,a3]@4 [d3,a3] ~@7 [d3,a3]@2 ~@2",
  AG: "[f#3,c#4]@4 [f#3,c#4] ~@3 c#4@4 c#4 ~@3", AH: "[c3,f#3]@4 [c3,f#3] ~@3 f#3@4 f#3 ~@3",
  AI: "[d#3,a3]@4 [d#3,a3] ~@3 a3@4 a3 ~@3", AJ: "[e3,b3]@4 [e3,b3] ~@7 [e3,b3]@2 ~@2",
  AK: "[c#3,g3]@2 ~@2 [c#3,g3] ~@7 [c#3,g3] ~@3", AL: "[f#3,d4]@4 [f#3,d4] ~@3 [f#3,c4]@3 ~ [f#3,c4] ~@3",
  AM: "[c3,g3]@4 [c3,g3] ~@3 [f#3,c4]@3 ~ [f#3,c4] ~@3", AN: "[d3,g3]@4 [d3,g3] ~@3 [c#3,g3]@3 ~ [c#3,g3] ~@3",
  AO: "[c3,g3]@3 ~ [c3,g3] ~@3 [f#3,c4]@2 ~@2 [f#3,c4] ~@3", AP: "[g3,d4]@4 [g3,d4] ~@3 [e3,b3]@3 ~ [e3,b3] ~@3",
  AQ: "[f3,b3]@4 [f3,b3] ~@3 [e3,b3]@2 ~@2 [e3,b3] ~@3", AR: "[d3,a3]@4 [d3,a3] ~@3 a3@4 a3 ~@3",
  AS: "[c#3,g3]@4 [c#3,g3] ~@7 [c#3,g3]@2 ~@2", AT: "[f#3,d4]@4 [f#3,d4] ~@3 [f#3,c#4]@2 ~@2 [f#3,c#4] ~@3",
  AU: "[c3,f#3]@4 [c3,f#3] ~@3 [d#3,a3]@2 ~@2 [d#3,a3] ~@3", AV: "[f3,b3]@2 ~@2 [f3,b3] ~@3 [g3,d4]@4 [g3,d4] ~@3",
  AW: "[f3,a#3]@2 ~@2 [f3,a#3] ~@3 [g3,d4]@3 ~ [g3,d4] ~@3", // A#5 G5
  AX: "[f#3,d4]@2 ~@2 [f#3,d4] ~@3 [f#3,c#4]@2 ~@2 [f#3,c#4] ~@3", AY: "[d3,g3]@4 [d3,g3] ~@7 [d3,g3]@2 ~@2",
})).s("gm_acoustic_guitar_nylon").gain(0.13)

// chords · acoustic guitar nylon · soft notes
const acoustic_guitar_nylon_2 = note(`<
  ~@20 A B C D E F ~ F ~@2 G H A ~ I J ~@4 I K E L I K I A J@2 M N O G I J ~@2 F H F ~ I F ~@4 H I E H I P I J ~@5 Q P
  ~@3
>`.pickRestart({
  A: "~@2 [f#3,d4] ~", B: "~@4 c#4 ~@3", C: "~@2 [c3,f#3] ~", D: "~@4 a3 ~@3", E: "~@8 e3@4 e3 ~@3", F: "~@4 d4 ~@3",
  G: "~@2 [g3,d4] ~", H: "~@8 d3@4 d3 ~@3", I: "~@4 g3 ~@3", J: "~@8 f#3@4 f#3 ~@3", K: "~@8 c#3@4 c#3 ~@3",
  L: "~@2 [d3,a3] ~", M: "~@8 c3@4 c3 ~@3", N: "~@8 d#3@4 d#3 ~@3", O: "~@2 [e3,b3] ~", P: "~@2 [c#3,g3] ~",
  Q: "~@2 [d3,g3] ~", // G5
})).s("gm_acoustic_guitar_nylon").gain(0.06)

// drums · kick
const kick = s("bd").struct("<~@2 A B A B A@3 C A@3 D A@2 C A@2 D ~@39 E ~@19 E ~@5 F>".pickRestart({
  A: "x!2", B: "x ~@7 x ~@6 x", C: "~@2 x!2", D: "x ~ x!2", E: "~@7 x ~@8", F: "x ~@10 x ~@4",
})).gain(0.16)

// drums · rim
const rim = s("rim").struct(`<
  A B C@7 D C@6 D C@2 ~ C D C D C@9 D C@3 D C D C D C@7 D C@5 D C D C@5 D C D C@3 D C@3 D C@7 D C@3 ~
>`.pickRestart({
  A: "x!2", B: "x!4", C: "~ x ~ x", D: "~ x ~@2",
})).gain(0.19)

// drums · snare
const snare = s("sd").struct(`<
  ~@13 A ~@5 B C ~ D ~ E F@2 G H D E ~ H ~ H B D ~ H E@2 ~ F I F D F J F ~ F K H D H ~ H ~ H I H F H ~ H ~ E G E ~ E B E
  ~ H ~ H D E J L E L ~ H M
>`.pickRestart({
  A: "~@11 x!2 ~@3", B: "~@7 x ~@3 x ~@3 x", C: "~@3 x ~@4 x ~@7", D: "~ x", E: "~@7 x ~@8", F: "~@7 x!2 ~@7",
  G: "~@7 x ~@3 x ~@4", H: "~@7 x ~@7 x", I: "~@3 x ~@7 x ~@3 x", J: "~@11 x ~@3 x", K: "~@8 x ~@2 x ~@4",
  L: "~@3 x ~@3 x ~@8", M: "~@3 x ~@3 x!2 ~@2 x ~ x ~ x",
})).gain(0.1)

// drums · hihat
const hihat = s("hh").struct("<~@2 [x!4]!7 [~ x!3] [x!4]!6 [~ x!3] [x!4]!3 [~ x ~ x]!66>").gain(0.19)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@2 [~@7 x ~@7 x]!18 ~@66>").gain(0.1)

// drums · mid tom
const mid_tom = s("mt").struct("<~@23 [~@12 x ~@2 x] ~@31 [~@12 x ~@2 x] ~@30>").gain(0.13)

// drums · open hat
const open_hat = s("oh").struct("<~@9 x ~@6 x ~@69>").gain(0.13)

// drums · crash
const crash = s("cr").struct("<~@20 x ~@65>").gain(0.13)

// drums · ride
const ride = s("rd").struct(`<
  ~@20 A B@7 C B@3 C B C B@3 C B@13 C B C B C B C B C B C B C B@9 C B C B@7 C A
>`.pickRestart({
  A: "~@4 x ~@2 x!2 ~@3 x ~@2 x", B: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", C: "x!4",
})).gain(0.19)

// drums · ride · soft notes
const ride_soft = s("rd").struct(`<
  ~@28 A ~@3 A ~ A B ~@2 A ~@13 A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~@7 A ~
>`.pickRestart({
  A: "~@7 x ~@7 x", B: "~@11 x ~@4",
})).gain(0.13)

stack(
  bass, piano, acoustic_guitar_nylon, acoustic_guitar_nylon_2, kick, rim, snare, hihat, hihat_soft, mid_tom, open_hat,
  crash, ride, ride_soft
)

More by Frank Sinatra