Strudelify

romagna mia

PR

KeyC majorTempo185 bpm
0:00/0:00
// romagna mia — PR
// 185 bpm, 3/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 3/4 at bar 2) are rendered on a constant 3/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5907905; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(185/3)

// 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 · tuba · "Clarinetto in Si♭"
const tuba = note(`<
  A B C@2 D E@3 F G@3 H I@3 J ~@33 K L ~@2 M N ~@2 O P ~@2 Q L ~@2 K L ~ R S N ~ T U V ~@6 W P ~@2 X L ~@2 Y Z ~ AA AB
  AC AD W AE AF AG X AH AI AJ Y AK AL AM AB AN J
>`.pickRestart({
  A: "~@11 [c4,c5]@5", B: "[c4,c5]", C: "[f5@3 e5@2 d5@3 c5@3 d5@2 f5@3 f5@5 ~@6 [c4,c5]@5, c4@27 ~@5]/2",
  D: "[c4,c5]@11 [c4,c5]@5", E: "[[a3,a4]@5 g4@11 e5@3 d5@2 c5@3 b4@3 c5@2 d5@3 e5@5 ~@6 [c4,c5]@5, ~@5 g3@37 ~@6]/3",
  F: "[c4,c5]@11 [b3,b4]@5", G: "[d5@16 f5@3 e5@2 d5@3 c5@3 b4@2 a4@3 g4@5 ~@6 [b3,b4]@5, d4@43 ~@5]/3",
  H: "[b3,b4]@11 [a3,a4]@5", I: "[c5@16 g5@3 a5@2 g5@3 f5@3 e5@2 d5@3 c5@5 ~@6 [g3,g4]@5, c4@37 ~@11]/3",
  J: "[c4,c5]@5 ~@11", K: "~@5 e5@3 g5@3 e5@2 g5@3", L: "e5@5 ~@11", M: "~@5 g4@3 a4@3 b4@2 c5@3", N: "d5@5 ~@11",
  O: "~@5 f5@3 g5@3 f5@2 g5@3", P: "f5@5 ~@11", Q: "e5@3 d5@2 c5@3 d5@3 e5@2 f5@3", R: "~@5 a4@3 c5@3 a4@2 c5@3",
  S: "f5@3 c5@2 a4@3 f4@3 a4@2 c5@3", T: "c5@3 d5@2 e5@3 c5@3 g4@2 f4@3", U: "e4@3 c4@2 e4@3 g4@3 c5@2 e5@3",
  V: "g5@5 ~@11", W: "f5@3 e5@2 d5@3 c5@3 d5@2 e5@3", X: "e5@3 d5@2 c5@3 b4@3 c5@2 d5@3",
  Y: "f5@3 e5@2 d5@3 c5@3 b4@2 a4@3", Z: "g4@5 ~@11", AA: "~@5 c5@3 d5@3 e5@2 f5@3",
  AB: "g5@3 a5@2 g5@3 f5@3 e5@2 d5@3", AC: "c5@5 ~@6 a5@5", AD: "a5", AE: "f5@11 a5@5", AF: "a5@11 a5@5",
  AG: "f5@5 e5@11", AH: "e5@11 a5@5", AI: "a5@11 g5@5", AJ: "b5", AK: "g4@11 g5@5", AL: "g5@11 f5@5",
  AM: "e5@5 c5@3 d5@3 e5@2 f5@3", AN: "c5@5 ~@6 [g3,g4]@5",
})).s("gm_tuba").gain(0.4)

