Strudelify
The Trial cover art

1979 · The Wall

The Trial

Pink Floyd

KeyG majorTempo100 bpm
0:00/0:00
// The Trial — Pink Floyd
// 100 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 17, 4/4 at bar 18, 2/4 at bar 27, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 4 "Bass" named as a bass, played on electric bass finger (its tuba patch is not one)
// note: Full arrangement: all 125 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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.

// other · overdriven guitar · "Jurer"
const overdriven_guitar = note(`<
  ~@2 A@8 B@6 C D ~@16 E@2 F@3 ~@24 G H I ~@17 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J
  L ~@4
>`.pickRestart({
  A: "[~@15 [c4,f4]@6 ~@2 [c4,f4]@6 ~@2 [c4,f4]@6 d5@2 c5@2 d5@2 c5@2 ~@2 e4@6 ~@2 e4@6 ~@2 [e4,b4]@2 a#4@2 b4@2 c5@2 b4@2 a4@2 g4@2 ~@2 c4@6 ~@2 c4@6 ~@2 c4@6 d5@2 c5@2 d5@2 c5@2 ~@2 b4@2 a#4@2 b4@2 b4@2 e4@2 e4@2 e4@2 ~@2 e4, ~@77 f4@24 ~@27]/8", // F5 E5
  B: "[~ a#3@2 b3@2 c4@2 b3@2 g#3@2 g3@2 f3@2 c4@2 b3@2 c4@2 f3@2 c4@2 b3@2 c4@2 ~@2 c4@2 b3@2 c4@2 d4@2 c4@2 d4@2 c4@2 a#3@2 b3@10 a#3@2 b3@2 c4@2 b3@2 a#3 b3 c4 b3 ~@4 f#4@2 e4@2 e4@2 [g3,e4]@2 f#3@2 g3@2 ~@2 g3@2 f#3@2 g3@2 b3@3]/6", // C
  C: "~ [a3,b3]@4 [f#3,a3,b3]@11", D: "~@6 b4 a4 g4 f#4 ~@22",
  E: "[~@5 [e4,g4,a#4]@16 [e4,g4,b4]@16 [e4,g4,a#4]@4 [e4,g4,b4]@4 [e4,g4,c5]@4 [e4,g4,b4]@8 [e4,a4]@4 [e4,g4]@3]/2", // Edim Em Edim Em C Em A5 Em
  F: "[~ [e4,a4]@4 [d#4,f#4,a#4]@16 [d#4,f#4,b4]@16 b3@32 ~@27]/3", G: "[e4,g4,a#4] [e4,g4,b4]",
  H: "a#4 b4 c5 b4@2 a4 g4 a4, ~ [e4,g4] ~ e4", I: "[d#4,f#4,a#4] [d#4,f#4,b4]",
  J: "e4@4 f#4@3 f#4 g4@2 f#4@2 g4@2 f#4@2", K: "a4@4 b4@3 b4 c5@2 b4@2 c5@2 b4@2", L: "e4@4 f#4@3 f#4 ~@8",
})).s("gm_overdriven_guitar").gain(0.51)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B@11 C@2 D E F G B@3 H I J@2 K@2 L M N O P@8 Q@5 R S@4 T@4 U@2 V W@2 X Y Z AA AB AC W AD@2 AE AF AG@2 AE@2 AG@2 AE
  AF AG AH AE@2 AG AH AI@2 AJ@2 AI@2 AJ@2 AI@2 AJ@2 AI@2 AJ@2 AI@2 AJ@2 AI@2 AJ@2 AI@2 AJ@2 AI@2 AJ@2 AI@2 AJ@2 AI@2 AJ
  AK ~@2
