Strudelify

Asilo 'Republic'

Rossi Vasco

KeyE majorTempo111 bpm
0:00/0:00
// Asilo 'Republic' — Rossi Vasco
// 111 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 50 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 29.
setcpm(111/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 · electric bass finger
const bass = note("<~@4 A@4 B A@4 C A@4 D A@4 E A@4 F A@4 C A@2 G H I J K@2 L M N O@2 P Q R>".pickRestart({
  A: "e2!5 ~ e2 ~ e2 ~ e2 d2@3 a2@2", B: "a1!5 ~ a1 b1@3 ~@6", C: "a1!5 ~ a1 ~ b1@2 ~@6", D: "a1@3 a1@3 a1@2 b1@2 ~@6",
  E: "a1@3 a1@2 ~@3 b1@3 b1@2 ~@3", F: "a1@3 a1@2 ~@3 b1@2 ~@6", G: "e2@3 e2@3 ~@3 e2@3 e2@3 ~",
  H: "~@2 e2@3 e2@3 ~@2 e2@3 ~ e2@2", I: "~@3 a2@2 a2@2 ~ a2@2 a#2@2 b2@2 ~@2", J: "~@5 e2!5 ~ e2 ~ e2 ~ e2",
  K: "d2@3 a2@2 e2!5 ~ e2 ~ e2 ~ e2", L: "d2@3 a2@2 e2!5 ~ e2 ~ e2 ~ d2", M: "~ b1 a1 g1@2 e1 ~@10", N: "~@13 e2!3",
  O: "e2!2 ~ e2 ~ e2 ~ e2 d2@3 a2@2 e2!3", P: "e2!2 ~ e2 ~ e2 ~ d2 ~ b1 a1 g1@2 e1 ~@2", Q: "~@13 e2 b1 d2",
  R: "d#2 e2 b1 d2 e2 e1@2 ~@9",
})).s("gm_electric_bass_finger").gain(0.33)

// bass · electric bass finger · soft notes
const bass_soft = note("<~@4 A@4 B A@4 C A@4 ~ A@4 ~ A@4 ~ A@4 C A@2 ~@3 D@4 E ~ F@2 G ~@2>".pickRestart({
  A: "~@5 e2 ~ e2 ~ e2 ~@6", B: "~@5 a1 ~@10", C: "~@5 a1 ~ a1 ~@8", D: "~@10 e2 ~ e2 ~ e2 ~", E: "d2 ~@15",
  F: "~@2 e2 ~ e2 ~ e2 ~@9", G: "~@2 e2 ~ e2 ~ e2 ~ d2 ~@7",
})).s("gm_electric_bass_finger").gain(0.16)

// chords · distortion guitar
const distortion_guitar = note("<~@27 A ~@3 B C@2 ~@16>".pickRestart({
  A: "[b3,e4,a4]@2 [b3,e4,a4] ~ a4 g#4@2 [b3,e4,g#4] [b3,e4,a4] ~ [b3,e4,a4] ~ a4 g#4 ~@2, ~@4 [b3,e4]@3 ~@5 [b3,e4]@3 ~", // Esus4 E Esus4 E5
  B: "b4", C: "[e5@5 g5@9 ~@2]/2",
})).s("gm_distortion_guitar").gain(0.29)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~ A B C D@4 E D@2 F D G D@2 H@2 I D@4 J F D@3 K D@4 G D@2 L M ~ N O@3 P Q R S T U V
>`.pickRestart({
  A: "[e2,b2,b3] [e2,b2,e3] [e2,b2,b3] [b2,e3,b3] [e2,b2,e3,b3] [e2,b2,b3] [e2,b2,e3] [e2,b2,e3,b3]!2 [b2,e3] [e2,b2,b3] [e2,e3] [d2,a2,d3,a3] a3 [a2,e3,a3,c#4] [e3,a3]", // E5 E D5 A A5
  B: "[e2,b2,e3,b3] [e2,b2,e3] [e2,b2,e3,b3] [e2,b2,e3] [e2,b2,e3,b3]!2 [e2,b2,e3] [e2,b2,e3,b3] [e2,b2,b3] [e2,b2,e3] [e2,b2,e3,b3]!3 [e2,b2,b3] [e2,b2,e3] [e2,b2,e3,b3]", // E5
  C: "[a2,e3,a3] [a2,e3] [a2,e3,a3]!3 [a2,e3] [a2,e3,a3]!2 [b2,f#3,b3] ~@7", // A5 B5
  D: "[e2,b2,e3,b3]!6 [e2,b2,e3] [e2,b2,e3,b3]!4 [d2,a2,d3,a3]@2 [d2,a2,d3,a3] [a2,e3,a3,c#4] c#4", // E5 D5 A
  E: "[a2,e3,a3]!7 [b2,f#3,b3] ~@8", // A5 B5
  F: "[e2,b2,e3,b3]!6 [e2,b2,e3] [e2,b2,e3,b3]!4 [d2,a2,d3,a3]@2 [a2,d3,a3] [a2,e3,a3,c#4] c#4", // E5 D5 A
  G: "[a2,e3,a3]!8 [b2,f#3,b3] ~@7", H: "[e2,b2,e3]!16", I: "[a2,e3,a3]@3 [a2,e3,a3]@3 [a2,e3,a3]@2 [b2,f#3,b3] ~@7",
  J: "[a2,e3,a3]@3 [a2,e3,a3]@2 ~@3 [b2,f#3,b3]@3 [b2,f#3,b3]@2 ~@3", // A5 B5
  K: "[a2,e3,a3]@3 [a2,e3,a3]@2 ~@3 [b2,f#3,b3]@2 ~@6", // A5 B5
  L: "[e2,b2,e3]@3 [e2,b2,e3]@2 ~@4 [e2,b2,e3]@3 [e2,b2,e3]@2 ~@2", // E5
  M: "~@2 [e2,b2,e3]@3 [e2,b2,e3]@2 ~@3 [e2,b2,e3]@3 ~ [e2,b2,e3]@2", // E5
  N: "~@5 [e2,b2,e3,b3]!6 [e2,b2,e3] [e2,b2,e3,b3]!4", // E5
  O: "[d2,a2,d3,a3]@2 [d2,a2,d3,a3] [a2,e3,a3,c#4] c#4 [e2,b2,e3,b3]!6 [e2,b2,e3] [e2,b2,e3,b3]!4", // D5 A E5
  P: "[d2,a2,d3,a3]@2 [d2,a2,d3,a3] [a2,e3,a3,c#4] c#4 [e2,b2,e3] ~@10", Q: "~@13 [e2,b2,e3,b3]!3",
  R: "[e2,b2,e3,b3]!3 [e2,b2,e3] [e2,b2,e3,b3]!4 [d2,a2,d3,a3]@2 [a2,d3,a3] [a2,e3,a3,c#4] c#4 [e2,b2,e3,b3]!3", // E5 D5 A E5
  S: "[e2,b2,e3,b3]!3 [e2,b2,e3] [e2,b2,e3,b3]!4 [d2,a2,d3,a3]@2 [d2,a2,d3,a3] [a2,e3,a3,c#4] c#4 [e2,b2,e3,b3]!3", // E5 D5 A E5
  T: "[e2,b2,e3,b3]!3 [e2,b2,e3] [e2,b2,e3,b3]!4 [d2,a2,d3,a3]@2 [d2,a2,d3,a3] [a2,e3,a3,c#4] c#4 [e2,b2,e3] ~@2", // E5 D5 A E5
  U: "~@13 [e2,b2,e3] [b1,f#2,b2] [d2,a2,d3]", // E5 B5 D5
  V: "[d#2,a#2,d#3] [e2,b2,e3] [b1,f#2,b2] [d2,a2,d3] [d#2,a#2,d#3] [e2,b2,e3] ~@10", // D#5 E5 B5 D5 D#5 E5
})).s("gm_distortion_guitar").gain(0.26).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A@2 B@2 C A@4 D A@2 E@2 F A@4 G A@4 H A@4 D A@2 I J K L M@3 N O P@2 Q R S
>`.pickRestart({
  A: "x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~@2", B: "x", C: "x ~@6 x ~@2 x ~ x ~@3", D: "x!2 ~ x ~ x ~ x!2 ~@7", E: "x!4",
  F: "x ~@2 x ~@2 x ~ x ~@7", G: "x ~@2 x ~@4 x ~@2 x ~@4", H: "x ~@2 x ~@4 x ~@7", I: "x ~@2 x ~@5 x ~@2 x ~@3",
  J: "~@2 x ~@2 x ~@4 x ~@3 x ~", K: "~@3 x", L: "~@5 x!2 ~ x ~ x ~ x ~ x ~", M: "x ~ x ~@2 x!2 ~ x ~ x ~ x ~ x ~",
  N: "x ~ x ~@2 x ~@10", O: "~@13 x!2 ~", P: "x ~ x ~ x ~ x ~ x ~ x ~@2 x!2 ~", Q: "x ~ x ~ x ~ x ~ x ~ x ~@2 x ~@2",
  R: "~@13 x ~@2", S: "~ x ~@3 x ~@10",
})).gain(0.58)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A@2 ~@2 B A@4 C A@2 D@2 ~ A@4 ~ A@4 ~ A@4 C A@2 ~@2 E F G@3 H I G@2 J K L
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@4 x!4 ~@8", C: "~ x ~ x ~@4", D: "x!16", E: "~@11 x ~@4", F: "~@7 x ~@3 x ~@3 x",
  G: "~@3 x ~@3 x ~@3 x ~@3 x", H: "~@3 x ~@12", I: "~@5 x!2 ~@5 x ~@2 x", J: "~@3 x ~@3 x ~@3 x ~@4", K: "~@7 x",
  L: "x!3 ~@5",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@7 x ~@42>").gain(0.58)

