Strudelify

Hino do Corinthians

Lauro D'Ávila

KeyG majorTempo144 bpm
0:00/0:00
// Hino do Corinthians — Lauro D'Ávila
// 144 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Piano" named as a piano, played on piano (its synth strings 2 patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5931369; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 56 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(144/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 · piano
const piano = note(`<
  A B C D E F G H I J K L M N O P Q B R D E F S T U V W V P Q B X Y E F Z AA I J K L M N O P Q B R D E F S AB AC AD@2
>`.pickRestart({
  A: "~ [b2,b3,g4,b4] [a2,a3,f#4,a4] [g#2,g#3,e4,g#4]", B: "a2 [e3,a3] c3 [e3,a3] a2 [e3,a3] c3 [e3,a3], [e4,a4]!2",
  C: "a2 [e3,a3] [c3,a4] [e3,a3,b4] [a2,c5] [e3,a3,e5] [c3,c5] [e3,a3,a4]", // A5 F Esus4 Am A5 C A5
  D: "e2 [b2,e3] g2 [b2,e3] e2 [b2,e3] g2 [b2,e3], g4@15 ~", // E5
  E: "e2 [b2,e3] g2 [b2,e3] e2 [b2,e3] g2 [b2,e3], ~ e5 b4 g4", // E5
  F: "b1 [f#2,b2] d#2 [f#2,b2] b1 [f#2,b2] d#2 [f#2,b2], [d#4,f#4]!2", // B5 D#m
  G: "b1 [f#2,b2,f#4] [d#2,f#4] [f#2,b2,g4] [b1,a4] [f#2,b2,c5] [d#2,b4] [f#2,b2,f#5]", // B5 D#m Gmaj7 B7 B G#m B5
  H: "e2 [b2,e3] g2 [b2,e3] e2 [b2,e3] g2 [b2,e3], [g4,b4,e5]@15 ~", I: "~ c5 b4 g4",
  J: "e2 [b2,e3] g2 [b2,e3] e2 [b2,e3] g2 [b2,e3], e4!2", // E5
  K: "e2 [b2,e3,e4] [g2,e4] [b2,e3,f#4] [e2,g4] [b2,e3,b4] [g2,a4] [b2,e3,g4]", // E5 C Bsus4 Em E5 Gsus2 Em
  L: "b1 [f#2,b2] d#2 [f#2,b2] b1 [f#2,b2] d#2 [f#2,b2], f#4@15 ~", // B5
  M: "b1 [f#2,b2] d#2 [f#2,b2] b1 [f#2,b2] d#2 [f#2,b2], ~ a4 f#4 e4", // B5
  N: "b1 [f#2,b2] d#2 [f#2,b2] b1 [f#2,b2] d#2 [f#2,b2], d#4!2", // B5
  O: "b1 [f#2,b2,d#4] [d#2,d#4] [f#2,b2,e4] [b1,f#4] [f#2,b2,a4] [d#2,g4] [f#2,b2,f#4]", // B D# Esus2 B5 B7 D# B5
  P: "e2 [b2,e3] g2 [b2,e3] e2 [b2,e3] g2 [b2,e3], b4@15 ~", Q: "~ b4 a4 g#4",
  R: "a2 [e3,a3,a4] [c3,a4] [e3,a3,b4] [a2,c5] [e3,a3,e5] [c3,c5] [e3,a3,a4]", // A5 F Esus4 Am A5 C A5
  S: "b1 [f#2,b2,a4] [d#2,b4] [f#2,b2,c5] [b1,b4] [f#2,b2,a4] [d#2,g4] [f#2,b2,f#4]", // B7 G#m B B7 D# B5
  T: "e2 [b2,e3] g2 [b2,e3] e2 [b2,e3] g2 [b2,e3], e4@15 ~", U: "~@2 b3 d#4 e4 f#4 g4 a4",
  V: "[b1,b4] [f#2,b2,f#4] [d#2,c5] [f#2,b2,c5] [b1,b4] [f#2,b2,a4] [d#2,g4] [f#2,b2,a4]", // B B5 Cm B B7 D# B7
  W: "e2 [b2,e3] [g2,b3] [b2,e3,d#4] [e2,e4] [b2,e3,f#4] [g2,g4] [b2,e3,a4], b4 ~@3", // E5 G Emaj7 E Bsus4 G Esus4
  X: "a2 [e3,a3] c3 [e3,a3] a2 [e3,a3] c3 [e3,a3], ~ a4 g4 f#4", Y: "e2 [b2,e3] g2 [b2,e3] e2 [b2,e3] g2 [b2,e3], g4!2",
  Z: "b1 [f#2,b2,f#4] [d#2,g4] [f#2,b2,a4] b1 [f#2,b2] [d#2,a4] [f#2,b2,g4], ~@2 b4 ~", AA: "f#4 e4",
  AB: "[e4,e5]@4 [d#4,d#5] [e4,c5,e5] ~ [d#4,d#5] [b3,b4] [c4,a4,c5] ~ [b3,b4] [a3,a4] [b3,g4,b4] ~ [a3,a4]", // E D# C D# B F B A …
  AC: "[g3,g4] [a3,f#4,a4] ~ [g3,g4] [f#3,f#4] [g3,e4,g4] ~ [f#3,f#4] [e2,e3,b3,e4]@4 ~@4", // G D G F# C F# E5
  AD: "[[e1,e2,g4,b4,e5,g5]@15 ~]/2", // Em
})).s("gm_piano").gain(0.72)