>`.pickRestart({
  A: "~@13 e2@3", B: "~ b2@4 e2@4 b2@4 e2@3", C: "[~ b2@4 e2@4 b2@4 e2@2 b2@2 a#2@2 b2@2 e2@4 b2@4 e2@3]/2",
  D: "~ b2@4 e2@4 b2@4 c2@3", E: "~ g2@4 c2@4 g2@4 b1@3", F: "~ f#2@4 b2@11", G: "~@5 e2@4 b2@4 e2@3",
  H: "~ a2@4 g2@4 d2@4 g2@3", I: "~ d2@4 g#2@4 d2@4 g#2@3", J: "[~@2 d2@8 a2@32 d2@4 d#2@5 e2@6 f2@7]/2",
  K: "[~ f#2@10 g2@14 g#2@12 a2@16 ~@11]/2", L: "~@5 e3@8 e2@4 e2@4 e3@8 e2@3", M: "~ e2@4 e3@8 e2@4 e2@4 e3@8 e2@3",
  N: "~ e2@4 b2@8 b1@4 b1@4 b2@8 b1@3", O: "~ b1@4 b2@8 b1@4 b1@4 b2@8 b1@3",
  P: "[~ b1@4 f#2@16 f#2@16 d2@16 d2@16 d#2@16 d#3@8 d#2@8 e2@8 e1@8 e2@8 e1@8 e2@8 e1@8 e2@8 e1@8 b1@8 b1@8 b2@8 f#2@8 b1@32 e2@4 e3@4 b2@4 e3@4 e2@4 e3@4 b2@3]/8",
  Q: "~ e3@4 e2@4 e3@4 b2@4 e3@4 e2@4 e3@4 b2@3", R: "~ e3@4 c2@4 c3@4 g2@4 c3@4 c2@4 c3@4 g2@3",
  S: "[~ c3@4 b2@8 f#2@8 b1@16 e2@8 b2@8 e2@8 b2@8 e2@8 b2@8 e2@8 b2@8 f#2@8 c3@4 c#3@4 f#2@8 c3@3]/4",
  T: "[~ c#3@4 b2@8 f#2@8 b2@8 a2@8 g2@8 d3@8 g2@8 d3@8 g#2@8 d3@8 g#2@8 d3@8 a2@24 ~@3]/4",
  U: "[~@5 d2@4 d#2@5 e2@6 f2@7 ~ f#2@10 g2@14 g#2@12]/2", V: "a2 ~", W: "e3 e2 e3 e2", X: "b2 b1 b1@2 b2@2 b1@2",
  Y: "b2 b1 b2 b1", Z: "f#2 f#1 f#2 f#1", AA: "d2@2 d2 a1 d2@2 d2@2", AB: "d#2!2 d#3 d#2", AC: "e2!2 e3 e2",
  AD: "[b2 b1 b2 b1@4 f#2]/2", AE: "e2@2 f#2@2 g2 f#2 g2@2", AF: "e2@2 f#2@2 g2 f#2 e2 g2", AG: "a2@2 b2@2 c3 b2 c3@2",
  AH: "a2@2 b2@2 c3 b2 c3 a2", AI: "e2@4 f#2@3 f#2 g2@2 f#2@2 g2@2 f#2@2", AJ: "a2@4 b2@3 b2 c3@2 b2@2 c3@2 b2@2",
  AK: "a2@4 b2@3 b2 c3@2 b2@2 ~@4",
})).s("gm_electric_bass_finger").gain(0.64)

// other · tuba · "Judge"
const tuba = note(`<
  ~@34 A@2 B@2 ~@25 C D E F G H I J K L M N O P Q R S T U V W@2 X@2 W@2 X@2 W@2 X@2 W@2 X@2 W@2 X@2 W@2 X@2 W@2 X@2 W@2
  X@2 W@2 X@2 W Y ~@4
