Strudelify
Us and Them cover art

1973 · The Dark Side of the Moon

Us and Them

Pink Floyd

KeyD majorTempo81 bpm
0:00/0:00
// Us and Them — Pink Floyd
// 81 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: bank select 127 (Roland MT-32 map) read through the MT-32 patch table: ch 3 "Elec Gtr 2" Sitar -> sitar
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(81/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 · pad halo · "SynCalliop"
const pad_halo = note(`<
  ~@10 A B C D E@2 F ~@3 A B C D E@2 G H ~@2 I J K L M N O P Q R S D T U V ~@3 Q B S D E@2 W X ~@2 Y Z AA AB AC@2 AD AB
  AE AF AG AH E@2 AI ~@3 AE AF AG AH E@2 AJ ~@3 Y AK AL AM AN AO AP AQ ~@2
>`.pickRestart({
  A: "a4@3 ~ a4 ~@3 a4 ~@3 a4 ~@3", B: "a4 ~@3 a4 ~@3 a4 ~@3 a4@3 ~", C: "b4@3 ~ b4 ~@3 b4 ~@3 b4 ~@3",
  D: "b4 ~@3 b4 ~@3 b4 ~@3 b4 ~@3", E: "[~@6 c#5 ~ c#5@3 ~ e5 ~ c#5@5 ~@3 c#5 ~ c#5@3 ~ a4@3 ~]/2",
  F: "b4 ~ c#5 b4@2 ~ c#5 b4@2 ~@7", G: "b4 ~ c#5 b4@2 ~@10 c#5", H: "d5 ~@15",
  I: "[b4,d5,f#5] ~ [b4,d5,f#5] ~ [a4,c#5,e5] ~ [b4,d5,f#5]@3 ~@5 [b4,d5,f#5] [a4,c#5,e5]", // Bm A Bm A
  J: "[b4,d5,f#5] ~@5 [b4,d5,f#5] [a4,c#5,e5] [b4,d5,f#5]@3 ~ [a4,c#5,e5]@3 ~", // Bm A Bm A
  K: "[a4,d5,f#5]@14 [b4,d5,g5] [a4,d5,f#5]", L: "[g4,c5,e5]@5 ~@10 [a4,e5]",
  M: "[b4,f#5] ~ [b4,f#5]@3 ~ [b4,f#5]@3 ~@5 [b4,f#5] [a4,e5]", N: "[b4,f#5]@3 ~ [b4,f#5]@2 ~ [a4,e5] [b4,f#5]@3 ~@5",
  O: "[a4,f#5]@3 ~ [a4,f#5] ~ [a4,f#5]@5 ~ [b4,g5]@3 ~", P: "[g4,e5]@5 ~@3 [g4,c5,e5]@5 ~@3",
  Q: "a4@2 ~@2 a4 ~@3 a4 ~@3 a4 ~@3", R: "a4 ~@3 a4 ~@3 a4 ~@3 a4@2 ~@2", S: "b4@2 ~@2 b4 ~@3 b4 ~@3 b4 ~@3",
  T: "b4 ~@6 c#5!2 ~ e5@3 ~ c#5 e5", U: "c#5@3 ~@9 a4@3 ~", V: "b4 c#5 [b4,d5]@5 ~@9",
  W: "[b4,d5] ~ c#5 [b4,d5]@4 ~ d5 ~ c#5 ~ d5 ~ c#5 ~", X: "d5 ~ c#5 ~ d5 ~ c#5 ~ d5 ~ c#5 ~ d5 ~ c#5 ~",
  Y: "[b4,d5,f#5] ~ [b4,d5,f#5] ~ [a4,c#5,e5] ~ [b4,d5,f#5]@3 ~@3 [b4,d5,f#5] ~ [a4,c#5,e5] ~", // Bm A Bm A
  Z: "[b4,d5,f#5] ~ [b4,d5,f#5] ~ [a4,c#5,e5] ~ [b4,d5,f#5]@3 ~@3 [b4,d5,f#5]@3 ~", // Bm A Bm
  AA: "[a4,d5,f#5]@3 ~ [b4,d5,g5] ~ [a4,d5,f#5] ~ [a4,d5,f#5]@3 ~ [b4,d5,g5]@2 e5 ~", AB: "[g4,c5,e5]@5 ~@11",
  AC: "[[b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5]@3 ~@3 [b4,d5,f#5] ~ [a4,c#5,e5] [b4,d5,f#5]@4 ~ [b4,d5,f#5] ~ [a4,c#5,e5] [b4,d5,f#5]@4 ~ [a4,c#5,e5]@3 ~]/2", // Bm A Bm A Bm A
  AD: "[a4,d5,f#5]@3 ~ [b4,d5,g5] ~ [a4,d5,f#5]@5 ~ [b4,d5,g5]@2 e5 ~", AE: "a4@2 a4 ~ a4!2 ~@2 a4!2 ~@2 a4!2 ~@2",
  AF: "a4!2 ~@2 a4!2 ~@2 a4!2 ~@2 a4!2 ~@2", AG: "b4@2 b4 ~ b4!2 ~@2 b4!2 ~@2 b4!2 ~@2",
  AH: "b4!2 ~@2 b4!2 ~@2 b4!2 ~@2 b4!2 ~@2", AI: "b4 ~ c#5 b4@2 c#5 d5@3 ~@7", AJ: "b4 ~ c#5 ~ b4 c#5 [b4,d5]@3 ~@7",
  AK: "[b4,d5,f#5] ~ [b4,d5,f#5]@3 ~ [b4,d5,f#5]@3 ~@3 [a4,c#5,e5]@3 ~", // Bm A
  AL: "[a4,d5,f#5]@3 ~ [a4,d5,f#5]@3 ~ [a4,d5,f#5]@3 ~ [b4,d5] ~ [b4,d5,g5] [g4,c5,e5], ~@6 f#5 ~", // D Bm G C
  AM: "[g4,c5,e5]@3 ~@11 [a4,e5] ~", AN: "[b4,d5,f#5] ~ [b4,d5,f#5] ~ [a4,c#5,e5] ~ [b4,d5,f#5]@3 ~@5 [a4,c#5,e5] ~",
  AO: "[b4,d5,f#5] ~ [b4,d5,f#5] ~ [a4,c#5,e5] ~ [b4,d5,f#5]@3 ~@5 [b4,d5,f#5] ~", // Bm A Bm
  AP: "[a4,d5,f#5]@5 ~@3 [a4,d5,f#5]@6 [a4,d5,g5] [g4,c5,e5]", AQ: "[g4,c5,e5]@11 ~@5",
})).s("gm_pad_halo").gain(0.27)

// chords · pad halo · "SynCalliop" · soft notes
const pad_halo_soft = note("<~@38 A@2 B@2 ~@6 A C B D ~@44>".pickRestart({
  A: "~@2 a4 ~@3 a4 ~@3 a4 ~@3 a4 ~", B: "~@2 b4 ~@3 b4 ~@3 b4 ~@3 b4 ~", C: "~@2 a4 ~@3 a4 ~@3 a4 ~@5",
  D: "~@2 b4 ~@3 b4 ~@3 b4 ~@5",
})).s("gm_pad_halo").gain(0.18)

// other · sitar · "Elec Gtr 2"
const sitar = note(`<
  A@2 B@2 C@2 D@2 A@4 E@2 C@2 F G A@4 E@2 C@2 G@2 H I J K L M J K L M A@2 E@2 C@2 G@2 A@4 E@2 C@2 G@2 H I J K L M J K L
  M A@2 E@2 C@2 G@2 A@4 E@2 C@2 G@2 H I J K L M J K L M N@2
>`.pickRestart({
  A: "~@2 d4 ~ e4 ~ d4 ~ a4 ~ e4 ~ d4 ~ e4 ~",
  B: "[~@2 e4 ~ f#4 ~ e4 ~ b4 ~ f#4 ~ e4 ~ f#4 e4@2 ~ e4 ~ f#4 ~ e4 ~ b4 ~ f#4 ~ e4 ~ f#4 ~]/2",
  C: "~@2 d4 ~ f4 ~ d4 ~ c#5 ~ a4 ~ f4 ~ a4 ~", D: "~@2 d4 ~ g4 ~ d4 ~ b4 ~ g4 ~ d4 g4 d4 ~",
  E: "~@2 e4 ~ f#4 ~ e4 ~ b4 ~ f#4 ~ e4 ~ f#4 ~", F: "~@2 e4 ~ g4 ~ d4 ~ b4 ~ g4 ~ d4 ~ g4 e4",
  G: "~@2 d4 ~ g4 ~ d4 ~ b4 ~ g4 ~ d4 ~ g4 e4", H: "[a3,d4,f#4]@3 ~ [a4,f#5] ~ [g4,e5] ~ [g4,e5]@3 ~ [f#4,d5]@3 ~",
  I: "~@2 a3 ~ e4 ~ a3 ~ [a3,d4]@3 ~ [g#3,c#4]@3 ~", // D5 C#5
  J: "[f#3,b3]@3 ~ [b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~ [b3,d4,f#4] ~ [b3,d4,f#4] [a3,c#4,e4]", // B5 Bm A
  K: "[b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~", // Bm A
  L: "[b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~ [b3,d4,f#4]@3 ~", // Bm
  M: "[g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~ [g3,c4,e4]@3 ~", N: "[[c4,d4,f4]@21 ~@11]/2",
})).s("gm_sitar").gain(0.18)

// bass · acoustic bass · "AcousticBs"
const bass = note(`<
  A@2 B@2 C@2 D@2 A@2 E@2 F@2 G@2 H@2 E@4 F@2 G@2 H@2 I J K L M N K L M N E@2 F@2 G@2 H@2 E@4 F@2 G@2 H@2 I J K L M N K
  L M N E@2 F@2 G@2 H@2 E@4 F@2 G@2 H@2 I J K L M N K L M N O@2
>`.pickRestart({
  A: "[d3,f#3,a3]@5 ~@3 a2@5 ~@3", B: "[d3,f#3,b3]@5 ~@3 a2@5 ~@3", C: "[d3,f3,c#4]@5 ~@3 a2@5 ~@3",
  D: "[d3,g3,b3]@5 ~@3 a2@5 ~@3", E: "[d3,f#3,a3]@5 ~ a2 ~ a2@3 ~ a2@3 ~", F: "[d3,f#3,b3]@5 ~ a2 ~ a2@3 ~ a2@3 ~",
  G: "[d3,f3,c#4]@5 ~ a2 ~ a2@3 ~ a2@3 ~", H: "[d3,g3,b3]@5 ~ a2 ~ a2@3 ~ a2@3 ~", I: "[d2,a2,d3]@11 ~@5",
  J: "[d2,a2,d3]@5 ~@3 [d2,a2,d3]@3 ~ [c#2,g#2,c#3]@3 ~", K: "[b1,b2]@3 ~ [b1,b2]@3 ~ [b1,b2]@3 ~ [b1,b2]@3 ~",
  L: "[b1,b2]@3 ~ [b1,b2]@3 ~ [b1,b2]@3 ~ [a1,a2]@3 ~", M: "[g1,g2]@3 ~ [g2,g3]@3 ~ [g2,g3]@3 ~ [g2,g3]@3 ~",
  N: "[c2,c3]@3 ~ [c2,c3]@3 ~ [c2,c3]@3 ~ [c2,c3]@3 ~", O: "[[d2,d3]@21 ~@11]/2",
})).s("gm_acoustic_bass").gain(0.18).pan(0.1)

// chords · tuba · "Tuba/Pian2"
const tuba = note("<A@2 B@2 C@2 D@2 A@2 ~@86>".pickRestart({
  A: "[[d3,f#3,a3]@27 ~@5]/2", B: "[[d3,f#3,b3]@27 ~@5]/2", C: "[[d3,f3,c#4]@27 ~@5]/2", D: "[[d3,g3,b3]@27 ~@5]/2",
})).s("gm_tuba").gain(0.24).pan(0.9)

// chords · piano · "Tuba/Pian2"
const piano = note(`<
  ~@10 A@2 B@2 C@2 D@2 A@4 B@2 C E F@2 G@2 H I J K H@2 J L A M N B C@2 D@2 A O A@2 B P E@2 D@2 G@2 Q@2 R K Q@2 R K A O B
  P E@2 D@2 A O A O B P E@2 S@2 G@2 ~@10
>`.pickRestart({
  A: "~@8 [d4,f#4,a4]@5 ~@3", B: "~@8 [d4,f#4,b4]@5 ~@3", C: "~@2 d4@2 f4@2 a4@2 [d4,f4,a4]@5 ~@3",
  D: "~@8 [d4,g4,b4]@5 ~@3", E: "~@8 [d4,f4,a4]@5 ~@3", F: "~@8 [d4,g4,b4]@3 ~ [d4,g4,b4]@3 ~", G: "[d4,f#4,a4]@5 ~@3",
  H: "[d4,f#4,b4]@5 ~@3 [d4,f#4,b4]@5 ~@3", I: "[d4,f#4,b4]@5 ~@3 [d4,f#4,b4]@3 ~ [c#4,e4,a4]@3 ~",
  J: "[d4,f#4,g4,b4]@5 ~@3 [d4,f#4,g4,b4]@5 ~@3", K: "[c4,e4,g4]@5 ~@3", L: "[c4,e4,g4]@5 ~@3 [c4,e4,g4]@5 ~@3",
  M: "~@8 [d4,f#4,a4]@4 d4 f#4 d4 f#4", N: "[d4,f#4,b4]@4 ~@4 [d4,f#4,b4]@3 ~ [d4,f#4,b4]@3 ~",
  O: "~@8 [d4,f#4,a4]@3 ~ [d4,f#4,a4]@3 ~", P: "~@8 [d4,f#4,b4]@3 ~ [d4,f#4,b4]@3 ~", Q: "[d4,f#4,b4]@5 ~@3",
  R: "[d4,f#4,g4,b4]@5 ~@3", S: "~@6 [d4,g4,b4] ~ [d4,g4,b4]@3 ~ [d4,g4,b4]@3 ~",
})).s("gm_piano").gain(0.24).pan(0.9)

// chords · string ensemble 1 · "Synth Brs1"
const string_ensemble_1 = note(`<
  A@2 B C D@2 E F G H ~@6 I@2 J ~@7 K@2 L ~@15 M@2 N ~@7 O P N ~@15 Q@2 R ~@7 S@2 N ~ T U ~@2 V U ~@4
>`.pickRestart({
  A: "[a4@27 ~ f#4 a4 b4 a4]/2", B: "b4@5 ~@3 b4@3 ~ b4@3 ~", C: "b4@11 ~@5",
  D: "[~@6 c#5 ~ c#5@3 ~ e5 ~ c#5@6 ~@2 c#5 ~ c#5@3 ~ a4@3 ~]/2", E: "b4 ~ c#5 b4@2 ~ c#5 b4@6 ~ b4 c#5", F: "d5",
  G: "d5@11 ~@5", H: "a4@11 ~@5", I: "[~@12 [d4,g4,b4]@2 [d4,g4,b4] [d4,g4,b4]@4 ~@9 [d4,g4,b4]@4]/2",
  J: "[d4,f#4,a4]@3 ~", K: "[~@12 [d4,g4,b4]@2 [d4,g4,b4] [d4,g4,b4]@6 ~@7 [d4,g4,b4]@4]/2", L: "[d4,f#4,a4]@13 ~@3",
  M: "[~@12 [d4,g4,b4]!3 [d4,g4,b4]@9 ~@4 [d4,g4,b4] ~ [d4,g4,b4]!2]/2", N: "[d4,f#4,a4]@11 ~@5",
  O: "~@12 [d4,g4,b4]@2 ~ [d4,g4,b4]", P: "~@12 [g4,b4]!2 [d4,b4]!2", Q: "~@14 [d4,g4,b4]!2", R: "[f#4,a4]",
  S: "[~@12 [d4,g4,b4] ~ [d4,g4,b4] [d4,g4,b4]@12 ~ [d4,g4,b4] ~ [d4,g4,b4] ~]/2", T: "~@14 [b4,d5,f#5] [a4,c#5,e5]",
  U: "[b4,d5,f#5]@11 ~@5", V: "~@12 [b4,d5,f#5]@2 [b4,d5,f#5] [a4,c#5,e5]",
})).s("gm_string_ensemble_1").gain(0.24).pan(0.2)

// drums · kick
const kick = s("bd").struct("<A@28 B ~ A@26 B ~ A@26 B ~ A@8 B ~>".pickRestart({
  A: "x ~@3 x!2 ~@2", B: "x",
})).gain(0.28).pan(0.9)

// drums · snare
const snare = s("sd").struct(`<
  A@27 B ~ C A@3 B A@3 B A@9 B A@7 B ~ C A@3 B A@3 D A@9 B A@7 E ~ F A@3 B A@3 G ~@2
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@8 x ~ x ~ x!3 ~", D: "~@4 x ~@7 x!3 ~", E: "~@2 x ~@3 x!2",
  F: "~@12 x!2 ~ x", G: "x!4",
})).gain(0.28).pan(0.9)

// drums · hihat
const hihat = s("hh").struct("<A@28 B ~ A@26 B ~ A@26 B ~ A@8 ~@2>".pickRestart({
  A: "x!8", B: "x",
})).gain(0.28).pan(0.9)

// drums · low tom
const low_tom = s("lt").struct("<~@29 [~ x] ~@55 [~@8 x!2 ~@6] ~@10>").gain(0.28).pan(0.9)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@29 [~@5 x ~@2] ~@55 [~@10 x!2 ~@4] ~@10>").gain(0.28).pan(0.9)

// drums · crash
const crash = s("cr").struct(`<
  ~@28 A ~ A ~@3 A ~@3 A ~@9 A ~@7 A ~ A ~@3 A ~@3 A ~@9 A ~@7 A ~ A ~@3 A ~@3 A ~
>`.pickRestart({
  A: "x",
})).gain(0.2).pan(0.9)

stack(
  pad_halo, pad_halo_soft, sitar, bass, tuba, piano, string_ensemble_1, kick, snare, hihat, low_tom, open_hat, mid_tom,
  crash
)

More by Pink Floyd