Strudelify

Another Brick in the Wall, Part 3

Pink Floyd

KeyD minorTempo109 bpm
0:00/0:00
// Another Brick in the Wall, Part 3 — Pink Floyd
// 109 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 2 electric bass finger (copy of ch 1 fretless bass)
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 28, guitar program 30, guitar program 26.
setcpm(109/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 · fretless bass
const bass = note(`<
  A B@4 ~@2 C@4 D E F E D G F E H@2 I J F K L M F K L M N ~@3 C@4 D G D E F E D G H@2 I J D K L M D O L M D G D E F D@2
  G F@2 D G D F@2 E D@2 F E D@3 E F D@2 G F@2 D G P@2 N
>`.pickRestart({
  A: "~@7 c2", B: "[d2@27 ~@5]/4", C: "d1/4", D: "d2@2 ~ c2 d2 ~@3", E: "d2@2 ~ d2 a1@2 c2@2",
  F: "d2@4 ~@2 c2@2 d2 ~@7", G: "d2@4 ~@2 d2 ~ a1@4 c2@4", H: "g1", I: "g1!2", J: "g1!4", K: "d2@2 ~ d2 a1@2 g1@2",
  L: "f1@7 f1", M: "c2@7 c2", N: "d2 ~@7", O: "d2@4 ~@2 d2 ~ a1@4 g1@4", P: "[d2@31 ~]/2",
})).s("gm_fretless_bass").gain(0.4)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  A@2 B C B D@2 C@2 D@2 B C E D B@2 E D F G@2 H I J K L@3 M N@8 O B@2 D@2 C B D@2 F H@2 G P@2 M Q@3 R S@8 ~@28
>`.pickRestart({
  A: "[~@16 [d4,f4,a4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4] [d4,f4] ~@3 [d4,f4] ~@2, ~@15 [d3,a3]@5 ~@8 [a3,d4,f4,a4]@2 ~@2]/2", // Dm F Dm D5 Dm
  B: "[d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4] [d4,f4] ~@3 [d4,f4] ~@2, [d3,a3,a4]@5 ~@7 [a3,d4,f4,a4]@2 ~@2", // Dm F Dm D5 Dm
  C: "[d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4] [d4,f4] ~@2 [a3,d4,f4,a4] [d4,f4] ~@2, [d3,a3,a4]@5 ~@11", // Dm F Dm D5
  D: "[d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4]@2 ~@2 [a3,d4,f4,a4]@2 ~@2, [d3,a3,a4]@5 ~@11", // Dm F Dm D5
  E: "[d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4]@2 ~@2 [a3,d4,f4,a4] ~@3, [d3,a3,a4]@5 ~@11", // Dm F Dm D5
  F: "[d3,a3,d4,g4,b4] b4 ~ b4!3 ~ b4 [d4,g4,b4] [g4,b4] [d4,g4,b4] [g4,b4] ~ b4 ~ b4, ~ [d4,g4,b4] d4@2 ~@2 [d4,g4,b4]!2, ~@2 g4 [g4,b4] ~@4", // G
  G: "[d4,g4,b4] b4 ~ b4!3 ~ b4 [d4,g4,b4] [g4,b4] [d4,g4,b4] [g4,b4] ~ b4 ~ b4, ~ [d4,g4,b4] d4@2 ~@2 [d4,g4,b4]!2, ~@2 g4 [g4,b4] ~@4", // G
  H: "~ b4 ~ b4!3 ~ b4 [d4,g4,b4] [g4,b4] [d4,g4,b4] [g4,b4] ~ b4 ~ b4, [d4,g4,b4]!2 d4@2 ~@2 [d4,g4,b4]!2, ~@2 g4 [g4,b4] ~@4", // G
  I: "[d4,f4]@3 [d4,f4] [a3,d4,f4] ~ [a3,c4,f4]@2 [a3,d4,f4]@2 [f4,a4,d5] ~@2 [e4,g4,c5] ~@2, [d3,a3,a4]@5 ~@11", // Dm F Dm C D5
  J: "[f4,a4,d5]@3 a4 [a4,d5] ~ [e4,g4,c5] ~ [e4,g4,c5] ~ [d4,g4,b4] b4 [d4,g4,b4] ~ [c4,f4,a4]@2", // Dm D5 C G F
  K: "[c4,f4,c5]@2 ~@2 [c4,f4,c5] ~@3 [c4,f4,c5]@2 ~@2 [c4,f4,c5] ~@3", // F5
  L: "[[c4,e4,c5] ~@4 c5 ~ c5 ~ c5 ~ c5 ~ c5 ~@2 [d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4] [d4,f4] ~@2 [a3,d4,f4,a4] [d4,f4] ~@2 [d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 ~ d4 ~@2 [a3,d4,f4,a4] [d4,f4] ~@2, ~@4 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [d3,a3,a4]@5 ~@11 [d3,a3,a4]@5 ~@3 [a3,d4,f4]@2 ~@6, ~@5 c5@11]/3", // C Dm F Dm F Dm C D5 …
  M: "[c4,f4]@2 ~@2 [c4,f4] ~@3 [c4,f4]@2 ~@2 c5@4, c5@2 c5@2 c5@2 c4 ~, ~@12 f4 ~@3", // F5
  N: "[[c4,e4] ~@4 c5 ~ c5 ~ c5 ~ c5 ~ c5 [c4,e4,c5] ~ [d3,a3,d4] ~@63 [d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4] [d4,f4] ~@3 [d4,f4] ~@2 [d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4] [d4,f4] ~@3 [d4,f4] ~@2 [d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4]@2 ~@2 [a3,d4,f4,a4] ~@3, c5@4 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 ~ c5@113, ~@80 [d3,a3,a4]@5 ~@7 [a3,d4,f4,a4]@2 ~@2 [d3,a3,a4]@5 ~@7 [a3,d4,f4,a4]@2 ~@2 [d3,a3,a4]@5 ~@11]/8", // C D5 Dm F Dm F Dm F …
  O: "[d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4]@2 ~@2 [a3,a4]@2 ~@2, [d3,a3,a4]@5 ~@7 d4@4, ~@12 f4 ~@3", // Dm F Dm A D5
  P: "[[d4,f4]@3 [d4,f4] [a3,d4,f4] ~ [a3,c4,f4]@2 [a3,d4,f4]@2 [f4,a4,d5] ~@2 [e4,g4] ~@2 [f4,a4,d5]@3 a4 [a4,d5] ~ [e4,g4,c5] ~ [e4,g4] ~ [d4,g4,b4] b4 [d4,g4,b4] ~ [c4,f4,a4]@2, [d3,a3,a4]@5 ~@8 c5@9 ~@2 c5@8]/2", // Dm F Dm Em Dm D5 C Em …
  Q: "[c5@4 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 [c4,e4,c5] ~ [d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4] [d4,f4] ~@3 [d4,f4] ~@2 [d4,f4]@3 [d4,f4] [a3,d4,f4]@2 [a3,c4,f4]@2 [a3,d4,f4] [d4,f4] ~@3 [d4,f4] ~@2, e4@2 ~@13 c5@33, c4 ~@3 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 ~@2 [d3,a3,a4]@5 ~@7 [a3,d4,f4,a4]@2 ~@2 [d3,a3,a4]@5 ~@7 [a3,d4,f4,a4]@2 ~@2]/3", // C Dm F Dm F Dm C D5 …
  R: "[c4,f4] ~ [c4,f4] ~ [c4,f4] ~ c5@2, c5@2 c5@2 c5@2 c4 ~, ~@12 f4 ~@3", // F5
  S: "[c5@4 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~@2 [d3,a3,d4]@112, e4@2 ~@13 c5@113, c4 ~@3 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 [c4,e4,c5]@2 ~@112]/8", // D5 C
})).s("gm_electric_guitar_clean").gain(0.14)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A@4 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@7 B ~@2 A@2 ~@6 A@2 ~@2 A@2 ~@2 A@2 ~@7 B ~@2 A@2 ~@37
>`.pickRestart({
  A: "~@10 d4 [d4,f4] ~@2 [d4,f4] f4", B: "~@3 d5 ~@7 g4 ~@4",
})).s("gm_electric_guitar_clean").gain(0.02)