>`.pickRestart({
  A: "[~@5 [e4,g4,a#4]@16 [e4,g4,b4]@16 [e4,g4,a#4]@4 [e4,g4,b4]@4 [e4,g4,c5]@4 [e4,g4,b4]@8 [e4,a4]@4 [e4,g4]@3]/2", // Edim Em Edim Em C Em A5 Em
  B: "[~ [e4,a4]@4 [d#4,f#4,a#4]@16 [d#4,f#4,b4]@16 ~@27]/2", C: "[e4,g4,a#4] [e4,g4,b4]",
  D: "a#4 b4 c5 b4@2 a4 g4 a4, ~ [e4,g4] ~ e4", E: "[d#4,f#4,a#4] [d#4,f#4,b4]", F: "b3@4 ~@3 f#4",
  G: "[b3,a4] a4 [b3,a4]@4 g4@2 f#4@2 e4@2 b3@2 e4@2", H: "~ b3 a#3 b3 c4 b3 a3 g3",
  I: "e3 c4 [e3,b3] c4 [e3,d4] c4 [e3,b3] c4", J: "[e3,c4] ~@6 a4", K: "[b3,b4] b4 [b3,e4] e4 b3!2 [b3,e4] e4",
  L: "[b3,g4] g4 [b3,g4] g4 [b3,g4]@3 [b3,g4]", M: "[c4,a4]@2 a4@2 [c4,e4]@2 g4@2 [a3,a4]@2 g4@3 e4 g4@2",
  N: "[c4,e4] e4 [c4,e4] e4 [a3,e4]@3 e4", O: "[b3,b4] b4 g4 [b3,g4] b3!2 [b3,e4] e4",
  P: "[b3,g4] g4 [b3,e4] e4 b3 b3@3", Q: "[c4,a4]@4 c4@2 d4 e4 f#4@2 g4@2 a4@2 g4@2", R: "[c4,e4,a4]",
  S: "[b3,g4]@3 b3!2 e4 f#4 g4", T: "g4 b3 g4 f#4 [e4,g4]@3 b3", U: "[c4,e4] e4 [c4,e4] f#4 [e4,g4] f#4 [e4,g4] f#4",
  V: "[c4,e4] a4@3 [a3,e4]@4", W: "e3@4 f#3@3 f#3 g3@2 f#3@2 g3@2 f#3@2", X: "a3@4 b3@3 b3 c4@2 b3@2 c4@2 b3@2",
  Y: "e3@4 f#3@3 f#3 ~@8",
})).s("gm_tuba").gain(0.54)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@4 A@2 B@2 C@7 D@2 E@7 F@3 G@7 H@4 I@8 J K@7 ~@2 L@2 M@2 N O P L@2 Q ~ R@2 S@2 R@2 S@2 R@2 S@2 R@2 S@2 R@2 S@2 R@2
  S@2 R@2 S@2 R@2 S@2 R@2 S@2 R@2 S@2 R@2 S@2 R@2 S@2 R@2 S@2 R@2 ~@4
>`.pickRestart({
  A: "[~@15 e5@6 ~@2 e5@6 ~@3]/2", B: "[~@13 f5@19]/2",
  C: "[~@13 [e4,g4,b4]@32 [c4,f4,a4]@32 [e4,g4,b4]@32 [c4,e4,g4]@3]/7", D: "[~@13 [b3,d#4,f#4,a4]@19]/2",
  E: "[~@6 b4 a4 g4 f#4 [e4,g4,b4]@64 [f#4,a#4,c#5]@32 [e4,g4,b4]@32 [d4,g4,b4]@32 [d4,g#4,b4]@32 [d4,f#4,a4]@22]/7", // Em F# Em G G#dim D
  F: "[~@14 d#4@5 e4@6 f4@7 ~@11 g4@14 g#4@12 a4@16 ~@11, ~@10 d4@75 ~@11, ~@10 a4@59 ~@27, ~@10 f#4@23 f#4@52 ~@11]/3",
  G: "[~@5 [e4,g4,a#4]@16 [e4,g4,b4]@48 [b3,d#4,f#4,a#4]@16 [b3,d#4,f#4,b4]@48 [f#4,a4,c#5]@32 [d4,f#4,a4]@32 [d#4,f#4,a4]@27]/7", // Edim Em Bmaj7 B F#m D D#dim
  H: "[~@5 [e4,g4,a#4]@16 [e4,g4,b4]@48 [b3,d#4,f#4,a#4]@16 [b3,d#4,f#4,b4]@16 b3@27]/4", // Edim Em Bmaj7 B
  I: "[~@5 [e4,g4,b4]@64 [f4,a4,c5]@64 [e4,g4,b4]@64 [c4,e4,g4]@32 [b3,d#4,f#4]@27]/8", // Em F Em C B
  J: "~@5 b5@9 a#5 a5 g#5 g5 f#5 f5 e5 d#5 d5 c#5 c5 b4 a#4 a4 g#4 g4 f#4 f4",
  K: "[e4 d#4 d4 c#4 c4 b3@32 [f#4,a4,c#5]@16 [f#4,a#4,c#5]@16 [f#4,b4,d5]@32 [g4,b4,d5]@32 [g#4,b4,d5]@32 [d4,f#4,a4]@32 ~@27]/7", // F#m F# Bm G G#dim D
  L: "[[e4,g4,a#4] [e4,g4,b4]@3]/2", M: "[[b3,d#4,f#4,a#4] [b3,d#4,f#4,b4]@3]/2", N: "[f#4,a4,c#5]", O: "[d4,f#4,a4]",
  P: "[d#4,f#4,a4]", Q: "[b3,d#4,f#4,a#4] [b3,d#4,f#4,b4]", R: "[e4,g4,b4]/2", S: "[e4,a4,c5]/2",
})).s("gm_string_ensemble_2").gain(0.8)

