Strudelify

Jive Samba The

Nat Adderley

KeyG majorTempo120 bpm
0:00/0:00
// Jive Samba The — Nat Adderley
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Trumpet" named as a brass, played on trumpet (its piano patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5555257; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 64 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: edit a riff to change every repeat.

// other · alto sax
const alto_sax = note(`<
  ~@3 A ~@3 A B@2 C@2 D@2 E@2 B@2 C@2 D@2 F G H I J@2 K@2 L@2 H I J@2 M@2 L@2 B@2 C@2 D@2 F G H I J@2 M@2 L@2 N O P O P
  O ~ Q
>`.pickRestart({
  A: "~@7 f3", B: "[d#4@13 ~ c4 f3]/2", C: "[g#3@3 f3@13]/2", D: "[~@3 f3 g#3 d#4@2 d#4@6 c4 a#3 f3]/2",
  E: "[g#3@2 f3 d#3@11 ~ f3]/2", F: "g#3@2 f3 d#3@5", G: "d#3@3 ~", H: "f5!2 ~ f5 ~ c#5 d5@2",
  I: "a#4@2 ~ c5 d5@2 d5@2", J: "[d5 c5 ~ c5@11 ~ f4]/2", K: "[g#4 d#5@13 c5 f4]/2", L: "[g#4@3 f4@11 ~@2]/2",
  M: "[g#4 d#5@12 c5 a#4 f4]/2", N: "f4@5 c4 d#4 e4", O: "f4 ~@3", P: "~@5 c4 d#4 e4", Q: "f4",
})).s("gm_alto_sax").gain(0.3)

// other · tenor sax
const tenor_sax = note(`<
  ~@3 A ~@3 A B@2 C@2 D@2 E@2 B@2 C@2 D@2 F G H I J@2 K@2 L@2 H I J@2 M@2 L@2 B@2 C@2 D@2 F G H I J@2 M@2 L@2 N O P O P
  O ~ Q
>`.pickRestart({
  A: "~@7 f3", B: "[d#4@13 ~ c4 f3]/2", C: "[g#3@3 f3@13]/2", D: "[~@3 f3 g#3 d#4@2 d#4@6 c4 a#3 f3]/2",
  E: "[g#3@2 f3 d#3@11 ~ f3]/2", F: "g#3@2 f3 d#3@5", G: "d#3@3 ~", H: "f4!2 ~ f4 ~ c#4 d4@2",
  I: "a#3@2 ~ c4 d4@2 d4@2", J: "[d4 c4 ~ c4@11 ~ f3]/2", K: "[g#3 d#4@13 c4 f3]/2", L: "[g#3@3 f3@11 ~@2]/2",
  M: "[g#3 d#4@12 c4 a#3 f3]/2", N: "f3@5 c3 d#3 e3", O: "f3 ~@3", P: "~@5 c3 d#3 e3", Q: "f3",
})).s("gm_tenor_sax").gain(0.3)

// other · trombone
const trombone = note(`<
  ~@3 A ~@3 A B@2 C@2 D@2 E@2 B@2 C@2 D@2 F G H I J@2 K@2 L@2 H I J@2 M@2 L@2 B@2 C@2 D@2 F G H I J@2 M@2 L@2 N O P O P
  O ~ Q
>`.pickRestart({
  A: "~@7 f2", B: "[d#3@13 ~ c3 f2]/2", C: "[g#2@3 f2@13]/2", D: "[~@3 f2 g#2 d#3@2 d#3@6 c3 a#2 f2]/2",
  E: "[g#2@2 f2 d#2@11 ~ f2]/2", F: "g#2@2 f2 d#2@5", G: "d#2@3 ~", H: "f3!2 ~ f3 ~ c#3 d3@2",
  I: "a#2@2 ~ c3 d3@2 d3@2", J: "[d3 c3 ~ c3@11 ~ f2]/2", K: "[g#2 d#3@13 c3 f2]/2", L: "[g#2@3 f2@11 ~@2]/2",
  M: "[g#2 d#3@12 c3 a#2 f2]/2", N: "f2@5 c2 d#2 e2", O: "f2 ~@3", P: "~@5 c2 d#2 e2", Q: "f2",
})).s("gm_trombone").gain(0.3)

// other · piano
const piano = note(`<
  A@3 B A@3 B C@2 D@2 E@2 F@2 C@2 D@2 E@2 G H I J K@2 L@2 M@2 I J K@2 N@2 M@2 C@2 D@2 E@2 G H I J K@2 N@2 M@2 O P Q P Q
  P ~ R
>`.pickRestart({
  A: "[f3,a3,d#4,g#4]@2 ~ [c3,c4,f4] [c3,c4,f4]@2 e3@2", B: "[f3,a3,d#4,g#4]@2 ~ [c3,c4,f4] [c3,c4,f4]@2 ~ f4, ~@3 e3",
  C: "[d#5@25 ~@3 c5@2 f4@2]/2", D: "[g#4@6 f4@25 ~]/2", E: "[~@6 f4@2 g#4@2 d#5@4 d#5@11 ~ c5@2 a#4@2 f4@2]/2",
  F: "[g#4@4 f4@2 d#4@21 ~@3 f4@2]/2", G: "g#4@2 f4 d#4@5", H: "d#4@11 ~@5", I: "f5!2 ~ f5 ~ c#5 d5@2",
  J: "a#4@2 ~ c5 d5@2 d5@2", K: "[d5@2 c5@2 ~@2 c5@21 ~@3 f4@2]/2", L: "[g#4@2 d#5@25 ~ c5@2 f4@2]/2",
  M: "[g#4@6 f4@21 ~@5]/2", N: "[g#4@2 d#5@23 ~ c5@2 a#4@2 f4@2]/2", O: "f4@9 ~ c4@2 d#4@2 e4@2", P: "f4 ~@3",
  Q: "~@5 c4 d#4 e4", R: "f4@15 ~",
})).s("gm_piano").gain(0.3)

// bass · acoustic bass · "Bass"
const bass = note(`<
  A@8 B@2 C@2 D@2 E@2 B@2 C@2 D@2 F G H I J@2 K@2 L@2 H I J@2 M@2 L@2 B@2 C@2 D@2 F G H I J@2 M@2 L@2 N O P O P O ~ Q
>`.pickRestart({
  A: "f2@2 ~ c2 c2@2 e2@2", B: "[d#3@13 ~ c3 f2]/2", C: "[g#2@3 f2@13]/2", D: "[~@3 f2 g#2 d#3@2 d#3@6 c3 a#2 f2]/2",
  E: "[g#2@2 f2 d#2@11 ~ f2]/2", F: "g#2@2 f2 d#2@5", G: "d#2@3 ~", H: "f3!2 ~ f3 ~ c#3 d3@2",
  I: "a#2@2 ~ c3 d3@2 d3@2", J: "[d3 c3 ~ c3@11 ~ f2]/2", K: "[g#2 d#3@13 c3 f2]/2", L: "[g#2@3 f2@11 ~@2]/2",
  M: "[g#2 d#3@12 c3 a#2 f2]/2", N: "f2@5 c2 d#2 e2", O: "f2 ~@3", P: "~@5 c2 d#2 e2", Q: "f2",
})).s("gm_acoustic_bass").gain(0.3)

stack(alto_sax, tenor_sax, trombone, piano, bass)