// chords · string ensemble 1 · "Violinos"
const string_ensemble_1 = note(`<
  A B C D E F G H I J K L M N O P Q R@2 S@2 T@2 U V W X W P Q R@2 Y Z AA AB AC I J K L M N O P Q R@2 S@2 T@2 AD AE AF@2
>`.pickRestart({
  A: "~ [g4,b4] [f#4,a4] [e4,g#4]", B: "[e4,a4]!2", C: "a4@2 ~ b4 c5 e5 c5 a4, ~@2 a4@5 ~", D: "g4",
  E: "~ e5 b4 g4, g4@3 ~", F: "[d#4,f#4]!2", G: "~ f#4!2 g4 a4 c5 b4 f#5", H: "[g4,e5]", I: "~ c5 b4 g4", J: "e4!2",
  K: "~ e4!2 f#4 g4 b4 a4 g4", L: "f#4", M: "~ a4 f#4 e4", N: "d#4!2", O: "~ d#4!2 e4 f#4 a4 g4 f#4",
  P: "~@4 f#4 e4 ~ f#4 g4 f#4 ~ g4 a4 g4 ~ a4, b4", Q: "b4 ~@3 [g4,b4]@4 [f#4,a4]@4 [e4,g#4]@4", R: "[e4,a4]/2",
  S: "[e4,g4]/2", T: "[d#4,f#4]/2", U: "[g4,b4]", V: "~@2 b3 d#4 e4 f#4 g4 a4", W: "b4 f#4 c5!2 b4 a4 g4 a4",
  X: "b4@2 b3 d#4 e4 f#4 g4 a4", Y: "[e4,g4]", Z: "~ e6 b5 g5", AA: "[d#5,f#5]!2", AB: "~ f#5 g5 a5 b5@2 a5 g5",
  AC: "~@3 e4 ~ g4 ~ b4, f#5 e5", AD: "e5@4 d#5 [c5,e5] ~ d#5 b4 [a4,c5] ~ b4 a4 [g4,b4] ~ a4",
  AE: "g4 [f#4,a4] ~ g4 f#4 [e4,g4] ~ f#4 [b3,e4]@4 ~@4", AF: "[g4,e5]/2",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violas"
const string_ensemble_1_2 = note(`<
  ~ A B C D E F G H I J K L M@2 N O P Q R S T U V W X Y X Z O P AA AB S T AC AD H I J K L M@2 N O P Q R S T U AE AF AG@2
>`.pickRestart({
  A: "~ d#4 e4 b3 d4 c4 a3 e3", B: "c4 ~@3", C: "~ a3 b3 d4 c4 b3 g3 e3", D: "b3 ~@3",
  E: "~@3 f#4@2 d#4@3 b3@3 g3@2 f#3@3", F: "~ f#3!2 g3 a3 c4 b3 f#4", G: "e4@6 e4 ~ e4@2 ~@2 e4@2 ~@2",
  H: "e4 ~@3 c5@4 b4@4 g4@4", I: "~@4 g4@2 b4@2 d5!2 ~@2 b4@2 a4 b4", J: "~ b4 ~@14",
  K: "~@4 a4 g#4 a4 ~@3 f#4 g#4@2 a4@2 b4", L: "c5!2 ~@14", M: "[~@2 b4@2 c5@2 a4 g#4 a4@2 a4 g4 f#4 a4@5 ~@14]/2",
  N: "~@4 f#4 e4 ~ f#4 g4 f#4 ~ g4 a4 g4 ~ a4", O: "~ b4 a4 g#4", P: "a4!2", Q: "~ a4!2 b4 c5 e5 c5 a4",
  R: "g4 a4 b4 d5 c5 b4 g4 e4", S: "~ e5 b4 g4", T: "f#4!2", U: "~ a4 b4 c5 b4 a4 g4 f#4", V: "e4",
  W: "~@2 b3 d#4 e4 f#4 g4 a4", X: "b4 f#4 d#4 b3", Y: "b3@2 b3 d#4 e4 f#4 g4 a4",
  Z: "e4@4 f#4 e4 ~ f#4 g4 f#4 ~ g4 a4 g4 ~ a4", AA: "~ a4 g4 f#4", AB: "g4!2", AC: "~ f#4 g4 a4 b4@2 a4 g4",
  AD: "f#4@2 ~ e4 ~ g4 ~ b4", AE: "e5@4 d#5 e5 ~ d#5 b4 c5 ~ b4 a4 b4 ~ a4", AF: "g4 a4 ~ g4 f#4 g4 ~ f#4 e4@4 ~@4",
  AG: "e4/2",
})).s("gm_string_ensemble_1").gain(0.4)

// bass · synth bass 1 · "Sintetizador de baixo"
const bass = note(`<
  ~ A B C D E F G H D@2 E@4 I J K B C D E@2 D L E M E I J K@2 D@2 E@2 N H D@2 E@4 I J K B C D E@2 O P Q@2
>`.pickRestart({
  A: "a2 d#3 e3 b2 d3 c3 a2 e2", B: "c3@4 a2@3 c3 e3@2 c3@2 a2@2 f#2@2", C: "e2 a2 b2 d3 c3 b2 g2 e2",
  D: "e2@4 g2@3 b2 e3@2 b2@2 g2@2 e2@2", E: "b1@3 d#2 b2@2 f#2@2 b2@2 f#2@2 d#2@2 b1@2", F: "~ f#2!2 g2 a2 c3 b2 f#3",
  G: "[e2,e3]@6 [e2,e3] ~ [e2,e3]@2 ~@2 [e2,e3]@2 ~@2", H: "[e2,e3] ~@15",
  I: "e2@4 f#3 e3 ~ f#3 g3 f#3 ~ g3 a3 g3 ~ a3", J: "b3 ~@15", K: "[a2,a3]@4 a2@3 c3 e3@2 c3@2 a2@2 f#2@2",
  L: "~@2 b2 d#3 e3 f#3 g3 a3", M: "b3@2 b2 d#3 e3 f#3 g3 a3", N: "~@3 e2 ~ g2 ~ b2",
  O: "e3@4 d#3 e3 ~ d#3 b2 c3 ~ b2 a2 b2 ~ a2", P: "g2 a2 ~ g2 f#2 g2 ~ f#2 e2@4 ~@4", Q: "e2/2",
})).s("gm_synth_bass_1").gain(0.64)

// chords · brass section · "Sintetizador de cordas"
const brass_section = note(`<
  A B@2 C@2 D@2 E F G@2 H@4 I J K@2 L@2 M@2 N O P Q P I J R@2 S@2 T@3 F G@2 H@4 I J K@2 L@2 M@2 U V W@2
>`.pickRestart({
  A: "~ [g5,b5] [f#5,a5] [e5,g#5]", // G F#m E
  B: "[~ [d#4,d#5] [e4,e5] [b3,b4] [d4,d5] [c4,c5] [a3,a4] [e3,e4] c4@2 a5 b5 c6 e6 c6 a5, a2, [a3,a4]@3 ~@5, c5@5 ~@11, [e5,a5]!2 ~@2]/2", // D# E B D C A E A …
  C: "[~ [a3,a4] [b3,b4] [d4,d5] [c4,c5] [b3,b4] [g3,g4] [e3,e4] [b3,b4]@2 e6@2 b5@2 g5@2, [e2,e5], g5 ~, e3@7 ~@9, [g4,b4]@3 ~@5]/2", // A B D C B G E B …
  D: "[[f#4,f#5]@3 [f#4,f#5]@2 [d#4,d#5]@3 [b3,b4]@3 [g3,g4]@2 [f#3,f#4]@3 ~@2 [f#3,f#4,f#5]@2 [f#3,f#4,f#5]@2 [g3,g4,g5]@2 [a3,a4,a5]@2 [c4,c5,c6]@2 [b3,b4,b5]@2 [f#4,f#5,f#6]@2, b2, [b3,b4] ~@3, d#5@5 ~@3 [d#5,f#5]@8 ~@16]/2", // F# D# B G F# G A C …
  E: "[e3,e4,e5,e6]@6 [e3,e4,e5,e6] ~ [e3,e4,e5,e6]@2 ~@2 [e3,e4,e5,e6]@2 ~@2, [e2,g4,b4]", // E Em
  F: "[e2,e3,e4,e5,e6] ~@3 c6@4 b5@4 g5@4", // E
  G: "[g4@4 [g3,g4]@2 [b3,b4]@2 [d4,d5]!2 ~@2 [b3,b4]@2 [a3,a4] [b3,b4] ~ [b3,b4] e5@2 e5@2 f#5@2 g5@2 b5@2 a5@2 g5@2, [e2,e3], e5!2 ~@2, b4@3 ~@13]/2", // G B D B A B E
  H: "[~@4 [a3,a4] [g#3,g#4] [a3,a4] ~@3 [f#3,f#4] [g#3,g#4]@2 [a3,a4]@2 [b3,b4] [c4,c5]!2 ~@2 a5@4 f#5@4 e5@4 ~@2 [b3,b4]@2 [c4,c5]@2 [a3,a4] [g#3,g#4] [a3,a4]@2 [a3,a4] [g3,g4] [f#3,f#4] [a3,a4]@5 d#5@2 d#5@2 e5@2 f#5@2 a5@2 g5@2 f#5@2, b2, d#5@4 d#5!2 ~@2, [b3,b4,f#5] ~@3, f#4@5 ~@27]/4", // A G# A F# G# A B C …
  I: "[e3,e5,b5]@4 [f#3,f#4,f#5] [e3,e4,e5] ~ [f#3,f#4,f#5] [g3,g4,g5] [f#3,f#4,f#5] ~ [g3,g4,g5] [a3,a4,a5] [g3,g4,g5] ~ [a3,a4,a5], [e2,b4], g4 ~", // E5 F# E F# G F# G A …
  J: "[b3,b5] ~@3 [b4,b5]@4 [a4,a5]@4 [g#4,g#5]@4", // B A G#
  K: "[~@2 d#4@2 ~@2 b3@2 d4@2 c4@2 a3@2 e3@2 ~@2 [a4,a5]@2 [a3,a4,a5]@2 ~ c4 [e4,c5,c6]@2 [c4,e5,e6]@2 [a3,c5,c6]@2 [f#3,a4,a5]@2, a2, c5@3 ~, a3@3 ~ c4 ~@3, [e4,a4,e5,a5]@2 e4@2 [e4,a4,e5,a5]@4 ~@3 [b4,b5] ~@4]/2", // A C Am F#m A5 B
  L: "[~ a3 b3 d4 c4 b3 g3 e3 ~@2 [e5,e6]@2 [b4,b5]@2 [g4,g5]@2, e2, g4@7 ~, b4@3 ~, [e3,e5,g5]@5 ~@3]/2", // E B G Em
  M: "[[d#4,f#4,d#5,f#5]@4 [d#4,f#4,d#5,f#5]@4 ~ [a4,a5] [b4,b5] [c5,c6] [b4,b5] [a4,a5] [g4,g5] [f#4,f#5], [b2,b3], b4@5 ~@3]/2", // D#m A B C B A G F# …
  N: "~@4 g2@3 b2 e3@2 b2@2 g2@2 e2@2, [e4,g4,b4,e5], e2@7 ~, e3 ~", // Em
  O: "~@2 [b2,b3] [d#3,d#4] [e3,e4] [f#3,f#4] [g3,g4] [a3,a4]", P: "f#4!2 c5!2 b4 a4 g4 a4, [b2,b3,d#5], b4 ~",
  Q: "~@2 [b2,b3] [d#3,d#4] [e3,e4] [f#3,f#4] [g3,g4] [a3,a4], [e2,b4,e5], g4@3 ~, e3 ~", // B D# E F# G A E5
  R: "[~ d#4 ~ b3 d4 c4 a3 e3 ~@2 [a4,a5]@2 [g4,g5]@2 [f#4,f#5]@2, [a2,c5], a3@3 ~@5, [a4,e5,a5] ~@3, e4!2 [e4,a4,e5,a5]@2 ~@4]/2", // A G F# Am A5
  S: "[[g4,g5]@2 [g4,g5]@2 ~ [e5,e6] [b4,b5] [g4,g5], [e2,e3], b4@3 ~, e5@5 ~@3]/2", // G E B G E
  T: "[[d#4,f#4,d#5,f#5]@4 [d#4,f#4,d#5,f#5]@4 ~ [f#4,f#5] [g4,g5] [a4,a5] [b4,b5]@2 [a4,a5] [g4,g5] f#4@2 ~ [e3,e4] ~ [g3,g4] ~ [b3,b4], [b2,b3]@3 ~, b4@3 ~ f#5 e5]/3", // D#m F# G A B A G E …
  U: "[e3,e4,e5]@4 [d#3,d#4,d#5] [e3,e4,c5,e5] ~ [d#3,d#4,d#5] [b2,b3,b4] [c3,c4,a4,c5] ~ [b2,b3,b4] [a2,a3,a4] [b2,b3,g4,b4] ~ [a2,a3,a4]", // E D# C D# B F B A …
  V: "[g2,g3,g4] [a2,a3,f#4,a4] ~ [g2,g3,g4] [f#2,f#3,f#4] [g2,g3,e4,g4] ~ [f#2,f#3,f#4] [e2,e3,b3,e4]@4 ~@4", // G D G F# C F# E5
  W: "[e2,e3,g4,b4,e5,g5]/2", // Em
})).s("gm_brass_section").gain(0.32)

// drums · kick
const kick = s("bd").struct("<A B@7 C B@7 C B@12 C B@7 C B@7 C B@8 C ~>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct("<~ A@7 ~ A@7 ~ A@7 ~ A@4 ~ A@6 B ~ A@7 ~ A@7 C ~@2>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~ x ~ x", C: "~@4 x ~@7 x!2 ~ x",
})).gain(0.8)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@36 [x!3 ~@13] ~@19>").gain(0.8)

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

// drums · crash
const crash = s("cr").struct("<~ A ~@7 A ~@6 A@2 ~@5 A@2 ~@3 B A@2 ~@7 A ~@6 A@2 ~@5 A ~ A ~>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.8)

stack(piano, string_ensemble_1, string_ensemble_1_2, bass, brass_section, kick, snare, hihat, mid_tom, open_hat, crash)