Strudelify

Yes Sir, That's My Baby

Sinatra

KeyC majorTempo176 bpm
0:00/0:00
// Yes Sir, That's My Baby — Sinatra
// 176 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(176/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 · "ACOU BASS"
const bass = note(`<
  A B C B A@2 B@3 D A B A@2 B@3 D A E F G H I J K L M A@2 B@4 N@2 A@2 B@4 A B A@2 B@2 O@2 B@2 A@2 B@3 D A B A@2 B@3 D A
  E P
>`.pickRestart({
  A: "c3 a2 f2 a2", B: "g2 e2 c2 e2", C: "d3 a#2 f2 a#2", D: "g2 e2 g2 c2", E: "c3 a2 b1 c2", F: "f1 a1 c2 d2",
  G: "f2 d2 c2 a1", H: "a#1 d2 f2 g2", I: "a#2 g2 f2 d2", J: "g1 b1 d2 e2", K: "g2 e2 d2 b1", L: "c2 e2 g2 a2",
  M: "c3 a2 g2 e2", N: "f2 a2 c3 a2", O: "d2 b1 g1 b1", P: "f2",
})).s("gm_acoustic_bass").gain(0.5)

// chords · piano · "A.PIANO"
const piano = note(`<
  A B C D E@2 D@3 F E D E A D@3 F E G H@2 C I J@2 D@2 E@2 D@3 F E@4 K D K D E D L E K M J@2 D N E@2 D@3 F E D E A D@3 F
  E O P
>`.pickRestart({
  A: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,g#4,b4,d5] ~ [f4,g#4,b4,d5] ~", // F Fdim
  B: "[g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~ [f#4,a4,c5,d#5] ~", // C7 F#dim
  C: "[f4,g#4,a#4,d5] ~ [f4,g#4,a#4,d5] ~ [f4,g#4,a#4,d5] ~ [f4,g#4,a#4,d5] ~", // A#7
  D: "[g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~", // C7
  E: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~", // F
  F: "[g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~ [g4,b4,d5,f5] ~ [g4,a#4,c5,e5] ~", // C7 G7 C7
  G: "[f4,a4,c5] ~ [f4,a4,c5] ~ [b4,c#5,f5] ~ [g4,a#4,c5,e5] ~", // F C#7 C7
  H: "[f4,a4,d#5] ~ [f4,a4,d#5] ~ [f4,a4,d#5] ~ [f4,a4,d#5] ~", // F7
  I: "[f4,g#4,a#4,d5] ~ [f4,g#4,a#4,d5] ~ [a4,c#5,e5,g5] ~ [g#4,c5,f#5] ~", // A#7 A7 G#7
  J: "[g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~ [g4,b4,d5,f5] ~", // G7
  K: "[g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~ [g4,a#4,d5] ~ [g4,a#4,d5] ~", // C7 Gm
  L: "[f4,a4] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~, c5 ~@15", // F
  M: "[f#4,a4,c5,d#5] ~ [f#4,a4,c5,d#5] ~ [g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~", // F#dim C7
  N: "[a4,c5,e5] ~ [a4,c5,e5] ~ [g4,a#4,c5,e5] ~ [g4,a#4,c5,e5] ~", // Am C7
  O: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5]@2 [f4,a4,c5]@2", P: "[f4,a4,c5]",
})).s("gm_piano").gain(0.35).pan(0.7)

// other · celesta
const celesta = note(`<
  A B C ~@16 D E@2 F@2 G H I J A B A B A K L M N O P Q P R S T N O P Q U V W@2 A B A B A K X Y A B A B A K Z AA AB
>`.pickRestart({
  A: "c5@7 ~ d5@7 ~", B: "c5@3 ~ d5@3 ~ d5@3 ~ c5@3 ~", C: "c5@3 ~ a#4@3 ~ a4@3 ~ f4@3 ~", D: "~@8 g#4@3 ~ a4@3 ~",
  E: "[f4@23 ~ c#5@3 ~ d5@3 ~]/2", F: "[a#4@19 ~@5 a4@3 ~ g#4@3 ~]/2", G: "g4@7 ~ g4@7 ~",
  H: "f5@3 ~ d5@3 ~ f5@3 ~ f5@3 ~", I: "e5@7 ~ d5@7 ~", J: "c5@15 ~", K: "c5@3 ~ d5@3 ~ a4@3 ~ g4@3 ~",
  L: "f4@3 ~ g4 ~ a4 ~ a#4@3 ~ c5 ~ c#5 ~", M: "f5@11 ~@5", N: "f5@3 ~ f5@3 ~ d5@3 ~ d5@3 ~", O: "c5@3 ~ c5@3 ~ a4@7 ~",
  P: "c5@3 ~ c5@3 ~ a#4@3 ~ a#4@3 ~", Q: "a4@3 ~ a4@3 ~ g4@7 ~", R: "a4@3 ~ a4@3 ~ g4@3 ~ g4@3 ~",
  S: "f4@5 ~ g4 ~ a4 ~@2 a#4 ~ c5 ~@2", T: "d5@7 ~ c5@7 ~", U: "g4@3 ~ a4@3 ~ b4@3 ~ c5@3 ~",
  V: "d5@3 ~ c#5@3 ~ d5@3 ~ e5@3 ~", W: "[c5@31 ~]/2", X: "f4@5 ~ c4 ~ f4 ~@2 a4 ~ c5 ~@2",
  Y: "e5@3 ~ d5@3 ~ c#5@3 ~ c5@3 ~", Z: "f4@15 ~", AA: "f5@3 ~ d5@3 ~ c5@3 ~ a4@3 ~", AB: "f4@7 ~@9",
})).s("gm_celesta").gain(0.35).pan(0.2)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~@20 A@8 ~@41>".pickRestart({
  A: "[[a4,d#5]@31 ~ a#4@32 b4@31 ~ [c5,e5]@31 ~, f4@63 ~ g4@63 ~, ~@32 d5@63 ~@33]/8", // Adim C
})).s("gm_string_ensemble_1").gain(0.3).pan(0.9)

// drums · kick
const kick = s("bd").struct("<[x!2]!68 ~>").gain(0.5)

// drums · snare
const snare = s("sd").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 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<A@3 B A@7 B A@9 B A B A B A B A@23 B A@16 ~>".pickRestart({
  A: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", B: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@3 A ~@7 A ~@8 B@8 ~@22 B@2 ~@8 C ~@7 C>".pickRestart({
  A: "~@3 x", B: "~ x ~ x", C: "x",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").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 ~
>`.pickRestart({
  A: "x", B: "~ x ~ x",
})).gain(0.4)

stack(bass, piano, celesta, string_ensemble_1, kick, snare, hihat, mid_tom, open_hat)

More by Sinatra