// chords · electric guitar muted · D5
const electric_guitar_muted = note(`<
  ~@28
  [~@9 f4 ~@6]
  [[d3,a3]@5 ~@11, d4@3 ~@13]
  ~@27
  [[d3,a3]@5 ~@11, d4@3 ~@13]
  ~@36
>`).s("gm_electric_guitar_muted").gain(0.19)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~ A@4 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@8 A C ~@6 A@2 B@2 A@2 B@2 A@2 B@2 ~@8 A@2 ~@37
>`.pickRestart({
  A: "~@10 f4 ~@4 d4", B: "~@10 [d4,f4]!2 ~@2 [d4,f4]!2", C: "~@9 f4!2 ~@4 d4",
})).s("gm_distortion_guitar").gain(0.19)

// chords · drawbar organ
const drawbar_organ = note("<~@61 A@6 B@2 C@2 B@2 D@2 E@2 F@2 E@2 F@2 E@2 G@2 H@2 G@2 I@3>".pickRestart({
  A: "[[d4,d5,f5,a5]@7 [c4,c5,e5,g5]]/2", B: "[d4,d5,f5,a5]/2", C: "[d4,c5,e5,a5]/2", D: "[d4,c5,g5,a5]/2",
  E: "[d4,c5,f5,a5]/2", F: "[d4,d5,g5,b5]/2", G: "[d4,e5,g5,c6]/2", H: "[d4,d5,f5,bb5]/2",
  I: "[[d4,d5,f5,a5]@17 ~@7]/3", // Dm
})).s("gm_drawbar_organ").gain(0.15)

// other · pad sweep
const pad_sweep = note("<~@19 A@4 ~@2 B C D@2 B C ~@16 A@4 ~@2 B C D@2 B C D@2 ~@33>".pickRestart({
  A: "[g2,g3]/4", B: "[f2,f3]", C: "[c3,c4]", D: "[d3,d4]/2",
})).s("gm_pad_sweep").gain(0.4)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@5 A B@3 A C@3 A B@3 A D E@4 ~@2 F G H@2 F I ~@2 A B@3 A C@3 A B@3 A D E@4 ~@2 F G H@2 F I H@2 ~@33
>`.pickRestart({
  A: "d3@2 e3 f3@2 e3@3", B: "[d3@2 e3 f3@2 e3@19]/3", C: "[d3@2 e3 f3@21]/3", D: "d3@2 e3 f3@5", E: "g3/4", F: "f2",
  G: "c3", H: "d3/2", I: "c3@7 ~",
})).s("gm_string_ensemble_1").gain(0.45)

