Strudelify

Gloria

Them

KeyE majorTempo123 bpm
0:00/0:00
// Gloria — Them
// 123 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(123/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@4 A@7 B A@2 B A B A@11 C D A@5 B A@17 B A@6 B A@8 B A@3 B A@3 B C D A E A@13 B A F A@2 G H ~@2
>`.pickRestart({
  A: "e1@7 ~ d1@3 ~ a0@4", B: "e1@7 ~ d1@3 ~ a0@3 ~", C: "e1 ~@2 e1 ~ e1 ~@2 e1 ~@2 e1 ~ e1 ~@2", D: "e1 ~@15",
  E: "e1@8 d1@3 ~ a0@4", F: "e1@6 ~@2 d1@3 ~ a0@4", G: "e1@15 ~", H: "e1@3 ~@13",
})).s("gm_acoustic_bass").gain(0.64)

// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@38 A B@2 C ~@54 D E D F G H ~@2>".pickRestart({
  A: "[g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [g#4,b4,e5]@2 ~ [f#4,a4,d5]@2 ~ [e4,a4,c#5]@2 [f#4,a4,d5]@2 ~", // E D A D
  B: "[g#4,b4,e5]@2 ~ [g#4,b4,e5] ~ [g#4,b4,e5]@2 ~ [f#4,a4,d5]@2 ~ [e4,a4,c#5]@2 [f#4,a4,d5]@2 ~", // E D A D
  C: "[g#4,b4,e5]@2 ~ [g#4,b4,e5] ~ [g#4,b4,e5] ~@2 [f#4,a4,d5]@2 ~ [e4,a4,c#5]@2 [f#4,a4,d5]@2 ~", // E D A D
  D: "[g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~@2 [f#4,a4,d5] ~@2 [e4,a4,c#5] ~ [f#4,a4,d5] ~@2", // E D A D
  E: "[g#4,b4,c5,e5] ~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~@2 [f#4,a4,d5] ~@2 [e4,a4,c#5] ~ [f#4,a4,d5] ~@2", // E D A D
  F: "[g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~@2 [f#4,a4,d5] ~@2 [e4,a4,c#5] ~ [f#4,a4,d5]@2 ~", G: "[e4,g#4,b4]",
  H: "[g#4,b4,e5] ~@3", // E
})).s("gm_electric_guitar_muted").gain(0.72)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A@2 B@2 A@24 C D A@8 ~@4 E F G F H E I@2 J E F E F H@2 I F K I K L I H@3 M N L O P Q P Q P Q P C D A@10 B@2 A@8 R S ~
  T
>`.pickRestart({
  A: "~ [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4]", // E Em
  B: "[~ [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~ [g3,b3,e4] ~ [b3,e4]@2 [b3,e4]@2 [g#3,b3,e4] ~ [g3,b3,e4] ~ [g3,b3,e4], ~@7 g3 ~ g#3 ~@6]/2", // E Em E5 E Em
  C: "[g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~@2 [g#4,b4,e5] ~@2 [g#4,b4,e5] ~ [g#4,b4,e5] ~@2", // E
  D: "[g#4,b4,e5] ~@15", E: "[e3,g#3,b3]@5 ~ [f#3,d4]@5 ~ [e3,c#4]@4, ~@3 a3@5",
  F: "g#3@5 ~ [f#3,d4]@6 [e3,c#4]@4, ~@3 a3@5", G: "[e3,g#3,b3]@4 ~@2 [f#3,a3,d4]@5 ~ [e3,a3,c#4]@4",
  H: "[e3,g#3,b3]@5 ~ [f#3,d4]@6 [e3,c#4]@4, ~@3 a3@5", I: "g#3@5 ~ [f#3,a3,d4]@6 [e3,a3,c#4]@4",
  J: "[e3,g#3,b3]@5 ~ [f#3,a3,d4]@5 ~ [e3,a3,c#4]@4", K: "g#3@5 ~ [f#3,a3,d4]@5 ~ [e3,a3,c#4]@4",
  L: "g#3@5 ~ [f#3,d4]@5 ~ [e3,c#4]@4, ~@3 a3@5", M: "[e3,g#3,b3]@2 ~ [f#3,a3,d4]@3 [e3,a3,c#4]@2",
  N: "[e3,g#3,b3]@5 ~ [f#3,a3,d4]@6 [e3,a3,c#4]@4", O: "e4 ~@3",
  P: "[g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~", Q: "[e4,g#4,b4,e5] ~@3",
  R: "[e4,g#4,b4]@13 ~@3", S: "[e4,g#4,b4,e5]@3 ~@13", T: "~ [e3,g#3,b3,e4] ~@14",
})).s("gm_acoustic_guitar_steel").gain(0.38)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  A@28 B C A@12 D E F@2 G H F@2 I@2 F J K G F@2 G L M N O E F J I P J F A@8 B C A@20 Q ~@2 C
>`.pickRestart({
  A: "[g#3,b3,e4]@3 ~ [g#3,b3,e4]@3 ~ [a3,d4,f#4]@3 ~ [a3,c#4,e4]@3 ~", // E D A
  B: "[g#3,b3,e4] ~@2 [g#3,b3,e4] ~ [g#3,b3,e4] ~@2 [g#3,b3,e4] ~@2 [g#3,b3,e4] ~ [g#3,b3,e4] ~@2", // E
  C: "[g#3,b3,e4] ~@15", D: "[e3,g#3,b3]@5 ~ [f#3,d4]@5 ~ [e3,c#4]@4, ~@3 a3@5",
  E: "g#3@5 ~ [f#3,a3,d4]@6 [e3,a3,c#4]@4", F: "[g#3,b3,e4]@5 ~ [f#3,a3,d4]@5 ~ [e3,c#4]@2 b3@2, ~@12 a3 ~@3",
  G: "[e3,g#3,b3]@5 ~ [f#3,d4]@6 [e3,c#4]@4, ~@3 a3@5", H: "[e3,g#3,b3]@5 ~ [f#3,a3,d4]@5 ~ [e3,a3,c#4]@4",
  I: "[e3,g#3,b3]@5 ~ [f#3,a3,d4]@6 [e3,a3,c#4]@4", J: "[g#3,b3,e4]@5 ~ [f#3,a3,d4]@5 ~ [e3,c#4]@2 b3 ~, ~@12 a3 ~@3",
  K: "[e3,g#3,b3]@4 ~@2 [f#3,a3,d4]@5 ~ [e3,a3,c#4]@4", L: "g#3@5 ~ [f#3,d4]@6 [e3,c#4]@4, ~@3 a3@5",
  M: "[g#3,b3,e4]@4 ~@2 [f#3,a3,d4]@5 ~ [e3,c#4]@2 b3@2, ~@12 a3 ~@3", // E D C#m
  N: "[g#3,b3,e4]@5 ~ [f#3,a3,d4]@6 [e3,c#4]@2 b3 ~, ~@12 a3 ~@3", O: "[e3,g#3,b3]@2 ~ [f#3,a3,d4]@3 [e3,a3,c#4]@2",
  P: "[e3,g#3,b3]@4 ~@2 [f#3,d4]@5 ~ [e3,c#4]@4, ~@3 a3@5", Q: "[e3,g#3,b3]@15 ~",
})).s("gm_acoustic_guitar_steel").gain(0.46)

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

// drums · snare
const snare = s("sd").struct("<~@3 A B@24 ~ C B@13 D B@34 ~ E B@20 ~@4>".pickRestart({
  A: "~@8 x!2 ~ x!2 ~ x ~", B: "~ x ~ x", C: "~@11 x!2 ~ x ~", D: "~@3 x", E: "~@10 x!3 ~ x ~",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@79 [~@6 x!2] ~@20 [~@10 x!6] ~@3>").gain(0.8)

// drums · hihat
const hihat = s("hh").struct("<A B@3 C@24 ~@2 C@48 ~@2 C@20 D@2 ~@2>".pickRestart({
  A: "x!2 ~ x", B: "~ x ~ x", C: "x!8", D: "x",
})).gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@100 [~@7 x!2 ~@7] ~@3>").gain(0.72)

// drums · high tom
const high_tom = s("ht").struct("<~@100 [~@4 x!2 ~@10] ~@3>").gain(0.72)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@19 A@4 B A@2 ~@3 A ~@3 A ~@3 A ~@3 A ~@23 A ~ A ~ A ~ A ~ B A@2 ~@3 A ~@3 A ~@7 A ~@3 A@2 ~@2
>`.pickRestart({
  A: "x", B: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2",
})).gain(0.72)

stack(
  bass, electric_guitar_muted, acoustic_guitar_steel, acoustic_guitar_steel_2, kick, snare, low_tom, hihat, mid_tom,
  high_tom, crash
)

More by Them