Strudelify

Un Angelo Blu

Equipe 84

KeyE majorTempo82 bpm
0:00/0:00
// Un Angelo Blu — Equipe 84
// 82 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: Full arrangement: all 65 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(82/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 · synth bass 2
const bass = note(`<
  A B C D E F G H I J K L I A M N O P Q E F G H I J K L I A M N O A B C D P R I J K L I A M N O A S K J Q J Q A B N T P
  Q P I U@3
>`.pickRestart({
  A: "e2 ~ e2 ~ e2 ~ e2 ~ d#2 ~ d#2 ~ d#2 ~ d#2 ~", B: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ b1 ~ b1 ~ b1 ~ b1 ~",
  C: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ b1 ~ b1 ~ b1 ~ b1 ~", D: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 b1 c#2 d#2",
  E: "e1@5 ~ e1 ~ e1@8", F: "f#1@5 ~ f#1@2 b1@3 ~ b1 c#2 d#2@2", G: "e2@5 ~ e2@2 e1@8", H: "f#1@5 ~ f#1@2 b1@6 b1@2",
  I: "a1 ~ a1 ~ a1 ~ a1 ~ b1 ~ b1 ~ b1 ~ b1@2", J: "e2 ~ e2 ~ d#2 ~ d#2 ~ c#2 ~ c#2 ~ b1 ~ b1 ~",
  K: "a1 ~ a1 ~ a1 ~ a1@2 b1 ~ b1 ~ b1 ~ b1@2", L: "e2 ~ e2 ~ d#2 ~ d#2 ~ [c#2,d#2] ~ c#2 ~ b1 ~ b1 ~",
  M: "c#2 ~ c#2 ~ c#2 ~ c#2@2 b1 ~ b1 ~ b1 ~ b1 ~", N: "a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~ a#1 ~",
  O: "a1 ~ a1 ~ a1 ~ a1 ~ b1 ~ b1 ~ b1@2 e1@2", P: "e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~ e2 ~",
  Q: "a1 ~ a1 ~ a1 ~ a1 ~ b1 ~ b1 ~ b1 ~ b1 ~", R: "b1 ~ b1 ~ b1 ~ b1 ~ b1@3 g#1@3 b1@2",
  S: "c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ c#2 ~ b1 ~ b1 ~", T: "a1 ~ a1 ~ a1 ~ a1 ~ b1 ~ b1 ~ b1 ~ e1@2", U: "[e1@19 ~@5]/3",
})).s("gm_synth_bass_2").gain(0.11)

// other · flute
const flute = note("<A B C D E@2 ~@26 A B C D E@2 ~@27>".pickRestart({
  A: "g#5@8 b5@7 ~", B: "b5 a5 g#5@14", C: "f#5", D: "e5 d#5", E: "[e5@19 ~@13]/2",
})).s("gm_flute").gain(0.4).pan(0.2)

// other · electric guitar jazz
const electric_guitar_jazz = note(`<
  A B C D E ~@8 A F G H I J K ~@8 A F G H A B C D L M ~@5 A F G N@2 O ~@5 A F G H I P I J Q@3
>`.pickRestart({
  A: "e3 d#3", B: "c#3@8 b2@2 e2 ~ e2@2 g#2@2", C: "f#2 ~ f#2 ~ f#2@2 b2@2 f#2 ~ f#2 ~ d#3@4", D: "g#3 a3 c3@2",
  E: "e2", F: "c#3 b2", G: "a#2", H: "a2 b2", I: "a3 g#3", J: "e3 f#3", K: "e3@13 ~@3", L: "e3",
  M: "b2 c#3 e3 b2 c#3 e3 b2 c#3 d#3@8", N: "[a2@4 b2@3 e3@5 d#3@4]/2", O: "c#3@3 b2", P: "e3@2 e3 f#3",
  Q: "[e3@19 ~@5]/3",
})).s("gm_electric_guitar_jazz").gain(0.52).pan(0.4)