// drums · low tom
const low_tom = s("lt").struct("<~@38 [~@9 x!2 ~@5] ~@5 [~@10 x!2 ~@4] ~@5>").gain(0.39)

// drums · mid tom
const mid_tom = s("mt").struct("<~@38 [~@3 x!6 ~@7] ~@5 [~@5 x ~ x!3 ~@6] ~@3 [~@15 x] [~ x ~ x ~@12]>").gain(0.39)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A@2 B ~@2 A@4 C A@4 D A@4 E A@4 F A@4 C A@2 G H ~ I J@3 K L J@2 M L K
>`.pickRestart({
  A: "x!8", B: "x", C: "x!4 ~@4", D: "x ~@2 x ~@2 x ~@9", E: "x ~@2 x ~@4 x ~@2 x ~@4", F: "x ~@2 x ~@4 x ~@7",
  G: "x ~@2 x ~@5 x ~@2 x ~@3", H: "~@2 x ~@2 x ~@4 x ~@3 x ~", I: "~@5 x ~ x ~ x ~ x ~ x ~ x",
  J: "~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x", K: "~ x ~ x ~@12", L: "~@13 x ~ x", M: "~ x ~ x ~ x ~ x ~ x ~ x ~@4",
})).gain(0.39)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~ A ~ A@2 ~ A ~ B A ~@3 C A ~ A ~ D A ~ A ~ E A ~ A ~ B A ~ F G ~ H ~ H ~ H I@4 ~ H
>`.pickRestart({
  A: "x", B: "~ x", C: "x ~@2 x ~@2 x ~ x ~@7", D: "x ~@2 x ~@4 x ~@2 x ~@4", E: "x ~@2 x ~@4 x ~@7",
  F: "x ~@2 x ~@5 x ~@2 x ~@3", G: "~@2 x ~@2 x ~@4 x ~@3 x ~", H: "~@5 x ~@10", I: "~@13 x ~@2",
})).gain(0.32)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@8 A ~@4 B ~@4 C ~@4 D ~@4 E ~@4 B ~@2 F G ~@5 H ~@3 I ~ H>".pickRestart({
  A: "~ x ~@14", B: "~@9 x ~@6", C: "~@5 x ~@2", D: "~@5 x ~@7 x ~@2", E: "~@5 x ~@3 x ~@6", F: "~@5 x ~@8 x ~",
  G: "~@7 x ~@7 x", H: "~@3 x ~@4", I: "~@7 x",
})).gain(0.06)

stack(
  bass, bass_soft, distortion_guitar, distortion_guitar_2, kick, snare, hihat, low_tom, mid_tom, open_hat, crash,
  crash_soft
)

More by Rossi Vasco