// chords · tuba · "Clarinetto in Si♭" · soft notes
const tuba_soft = note(`<
  ~@22 A B C D ~@4 A B E F ~@5 G H I J K L M@3 ~@2 N J O P Q R ~@2 S T U V@2 W ~@2 N X@2 T Y D F Z@3 T AA@4 AB AC@2 AD
  AE@3 AF AG@3 AH AI@3 AJ AK@2 AL AM@3 AN AO@3 AP AQ@3 ~
>`.pickRestart({
  A: "g3@11 g#3@5", B: "f3@11 g3@5", C: "d#3@11 f3@5", D: "d3", E: "d#3@11 d3@5", F: "d#3", G: "g#3@5 a#3@5 ~ c4@5",
  H: "g#3", I: "g3@5 g#3@5 ~ a#3@5", J: "g3", K: "b2", L: "d3@5 c3@5 ~ b2@5", M: "[e3@37 ~@11]/3", N: "~@5 e3@5 ~ f3@5",
  O: "f#3", P: "f3@5 d3@5 ~ e3@5", Q: "f3@11 c4@5", R: "b3", S: "~@5 d3@5 ~ e3@5", T: "f3", U: "d4",
  V: "[c4@27 d4@5]/2", W: "e4@5 ~@11", X: "g3/2", Y: "e3", Z: "e3/3", AA: "[g3@53 a3@5 ~ b3@5]/4", AB: "a3",
  AC: "[a3@27 a3@5]/2", AD: "a3@11 a3@5", AE: "[f3@5 e3@37 ~ a3@5]/3", AF: "a3@11 g3@5", AG: "[b3@43 g3@5]/3",
  AH: "g3@11 f3@5", AI: "[e3@37 ~@6 c4@5]/3", AJ: "c4", AK: "[c4@27 c4@5]/2", AL: "c4@11 c4@5",
  AM: "[a3@5 g3@37 ~ c4@5]/3", AN: "c4@11 b3@5", AO: "[d4@43 b3@5]/3", AP: "b3@11 a3@5", AQ: "[c4@37 ~@11]/3",
})).s("gm_tuba").gain(0.2)

// other · soprano sax · "Sassofono soprano"
const soprano_sax = note("<A B C@2 D E@3 F G@3 H I@3 J ~@78 K L M@2 N O@3 P Q@3 R S@3 T>".pickRestart({
  A: "~@11 a4@5", B: "a4", C: "[a4@27 a4@5]/2", D: "a4@11 a4@5", E: "[f4@5 e4@37 ~ a4@5]/3", F: "a4@11 g4@5",
  G: "[b4@43 g4@5]/3", H: "g4@11 f4@5", I: "[e4@37 ~@6 f4@5]/3", J: "e4@5 ~@11", K: "~@11 c5@5", L: "c5",
  M: "[c5@27 c5@5]/2", N: "c5@11 c5@5", O: "[a4@5 g4@37 ~ c5@5]/3", P: "c5@11 b4@5", Q: "[d5@43 b4@5]/3",
  R: "b4@11 a4@5", S: "[c5@37 ~@6 g4@5]/3", T: "c5@5 ~@11",
})).s("gm_soprano_sax").gain(0.3)

// other · alto sax · "Sassofono contralto"
const alto_sax = note("<A B C D E F G H I J K L M B N O P ~@78 Q R S T U V G W X Y K Z AA AB N AC P>".pickRestart({
  A: "~@11 c4@5", B: "c4", C: "f4@3 e4@2 d4@3 c4@3 d4@2 f4@3", D: "f4@5 ~@6 c4@5", E: "c4@11 c4@5", F: "a3@5 g3@11",
  G: "e4@3 d4@2 c4@3 b3@3 c4@2 d4@3", H: "e4@5 ~@6 c4@5", I: "c4@11 b3@5", J: "d4", K: "f4@3 e4@2 d4@3 c4@3 b3@2 a3@3",
  L: "g3@5 ~@6 b3@5", M: "b3@11 a3@5", N: "g4@3 a4@2 g4@3 f4@3 e4@2 d4@3", O: "c4@5 ~@6 g3@5", P: "c4@5 ~@11",
  Q: "~@11 a4@5", R: "a4", S: "f4@3 e4@2 d4@3 c4@3 d4@2 e4@3", T: "f4@11 a4@5", U: "a4@11 a4@5", V: "f4@5 e4@11",
  W: "e4@11 a4@5", X: "a4@11 g4@5", Y: "b4", Z: "g3@11 g4@5", AA: "g4@11 f4@5", AB: "e4@5 c4@3 d4@3 e4@2 f4@3",
  AC: "e4@5 ~@6 g3@5",
})).s("gm_alto_sax").gain(0.4)

