Strudelify
Brain Damage cover art

1973 · The Dark Side of the Moon

Brain Damage

Pink Floyd

KeyD majorTempo119 bpm
0:00/0:00
// Brain Damage — Pink Floyd
// 119 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 3 "synth brass 1" synth brass 1 (copy of ch 2 "synth voice" synth choir)
// note: Full arrangement: all 99 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(119/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 · synth brass 1 · "synth brass"
const synth_brass_1 = note("<~@40 A@2 B C D ~ E F G H@5 ~@45>".pickRestart({
  A: "[~@11 [b4,d5]@6 [b4,d5]@6 [b4,d5]@3 [b4,d5]@9 ~ [b4,d5]@6 [b4,d5]@3 [b4,d5]@9 [b4,d5]@3 [a4,c#5]@7]/2", // Bm A
  B: "~@2 [a4,c#5]@6 ~ [g4,b4]@3 [a4,c#5]@9 ~@11", C: "~@4 [c5,e5]@3 [c5,e5]@6 ~ [c5,e5]@6 [c5,e5]@6 [c5,e5]@6",
  D: "[c5,e5]@6 [c5,e5]@3 [c5,e5]@9 [c5,e5]@3 ~ [b4,d5]@9 ~", E: "~@8 [b4,d5]@3 [b4,d5]@3 [b4,d5]@2",
  F: "~@2 [b4,d5]@3 ~ [b4,d5]@6 [b4,d5]@9 [b4,d5]@3 [a4,c#5]@8", // Bm A
  G: "~ [a4,c#5]@3 [a4,c#5]@9 ~ [e4,b4]@3 [a4,c#5]@9 ~@6", // A E5 A
  H: "[~@9 [c5,e5]@3 [c5,e5]@6 [c5,e5]@6 ~ [c5,e5]@6 [c5,e5]@3 [c5,e5]@9 [c5,e5]@9 [b4,d5]@3 [c5,e5]@3 [b4,d5]@15 ~@13 [f#4,b4,d5]@25 [g4,b4,e5]@24 [a4,c#5,e5]@25]/5", // C Bm C Bm Em A
})).s("gm_synth_brass_1").gain(0.4).pan(1)

