Strudelify

Hino Nacional Brasileiro

Francisco Manuel da Silva

KeyF majorTempo120 bpm
0:00/0:00
// Hino Nacional Brasileiro — Francisco Manuel da Silva
// 120 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2, 2/4 at bar 53, 4/4 at bar 91) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/2578901; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 94 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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.

// other · violin · "Violin I"
const violin = note(`<
  A B C D E F G H I J K L M N O ~@8 P Q R S T U V W X Y Z AA AB AC ~@6 AD AE AF AG@2 AH AI AJ AK AL ~@8 P Q R S T U V W
  X Y Z AA AB AC ~@6 AD AE AF AG@2 AH AI AJ AK AM AN AO AP
>`.pickRestart({
  A: "~@24 c5 d5 c5 d5 c5 d5 b4 c5",
  B: "f5@4 ~@2 f5@2 f5 g5 f5 g5 f5 g5 e5 f5 a5@4 ~@2 a5@2 a5 bb5 a5 bb5 a5 bb5 ab5 a5", C: "c6@4 f5@8 c5@3 c5",
  D: "f5@3 e5 g5@3 f5 a5@3 g5 bb5@3 a5", E: "gb5@8 g5@8 ~@6 d5@2 d5 e5 d5 e5 d5 e5 db5 d5",
  F: "g5@4 ~@2 g5@2 g5 a5 g5 a5 g5 a5 gb5 g5 bb5@4 ~@2 bb5@2 bb5 c6 bb5 c6 bb5 c6 bb5!2", G: "d6@2 g5@4 g5 f5",
  H: "g5 f5@3 e5@4 f5 e5@3 d5@4 e5 d5@3 c5@4 d5 c5@3 bb4@4", I: "ab4@8 a4@8 ~@6 c5@2 c5 d5 c5 d5 c5 d5 b4 c5",
  J: "f5@4 ~@2 f5@2 f5 g5 f5 g5 f5 g5 e5 f5 a5@4 ~@2 f5@2 f5 g5 f5 g5 f5 g5 e5 f5",
  K: "d5@4 ~@2 g5@2 g5 a5 g5 a5 g5 a5 gb5 g5 bb5@4 ~@2 g5@2 g5 a5 g5 a5 g5 a5 gb5 g5",
  L: "e5@4 ~@2 a5@2 a5 bb5 a5 bb5 a5 bb5 ab5 a5 c6@4 ~@2 a5@2 a5 bb5 a5 bb5 a5 bb5 ab5 a5",
  M: "f5@4 ~@2 bb5@2 bb5 c6 bb5 c6 bb5 c6 a5 bb5 g5@4 ~@2 c6@2 c6 d6 c6 d6 c6 d6 b5 c6", N: "a5@4 f6@8 e6@3 d6",
  O: "c6 ~ e6 ~", P: "~@12 a6@3 a6", Q: "bb6@8 a6@8 ~@4 a6@4 c7 bb6@5 a6@2", R: "a6@8 d7@16 d7 c7@3 bb6@4",
  S: "c7 bb6@3 a6@4 b6 a6@3 g6@4 a6 g6@3 f6@4 g6 f6@3 e6@4", T: "e6@4 d6@4 ~@4 g6@3 g6",
  U: "a6@8 g6@8 ~@4 g6@4 bb6 a6@5 g6@2", V: "g6@2 c7@4 b6 a6",
  W: "bb6 a6@3 g6@4 a6 g6@3 f6@4 g6 f6@3 e6@4 f6 e6@3 d6@4", X: "d6@4 c6@4 ~@2 c6 d6 e6 f6 g6 a6",
  Y: "bb6@4 g6@2 e6@2 c6@2 g6 ~ e6 ~ c6 ~", Z: "~@4 c6@4 f6@3 e6 f6@3 g6", AA: "a6@6 g6@2 a6@6 bb6@2 b6@12 d7 c7@3",
  AB: "f6@2 ~@2 c6@4 f6@3 e6 g6@3 f6", AC: "a6@3 g6 bb6@3 a6 gb6@4 g6@4", AD: "~@7 g6 a6@3 g6 gb6@3 g6",
  AE: "gb6@3 g6 a6@3 g6 g6@6 a6 b6", AF: "c7@4 ~@3 a6 bb6@3 a6 ab6@3 a6",
  AG: "[ab6@3 a6 bb6@3 a6 a6@4 d7@6 c7@2 bb6@2 g6@2 g6@4 f6@4]/2", AH: "~ e6 f6 g6 bb6 a6 e6 g6",
  AI: "db6 d6 bb6 g6 g6@2 f6@2", AJ: "~ g6 a6 bb6 b6 c7 a6 f6",
  AK: "d6@3 e6@2 f6@3 g6@3 a6@2 bb6@3 a6@4 c7@2 bb6@2 a6@2 g6@2 f6@2 e6@2",
  AL: "c6@3 e6@2 d6@3 c6@3 d6@2 e6@3 f6@8 ~@8", AM: "c6@3 e6@2 d6@3 c6@3 d6@2 e6@3 f5@8 f6@8",
  AN: "c6@8 a5@8 f5@8 f5@3 e5@2 f5@3", AO: "a5@3 ab5@2 a5@3 c6@3 b5@2 c6@3 f6@8 ~@8", AP: "a6@4 ~@3 f5 f5@8",
})).s("gm_violin").gain(0.4)

