Strudelify
KeyF majorTempo65 bpm
0:00/0:00
// Cara Mia — Jay & The Americans
// 65 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 41 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(65/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 · slap bass 1 · "ACOU BAS"
const bass = note("<~@8 A B C D E F G B H I J B C D K F L B H M N O P B C D K F Q F R S T>".pickRestart({
  A: "~@8 c2@3 g2 g2@3 c2", B: "e2@3 b2 b2@3 e2 f2@3 c3 c3@3 f2", C: "c2@3 g2 g2@3 c2 f2@2 ~ f2 f2@3 c2",
  D: "g2@2 ~ g2 a2@3 c2 f2@2 ~ f2 f2@3 c2", E: "g2@2 ~ g2 g2@2 ~ g2 c2@2 ~ g2 g2@3 c2",
  F: "a2@2 ~ a2 a2@3 c2 f2@3 c3 c3@3 f2", G: "g2 ~ g2!2 ~ g2!2 ~ c2@3 g2 g2@3 c2",
  H: "c2@3 g2 g2@3 c2 f2@2 ~ c3 c3@3 f2", I: "c2@3 a2 a2@3 e2 f2@3 c3 c3@3 f2",
  J: "g2@2 ~ d3 d3@2 d3 g2 c2@3 g2 g2@3 c2", K: "g2@2 ~ g2 g2@3 g2 c2@3 g2 g2@3 c2",
  L: "d2@2 ~ g2 g2@2 ~ g2 c2@3 g2 g2@3 c2", M: "c2@2 ~ a2 a2@3 e2 f2@3 c3 c3@3 f2",
  N: "g2@3 d3 d3@3 g2 g2@3 d3 d3@2 ~ g2", O: "g2@3 d3 d3@3 g2 g2@3 d3 d3@3 g2",
  P: "g2!2 f2!2 e2!2 d2!2 c2@3 g2 g2@3 c2", Q: "g2@3 d3 d3@2 ~ g2 c2@2 ~ g2 g2@3 c2",
  R: "g2@3 d3 d3@2 ~ g2 c2@2 g2!2 c2@2 g2!2", S: "c2@2 g2!2 c2@2 g2 ~ c2@2 g2!2 c2@2 g2!2, ~@7 g2@3 ~@6", T: "c2 ~@15",
})).s("gm_slap_bass_1").gain(0.45)

// chords · piano · "ACOU PIA"
const piano = note("<~@8 A B C D E F G B C D E B C D E F E B C D H@2 E B C D E F E F E I J>".pickRestart({
  A: "~@10 [c5,e5,g5,c6] ~@2 [c5,e5,g5,c6] ~@2", // C
  B: "~@2 [b4,e5,g5,b5] ~@2 [b4,e5,g5,b5] ~@4 [c5,f5,a5,c6] ~@2 [c5,f5,a5,c6] ~@2", // Em F
  C: "~@2 [c5,e5,g5,c6] ~@2 [c5,e5,g5,c6] ~@4 [c5,f5,ab5,c6] ~@2 [c5,f5,ab5,c6] ~@2", // C Fm
  D: "~@2 [c5,e5,g5,c6] ~@2 [c5,e5,a5,c6] ~@4 [c5,f5,a5,c6] ~@2 [c5,f5,a5,c6] ~@2", // C Am F
  E: "~@2 [d5,g5,b5,d6] ~@2 [d5,g5,b5,d6] ~@4 [c5,e5,g5,c6] ~@2 [c5,e5,g5,c6] ~@2", // G C
  F: "~@2 [c5,e5,a5,c6] ~@2 [c5,e5,a5,c6] ~@4 [c5,f5,a5,c6] ~@2 [c5,f5,a5,c6] ~@2", // Am F
  G: "[d5,g5,b5,d6] ~ [d5,g5,b5,d6]!2 ~ [d5,g5,b5,d6]!2 ~@3 [c5,e5,g5,c6] ~@2 [c5,e5,g5,c6] ~@2", // G C
  H: "~@2 [d5,g5,b5,d6] ~@2 [d5,g5,b5,d6] ~@4 [d5,g5,b5,d6] ~@2 [d5,g5,b5,d6] ~@2", // G
  I: "~@2 [c5,e5,g5,c6] ~@2 [c5,e5,g5,c6] ~@4 [c5,e5,g5,c6] ~@2 [c5,e5,g5,c6] ~@2", J: "[c5,e5,g5,c6] ~@15",
})).s("gm_piano").gain(0.3).pan(0.7)