// chords · electric guitar jazz · "guitar"
const electric_guitar_jazz = note(`<
  A@2 B C@8 D E F@5 G H@8 I J K@7 L M N ~@15 O P Q@2 O P R@2 S@2 T@2 U@2 V@2 S@2 T@2 U@2 V@2 W@2 X Y Z AA AB AC AD@2 X Y
  Z AA AB AC AD@2 AE AF AG
>`.pickRestart({
  A: "[~@4 [f#4,f#5]@11 ~ [d4,d5]@8 [f#4,f#5]@7 [d4,d5]@4 [f#4,f#5]@11 ~ [d4,d5]@4 [a3,a4]@3 [f#4,f#5]@10]/2", // F# D F# D F# D A F#
  B: "~@2 [f#4,f#5]@11 [d4,d5]@8 [f#4,f#5]@11", // F# D F#
  C: "[~ [f#4,f#5]@11 [d4,d5]@4 [a3,a4]@4 [f#4,f#5]@11 [f#4,f#5]@11 ~ [d4,d5]@8 [f#4,f#5]@11 [f#4,f#5]@11 ~ [d4,d5]@7 [f#4,f#5]@11 ~ [f#4,f#5]@11 ~ [d4,d5]@3 [a3,a4]@4 [f#4,f#5]@11 ~ [f#4,f#5]@11 [d4,d5]@8 [f#4,f#5]@11 ~ [f#4,f#5]@11 [d4,d5]@8 [f#4,f#5]@11 [f#4,f#5]@11 ~ [d4,d5]@4 [a3,a4]@4 [f#4,f#5]@11 [f4,f5]@11 ~ [b3,b4]@7 [f4,f5]@11 ~ [f4,f5]@9]/8", // F# D A F# D F# D F# …
  D: "~@2 [b3,b4]@8 [f4,f5]@11 ~ [f#4,f#5]@10", E: "~ [d4,d5]@8 [f#4,f#5]@11 ~ [f#4,f#5]@11",
  F: "[[d4,d5]@4 [a3,a4]@4 [f#4,f#5]@11 [f4,f5]@11 ~ [b3,b4]@8 [f4,f5]@11 [f4,f5]@11 ~ [b3,b4]@7 [f4,f5]@11 ~ [d4,f#4,d5,f#5]@11 [d4,d5]@8 [f#4,f#5]@11 ~ [d4,f#4,d5,f#5]@11 [d4,d5]@8 [f#4,f#5]@11 [e4,g#4,e5,g#5]@11 ~ [e4,e5]@6]/5", // D A F# F B F B F …
  G: "~@2 [g#4,g#5]@11 [e4,g#4,e5,g#5]@11 ~ [e4,e5]@7", // G# E
  H: "[[g#4,g#5]@11 ~ [a3,c#4,a4,c#5]@11 ~ [a3,a4]@7 [c#4,c#5]@11 ~ [a3,c#4,a4,c#5]@11 [a3,a4]@8 [c#4,c#5]@11 ~ [f#4,f#5]@11 [d4,d5]@8 [f#4,f#5]@8 [e4,e5]@7 [d4,d5]@8 [e4,e5]@8 [d4,d5]@11 [f#4,f#5]@11 ~ [d4,d5]@7 [f#4,f#5]@11 ~ [f#4,f#5]@11 [d4,d5]@4 [a3,a4]@4 [f#4,f#5]@11 ~ [f4,f5]@11 [b3,b4]@8 [f4,f5]@11 [f4,f5]@11 ~ [b3,b4]@8 [f4,f5]@9]/8", // G# A C# A C# F# D F# …
  I: "~@2 [f#4,f#5]@11 ~ [d4,d5]@8 [f#4,f#5]@10", J: "~ [f#4,f#5]@11 ~ [d4,d5]@3 [a3,a4]@4 [f#4,f#5]@11 ~",
  K: "[[f4,f5]@11 [d4,d5]@8 [f4,f5]@11 ~ [f4,f5]@11 [d4,d5]@8 [f4,f5]@11 [d4,f#4,d5,f#5]@11 ~ [d4,d5]@8 [f#4,f#5]@11 [d4,f#4,d5,f#5]@11 ~ [d4,d5]@7 [f#4,f#5]@11 ~ [e4,g#4,e5,g#5]@11 ~ [e4,e5]@7 [g#4,g#5]@11 ~ [e4,g#4,e5,g#5]@11 [e4,e5]@8 [g#4,g#5]@11 ~ [a3,c#4,a4,c#5]@11 [a3,a4]@8 [c#4,c#5]@11 [a3,c#4,a4,c#5]@9]/7", // F D F D F D F# D …
  L: "~@3 [a3,a4]@8 [c#4,c#5]@11 [f#4,f#5]@10", M: "~@2 [d4,d5]@7 [f#4,f#5]@8 [e4,e5]@8 [d4,d5]@7",
  N: "[e4,e5]@8 [d4,d5]@11 ~@13", O: "[f#4,f#5]@3 [d4,d5]@2 [f#4,f#5]@3", P: "[f#4,f#5]@3 [d4,d5] [a3,a4] [f#4,f#5]@3",
  Q: "[f4,f5]@3 [b3,b4]@2 [f4,f5]@3", R: "[f4,f5]@3 [d4,d5]@2 [f4,f5]@3", S: "[d4,f#4,d5,f#5]@3 [d4,d5]@2 [f#4,f#5]@3",
  T: "[e4,g#4,e5,g#5]@3 [e4,e5]@2 [g#4,g#5]@3", U: "[a3,c#4,a4,c#5]@3 [a3,a4]@2 [c#4,c#5]@3",
  V: "[[f#4,f#5]@3 [d4,d5]@2 [f#4,f#5]@2 [e4,e5]@2 [d4,d5]@2 [e4,e5]@2 [d4,d5]@3]/2", // F# D F# E D E D
  W: "[[c4,f#4,c5,f#5]@3 [c4,c5]@2 [f#4,f#5]@2 [c4,e4,c5,e5]@2 [a3,c4,a4,c5]@2 [c4,e4,c5,e5]@2 [d4,f#4,d5,f#5]@3]/2", // Cdim C F# C Am C D
  X: "[b3,d4,g4,b4,d5,g5]@2 [b3,d4,b4,d5] [g3,b3,g4,b4]", // G Bm G
  Y: "[g3,b3,d4,g4,b4,d5]@3 [b3,d4,g4,b4,d5,g5]@2 [g3,b3,d4,g4,b4,d5]@3", // G
  Z: "[a3,c#4,e4,a4,c#5,e5]@2 [a3,c#4,a4,c#5] [c#4,e4,c#5,e5]", // A C#m
  AA: "[c#4,e4,a4,c#5,e5,a5]@3 [e4,a4,c#5,e5,a5,c#6]@2 [c#4,e4,a4,c#5,e5,a5]@3", // A
  AB: "[c4,e4,g4,c5,e5,g5]@2 [c4,e4,c5,e5] [e4,g4,e5,g5]", // C Em
  AC: "[c4,e4,g4,c5,e5,g5]@3 [e4,g4,c5,e5,g5,c6]@2 [c4,e4,g4,c5,e5,g5]@3", // C
  AD: "[b3,d4,g4,b4,d5,g5]@3 [d4,b4,d5,b5]@2 [b3,g4,b4,g5]@3", // G Em
  AE: "~ [g4,g5] [b4,b5] [b3,e4,g4,b4,e5,g5], [b3,e4,e5]@3 ~, b4 ~", // G B Em E5
  AF: "~ [d4,e4,a4,d5,e5,a5] [c#4,e4,a4,c#5,e5,a5]@2", AG: "[a3,d4,f#4,a4,d5,f#5,a5]",
})).s("gm_electric_guitar_jazz").gain(0.31)