// other · tenor sax · "Sassofono tenore"
const tenor_sax = note(`<
  A B C@2 D E@3 F G@3 H I@3 J ~@5 K L M N ~@4 K L O P ~@5 Q R S T U V W@3 ~@2 X T Y Z AA AB ~@2 AC AD N AE@2 J ~@2 X
  AF@2 AD AG N P AH@3 AD AI@4 B C@2 D E@3 F G@3 H AJ@3 B C@2 D E@3 F G@3 H AK@3 AL
>`.pickRestart({
  A: "~@11 a3@5", B: "a3", C: "[a3@27 a3@5]/2", D: "a3@11 a3@5", E: "[f3@5 e3@37 ~ a3@5]/3", F: "a3@11 g3@5",
  G: "[b3@43 g3@5]/3", H: "g3@11 f3@5", I: "[e3@37 ~@6 f3@5]/3", J: "e3@5 ~@11", K: "g3@11 g#3@5", L: "f3@11 g3@5",
  M: "d#3@11 f3@5", N: "d3", O: "d#3@11 d3@5", P: "d#3", Q: "g#3@5 a#3@5 ~ c4@5", R: "g#3", S: "g3@5 g#3@5 ~ a#3@5",
  T: "g3", U: "b2", V: "d3@5 c3@5 ~ b2@5", W: "[e3@37 ~@11]/3", X: "~@5 e3@5 ~ f3@5", Y: "f#3", Z: "f3@5 d3@5 ~ e3@5",
  AA: "f3@11 c4@5", AB: "b3", AC: "~@5 d3@5 ~ e3@5", AD: "f3", AE: "[c3@27 d3@5]/2", AF: "g3/2", AG: "e3", AH: "e3/3",
  AI: "[g3@53 a3@5 ~ b3@5]/4", AJ: "[e3@37 ~@6 a3@5]/3", AK: "[e3@37 ~@6 g3@5]/3", AL: "c4@5 ~@11",
})).s("gm_tenor_sax").gain(0.2)

// other · baritone sax · "Sassofono baritono"
const baritone_sax = note(`<
  ~ A B A C D E F G H I D H B J K L B M B G H M F M H M H M B M B N B M B O A P Q M B M R S B M T ~ B D B U H F@2 D A D
  H D B V B ~ B D B W A X H G O B D H B Y Z AA A L A AB D E D B H I D H AC J B A L A AB D E D B H I D H AC J AD B
>`.pickRestart({
  A: "f3@5 ~@11", B: "c3@5 ~@11", C: "f#3", D: "g3@5 ~@11", E: "g3@5 e3@5 ~ c3@5", F: "b2@5 ~@11", G: "d#3@5 ~@11",
  H: "d3@5 ~@11", I: "g3@5 d3@5 ~ b2@5", J: "g3@3 a3@2 g3@3 f3@3 e3@2 d3@3", K: "c3@3 ~@8 g3@5", L: "c4@5 ~@11",
  M: "g2@5 ~@11", N: "g2@5 d#3@5 ~ d3@5", O: "e3@5 ~@11", P: "f3@5 c3@5 ~ g#2@5", Q: "f2@5 ~@11",
  R: "g3@5 g#3@5 ~ g3@5", S: "f3@5 d#3@5 ~ d3@5", T: "c3 ~@3", U: "c#3@5 ~@11", V: "c4@5 g3@5 ~ e3@5",
  W: "c3@5 d3@5 ~ e3@5", X: "f3@5 e3@5 ~ d#3@5", Y: "e3@5 e3@5 ~ f3@5", Z: "g3@5 a3@5 ~ a#3@5", AA: "c4@5 d4@5 ~ c4@5",
  AB: "f#3@5 ~@11", AC: "c3@5 c3@3 d3@3 e3@2 f3@3", AD: "c3@5 ~@6 g3@5",
})).s("gm_baritone_sax").gain(0.2)