// chords · drawbar organ · "ELEC ORG"
const drawbar_organ = note("<~@9 A@3 B C D E@2 F G H@3 B C I J K L M ~@2 H@3 B C N O P@2 ~>".pickRestart({
  A: "[~@2 [g4,g5]@2 [e4,e5]@2 [g4,g5]@2 [f4,a4]@8 [e4,g4]@8 [f4,ab4]@8 g4@4 a4@4 ~@2 [f4,a4,c5]!3 ~ [f4,a4] ~, ~@4 c5@8 c5@8 ~@3 c5, ~@4 e4 ~]/3", // G E G F Em Fm F
  B: "~@2 [g4,b4,d5]!3 ~ [g4,b4,d5] ~@3 [g4,c5,e5]!3 [a4,d5,f5] [g4,c5,e5]@2", // G C Dm C
  C: "~@2 [a4,c5,e5]!3 [a4,d5,f5] [a4,c5,e5]@2 ~@2 [a4,c5,f5]!3 [b4,d5,g5] [a4,c5,f5]@2", // Am Dm Am F G F
  D: "~@2 [b4,d5,g5]!3 [c5,e5,a5] [b4,d5,g5]@2 ~@8", // G Am G
  E: "[~@2 [g4,g5] [e4,e5]!2 [b3,b4]!2 [g3,g4] [f4,a4]@8 [e4,g4]@8 [f4,ab4,c5]@8, ~ c5@2 ~]/2", // G E B G F Em Fm
  F: "g4@4 a4@4 [f4,a4,c5]@3 ~ [f4,a4,c5] ~ [f4,a4,c5] ~, [e4,c5] ~, f4 ~@15", G: "[g4,b4,d5] ~",
  H: "[~@2 [g4,g5] [e4,e5]!2 [b3,b4]!2 [g3,g4] [f4,a4]@8 [e4,g4]@8 [f4,ab4]@8 g4@4 a4@4 ~@2 [f4,a4,c5]!3 ~ [f4,a4] ~, ~@4 c5@8 c5@8 ~@3 c5, ~@4 e4 ~]/3", // G E B G F Em Fm F
  I: "~@2 [b4,d5,g5]!3 [c5,e5,a5] [b4,d5,g5]@2 ~@2 c5 d5 e5@2 g5@2", J: "b4@8 ~@2 a4 b4 c5@2 d5@2",
  K: "g4@4 ~ f4 g4 ab4", L: "g4@5 ~ g4@2 [f4,a4,c5]@3 ~ [f4,a4,c5] ~ [f4,a4,c5]@2", M: "[g4,b4,d5]",
  N: "~@2 [b4,d5,g5]!3 [c5,e5,a5] [b4,d5,g5]@2 ~@2 [g4,c5,e5]!3 [a4,d5,f5] [g4,c5,e5]@2", // G Am G C Dm C
  O: "~@2 [a4,c5,e5]!3 [a4,d5,f5] [a4,c5,e5]@2 ~@2 [a4,c5,f5]@3 ~ [a4,c5,f5] ~", // Am Dm Am F
  P: "[[b4,d5,g5]@3 ~ [b4,d5,g5]@3 ~ [c5,e5,g5]@24]/2", // G C
})).s("gm_drawbar_organ").gain(0.4)

