Strudelify

ããããåããã - Wanna go Home

Matheus Pereira

KeyC majorTempo180 bpm
0:00/0:00
// ããããåããã - Wanna go Home — Matheus Pereira
// 180 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5201408; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · recorder · "Flauta Doce Soprano"
const recorder = note(`<
  ~ A B C D E F G H I J K L M N O P I J K L M N Q R I J K L M N O P I J K L M N Q R S T U D S T V W I J K L M N O P I X
  Y Z AA AB Q R A B C D E F G H AC@2 AD AC AE AC AF AG AC@2 AD AC AD AC AH AE S T U D S T V W AC@2 AD AC AD AC AF AG AC
  AI Y Z AA AB AH AE E F AJ AK@2
>`.pickRestart({
  A: "c6", B: "b5@2 a5 g5", C: "a5 c6!2 a5", D: "g5", E: "~@2 f5 ~@3 c5 ~", F: "~@2 e5 ~@3 c5 ~", G: "~ g5", H: "e5",
  I: "c6 ~@5 g5 ~", J: "b5 ~@5 g5 ~", K: "a5 ~@5 f5 ~", L: "g5 ~@7", M: "f5 ~@5 d5 ~", N: "e5 ~@5 c5 ~",
  O: "d5 ~@3 f#5 ~@3", P: "g5 ~", Q: "d5 ~@3 e5 ~@3", R: "c5 ~", S: "a5 c6@2 a5", T: "c6 a5", U: "g5 e5 g5 a5",
  V: "g5 e5 d5 c5", W: "d5", X: "b5 ~@5 g5@2", Y: "a5 c6!2 d6", Z: "e6@2 e6 d6", AA: "c6 a5 c6 a5", AB: "g5 e5 c6@2",
  AC: "~@2 e5 ~@3 e5 ~", AD: "~@2 f5 ~@3 f5 ~", AE: "~@2 c5 ~@3 c5 ~", AF: "~@2 f#5 ~@3 f#5 ~", AG: "~@2 g5 ~@3 g5 ~",
  AH: "~@2 d5 ~@3 d5 ~", AI: "~@2 e5 ~@3 g5@2", AJ: "~ c5", AK: "[~ e5@3]/2",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Flauta Doce Tenor"
const recorder_2 = note(`<
  ~@9 A B C A D E F G H@2 I H J K L M A B C A D E F G H@2 I H J K L M N@2 O@2 N@2 P@2 A B C A D E F G H@2 I H J K Q R S
  T U T V W X Y Z@4 AA AB AC AD Z@4 AA Z AC AE AF AG AF AH AI@2 AJ AK Z@4 AA AB AC AD Z@4 AA Z AC AE V W X AL@2
>`.pickRestart({
  A: "~ g4@2 c5", B: "~ g4@2 b4", C: "~ a4@2 f4", D: "~ a4@2 c5", E: "~ b4@2 g4", F: "~ f#4@2 a4", G: "b4",
  H: "~@2 c5@2 c5 b4 c5@2", I: "~@2 f5@2 f5 e5 f5@2", J: "~ f5 ~ f5", K: "~ e5 ~ c5", L: "~ d5 ~ g5", M: "e5",
  N: "~@6 c5 ~", O: "~@6 g4 ~", P: "~@6 d5 ~", Q: "~ d5 ~ c5", R: "g4", S: "~ c5 g4 e4", T: "~ e5 c5 g4",
  U: "~ f5 c5 a4", V: "~@2 c5@3 a4 c5@2", W: "g4!2", X: "d4 g4", Y: "c5", Z: "~@2 c5 ~@3 c5 ~", AA: "~@2 a4 ~@3 a4 ~",
  AB: "~@2 g5 ~@3 g5 ~", AC: "~@2 d5 ~@3 d5 ~", AD: "~@2 b4 ~@3 b4 ~", AE: "~@2 g4 ~@3 g4 ~", AF: "~ c5 ~ a4",
  AG: "~ f5 ~ c5", AH: "~ c5 ~ g4", AI: "~ c5 ~ c5", AJ: "~ g4 ~ d5", AK: "g5 d5", AL: "[~ g4@3]/2",
})).s("gm_recorder").gain(0.3)

// other · recorder · "Flauta Doce Tenor" · soft notes
const recorder_soft = note("<~ A B C B D E F G ~@109>".pickRestart({
  A: "~ c5 g4 e4", B: "~ e5 c5 g4", C: "~ f5 c5 a4", D: "~@2 c5@3 a4 c5@2", E: "g4!2", F: "d4 g4", G: "c5",
})).s("gm_recorder").gain(0.2)

// other · recorder · "Flauta Doce Baixo"
const recorder_3 = note(`<
  ~ A B C A D E F A@2 B C A C B G H A B D I D J F K A B C A C B G H A B D I D J F L C@2 B I C M N O A B C A C B G O P Q
  R E R E F A@2 B C A D E F A@2 B C A C B G N A B D I D J F A S@2 B I C T U H A B C A C B G O P Q R E R E F A D E F V@2
>`.pickRestart({
  A: "c4", B: "e4", C: "f4", D: "f4@3 f4", E: "e4 c4", F: "d4 g4", G: "d4", H: "g3!2 a3 b3", I: "c4@2 d4 e4",
  J: "e4 g3", K: "c4 g3 a3 b3", L: "c4!2 d4 e4", M: "f#4", N: "g4", O: "g3@2 a3 b3", P: "c4!2", Q: "e4!2", R: "f4!2",
  S: "[f3,f4]", T: "[f#3,f#4]", U: "[g3,g4]", V: "[~ c4@3]/2",
})).s("gm_recorder").gain(0.3)

stack(recorder, recorder_2, recorder_soft, recorder_3)