// other · tuba · "School Master"
const tuba_2 = note(`<
  ~@17 A@2 B@2 C@4 D@2 ~@7 E@2 F@3 ~@24 G H I ~@17 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2 K@2 J@2
  K@2 J L ~@4
>`.pickRestart({
  A: "[~@5 e4 b4 a#4 b4 c5@2 b4@2 a4@2 b4@2 a4@2 b4@2 c5@2 b4@2 a#4@2 b4@2 c5 b4@2]/2",
  B: "[~ a4@2 g4@2 f#4@2 c#5@2 c5@2 c#5@2 d5@2 c#5@2 c5@2 c#5@2 d5@2 d5@2 c#5@2 c#5@2 b4@3]/2",
  C: "[~@10 [b3,d4]@4 d4@4 c#4@4 d4@4 [b3,e4]@4 d4@4 c#4@4 d4@4 [f3,b3,d4]@4 d4@4 c#4@4 d4@4 [f3,b3,e4]@4 d4@4 c#4@4 d4@4 f#4@2 f#4@2 f#4@8 f#4@4 [b3,g4]@4 [a3,f#4]@4 [g#3,f4]@4 [a3,f#4]@4 f#4@2 e4@7 e4@6 d#4@7]/4", // Bm E5 Bdim E Em D C# D
  D: "[~ e4@52 ~@11]/2",
  E: "[~@5 [e4,g4,a#4]@16 [e4,g4,b4]@16 [e4,g4,a#4]@4 [e4,g4,b4]@4 [e4,g4,c5]@4 [e4,g4,b4]@8 [e4,a4]@4 [e4,g4]@3]/2", // Edim Em Edim Em C Em A5 Em
  F: "[~ [e4,a4]@4 [d#4,f#4,a#4]@16 [d#4,f#4,b4]@16 b3@32 ~@27]/3", G: "[e4,g4,a#4] [e4,g4,b4]",
  H: "a#4 b4 c5 b4@2 a4 g4 a4, ~ [e4,g4] ~ e4", I: "[d#4,f#4,a#4] [d#4,f#4,b4]",
  J: "e4@4 f#4@3 f#4 g4@2 f#4@2 g4@2 f#4@2", K: "a4@4 b4@3 b4 c5@2 b4@2 c5@2 b4@2", L: "e4@4 f#4@3 f#4 ~@8",
})).s("gm_tuba").gain(0.4)