// chords · acoustic guitar nylon · "ELEC GUI"
const acoustic_guitar_nylon = note(`<
  ~@8 A B C D E F G B C D H B C D E F H B C D I@2 H B C D E F E F H J K
>`.pickRestart({
  A: "~@8 [c4,e4,g4] ~@2 [c4,e4,g4] ~@4", B: "[b3,e4,g4] ~@2 [b3,e4,g4] ~@4 [c4,f4,a4] ~@2 [c4,f4,a4] ~@4",
  C: "[c4,e4,g4] ~@2 [c4,e4,g4] ~@4 [c4,f4,ab4] ~@2 [c4,f4,ab4] ~@4", // C Fm
  D: "[c4,e4,g4] ~@2 [c4,e4,a4] ~@4 [c4,f4,a4] ~@2 [c4,f4,a4] ~@4", // C Am F
  E: "[d4,g4,b4] ~@2 [d4,g4,b4] ~@4 [e4,g4,c5] ~@2 [e4,g4,c5] ~@4", // G C
  F: "[e4,a4,c5] ~@2 [e4,a4,c5] ~@4 [c4,f4,a4] ~@2 [c4,f4,a4] ~@4", // Am F
  G: "[d4,g4,b4] ~ [d4,g4,b4]!2 ~ [d4,g4,b4]!2 ~ [c4,e4,g4] ~@2 [c4,e4,g4] ~@4", // G C
  H: "[d4,g4,b4] ~@2 [d4,g4,b4] ~@4 [c4,e4,g4] ~@2 [c4,e4,g4] ~@4", // G C
  I: "[d4,g4,b4] ~@2 [d4,g4,b4] ~@4 [d4,g4,b4] ~@2 [d4,g4,b4] ~@4", // G
  J: "[c4,e4,g4] ~@2 [c4,e4,g4] ~@4 [c4,e4,g4] ~@2 [c4,e4,g4] ~@4", K: "[c4,e4,g4] ~@15",
})).s("gm_acoustic_guitar_nylon").gain(0.25).pan(0.7)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note("<~ A@8 ~@7 B@2 C ~ B@2 D E F ~ B@2 G@3 ~ B@2 D E H I J@3>".pickRestart({
  A: "[~@11 g4@6 ab4@4 a4@3 [b3,e4,g4]@14 [f4,a4]@13 ~@7 db4@7 [ab3,f4]@13 ~ g3@7 a3@7 [a3,c4,f4]@13 [b3,d4,g4]@10 ~@12, ~@11 [c4,e5]@14 ~@13 c4@20 ~@7 c4@27 ~@36, ~@52 [e4,g4]@14 ~@13 e4@13 ~@36]/8", // Em F Db F G C Em
  B: "[~@2 [g5,g6] [e5,e6]!2 [c5,c6]!2 [g4,g5] [f5,ab5]@8 g5@4 ~@4 f5@8, ~@8 c5@23 ~, ~@2 e5 ~, ~@5 a5@3]/2", // G E C G Fm
  C: "[d5,g5,b5] ~", D: "[d5,g5,b5]@8 ~ [c5,c6] ~ [c5,c6]!2 ~@3",
  E: "~ [c5,c6] ~ [c5,c6]!2 ~@4 [f5,f6]@2 [f5,f6]!2 ~@3", F: "~ [g5,g6]@2 [g5,g6]!2 ~@11", G: "[[d5,g5,b5]@19 ~@5]/3",
  H: "~ [g5,g6]@2 [g5,g6]!2 ~@3 [e5,e6]@2 ~ [e5,e6]@3 ~@2", I: "[a5,a6]@2 ~ [a5,a6]@3 ~@2 [f5,f6]@2 ~ [f5,f6]@3 ~@2",
  J: "[[g5,g6]@3 ~ [g5,g6]@4 [c5,e5,g5]@25 ~@15]/3", // G C
})).s("gm_string_ensemble_1").gain(0.25).pan(0.3)

// bass · contrabass · "CONTRA B"
const bass_2 = note("<~ A@4 B@4 ~@32>".pickRestart({
  A: "[~@11 c3@13 e3@14 f3@13 ~ e3@6 a3@6]/4", B: "[~ d3@14 g3@7 a3@7 f3@13 g3@10 ~@12]/4",
})).s("gm_contrabass").gain(0.25)

// drums · kick
const kick = s("bd").struct(`<
  ~@8
  [~@8 x ~@2 x!2 ~@2 x]
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!5
  [x ~ x!2 ~ x!2 ~ x ~@2 x!2 ~@2 x]
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!25
  x
>`).gain(0.45)

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

// drums · hihat
const hihat = s("hh").struct("<A B C D E C D E F G@5 H G@25 I>".pickRestart({
  A: "~@13 x ~@2", B: "x ~@3 x ~@2 x ~@6 x ~", C: "~@5 x ~@6 x ~@3", D: "~@2 x ~@6 x ~@6", E: "x ~@6 x ~@6 x ~",
  F: "~@5 x ~@2 x!8", G: "x!16", H: "~@8 x!8", I: "x",
})).gain(0.5)

// drums · mid tom
const mid_tom = s("mt").struct("<~@30 [~@7 x!2 ~@7] ~@10>").gain(0.35)

// drums · high tom
const high_tom = s("ht").struct("<~@30 [~@6 x!2 ~@8] ~@10>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@12 A ~ A ~@7 A ~ A ~@3 A ~ A ~@3 A ~ A ~ A ~@2>".pickRestart({
  A: "~ x",
})).gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 [~@4 x!4] [x!8]!5 [x ~ x!2 ~ x!2 ~ x ~ x ~ x ~ x ~] [x!8]!25 x>").gain(0.3)

stack(
  bass, piano, drawbar_organ, acoustic_guitar_nylon, string_ensemble_1, bass_2, kick, snare, hihat, mid_tom, high_tom,
  crash, tambourine
)

More by Jay & The Americans