Strudelify

I Care Not for These Ladies

Thomas Campion

KeyG majorTempo250 bpm
0:00/0:00
// I Care Not for These Ladies — Thomas Campion
// 250 bpm, 3/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 5 "Basson" named as a bass, played on electric bass finger (its bassoon patch is not one)
// note: duplicate parts dropped: ch 6 "Strings" string ensemble 1 (copy of ch 5 "Basson" electric bass finger)
// note: Full arrangement: all 166 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(250/3)

// 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 · flute
const flute = note(`<
  A B C D E F G H A B C D E F G H I B J K L M D N O P Q R S T H U V E F W O X Y N O P Q R S T H U V E F W O X Y A B C D
  E F G H A B C D E F G H I B J K L M D N O P Q R S T H U V E F W O X Y N O P Q R S T H U V E F W O X Y A B C D E F G H
  A B C D E F G H I B J K L M D N O P Q R S T H U V E F W O X Y N O P Q R S T H U V E F W O X Y ~
>`.pickRestart({
  A: "~@11 d5@5", B: "g5@10 ~ a5@5", C: "b5@10 ~ c6@5", D: "b5", E: "a5@10 ~ f#5@5", F: "g5@10 ~ g5@5",
  G: "c6@10 ~ b5@5", H: "a5", I: "e5@10 ~ f#5@5", J: "f#5", K: "d5@10 ~ d6@5", L: "d6@10 ~ e6@5", M: "c6@10 ~ d6@5",
  N: "~@11 d6@5", O: "d6@8 c6@2 ~ b5@5", P: "a5@10 ~ b5@5", Q: "c6", R: "~@11 c6@5", S: "c6@8 d6@2 ~ c6@5",
  T: "b5@10 ~ b5@5", U: "~@11 b5@5", V: "a5@10 ~ g5@5", W: "a5@10 ~ b5@2 c6@2 ~", X: "a5@10 ~ a5@5", Y: "g5",
})).s("gm_flute").gain(0.38).pan(0.6)

// other · clarinet
const clarinet = note(`<
  A B C D E F G H A B C D E F G H I B J K L M D N O P Q R S T H U V E F W O X Y N O P Q R S T H U V E F W O X Y A B C D
  E F G H A B C D E F G H I B J K L M D N O P Q R S T H U V E F W O X Y N O P Q R S T H U V E F W O X Y A B C D E F G H
  A B C D E F G H I B J K L M D N O P Q R S T H U V E F W O X Y N O P Q R S T H U V E F W O X Y ~
>`.pickRestart({
  A: "~@11 d4@5", B: "g4@10 ~ a4@5", C: "b4@10 ~ c5@5", D: "b4", E: "a4@10 ~ f#4@5", F: "g4@10 ~ g4@5",
  G: "c5@10 ~ b4@5", H: "a4", I: "e4@10 ~ f#4@5", J: "f#4", K: "d4@10 ~ d5@5", L: "d5@10 ~ e5@5", M: "c5@10 ~ d5@5",
  N: "~@11 d5@5", O: "d5@8 c5@2 ~ b4@5", P: "a4@10 ~ b4@5", Q: "c5", R: "~@11 c5@5", S: "c5@8 d5@2 ~ c5@5",
  T: "b4@10 ~ b4@5", U: "~@11 b4@5", V: "a4@10 ~ g4@5", W: "a4@10 ~ b4@2 c5@2 ~", X: "a4@10 ~ a4@5", Y: "g4",
})).s("gm_clarinet").gain(0.38).pan(0.4)