// chords · overdriven guitar
const overdriven_guitar = note("<~@19 A@4 ~@2 B C D@2 B C E ~@15 F@4 ~@2 B C D@2 B C D@2 ~@33>".pickRestart({
  A: "[[b3,d4,g4] ~@2 [d4,g4] [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~ [b3,d4,g4] ~@4 [d4,g4] [b3,d4,g4] ~ eb4 ~ [b3,d4,g4] ~@3 [b3,d4,g4] ~ [b3,d4,g4] ~@4 [d4,g4] [b3,d4,g4] ~ eb4 g4 [b3,d4,g4] ~@2 g4 [b3,d4,g4] ~ [b3,d4,g4] ~@4 [d4,g4] [b3,d4,g4]@2 eb4 ~ [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~ eb4 g4, ~ [d4,g4]@2 ~@12 [d4,g4]@2 [d4,g4]@2 ~@12 [d4,g4]@2 [d4,g4]@2 ~@12 [d4,g4]@2 [d4,g4]@2 ~@13, ~ [b3,d4] ~@6 [b3,d4]!2 ~@6 [b3,d4]!2 ~@6 [b3,d4]!2 ~@6]/4", // G G5 G G5 G G5 G G5 …
  B: "[f2,c3,f3]", C: "[c3,g3,c4]", D: "[d3,a3,d4]/2", E: "[d3,a3,d4] ~@7",
  F: "[[b3,d4,g4] ~@2 [d4,g4] [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~ [b3,d4,g4] ~@4 [d4,g4] [b3,d4,g4]@2 eb4 ~ [b3,d4,g4]@2 ~@2 [b3,d4,g4] ~ [b3,d4,g4] ~@4 [d4,g4] [b3,d4,g4]@2 eb4 g4 [b3,d4,g4] ~@2 g4 [b3,d4,g4] ~ [b3,d4,g4] ~@4 [d4,g4] [b3,d4,g4] ~ eb4 ~ [b3,d4,g4] ~@3 [b3,d4,g4] ~ eb4 g4, ~ [d4,g4]@2 ~@12 [d4,g4]@2 [d4,g4]@2 ~@12 [d4,g4]@2 [d4,g4]@2 ~@12 [d4,g4]@2 [d4,g4]@2 ~@13, ~ [b3,d4] ~@6 [b3,d4]!2 ~@6 [b3,d4]!2 ~@6 [b3,d4]!2 ~@6]/4", // G G5 G G5 G G5 G G5 …
})).s("gm_overdriven_guitar").gain(0.28).pan(0)

// chords · overdriven guitar · soft notes
const overdriven_guitar_soft = note("<~@19 A B C B ~@24 A B C B ~@43>".pickRestart({
  A: "~@6 [d4,g4]!2 ~@2 [bb3,d4,g4] g4 ~@4", B: "~@6 g4 [eb4,g4] ~@2 [b3,eb4,g4] g4 ~@4", C: "~@10 [b3,d4,eb4] eb4 ~@4",
})).s("gm_overdriven_guitar").gain(0.17).pan(0)