// chords · tubular bells
const tubular_bells = note("<~@4 A B C D E@5 F@6 A B C D E@5 G@6 ~@4 E@5 H@5 ~ E@5 I@4 J K J L M@3>".pickRestart({
  A: "[g#4,b4] [g4,a#4]", B: "[f#4,a4]@3 ~", C: "[e4,g#4] [c#4,g4]", D: "[b3,f#4]@11 ~@5",
  E: "[[e3,a3,c#4]@2 [f#3,d#4]@2 [g#3,e4] [f#3,d#4] c#4 b3 [a3,c#4]@2 [f#3,d#4]@2 [g#3,e4] [f#3,d#4] c#4 b3 [a3,c#4]@2 [f#3,b3,d#4]@2, ~@8 b3@16 e3@17 ~@15 e3@16 ~@8, ~@24 g#3@9 ~@7 b3@16 g#3@8 ~@16]/5", // A D#m C#m D#m A D#m C#m D#m …
  F: "[e4@8 c4@8 c#4@8 b3@8 [a#3,f#4]@16 [a3,c#4]@14 [g#3,b3]@23 ~@11, g#4 ~@2, ~@8 d#4@7 ~ e4@69 ~@11]/6", // D#m A G#m
  G: "[e4@8 c4@8 c#4@8 b3@8 [a#3,f#4]@16 [a3,c#4]@13 ~ [g#3,b3,e4]@20 ~@14, g#4 ~@2, ~@8 d#4@7 ~ e4@45 ~@35]/6", // D#m A E
  H: "[e4@4 c4@4 c#4@4 b3@4 [a#3,f#4]@8 [a3,c#4]@7 [g#3,b3]@9, g#4@2 ~@3, ~@8 d#4@7 ~ e4@64]/5", // D#m A G#m
  I: "[e4@4 c4@4 c#4@4 b3@4 [a#3,f#4]@8 [a3,c#4]@7 ~, g#4 ~, ~@8 d#4@7 ~ e4@47 ~]/4", J: "a4 g#4", K: "e4@3 f#4",
  L: "e4 f#4", M: "[e4@19 ~@5]/3",
})).s("gm_tubular_bells").gain(0.32).pan(0.7)

// other · oboe
const oboe = note("<A B C D E@2 ~@26 A B C D F@2 ~@9 G H I J K J L M N@2 O@2 P ~ P Q@3>".pickRestart({
  A: "b4@4 f#5@3 d#5", B: "e5@14 f#5 g#5", C: "a#5 b5!2 f#5", D: "c#5 g#5!2 f#5", E: "[e5@13 ~@3]/2",
  F: "[e4 g#4 b4 e4 g#4 b4 e4 g#4 b4 e4 g#4 b4@16 ~@5]/2", G: "b4@3 f#5@4 d#5",
  H: "e5@5 f#5 e5 f#5 e5 f#5 e5 f#5 e5 f#5 e5 f#5", I: "a4@6 b4 c#5 d#5@6 e5 f#5", J: "g#5@5 e5 d#5 b4",
  K: "c#5@8 d#5@6 e5 f#5", L: "c#5 d#5", M: "e5 f#5", N: "g#5/2", O: "[a5@7 e5@9]/2", P: "b4 f#5 b4 e5 f#5 b4 e5 f#5@9",
  Q: "[e5@37 ~@11]/3",
})).s("gm_oboe").gain(0.48)

