Strudelify

Brass In Pocket

The Pretenders

KeyA majorTempo99 bpm
0:00/0:00
// Brass In Pocket — The Pretenders
// 99 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 75 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(99/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.

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~ A B A B A B C@2 A B A B A D E@2 F G F G F G F G H I J@2 K@2 L@2 A B F B F M N@2 F G F O F O F G P Q R@2 S@2 T@2 U Q
  V@2 W@4 A B F B F B X Y@2 ~
>`.pickRestart({
  A: "[c#4,e4] ~ [c#4,e4] ~ [c#4,e4] ~ [b3,e4]@10", B: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,c#4]@9 ~",
  C: "[~@3 a3@2 ~@9 a3@2, e4@6 ~ e4@4 e4@5, ~ d4@5 d4@4 d4@6, ~@5 a3@4 a3@5 ~@2]/2",
  D: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,c#4]@8 ~@2", // D5 A
  E: "[a3@3 ~@9 f#4@4 ~@12 f#4@3 ~, [d4,e4]@6 d4@11 ~ d4@13 ~, ~@4 a3@12 a3@9 ~ a3@5 ~, ~@10 e4@9 ~@3 e4@9 ~]/2", // Dsus2
  F: "[c#4,e4] ~ [c#4,e4] ~ [c#4,e4] ~ [b3,e4]@9 ~", G: "[a3,b3,e4] ~ [a3,b3,e4] ~ [a3,b3,e4] ~ [g#3,b3,e4]@9 ~",
  H: "[a3,c#4,e4]@10 a3 ~ [a3,c#4,e4]@3 ~", I: "[a3,d4,e4]@11 ~ [a3,c#4,e4]@3 ~",
  J: "[b3@11 ~@5 f#4@16, [d4,f#4]@7 d4@9, ~@3 b3@5]/2", // D
  K: "[d4@5 ~@3 e4@5 ~ d4@2, f#4@7 f#4@9, a3@9 ~ a3@16 a3@6, ~@12 d4@15 ~@5]/2",
  L: "[[d4,f#4,a4]@7 ~ [a4,d5]@8 [d5,f#5]@8 [d5,f#5,a5]@7 ~, ~@8 f#4@23 ~, ~@16 a4@15 ~]/2", // D D5 D
  M: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,c#4]@10", // D5 A
  N: "[a3 ~@13 f#4@2, [d4,e4]@2 d4@7 d4@7, ~ a3@4 a3@3 a3@5 a3@3, ~@3 e4@3 f#4@3 ~@2 e4@5]/2", // Dsus2
  O: "[a3,b3,e4] ~ [a3,b3,e4] ~ [a3,b3,e4] ~ [g#3,b3,e4]@10", P: "[a3,c#4,e4]@11 ~ [a3,c#4,e4]@3 ~",
  Q: "a3@5 a3 [a3,c#4,e4]@2, [d4,e4]@3 ~", // A Dsus2
  R: "[b3@5 ~@9 [d4,f#4]@2, f#4@14 f#4@13 ~@5, d4@12 d4@15 ~@5, ~@5 b3@8 b3@3, ~ b4]/2", // D
  S: "[a3@5 ~@9 d4@2, f#4@7 f#4@9, d4@12 d4@15 ~@5, ~@10 a3@15 ~ a3@6, ~ e4]/2",
  T: "[[f#4,a4]@8 [a4,d5]@8 [d5,f#5]@8 [d5,f#5,a5]@7 ~, d4@31 ~, ~@8 f#4@23 ~, ~@16 a4@15 ~]/2", // F#m D5 D
  U: "[a3,c#4,e4]@5 a3 [a3,c#4,e4]@2", // A
  V: "[b3@5 ~@9 [b3,d4,f#4]@2, f#4@7 f#4@7 ~@2, d4@3 d4@4 ~, ~@5 b3@9 ~@2, ~ b4]/2", // Bm
  W: "[a3@10 ~@22 [d4,f#4,a4]@8 [a4,d5]@8 [d5,f#5]@8 [d5,f#5,a5]@7 ~, f#4@14 e4@26 ~@8 a4@15 ~, d4@3 d4@5 ~@8, ~@10 a3@10 a3@7 ~ a3@12 ~@24, ~@22 f#4@10 ~@8 f#4@23 ~]/4", // D D5 D
  X: "[c#4,e4] ~ [c#4,e4] ~ [c#4,e4] ~ [b3,e4]@8 ~@2", Y: "[[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,c#4]@26]/2",
})).s("gm_epiano2").gain(0.56).pan(0.7)

// chords · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@7 A@2 ~@8 B@8 C D E@2 F@2 G H ~@6 I@2 J@8 C D E@2 K@4 L M N@2 G O P@2 ~@10
>`.pickRestart({
  A: "[[a3,d4,e4]@31 ~]/2", // Asus4
  B: "[c#4@6 b3@10 [a3,b3]@6 [g#3,b3]@9 ~ c#4@6 b3@8 ~@2 a3@6 g#3@8 ~@2 c#4@6 b3@8 ~@2 a3@6 g#3@8 ~@2 c#4@6 b3@9 ~ a3@5 g#3@9 ~@2, e4@127 ~, ~@48 b3@14 ~@18 b3@14 ~@18 b3@15 ~]/8", // Asus2 G#m
  C: "[a3,c#4,e4]", D: "[a3,d4,e4]", E: "[b3,d4,f#4]/2", F: "[d4@8 e4@7 ~, [a3,f#4]@31 ~]/2", G: "[a3,d4,f#4]",
  H: "[d4,f#4,a4]@7 ~", I: "[d4@31 ~]/2",
  J: "[c#4@6 b3@8 ~@2 [a3,b3]@5 ~ [g#3,b3]@8 ~@2 c#4@6 b3@8 ~@24 b3@9 ~ b3@16 c#4@6 b3@9 ~ b3@16, e4@125 ~@3, ~@80 a3@6 ~@26 a3@5 ~@11]/8", // Asus2 G#m
  K: "[[a3,d4,f#4]@9 ~ [d4,f#4,a4]@6]/4", L: "[c#4,e4,a4]", M: "[d4,e4,a4]", N: "[b3,d4,f#4]", O: "[a3,d4,f#4]@15 ~",
  P: "[[d4,f#4]@8 [d4,f#4,a4]@7 ~, a3@15 ~]/2", // D
})).s("gm_string_ensemble_1").gain(0.27).pan(0.7)