// chords · brass section
const brass_section = note("<~@38 A@4 B@2 C D E F@6 G ~@45>".pickRestart({
  A: "[~@20 [c5,f#5]@9 c5@6 [f#5,a5]@6 [c5,e5]@6 [a4,c5]@6 ~ [c5,e5]@6 [d5,f#5]@9 [b4,d5,g5]@12 [b4,d5]@6 [g4,b4]@6 ~ [g4,b4,d5]@9 [b4,d5,g5]@6 [g4,b4,d5]@9 [a4,c#5,e5]@10, ~@20 a5@15 ~@93]/4", // Cdim F#m C Am C D G Bm …
  B: "[~@2 [a4,c#5]@6 ~ [c#5,e5]@6 [c#5,e5,a5]@9 [e5,a5,c#6]@6 [c#5,e5,a5]@9 [c5,e5,g5]@12 ~ [c5,e5]@6 [e5,g5]@6]/2", // A C#m A C Em
  C: "[c5,e5,g5]@9 [e5,g5,c6]@6 [c5,e5,g5]@9 ~ [b4,d5,g5]@7", D: "~@2 [d5,b5]@6 [b4,g5]@9 [b4,d5,g5]@9 [d5,b5]@6",
  E: "~ [b4,g5]@9 [b4,d5,g5]@12 [b4,d5]@6 [g4,b4]@4", // Em G Bm G
  F: "[~@2 [g4,b4,d5]@9 ~ [b4,d5,g5]@6 [g4,b4,d5]@9 [a4,c#5,e5]@12 [a4,c#5]@6 ~ [c#5,e5]@6 [c#5,e5,a5]@9 [e5,a5,c#6]@6 [c#5,e5,a5]@9 [c5,e5,g5]@12 ~ [c5,e5]@6 [e5,g5]@6 [c5,e5,g5]@9 [e5,g5,c6]@6 [c5,e5,g5]@9 ~ [b4,d5,g5]@9 [d5,b5]@6 [b4,g5]@9 ~@6 f#5@3 b5@6 ~ f#5@3 [b4,d5]@6 ~@6 g5@6 b5@5, ~@150 [b4,d5]@18 ~@7 [b4,e5]@17]/6", // G A C#m A C Em C G …
  G: "~ [b4,e5,g5]@6 ~@7 [d5,e5,a5]@6 [c#5,e5,a5]@12", // Em Dsus2 A
})).s("gm_brass_section").gain(0.36).pan(0)