// other · violin · "Violin I" · soft notes
const violin_soft = note(`<
  ~@15 A B C D E F G H I ~@13 J K L M N O P ~@9 A B C D E F G H I ~@13 J K L M N O P ~@12
>`.pickRestart({
  A: "~@3 c6", B: "f6@3 e6 f6@3 g6 a6@3 g6 a6@3 bb6", C: "b6@12 d7 c7@3 f6@8 c6@4 ~@4",
  D: "f6@3 e6 g6@3 f6 a6@3 g6 bb6@3 a6", E: "gb6 g6 ~ c6", F: "g6@3 gb6 g6@3 a6 bb6@3 a6 bb6@3 c7",
  G: "db7@12 e7 d7@3 g6@8 c6@4 ~@4", H: "g6@3 f6 a6@3 g6 bb6@3 a6 c7@3 bb6", I: "ab6 a6 ~@2",
  J: "~@4 c6@4 g6@3 gb6 g6@3 a6", K: "bb6@6 a6@2 bb6@6 c7@2 db7@12 e7 d7@3", L: "g6@2 ~@2 c6@4 g6@3 f6 a6@3 g6",
  M: "bb6@3 a6 c7@3 bb6 ab6@4 a6@4", N: "~@7 f6 g6@3 f6 e6@3 f6", O: "e6@3 f6 g6@3 f6 f6@6 g6 a6", P: "bb6 ~@3",
})).s("gm_violin").gain(0.2)

// other · viola
const viola = note(`<
  ~ A B C D E F G H A I J K L M ~@9 N O P Q R S P T U V W@2 X Y@3 Z AA ~ AB AC AD AE AF AG AH AI AJ AK ~@9 N O P Q R S P
  T U V W@2 X Y@3 Z AA ~ AB AC AD AE AF AG AH AI AJ AL AM AN AO
>`.pickRestart({
  A: "f3 ~ a3 ~", B: "c4 f3@2 c3", C: "f3 g3 a3 bb3", D: "gb3 g3 ~@2", E: "g3 ~ bb3 ~", F: "d4 g3@2 ~",
  G: "c4 ~ c4 ~ c4 ~ c4 ~", H: "f3 ~", I: "d3 ~ bb3 ~", J: "e3 ~ c4 ~", K: "f3 ~ g3 ~", L: "a3 f4@2 ~", M: "c4 ~@3",
  N: "~@2 a3!2 db4@2 e4@2 a4@4 ~@4", O: "~ d4 g3 ~", P: "~ a4 ~ g4 ~ f4 ~ e4", Q: "~ d4 a4 f4 d4@2 ~@2",
  R: "~ g3 b3 d4 g3 ~@3", S: "~ c3 f3 ~", T: "~@4 bb3@2 g3 e3", U: "c3@2 c3 d3 e3 f3 g3 a3 bb3@2 g4@2 e4@2 c4@2",
  V: "bb3 g3 e3 bb3 f3 ~ f3 ~", W: "f3 ~ f3 ~ f3 ~ f3 ~", X: "f3 ~ f3 ~ e3 ~ e3 ~", Y: "e3 ~ e3 ~ e3 ~ e3 ~",
  Z: "e3 ~ e3 ~ f3 ~ f3 ~", AA: "f3 ~@7", AB: "~@2 b3 d4", AC: "g3@4 b3@4 c4@4 g4@2 a4 b4", AD: "c5 ~ db4 e4",
  AE: "a3@4 db4@4 d4@4 a4@2 bb4 c5", AF: "d5 ~ c4!2", AG: "c4 ~ f3 a3", AH: "bb3 g3 c4!2", AI: "bb3!2 a3 f3",
  AJ: "bb3 g3 c4 ~", AK: "c4 ~ f4 ~", AL: "c4@8 ~@8 g4@8 f3@3 e3@2 f3@3",
  AM: "a3@3 ab3@2 a3@3 c4@3 b3@2 c4@3 f4@8 f4@8", AN: "c4 a3 f3 ~", AO: "f4@4 ~@3 f4 f4@8",
})).s("gm_viola").gain(0.4)