// chords · electric guitar jazz · Dbm
const electric_guitar_jazz = note("<~@23 [~@10 [e4,ab4,db5] ~@5] ~@27 [~@10 [e4,ab4,db5] ~@5] ~@42>")
  .s("gm_electric_guitar_jazz").gain(0.21)

// other · overdriven guitar
const overdriven_guitar_2 = note(`<
  ~@60 A B C@2 D E F@2 G@2 H I ~ J K L M N O@3 P Q@2 R@2 S T U@2 V W X Y
>`.pickRestart({
  A: "~@8 c5@2 g4 f4 g4@2 a4 ~", B: "c5@3 ~", C: "[[f4,a4] d4 ~ d4@2 ~@7 c5@2 ~ d5@4 ~ c5@4 ~@4 c5@2 g4 ~]/2",
  D: "g4@7 ~ f4@2 d4 e4 c4@2 g4@2", E: "d4@3 ~ f4 ~@5 [gb4,b4]!2 [f4,a4] d4@2 gb4",
  F: "[[f4,a4] ~ f4 d4@2 ~ [f4,a4] ~ f4 d4 ~@2 [f4,a4]@2 [g4,bb4,b4] g4@10 ~@7]/2", // F G
  G: "[~@10 [d4,f4] [a4,d5] e5@10 f5 ~ f5 e5@3 ~@4]/2", H: "c5@2 ~ d5@13", I: "d5@3 ~",
  J: "ab4@2 ~ d5 c5@2 ab4 ~ ab4@2 f4 ~ g4@2 d4@2, ~ a4 ~@6", K: "f4 d4@2 ~@2 a3@2 ~ ab3 g3 ~@2 f3!2 db3@2, ~@2 b3 ~@5",
  L: "c3@3 ~ a2 c3@3 d3@3 ~@5", M: "~@2 a3 ~ c4 ~ d4!2 e4@2 d4 ~ d4 c4 a3 ~", N: "c4 ~ d4 ~ d4@2 f4@5 ~@5",
  O: "[~@2 c5@9 c5@2 ~@2 d5@4 ~ c5@22 ~@4 a4 [d5,f5]]/3", P: "g5@10 f5 d5 ~@4",
  Q: "[~@2 d5 ~ f5 ~ d5 ~ g5@16 a5@3 f5 d5@2 ~@2]/2", R: "[~@4 bb5@4 c6@3 ~@3 c6@12 c6@2 ~@4]/2",
  S: "c6@3 a5@2 ~@5 [f4,a4]@2 gb4 [f4,a4] gb4 g4", T: "[f4,a4]@4 d4@8 ~@2 db4!2",
  U: "[db4@2 [g4,c5] ~@2 [g4,b4] ~@2 [g4,b4] ~@2 g4@12 ~@3 d4!2 [g4,b4]@2 d4 c4, ~@11 b4@9 ~@12]/2", // C5 G
  V: "d4@2 ~@2 [f4,a4]@2 ~@4 g4 ~ ab4@2 d4 ~", W: "f4 d4@12 ~@3", X: "g4@2 a4 d5 c5@2 g4@2 g4@2 d4@2 d4@2 a3 f4",
  Y: "[c3,d4] ~@15", // Csus2
})).s("gm_overdriven_guitar").gain(0.71)

// drums · kick
const kick = s("bd").struct("<[~@7 x] [x!4]!92 x>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!60 [~@3 x]!30 [~ x ~ x] [x!2 ~@2 x!2 ~ x ~@4 x!4] ~>").gain(0.71)

// drums · hihat
const hihat = s("hh").struct("<~ [x!7 ~]!60 [x!14 ~@2]!30 [x!7 ~] [x!8] ~>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@92 [~@5 x ~@2] ~>").gain(0.71)

// drums · mid tom
const mid_tom = s("mt").struct("<~@92 [~@8 x!2 ~@6] ~>").gain(0.71)

// drums · open hat
const open_hat = s("oh").struct("<~ [~@7 x]!91 ~@2>").gain(0.71)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@17 A ~@3 A ~ A@3 ~ A@2 ~@16 A ~@3 A ~ A@3 ~ A@3 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
  ~ A
>`.pickRestart({
  A: "x",
})).gain(0.5)

stack(
  bass, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_muted, distortion_guitar, drawbar_organ,
  pad_sweep, string_ensemble_1, overdriven_guitar, overdriven_guitar_soft, electric_guitar_jazz, overdriven_guitar_2,
  kick, snare, hihat, low_tom, mid_tom, open_hat, crash
)

More by Pink Floyd