// chords · harpsichord
const harpsichord = note(`<
  A B C D E F G H A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC@2 AD P Q R S T U V W X Y Z AA AB AC@2 AD
  A B C D E F G H A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC@2 AD P Q R S T U V W X Y Z AA AB AC@2 AD
  A B C D E F G H A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC@2 AD P Q R S T U V W X Y Z AA AB AC@2 AD
  ~
>`.pickRestart({
  A: "~@11 [b1,d2,g2,d4]@5", B: "[b1,d2,g4]@10 ~ [d2,f#2,a4]@5", C: "[d2,g2,b4]@10 ~ [c2,e2,g2,c5]@5", D: "[d2,g2,b4]",
  E: "[f#2,a4]@10 ~ [a2,f#4]@5, d2", F: "[d2,g4]@10 ~ [e2,g4]@5, b2", G: "[f2,a2,c5]@10 ~ [d2,g2,b4]@5",
  H: "[d2,f#2,a4]", I: "[c2,e2,a2,e4]@10 ~ [d2,a2,f#4]@5", J: "[e2,b2,g4]@10 ~ [e2,c#3,a4]@5", K: "[d2,d3,f#4]",
  L: "[d2,d3,d4]@10 ~ [f#2,a2,d5]@5", M: "[b1,d2,g2,d5]@10 ~ [c2,g2,e5]@5", N: "[c2,e2,a2,c5]@10 ~ [f#2,a2,d5]@5",
  O: "[b1,d2,g2,b4]", P: "~@11 [b1,d2,g2,d5]@5", Q: "d5@8 c5@2 ~ [b1,d2,g2,b4]@5, [b1,d2,g2]@5 ~@3",
  R: "d2@8 c2@2 ~ [b1,d2,g2,b4]@5, [f#2,a4]@5 ~@3", S: "[c2,e2,g2,c5]", T: "~@11 [c2,e2,g2,c5]@5",
  U: "[c2,e2,c5]@8 [d2,d5]@2 ~ [e2,c5]@5, g2", V: "[d2,g2,b4]@10 ~ [b1,d2,g2,b4]@5", W: "[a1,d2,f#2,a4]",
  X: "~@11 [b1,d2,g2,b4]@5", Y: "[d2,f#2,a4]@10 ~ [d2,g4]@5", Z: "c2@8 b1@2 ~ [a1,d2,f#4]@5, [e2,a4]@5 ~@3",
  AA: "b1@8 a1@2 ~ [g1,e2,g4]@5, [d2,g4]@5 ~@3", AB: "[d2,f#2,a4]@10 ~ b4@2 c5@2 ~, ~@11 [b1,d2,g2]@5",
  AC: "[[b1,d2,d5]@8 [c2,c5]@2 ~ b4@5 ~@5 f#2@2 ~ e2@2 ~ [f#2,a4]@5, g2@21 ~@11, ~@11 d2@16 ~@5, ~@8 a4@5 ~@3]/2", // Bm C F#m
  AD: "[b1,d2,g2,g4]", // G
})).s("gm_harpsichord").gain(0.38)

// bass · electric bass finger · "Basson"
const bass = note(`<
  A B C D E D F E A B C D E D F E G H E I J K L M N O P Q P N E M R K S O D E L M N O P Q P N E M R K S O D E L A B C D
  E D F E A B C D E D F E G H E I J K L M N O P Q P N E M R K S O D E D M N O P Q P N E M R K S O D E L A B C D E D F E
  A B C D E D F E G H E I J K L M N O P Q P N E M R K S O D E L M N O P Q P N E M R K S O D E L ~
>`.pickRestart({
  A: "~@11 g2@5", B: "g2@10 ~ d2@5", C: "g2@10 ~ c2@5", D: "g2", E: "d2", F: "f2@10 ~ g2@5", G: "a2@8 g2@2 ~ f#2@5",
  H: "e2@10 ~ a1@5", I: "d2@10 ~ d2@5", J: "g1@10 ~ c2@5", K: "a1@10 ~ d2@5", L: "g1", M: "~@11 g1@5",
  N: "g1@10 ~ g1@5", O: "d2@10 ~ g1@5", P: "c2", Q: "~@11 c2@5", R: "d2@8 c2@2 ~ b1@5", S: "g2@10 ~ e2@5",
})).s("gm_electric_bass_finger").gain(0.3).pan(0.7)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  A B C D E F G H A I C D E F G H J K L M N O P Q R S T U V W X Y Z AA AB AC AD@2 AE Q R S T U V W X Y Z AA AF AC AD@2
  AE A I C D E F G H A I C D E F G H J K L AG N O P AH R AI T U AJ W X Y Z AA AB AC AK@2 AE Q R AI T U AJ W X Y AL AA AB
  AC AK@2 AE A B AM D E F G H A I C D E F G H J K L AG N O P Q R S T U V W X Y AL AA AB AC AD@2 AE Q R AN T U V W X Y Z
  AA AB AC AD@2 AE ~