// chords · viola
const viola = note(`<
  ~@4 A B A B C D C D C E F G H I J A B A B C D C D C E F G H K F L H I M C D C D C E F G H ~@18
>`.pickRestart({
  A: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g3,a#3,e4] ~ [g3,a#3,e4] ~ [g3,a#3,e4] ~ [g3,a#3,e4] ~", // E Edim
  B: "[f#3,a3,e4] ~ [f#3,a3,e4] ~ [f#3,a3,e4] ~ [f#3,a3,e4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~", // F#m7 B
  C: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // A B
  D: "[b3,e4,g#4] ~ [b3,e4,g#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,b3,e4] ~ [f#3,b3,d#4] ~", // E B C#m E B
  E: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~ [g#3,c4,d#4] ~", // E G#
  F: "[g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~", // C#m E
  G: "[a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~", // F#
  H: "[a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~ [a3,c#4,e4] ~", // A
  I: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~", // E
  J: "[e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [e3,a3,c#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~", // A B
  K: "[g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~", // E B
  L: "[a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~", // F# B
  M: "[f#3,b3,e4] ~ [f#3,b3,e4] ~ [f#3,b3,e4] ~ [f#3,b3,e4] ~ [f#3,b3,d#4] ~@7", // Esus2 B
})).s("gm_viola").gain(0.28).pan(0.7)

// chords · music box · F#sus2 C#sus4
const music_box = note(`<
  ~@15
  [~@6 [f#5,g#5] ~, ~@12 c#5 ~@3]
  ~@29
  [~@12 [c#5,f#5,g#5] ~@3]
  ~@10
  [~@12 [c#5,f#5,g#5] ~@3]
  ~@8
>`).s("gm_music_box").gain(0.52).pan(0.9)

// other · synth strings 1
const synth_strings_1 = note(`<
  ~@8 A B A B A C D E F@2 A ~@4 A B A B A C D E G C D H I J K A B A B A C D E L@2 M A B A B A C D E N@8
>`.pickRestart({
  A: "a3 b3", B: "e4 d#4 c#4 b3", C: "e4 d#4", D: "c#4 b3", E: "a#3", F: "[a3@4 b3@3 e4@9]/2", G: "a3@4 b3@3 ~",
  H: "a#3 b3", I: "a3", J: "e3", K: "b3@11 g#3@3 b3@2", L: "[a3@4 b3@3 e4@5 d#4@4]/2", M: "c#4@3 b3",
  N: "[a3@8 ~@24 a3@8 ~@4 d#4@4 ~@16 a3@7 ~@5 d#4@4 e4@38 ~@10, ~@8 b3@24 ~@8 b3@24 ~@7 b3@46 ~@11, ~@7 e4@15 ~@2 e4@14 ~@26]/8",
})).s("gm_synth_strings_1").gain(0.46)

// drums · kick
const kick = s("bd").struct(`<
  A@4 B@7 C B@2 D B E B F B@7 C B@2 C B E B@3 G B H B@3 C B@2 D B E B I B@3 C B@2 C J E B H B I K ~@2
>`.pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~@3", C: "x ~@5 x ~ x ~ x!2 ~@4", D: "x ~@5 x ~ x ~ x!2 ~@2 x ~",
  E: "x ~@5 x ~ x ~ x!3 ~ x ~", F: "x ~@5 x ~ x ~@2 x ~@2 x ~", G: "x ~@2 x!3 ~ x", H: "x ~@5 x ~ x ~@2 x ~@4",
  I: "x ~@5 x ~@3 x!2 ~@4", J: "~@3 x!2 ~@3", K: "x",
})).gain(0.72)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@4 A B A C A D A@6 E A D F B A C A D A@2 F A@3 E A B A@2 F E A D A@2 F A@3 E A D F B A@2 F A@3 E A D F B ~@3
>`.pickRestart({
  A: "x!8", B: "x!7 ~", C: "x ~ x ~ x ~ x ~ x ~ x ~ x ~ x!2", D: "x!5 ~ x ~", E: "x!4 ~@4", F: "~ x!7",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@15 [~ x] ~@29 [~ x] ~@10 [~ x] ~@8>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A ~@3 B ~@8 C ~ A ~@3 B ~@8 A ~@5 B ~@8 C ~ A ~@8 C ~ A ~@3>".pickRestart({
  A: "~@7 x", B: "~@5 x ~ x", C: "~@5 x ~@2",
})).gain(0.48)

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

stack(
  bass, flute, electric_guitar_jazz, tubular_bells, oboe, viola, music_box, synth_strings_1, kick, snare, low_tom,
  hihat, mid_tom, open_hat, crash
)

More by Equipe 84