// chords · string ensemble 1 · "STRINGS" · soft notes
const string_ensemble_1_soft = note("<~@15 A@2 ~@22 B@2 ~@3 C D E ~ E ~@23 F@2 ~>".pickRestart({
  A: "[[a3,d4,e4]@31 ~]/2", B: "[[a3,e4]@31 ~]/2", C: "a3@3 g#3@4 ~, b3@7 ~", D: "c#4@3 ~@5", E: "~@3 g#3@5",
  F: "[d4@3 c#4@13, a3]/2",
})).s("gm_string_ensemble_1").gain(0.16).pan(0.7)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C B D E F G H B D B D E@2 G H I@7 J K@2 L M N G I O B D B D E F G H I@7 J K@2 L M N G P Q K@2 L M N G H R B D B D
  B D S T@2 ~
>`.pickRestart({
  A: "~@3 e2", B: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", C: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2 b1 c#2 e2 f#2",
  D: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ b1 c#2 e2 f#2", E: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~",
  F: "f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1 ~ f#1@2", G: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2@2",
  H: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2@2", I: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  J: "e1 ~ e1 ~ e1 ~ e1@2 f#2@2 a2@2 f#2@2 e2@2, ~@8 e2 ~@7", K: "a1 ~ a1@2 a2 ~ a2@2 a1 ~ a1@2 a2 ~ a2@2",
  L: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~", M: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1@2",
  N: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", O: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2 e2@2 e1 e2",
  P: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~", Q: "e2 ~ e2 ~ e2 ~ e2@2 e1 ~ e1 ~ e1 ~ e1@2",
  R: "e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1@2", S: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2",
  T: "[[c2,c#2] ~ e2@2 f#2@2 a1@26]/2", // C#maj7
})).s("gm_electric_bass_finger").gain(0.72)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A B C B C B C D E B C B C B C F@2 B G B G B G H G I J K@2 L@4 B M B C B C N@2 B G B O B G B G P@2 Q@6 R@2 S@2 T@4 H M
  B C B M B U@2 ~
>`.pickRestart({
  A: "c#4 d4@2 ~ d4@2 [c#4,e4]@10, e4@3 ~@5, a3@3 a3@13", B: "[c#4,e4] ~ [c#4,e4] ~ [c#4,e4] ~ [b3,e4]@6 ~@4",
  C: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,c#4]@6 ~@4", D: "~ a3@2 ~@2 a3 e4 a3, e4@5 ~@3, ~@3 b3@4 ~",
  E: "~ a3 ~ a3@2 ~@2 b3, e4@9 ~ e4@5 ~, ~ b3@2 a3",
  F: "[~ a3 ~ a3 ~ a3 ~ a3 ~ a3 b3 a3 ~ a3 e4 a3, e4@6 ~@2 e4@7 ~ e4@11 ~@5, ~@4 b3@7 ~ b3@6 ~@6 b3@6 ~@2]/2",
  G: "[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [g#3,e4]@6 ~@4", H: "[c#4,e4] ~ [c#4,e4] ~ [c#4,e4] ~ [b3,e4]@7 ~@3",
  I: "a3 ~@4 a3 e4 a3, ~ e4@4 ~@3, ~ a3 ~@2, ~@6 b3@9 ~", J: "d4 ~@4 a3 d4 a3, e4@2 b3@3 ~@3, ~ a3@2 e4@4 ~",
  K: "[~@6 f#4 d4 ~@6 f#4 d4, f#4@4 b3@4 d4@5 ~@3 f#4@4 b3@4 d4@5 ~@3, ~ d4@2 f#4@2 b3@4 d4@2 f#4@2 b3@3]/2",
  L: "[~ d4 ~@2 d4 a3 ~@6 d4 a3 ~@3 d4 a3 d4 ~ d4 f#4 d4 ~@4 d4 a3 d4 a3, f#4@4 a3@5 ~@3 d4@4 f#4@4 a3@5 ~@3 d4@4 f#4@10 ~@6 f#4@4 a3@4 ~@8, ~@6 f#4@8 a3@4 d4@4 f#4@8 a3@5 ~@5 a3@10 d4@4 f#4@8 ~@2]/4",
  M: "[a3,d4] ~ [a3,d4] ~ [a3,d4] ~ [a3,c#4]@7 ~@3", // D5 A
  N: "[~ a3 ~ a3 ~ a3 ~ a3 ~@6 e4 a3, e4@7 ~ e4@6 ~@2 e4@4 b3@4 a3@4 ~@4, ~@4 b3@6 ~@2 b3@6 a3@4 e4@4 b3@5 ~]/2",
  O: "[a3,e4] ~ [a3,e4] ~ [a3,e4] ~ [g#3,e4]@7 ~@3", // A5 C#m
  P: "[~@3 a3@2 c#4 ~@2 d4 ~@4 a3 d4 a3, a3@5 ~@7 a3@4 ~@2 a3@7 ~@7, ~@2 e4@11 ~ e4@6 d4@6 ~@6, ~@22 e4@9 ~]/2",
  Q: "[~ d4 ~@4 f#4 d4 ~@6 f#4 d4 ~ d4 ~@4 f#4 d4 ~ d4 a3 ~@6 d4 a3 ~@11 f#4 d4, f#4@4 b3@4 d4@4 ~@4 f#4@4 b3@4 d4@4 ~@4 f#4@4 ~@2 f#4@4 a3@8 ~@4 d4@4 f#4@4 a3@5 ~@3 d4@4 f#4@4 a3@4 d4@4 f#4@4 a3@6, ~@6 f#4@4 b3@8 d4@4 f#4@4 b3@8 ~@2 a3@4 d4@5 ~@3 f#4@8 a3@4 d4@4 f#4@8 a3@4 d4@4 f#4@4 a3@4 d4@4 ~@4]/6",
  R: "[~@7 a3 ~@2 b3 ~@2 b3 e4 a3, e4@4 b3@4 a3@4 e4@9 ~ e4@4 ~@6, ~ a3@2 e4@2 b3@2 ~ d4@2 ~@6, ~@18 a3@5 ~ a3@4 ~@4]/2",
  S: "[~@6 f#4 d4 ~@6 f#4 d4, f#4@4 b3@4 d4@4 ~@4 f#4@4 b3@4 d4@5 ~@3, ~ d4@2 f#4@2 b3@4 d4@2 f#4@2 b3@3]/2",
  T: "[~@4 d4 a3 ~@8 f#4 d4 ~@6 f#4 d4 ~@4 d4 a3 d4 a3, f#4@4 a3@5 ~@5 a3@4 d4@4 f#4@4 a3@8 d4@4 f#4@4 a3@8 d4@4 f#4@8 ~@2, ~@2 d4@4 f#4@6 d4@4 f#4@4 a3@4 d4@5 ~@3 f#4@4 a3@4 d4@4 ~@4 f#4@4 a3@4 ~@8]/4",
  U: "[[a3,e4] [b3,e4] a3 [b3,c#4,e4]@13]/2", // A5 E5 C#m7
})).s("gm_electric_guitar_clean").gain(0.56).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!71 [x ~@2 x ~@4] ~@2>").gain(0.8)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@6 A ~ A ~@5 A ~ A ~@7 A ~@13 A ~ A ~@7 A ~@19 A ~@2 A ~@3>".pickRestart({
  A: "~@7 x",
})).gain(0.48)

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

// drums · low tom
const low_tom = s("lt").struct("<[~@3 x]!25 ~@8 [~@3 x]!16 ~@16 [~@3 x]!7 ~@3>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@4 A ~@7 A ~@7 A ~ A ~@13 A ~@7 A ~ A ~@18 A@3 ~ A@2 ~@4>".pickRestart({
  A: "~@7 x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct("<~ A ~@5 A ~ A ~@5 A ~@17 A ~@5 A ~@32 B ~@2>".pickRestart({
  A: "x", B: "x ~@2 x ~@4",
})).gain(0.56)

// drums · ride
const ride = s("rd").struct("<~@25 [x!8]!8 ~@16 [x!8]!16 ~@10>").gain(0.64)

stack(
  epiano2, string_ensemble_1, string_ensemble_1_soft, bass, electric_guitar_clean, kick, snare, snare_soft, hihat,
  low_tom, open_hat, crash, ride
)

More by The Pretenders