// other · trumpet · "Tromba in Si♭"
const trumpet = note("<A B C@2 D E@3 F G@3 H I@3 J ~@78 A B C@2 D E@3 F G@3 H I@3 J>".pickRestart({
  A: "~@11 c5@5", B: "c5", C: "[c5@27 c5@5]/2", D: "c5@11 c5@5", E: "[a4@5 g4@37 ~ c5@5]/3", F: "c5@11 b4@5",
  G: "[d5@43 b4@5]/3", H: "b4@11 a4@5", I: "[c5@37 ~@6 g4@5]/3", J: "c5@5 ~@11",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "Tromba in Si♭"
const trumpet_2 = note("<A B C@2 D E@3 F G@3 H I@3 J ~@78 A B C@2 D E@3 F G@3 H K@3 L>".pickRestart({
  A: "~@11 a4@5", B: "a4", C: "[a4@27 a4@5]/2", D: "a4@11 a4@5", E: "[f4@5 e4@37 ~ a4@5]/3", F: "a4@11 g4@5",
  G: "[b4@43 g4@5]/3", H: "g4@11 f4@5", I: "[e4@37 ~@6 f4@5]/3", J: "e4@5 ~@11", K: "[e4@37 ~@6 g4@5]/3",
  L: "c5@5 ~@11",
})).s("gm_trumpet").gain(0.3)

// other · trombone
const trombone = note("<A B C@2 D E@3 F G@3 H I@3 J ~@78 A B C@2 D E@3 F G@3 H I@3 J>".pickRestart({
  A: "~@11 c4@5", B: "c4", C: "[c4@27 c4@5]/2", D: "c4@11 c4@5", E: "[a3@5 g3@37 ~ c4@5]/3", F: "c4@11 b3@5",
  G: "[d4@43 b3@5]/3", H: "b3@11 a3@5", I: "[c4@37 ~@6 g3@5]/3", J: "c4@5 ~@11",
})).s("gm_trombone").gain(0.3)

// other · trombone
const trombone_2 = note(`<
  ~@17 A@4 B@8 A@6 C@2 D@3 C A@2 E F G H I ~ H@3 J K L M B N B@3 H@2 O ~ H@4 N@2 P Q H@2 B@2 H R S T U N@3 H@2 V W B@4
  H@2 X Y Z@2 AA AB@3 AC AD@3 AE AF@3 AG
>`.pickRestart({
  A: "~@5 c4@5 ~ c4@5", B: "~@5 g3@5 ~ g3@5", C: "~@5 a#3@5 ~ a#3@5", D: "~@5 f3@5 ~ f3@5", E: "g3@5 g#3@5 ~ g3@5",
  F: "f3@5 d#3@5 ~ d3@5", G: "c3@5 e3@5 ~ e3@5", H: "~@5 e3@5 ~ e3@5", I: "c4 ~@3", J: "f#3", K: "f3@5 d3@5 ~ e3@5",
  L: "f3@11 c4@5", M: "b3", N: "~@5 a3@5 ~ a3@5", O: "e3@5 ~@11", P: "~@5 g#3@5 ~ g#3@5", Q: "~@5 d#3@5 ~ d#3@5",
  R: "e3@5 e3@5 ~ f3@5", S: "g3@5 a3@5 ~ a#3@5", T: "c4@5 d4@5 ~ c4@5", U: "f3@5 a3@5 ~ a3@5", V: "~@5 e3@5 ~ a3@5",
  W: "a3@11 g3@5", X: "e3@5 ~@6 c4@5", Y: "c4", Z: "[c4@27 c4@5]/2", AA: "c4@11 c4@5", AB: "[a3@5 g3@37 ~ c4@5]/3",
  AC: "c4@11 b3@5", AD: "[d4@43 b3@5]/3", AE: "b3@11 a3@5", AF: "[c4@37 ~@6 g3@5]/3", AG: "c4@5 ~@11",
})).s("gm_trombone").gain(0.2)

// other · trombone
const trombone_3 = note(`<
  ~@17 A@3 B C@8 A@8 D@3 A@3 E F G A H ~ A@3 I J K L M@5 A@2 N ~ A@4 M@3 O A@2 M@2 A P Q R S M@2 T A@2 U V M@4 A@2 W X
  Y@2 Z AA@3 AB AC@3 AD AE@3 AF
>`.pickRestart({
  A: "~@5 g3@5 ~ g3@5", B: "~@5 d#3@5 ~ d#3@5", C: "~@5 d3@5 ~ d3@5", D: "~@5 g#3@5 ~ g#3@5", E: "g3@5 g#3@5 ~ g3@5",
  F: "f3@5 d#3@5 ~ d3@5", G: "c3@5 g3@5 ~ g3@5", H: "g3 ~@3", I: "f#3", J: "f3@5 d3@5 ~ e3@5", K: "f3@11 c4@5", L: "b3",
  M: "~@5 f3@5 ~ f3@5", N: "g3@5 ~@11", O: "~@5 d#3@5 ~ c3@5", P: "e3@5 e3@5 ~ f3@5", Q: "g3@5 a3@5 ~ a#3@5",
  R: "c4@5 d4@5 ~ c4@5", S: "f3@5 f3@5 ~ f3@5", T: "~@5 f#3@5 ~ f#3@5", U: "~@5 g3@5 ~ c4@5", V: "c4@11 b3@5",
  W: "g3@5 ~@6 a3@5", X: "a3", Y: "[a3@27 a3@5]/2", Z: "a3@11 a3@5", AA: "[f3@5 e3@37 ~ a3@5]/3", AB: "a3@11 g3@5",
  AC: "[b3@43 g3@5]/3", AD: "g3@11 f3@5", AE: "[e3@37 ~@6 g3@5]/3", AF: "c4@5 ~@11",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass = note(`<
  ~ A B A C D E F G H I D H B J K L@2 D L M N D O D N D N D L D L P L D L Q R S A D L D T U B D V ~ B D B W H F@2 D A D
  H D B X B ~ B D B Y A Z H G AA B D H B AB AC AD A L A AE D E D B H I D H AF J B A L A AE D E D B H I D H AF J AG B
>`.pickRestart({
  A: "f2@5 ~@11", B: "c2@5 ~@11", C: "f#2", D: "g2@5 ~@11", E: "g2@5 e2@5 ~ c2@5", F: "b1@5 ~@11", G: "d#2@5 ~@11",
  H: "d2@5 ~@11", I: "g2@5 d2@5 ~ b1@5", J: "g2@3 a2@2 g2@3 f2@3 e2@2 d2@3", K: "c2@3 ~@8 g2@5", L: "c3@5 ~@11",
  M: "d#3@5 ~@11", N: "d3@5 ~@11", O: "b2@5 ~@11", P: "g2@5 d#3@5 ~ d3@5", Q: "e3@5 ~@11", R: "f3@5 ~@11",
  S: "f3@5 c3@5 ~ g#2@5", T: "g2@5 g#2@5 ~ g2@5", U: "f2@5 d#2@5 ~ d2@5", V: "c3 ~@3", W: "c#2@5 ~@11",
  X: "c3@5 g2@5 ~ e2@5", Y: "c2@5 d2@5 ~ e2@5", Z: "f2@5 e2@5 ~ d#2@5", AA: "e2@5 ~@11", AB: "e2@5 e2@5 ~ f2@5",
  AC: "g2@5 a2@5 ~ a#2@5", AD: "c3@5 d3@5 ~ c3@5", AE: "f#2@5 ~@11", AF: "c2@5 c2@3 d2@3 e2@2 f2@3",
  AG: "c2@5 ~@6 g2@5",
})).s("gm_tuba").gain(0.2)

// drums · kick
const kick = s("bd").struct("<A B@13 C D B@32 ~ B@15 ~ B@29 C D B@13 C D B>".pickRestart({
  A: "~@11 x ~@4", B: "x", C: "x ~@4 x ~@5 x ~@4", D: "x ~@10 x ~@4",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct("<~ A@13 B C D A@30 ~@2 A@14 ~@2 A@29 B C A@13 B C D>".pickRestart({
  A: "~@5 x ~@5 x ~@4", B: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", C: "x ~@10 x ~@4", D: "x",
})).gain(0.2)

stack(
  tuba, tuba_soft, soprano_sax, alto_sax, tenor_sax, baritone_sax, trumpet, trumpet_2, trombone, trombone_2, trombone_3,
  bass, kick, snare
)

More by PR