// other · slap bass 2 · "Wife"
const slap_bass_2 = note(`<
  ~@34 A@2 B@2 C D E F G D H I@2 J K L@2 M N O@2 P ~@7 Q R S ~@17 T@2 U@2 T@2 U@2 T@2 U@2 T@2 U@2 T@2 U@2 T@2 U@2 T@2
  U@2 T@2 U@2 T@2 U@2 T V ~@4
>`.pickRestart({
  A: "[~@5 [e4,g4,a#4]@16 [e4,g4,b4]@16 [e4,g4,a#4]@4 [e4,g4,b4]@4 [e4,g4,c5]@4 [e4,g4,b4]@8 [e4,a4]@4 [e4,g4]@3]/2", // Edim Em Edim Em C Em A5 Em
  B: "[~ [e4,a4]@4 [d#4,f#4,a#4]@16 [d#4,f#4,b4]@16 ~@27]/2", C: "~@9 g4@4 a4@4 a#4@4 b4@4 [g4,b4]@4 a#4@3",
  D: "~ [g4,b4]@4 a#4@4 [g4,b4]@4 a#4@4 [g4,b4]@4 c5@4 [g4,b4]@4 a4@3", // G
  E: "~ g4@4 e4@4 [d4,f4,b4]@4 a#4@4 b4@4 d5@4 [d4,f4,c5]@4 b4@3", // Bdim Dm7
  F: "~ [d4,f4,c5]@4 b4@4 [d4,f4,c5]@4 b4@4 [d4,f4,c5]@4 d5@4 [d4,f4,c5]@4 b4@3", // Dm7
  G: "~ [d4,f4,c5]@4 b4@4 [g4,b4]@4 a#4@4 [g4,b4]@4 c5@4 [g4,b4]@4 a#4@3", // Dm7 G
  H: "~ g4@4 f#4@4 [e4,g4]@4 f#4@4 [e4,g4]@4 f#4@4 [e4,g4]@4 f#4@3", // Em
  I: "[~ [e4,g4]@4 f#4@4 f#4@4 f#4@4 f#4@4 b4@16 ~@4 [g3,a#3]@4 ~@4 [g3,a#3]@4 ~@4 [g3,a#3]@4 ~@3]/2", // Em Gm
  J: "~ [g3,a#3]@4 ~@4 [g3,a#3]@4 ~@4 [g3,a#3]@4 ~@4 [g3,a#3]@4 ~@3", // Gm
  K: "~ [g3,a#3]@4 f#4@4 [a3,c4,f#4]@4 f#4@4 [a3,c4,f#4]@4 f#4@4 [a#3,c#4,f#4]@4 f#4@3", // Gm F#dim F#
  L: "[~ [a#3,c#4,f#4]@4 f#4@4 f#4@4 f#4@4 f#4@4 [b3,d4]@8 [b3,d4]@6 [b3,d4]@2 d4@4 d4@4 c#4@4 d4@4 e4@4 d4@4 c#4@3, ~@5 [b3,d4]@8 [a#3,c#4]@8 f#4@14 ~@29]/2", // F# Bm A#m
  M: "~ d4@4 e4@4 d4@4 c#4@4 d4@4 e4@4 d4@4 e4@3", N: "~ d4@4 f#4@4 f#4@4 f4@4 f#4@4 g4@4 f#4@4 f#4@3",
  O: "[~ f#4@4 f#4@4 e4@5 e4@6 f4@7 ~ f#4@10 g4@14 g#4@12]/2", P: "a4 ~", Q: "[e4,g4,a#4] [e4,g4,b4]",
  R: "a#4 b4 c5 b4@2 a4 g4 a4, ~ [e4,g4] ~ e4", S: "[d#4,f#4,a#4] [d#4,f#4,b4]",
  T: "e4@4 f#4@3 f#4 g4@2 f#4@2 g4@2 f#4@2", U: "a4@4 b4@3 b4 c5@2 b4@2 c5@2 b4@2", V: "e4@4 f#4@3 f#4 ~@8",
})).s("gm_lead_8_bass_lead").gain(0.45)