// other · viola · soft notes
const viola_soft = note("<~@15 A@4 B@4 C ~@17 D E F ~@9 A@4 B@4 C ~@17 D E F ~@12>".pickRestart({
  A: "f3 ~ f3 ~ f3 ~ f3 ~", B: "e3 ~ e3 ~ e3 ~ e3 ~", C: "f3 ~ f3 ~ f3 ~@3", D: "~@2 a3 c4",
  E: "f3@4 a3@4 bb3@4 f4@2 g4 a4", F: "bb4 ~@3",
})).s("gm_viola").gain(0.2)

// other · cello · "Violoncello"
const cello = note(`<
  ~ A B C D E F G H A I J K L M ~@9 N O P Q R S P T U V W@2 X Y@3 Z AA ~ AB AC AD AE AF AG AH AI AJ AK ~@9 N O P Q R S P
  T U V W@2 X Y@3 Z AA ~ AB AC AD AE AF AG AH AI AJ AL AM AN AO
>`.pickRestart({
  A: "f2 ~ a2 ~", B: "c3 f3@2 c2", C: "f2 g2 a2 bb2", D: "gb2 g2 ~@2", E: "g2 ~ bb2 ~", F: "d3 g2@2 ~",
  G: "c3 ~ c3 ~ c3 ~ c3 ~", H: "f2 ~", I: "d2 ~ bb2 ~", J: "e2 ~ c3 ~", K: "f2 ~ g2 ~", L: "a2 f3@2 ~", M: "c3 ~@3",
  N: "~@2 a2!2 db3@2 e3@2 a2@4 ~@4", O: "~ d3 g2 ~", P: "~ a3 ~ g3 ~ f3 ~ e3", Q: "~ d3 a3 f3 d3@2 ~@2",
  R: "~ g2 b2 d3 g2@2 ~@2", S: "~ c3 f3 ~", T: "~@4 bb3@2 g3 e3", U: "c3@2 c3 d3 e3 f3 g3 a3 bb3@2 g4@2 e4@2 c4@2",
  V: "bb3 g3 e3 bb2 f3 ~ f3 ~", W: "f3 ~ f3 ~ f3 ~ f3 ~", X: "f3 ~ f3 ~ e3 ~ e3 ~", Y: "e3 ~ e3 ~ e3 ~ e3 ~",
  Z: "e3 ~ e3 ~ f3 ~ f3 ~", AA: "f3 ~@7", AB: "~@2 b2 d3", AC: "g2@4 b2@4 c3@4 g3@2 a3 b3", AD: "c4 ~ db3 e3",
  AE: "a2@4 db3@4 d3@4 a3@2 bb3 c4", AF: "d4 ~ c3!2", AG: "c3 ~ f2 a2", AH: "bb2 g2 c3!2", AI: "bb2!2 a2 f2",
  AJ: "bb2 g2 c3 ~", AK: "c3 ~ f3 ~", AL: "c3@8 ~@8 g3@8 f2@3 e2@2 f2@3",
  AM: "a2@3 ab2@2 a2@3 c3@3 b2@2 c3@3 f3@8 f3@8", AN: "c3 a2 f2 ~", AO: "f3@4 ~@3 f3 f3@8",
})).s("gm_cello").gain(0.4)

// other · cello · "Violoncello" · soft notes
const cello_soft = note("<~@15 A@4 B@4 C ~@17 D E F ~@9 A@4 B@4 C ~@17 D E F ~@12>".pickRestart({
  A: "f3 ~ f3 ~ f3 ~ f3 ~", B: "e3 ~ e3 ~ e3 ~ e3 ~", C: "f3 ~ f3 ~ f3 ~@3", D: "~@2 a2 c3",
  E: "f2@4 a2@4 bb2@4 f3@2 g3 a3", F: "bb3 ~@3",
})).s("gm_cello").gain(0.2)

stack(violin, violin_soft, viola, viola_soft, cello, cello_soft)