>`.pickRestart({
  A: "~@11 [d3,b3,g4,d5]@5", B: "[d3,b3,g5]@10 ~ [d3,f#4,a5]@5", C: "[d4,g4,b5]@10 ~ [e3,c4,g4,c6]@5", D: "[d4,g4,b5]",
  E: "[f#3,a5]@10 ~ [a4,f#5]@5, d4", F: "[d4,g5]@10 ~ [e4,g5]@5, b4", G: "[a3,f4,c6]@10 ~ [d4,g4,b5]@5",
  H: "[f#3,d4,a5]", I: "[d3,b3,g5]@10 ~ [f#3,d4,a5]@5", J: "[e3,c4,a4,e5]@10 ~ [d4,a4,f#5]@5",
  K: "[e4,b4,g5]@10 ~ [e4,c#5,a5]@5", L: "[d3,d4,f#5]", M: "[d4,d5]@10 ~ [f#3,a4,d6]@5",
  N: "[d3,b3,g4,d6]@10 ~ [c4,g4,e6]@5", O: "[e3,c4,a4,c6]@10 ~ [f#3,a4,d6]@5", P: "[d3,b3,g4,b5]",
  Q: "~@11 [d3,b3,g4,d6]@5", R: "d6@8 c6@2 ~ [d3,b3,g4,b5]@5, [d3,b3,g4]@5 ~@3",
  S: "d3@8 c4@2 ~ [d3,b3,g4,b5]@5, [f#4,a5]@5 ~@3", T: "[e3,c4,g4,c6]", U: "~@11 [e3,c4,g4,c6]@5",
  V: "[e3,c4,c6]@8 [d4,d6]@2 ~ [e3,c6]@5, g4", W: "[d4,g4,b5]@10 ~ [d3,b3,g4,b5]@5", X: "[d3,a3,f#4,a5]",
  Y: "~@11 [d3,b3,g4,b5]@5", Z: "[f#3,d4,a5]@10 ~ [d4,g5]@5", AA: "c4@8 b3@2 ~ [a3,d4,f#5]@5, [e3,a5]@5 ~@3",
  AB: "b3@8 a3@2 ~ [g3,e4,g5]@5, [d3,g5]@5 ~@3", AC: "[f#3,d4,a5]@10 ~ b5@2 c6@2 ~, ~@11 [d3,b3,g4]@5",
  AD: "[[d3,b3,d6]@8 [c4,c6]@2 ~ b5@5 ~@5 f#4@2 ~ e4@2 ~ [f#4,a5]@5, g4@21 ~@11, ~@11 d3@16 ~@5, ~@8 a5@5 ~@3]/2", // G C F#m
  AE: "[d3,b3,g4,g5]", AF: "b2@8 a3@2 ~ [g3,e4,g5]@5, [d4,g5]@5 ~@3", AG: "[d4,d5]@10 ~ [a3,f#4,d6]@5",
  AH: "~@11 [d3,b3,g4]@5, ~@10 d6@5 ~", AI: "d3@8 c3@2 ~ [d3,b3,g4,b5]@5, [f#4,a5]@5 ~@3",
  AJ: "[e3,c4,c6]@8 [d3,d6]@2 ~ [e3,c6]@5, g4", // C D C
  AK: "[[d3,b3,d6]@8 [c3,c6]@2 ~ b5@5 ~@5 f#4@2 ~ e4@2 ~ [f#4,a5]@5, g4@21 ~@11, ~@11 d3@16 ~@5, ~@8 a5@5 ~@3]/2", // G C F#m
  AL: "[d3,f#4,a5]@10 ~ [d4,g5]@5", AM: "[d3,g4,b5]@10 ~ [e3,c4,g4,c6]@5",
  AN: "d4@8 c4@2 ~ [d3,b3,g4,b5]@5, [f#3,a5]@5 ~@3", // G F#m
})).s("gm_string_ensemble_1").gain(0.32).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~ B ~@2 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A@3 ~ A ~ A ~ A ~ A ~@3 A ~ A@3 ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ C ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@3 ~ A@3 ~ A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ C A@3 ~
  A ~ A ~ A@5 C A@3 ~ A ~ A@5 C A@2 C@2 A@10
>`.pickRestart({
  A: "x", B: "~@15 x", C: "~ x ~@14",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~ B ~@2 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A@3 ~ A ~ A ~ A ~ A ~@3 A ~ A@3 ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ C ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@3 ~ A@3 ~ A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ A@4 ~ A
  ~ A ~ A@5 C A@3 ~ A ~ A@5 C A@3 C A@10
>`.pickRestart({
  A: "x", B: "~@15 x", C: "~ x ~@14",
})).gain(0.8)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct("<~@134 A ~@3 A ~@7 A ~@3 A ~@3 A ~@6 A ~@4>".pickRestart({
  A: "~@8 x ~@2 x ~@4",
})).gain(0.48)

// drums · congas
const congas = s("conga:33").struct(`<
  A B ~@3 B ~ B ~ B ~@3 B ~ B ~ B ~ C ~@2 B ~ B ~ B ~ B ~ B ~ B ~@3 B ~ B@3 ~ B ~ B ~ B ~ B ~@3 B D B@3 ~ B ~ B ~ B ~ B
  ~ B ~ B ~ B ~ B ~@2 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B@3 ~ B@3 ~ B@3 ~ B ~ B ~ B@3 ~ B ~ B ~ B@3 ~ B ~ B ~ B@4 ~ B
  ~ B ~ B@9 ~ B ~ B@18 E B
>`.pickRestart({
  A: "~@5 x ~@2", B: "x", C: "~@15 x", D: "~@11 x ~@4", E: "x ~@10 x ~@4",
})).gain(2.56)

// drums · congas · soft notes
const congas_soft = s("conga:33").struct(`<
  ~@4 A ~ B ~ A ~@3 A ~ A ~ B ~@2 A ~ B ~ A ~ B ~ A ~ B ~ A ~@3 A ~ A ~ A ~ B ~ A ~ B ~ A ~@3 A ~@3 A ~ A ~ A ~ A ~ A ~
  A ~ A ~ B ~ B ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~
  B ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ A ~ B ~ B ~ B ~ A ~ A ~ B ~@4
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@11 x ~@4",
})).gain(1.54)

// drums · jingle bells
const jingle_bells = s("sleighbells:4").struct(`<
  ~ A ~@3 A ~ A ~ A ~@3 A ~ A ~ A ~ B ~@2 A ~ A ~ A ~ A ~ A ~ A ~@3 A ~ A@3 ~ A ~ A ~ A ~ A ~@3 A ~ A@3 ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ C ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@3 ~ A@3 ~ A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ A@3 ~ A ~ A ~ C A@3 ~
  A ~ A ~ D A@3 D C A@3 ~ A ~ D A@3 D C A@2 E C A@5 D A@4
>`.pickRestart({
  A: "x", B: "~@15 x", C: "~ x ~@14", D: "x ~@7 x ~@2 x ~@4", E: "~ x ~@6 x ~@2 x ~@4",
})).gain(2.07)

stack(
  flute, clarinet, harpsichord, bass, string_ensemble_1, kick, tambourine, tambourine_soft, congas, congas_soft,
  jingle_bells
)

More by Thomas Campion