// bass · fretless bass · "bass"
const bass = note(`<
  A@2 B C@6 D@5 E F@6 G@6 B H I@5 J K@7 L@2 M@2 N O P Q@5 R@2 S@2 R@2 S@2 R@3 T U V W X R@3 T U V W X Y Z AA@2 AB@2 AC
  AD AE@2 AA@2 AB@2 AC AD AE@2 AF AG AH
>`.pickRestart({
  A: "[~@4 d2@8 d3@23 d2@8 d3@21]/2", B: "~ d2@4 d3@11",
  C: "[~ d2@7 d3@15 ~ a2@7 d2@8 d3@23 d2@8 d3@15 a2@8 d2@8 d3@23 d2@8 d3@15 a2@8 d2@7 d3@23 d2@7]/6",
  D: "[~ d3@23 g2@15 ~ g3@15 g2@15 g3@15 ~ d2@7 d3@23 ~ d2@7 d3@23 g2@13]/5", E: "~@3 g3@15 g2@14",
  F: "[~ g3@15 ~ d2@8 d3@23 d2@7 d3@23 d2@8 d3@23 d2@8 d3@15 a2@8 a2@8 a2@15 a2@8 a2@7 a2@14]/6",
  G: "[~@2 c#2@8 ~@7 d3@15 ~ d3@7 d2@8 d2@23 d2@8 d3@23 d2@8 d3@23 g2@15 g3@15 g2@15 ~ g3@13, ~@5 d2@15 ~@76]/6",
  H: "~ d2@8 d3@23", I: "[g2@15 g3@15 ~ g2@15 g3@15 d2@8 d3@23 d2@8 d3@23 d2@8 d3@23 d2@6]/5", J: "~ d3@15 ~ a2@8 a2@7",
  K: "[a3@15 ~ a3@7 a2@8 a3@15 c#3@8 ~@8 d3@15 d3@8 d2@8 d2@23 d2@24 [d2,d3]@3 [d2,d3]@6 ~ [d2,d3]@6 [d2,d3]@3 [d2,d3]@6 g2@6 g2@6 g2@12 ~ g2@6 g2@6 g2@12 a2@6 a2@4, ~@54 d2@31 ~@139]/7", // D
  L: "[~@2 a2@12 ~ a2@6 a2@6 a2@12 c3@12 ~ g2@12]/2", M: "[c2@9 g2@9 c3@6 ~ g2@12 g2@3 g2@6 g2@6 g2@6 g2@3 ~ g2@2]/2",
  N: "~ g2@3 g2@6 g2@6 g2@6 g2@10", O: "~@2 g2@6 ~ g2@6 g2@12 a2@5", P: "~ a2@6 a2@12 ~ a2@6 a2@6",
  Q: "[a2@12 c3@12 ~ g2@12 c2@9 g2@9 c3@6 ~ g2@12 g2@12 b2@25 [e2,e3]@24 a2@25]/5", R: "d2 d3@3", S: "g2 g3",
  T: "d2 d3@2 a2", U: "a1 a2@2 a2", V: "a1 a2@2 c#2", W: "~ d3@2 d3, d2", X: "d2 d2@3", Y: "d2",
  Z: "[d2,d3] [d2,d3]@2 [d2,d3]@2 [d2,d3] [d2,d3]@2", AA: "g2!2 g2@2", AB: "a2!2 a2@2", AC: "c3 g2",
  AD: "c2@3 g2@3 c3@2", AE: "[g2@4 g2 g2@2 g2@2 g2@2 g2!3 g2@2]/2", AF: "[e2,e3]", AG: "a2", AH: "[d2,d3]",
})).s("gm_fretless_bass").gain(0.39)

