Strudelify

Brilliant Disguise

Bruce Springsteen

KeyA majorTempo127 bpm
0:00/0:00
// Brilliant Disguise — Bruce Springsteen
// 127 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(127/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · fretless bass · "bass"
const bass = note(`<
  ~@2 A B C D@3 C B@4 E F G C B@4 H I J K J K L M N O P B C D@3 C B@4 E F G C B@4 H I J K J K L M N O P B C B@2 Q@2 R@2
  S@2 R@2 Q@2 S@2 R@2 Q T G C B@4 E F G C B@4 H I J K J K L M N O P B C D@2 B C D@2 B C U D B C D@3 V@2
>`.pickRestart({
  A: "~@7 e2", B: "a2@5 ~ a2@3 ~ a2@4 e2@2", C: "a2@5 ~ a2@2 ~@2 a2@4 e2@2", D: "a2@5 ~ a2@2 ~@2 a2@3 ~ e2@2",
  E: "e2@3 e2@2 e2@2 e2", F: "e2@6 e2@4 e2@2 ~@2 e2 ~", G: "a2@6 a2@2 ~@2 a2@3 ~ e2@2",
  H: "~ e2@4 ~ e2@2 ~@2 e2@3 ~ e2 ~", I: "e2@4 ~@2 e2@2 ~@2 e2@2 ~@2 e2 ~", J: "f#2@3 a2@3 b2 c#3", K: "d3@3 a2@5",
  L: "f#2@3 a2@5", M: "e2@3 f#2@5", N: "d2@3 d3@5", O: "c#2@3 c#3@5", P: "e2@3 e2@5", Q: "e2@3 g#2@3 b2@2",
  R: "a1@3 c#2@3 e2@2", S: "d2@3 f#2@3 a2@2", T: "e2@6 g#2@6 b2@3 ~", U: "e2@5 ~ e2@2 ~@2 e2@4 f#2@2", V: "[a2@3 ~]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · tremolo strings · "da da"
const tremolo_strings = note(`<
  ~@3 A B A B A B A B A B C D A B A B A B C D E F E F E G H I J A B A B A B A B A B C D A B A B A B C D E F E F E G H I
  J K L K L M N L@2 O P L@2 M N O P K L M N A B A B A B C D A B A B A B C D E F E F E G H I J A B A B A B A B A B Q A B
  A B A B R@2
>`.pickRestart({
  A: "[a3,c#4,e4]@3 [a3,b3,e4]@5", B: "[a3,d4,e4]@3 [a3,c#4,e4]@5", C: "[e3,a3,b3]@3 [e3,g#3,b3]@5",
  D: "[e3,f#3,a3]@3 [e3,g#3,b3]@5", E: "[f#3,a3,c#4]@3 [a3,c#4,e4]@5", F: "[d4,f#4,a4]@3 [a3,c#4,e4]@5",
  G: "[e3,g#3,b3]@3 [f#3,a3,c#4]@5", H: "[d4,f#4,b4]", I: "[c#4,e4,a4]", J: "[e4,g#4,b4]",
  K: "[e4,a4,d5]@3 [e4,a4,c#5]@5", L: "[e4,a4,b4]@3 [e4,a4,c#5]@5", M: "[a4,b4,e5]@3 [g#4,b4,e5]@5",
  N: "[f#4,g#4,e5]@3 [g#4,b4,e5]@5", O: "[f#4,a4,d5]@3 [f#4,a4,d5]@5", P: "[a4,d5,e5]@3 [a4,d5,f#5]@5",
  Q: "[b3,e4,a4]@3 [b3,e4,g#4]@5", R: "[[a3,c#4,e4]@3 ~]/2",
})).s("gm_tremolo_strings").gain(0.26)

// other · woodblock
const woodblock = note(`<
  ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~@4
>`.pickRestart({
  A: "~@4 a5 ~@5 a5 ~@5",
})).s("gm_woodblock").gain(0.4)

// chords · piano
const piano = note("<~@44 A B@2 C@2 D@2 ~@74>".pickRestart({
  A: "~@14 [a5,c#6] ~", B: "[[b5,d6]@2 [c#6,e6]@2 ~@2 [c#6,e6]@16 ~@8 [d6,f#6] ~]/2",
  C: "[[c#6,e6]@2 [a5,c#6]@2 ~@2 [a5,c#6]@16 ~@8 [a5,c#6] ~]/2", D: "[[b5,d6] ~ [c#6,e6]@2 ~@2 [c#6,e6]@16 ~@10]/2",
})).s("gm_piano").gain(0.22)

// drums · kick
const kick = s("bd").struct(`<
  ~ A B A B A B A B A B A B A B A B A B A B A B@6 C D C@2 A B A B A B A B A B A B A B A B A B A B@6 C D C@2 A B A B@2 A
  B A B A B A B A B A B A B A@2 B A B A B A B A B A B A B A B@6 C D C@2 A B A B A B A B A B A B A B A B@2 E ~
>`.pickRestart({
  A: "x ~@2 x ~ x ~ x", B: "x ~@2 x ~@3 x", C: "x ~@2 x ~@4", D: "x ~@2 x ~ x ~@2", E: "x",
})).gain(0.56)

// drums · snare
const snare = s("sd").struct("<~ A B A@61 C A@15 D A@42 E ~>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@4 x ~@3 x ~@2 x!4 ~", D: "~ x!2 ~@3 x ~", E: "x",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").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@2 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@2 B A B@2 A B A B A B A B A B A B A B A@2 B A B A B A B A B A B A B A B A B A B A B A B A@2 B A B A B A B A B A B
  A B A B@2 ~@2
>`.pickRestart({
  A: "x!8", B: "x!7 ~",
})).gain(0.48)

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

// drums · china
const china = s("cr").struct("<~@123 x ~>").gain(0.48)

stack(bass, tremolo_strings, woodblock, piano, kick, snare, hihat, open_hat, china)

More by Bruce Springsteen