// drums · kick
const kick = s("bd").struct("<~ A@23 B C D E@10 F E@9 F E@5 G H I J@10 K J@53 L ~@4>".pickRestart({
  A: "~ x ~@7 x ~@6", B: "~@2 x ~@16 x ~@12", C: "~@25 x ~@6", D: "~@21 x ~@7 x ~@2", E: "~@13 x ~@15 x ~@2",
  F: "~@5 x ~@7 x ~@7 x ~@7 x ~@2", G: "~@7 x ~@8", H: "~@5 x ~@2", I: "~@2 x!2", J: "~ x ~ x", K: "~ x!3",
  L: "~ x ~@2",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct("<A B@7 C B@15 D E ~ F@10 ~ F@15 G ~@2 H@64 I ~@4>".pickRestart({
  A: "~@13 x ~@2", B: "~@5 x ~@7 x ~@2", C: "~@10 x ~@8 x ~@3 x ~@2 x ~@5", D: "~@5 x ~@10", E: "~ x ~@30",
  F: "~@5 x ~@15 x ~@10", G: "~@5 x ~@22 x ~@3", H: "x!2", I: "x",
})).gain(0.64)

// drums · china
const china = s("cr").struct(`<
  ~@2 A B A C D B E A F A F G F H ~ I J@5 K J L M N O N O P Q R S T S U Q N O N V N S W X Y N S Z AA U AB AC ~ AD AE AF
  AG AH AD AI AJ AG AK AL AG AM AD AN AJ AO AG AP AQ AR AE AS AT AU AV AW ~@42
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~@7 x", C: "~@7 x ~@8", D: "~@13 x ~ x", E: "~@18 x ~@2 x!2 ~@2 x ~@4 x ~", F: "~@13 x ~@2",
  G: "~@5 x ~@7 x ~@2", H: "~@7 x ~@5 x ~@2", I: "~@6 x!5 ~@21", J: "~@5 x ~@10", K: "~@5 x ~ x ~@5 x ~@2",
  L: "~ x ~@13 x ~@16", M: "~ x ~@30", N: "~@5 x ~@15 x ~@10", O: "~@5 x ~@11 x ~@11 x ~@2",
  P: "~@5 x ~@7 x ~@13 x ~ x ~@2", Q: "~@9 x ~@15 x ~@6", R: "~@9 x ~@7 x ~@14", S: "~@5 x ~@7 x ~@7 x ~@7 x ~@2",
  T: "~@5 x ~@11 x ~@14", U: "~@5 x ~@26", V: "~@5 x ~@3 x ~@3 x ~@18", W: "~@5 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@5",
  X: "x ~@8 x ~@11 x ~@10", Y: "~ x ~@11 x ~@11 x ~@6", Z: "~@3 x ~ x ~@15 x ~@10", AA: "~@13 x ~@15 x ~@2",
  AB: "~@5 x ~@8 x ~@13 x ~@3", AC: "~@5 x ~@8 x ~", AD: "x!2", AE: "x!2 ~ x", AF: "x!3 ~@3 x ~", AG: "x ~@2 x ~@2 x ~",
  AH: "x ~@3 x ~ x!2", AI: "x ~@3 x!3 ~", AJ: "x!4", AK: "x ~@7 x ~@7 x ~@7 x ~@2 x ~ x ~@2", AL: "x",
  AM: "~ x ~@2 x ~@3", AN: "x ~@15 x ~@4 x ~@5 x ~@4", AO: "x ~ x!3 ~@2 x", AP: "~ x ~@2 x ~@2 x",
  AQ: "~@2 x ~@2 x ~@2", AR: "x ~@3 x!2 ~@2", AS: "~ x!2 ~", AT: "x ~@2 x!2 ~@3", AU: "x ~@3 x ~@2 x", AV: "~ x ~@2",
  AW: "x!2 ~@2 x ~ x ~",
})).gain(0.64)

stack(overdriven_guitar, bass, tuba, string_ensemble_2, tuba_2, slap_bass_2, kick, snare, china)

More by Pink Floyd