// drums · kick
const kick = s("bd").struct("<~@40 A B C D E F G H I ~ J ~@45 K L M>".pickRestart({
  A: "~@23 x ~@5 x ~@2", B: "~@2 x ~@5 x ~@2 x ~@2 x ~", C: "~@8 x ~@6 x ~@5 x ~@10", D: "~ x ~@23 x ~@6",
  E: "x ~@5 x ~@11 x ~@6 x ~@5 x", F: "~@17 x ~@5 x ~@8", G: "~@7 x", H: "~@2 x ~@5 x ~@12 x ~@5 x ~@4",
  I: "~@7 x ~@2 x ~@5", J: "~@5 x ~@17 x ~@8", K: "~@23 x ~@8", L: "x!2 ~ x", M: "x",
})).gain(0.39)

// drums · snare
const snare = s("sd").struct("<~@40 A B C D E F G H I J A K L M ~@42 N@2 ~>".pickRestart({
  A: "~@17 x ~@14", B: "~@5 x ~@10", C: "~@2 x ~@24 x ~@4", D: "~@5 x ~@2", E: "~@3 x ~@4", F: "~@5 x ~@26",
  G: "~@11 x ~@4", H: "~@15 x ~@16", I: "~@7 x ~@6 x ~@5 x ~@11", J: "~@3 x", K: "~@9 x ~@22", L: "~@7 x",
  M: "~@10 x ~@2 x ~@2", N: "~ x",
})).gain(0.47)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C D E F G H I J K L M N O D P@2 Q R S T J L U A N V D E F W H X@2 J K M Y Z ~@14 AA AB AA D AA@2 AC AA AB AC@3 AA
  E AC AA AB AC AA@6 AB E AA@2 AB AA@3 AB E@2 AA AD AA@2 E AE ~@4
>`.pickRestart({
  A: "~@3 x ~@3 x", B: "~@11 x ~@13 x ~@6", C: "~@9 x ~@15 x ~@6", D: "~@9 x ~@14 x ~@7", E: "~@7 x ~@15 x ~@8",
  F: "~@6 x ~@14 x ~@10", G: "~ x ~@3 x ~@2", H: "~@3 x ~@15 x ~@12", I: "~@3 x ~@13 x ~@14", J: "~ x ~@14 x ~@14 x",
  K: "~@15 x ~@14 x ~", L: "~@14 x ~@14 x ~@2", M: "~@13 x ~@13 x ~@4", N: "~@11 x ~@14 x ~@5", O: "~@5 x ~@7 x ~@2",
  P: "~@7 x ~@14 x ~@9", Q: "~@5 x ~@15 x ~@10", R: "~@4 x ~@14 x ~@12", S: "~@3 x ~@14 x ~@13", T: "~ x ~@7 x ~@6",
  U: "~@13 x ~@14 x ~@3", V: "~@10 x ~@14 x ~@6", W: "~@5 x ~@14 x ~@11", X: "~@2 x ~@14 x ~@14",
  Y: "~@12 x ~@14 x ~@4", Z: "~@5 x ~@10", AA: "~ x ~ x", AB: "~@8 x ~@14 x ~@8", AC: "~@7 x ~@16 x ~@7",
  AD: "~@8 x ~@16 x ~@6", AE: "~@9 x ~@19 x ~@2",
})).gain(0.31)

// drums · low tom
const low_tom = s("lt").struct("<~@39 A ~@6 B ~@2 C ~@2 D ~@42 E ~@3>".pickRestart({
  A: "~@15 x", B: "~@3 x ~@28", C: "~@4 x ~@2 x ~@24", D: "~@7 x ~@2 x ~@20 x", E: "~@23 x ~@8",
})).gain(0.47)

// drums · mid tom
const mid_tom = s("mt").struct("<~@39 A ~@6 B ~@2 C ~ D E F ~@41 G ~@3>".pickRestart({
  A: "~@25 x ~@6", B: "x", C: "x ~ x ~ x!2 ~@3 x ~@22", D: "~@7 x ~@8", E: "~@3 x ~ x ~@2 x ~@3 x ~@18 x",
  F: "~ x ~@14", G: "~ x",
})).gain(0.55)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B C D E F G H I J K L M N O D P@2 Q R S T J L U A N V D E F W H X@2 J K M Y Z ~@14 AA AB AA D AA@2 AC AA AB AC@3 AA
  E AC AA AB AC AA@6 AB E AA@2 AB AA@3 AB E@2 AA AD AA@2 E AE ~@4
>`.pickRestart({
  A: "~@3 x ~@3 x", B: "~@11 x ~@13 x ~@6", C: "~@9 x ~@15 x ~@6", D: "~@9 x ~@14 x ~@7", E: "~@7 x ~@15 x ~@8",
  F: "~@6 x ~@14 x ~@10", G: "~ x ~@3 x ~@2", H: "~@3 x ~@15 x ~@12", I: "~@3 x ~@13 x ~@14", J: "~ x ~@14 x ~@14 x",
  K: "~@15 x ~@14 x ~", L: "~@14 x ~@14 x ~@2", M: "~@13 x ~@13 x ~@4", N: "~@11 x ~@14 x ~@5", O: "~@5 x ~@7 x ~@2",
  P: "~@7 x ~@14 x ~@9", Q: "~@5 x ~@15 x ~@10", R: "~@4 x ~@14 x ~@12", S: "~@3 x ~@14 x ~@13", T: "~ x ~@7 x ~@6",
  U: "~@13 x ~@14 x ~@3", V: "~@10 x ~@14 x ~@6", W: "~@5 x ~@14 x ~@11", X: "~@2 x ~@14 x ~@14",
  Y: "~@12 x ~@14 x ~@4", Z: "~@5 x ~@10", AA: "~ x ~ x", AB: "~@8 x ~@14 x ~@8", AC: "~@7 x ~@16 x ~@7",
  AD: "~@8 x ~@16 x ~@6", AE: "~@9 x ~@19 x ~@2",
})).gain(0.31)

// drums · high tom
const high_tom = s("ht").struct("<~@39 A ~@5 B ~@5 C D ~@42 E ~@3>".pickRestart({
  A: "~@21 x ~@10", B: "~@29 x ~@2", C: "~@7 x ~@8", D: "~@5 x ~@25 x", E: "~@3 x ~@4",
})).gain(0.55)

// drums · crash
const crash = s("cr").struct("<A ~@39 A ~@2 B ~@2 C ~@2 D E F G H I ~@40 J ~@3>".pickRestart({
  A: "~ x ~@6", B: "~@7 x ~@24", C: "~@9 x ~@22", D: "~@11 x ~@20", E: "~@29 x ~@2", F: "~@5 x ~@2", G: "~@7 x ~@8",
  H: "~ x ~@2", I: "x", J: "~@31 x",
})).gain(0.31)

// drums · ride
const ride = s("rd").struct("<~@49 [~@31 x] [~@5 x ~@5 x ~@5 x ~@5 x ~@8] [~@3 x ~@5 x ~@22] [~@7 x] ~@46>").gain(0.39)

// drums · rim
const rim = s("rim").struct("<[~ x ~@6] ~@98>").gain(0.31)

stack(
  synth_brass_1, electric_guitar_jazz, brass_section, bass, kick, snare, hihat, low_tom, mid_tom, open_hat, high_tom,
  crash, ride, rim
)

More by Pink Floyd