Strudelify

supermarket flowers

Alex

KeyG majorTempo90 bpm
0:00/0:00
// supermarket flowers — Alex
// 90 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5822221; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 78 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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.

// other · flute
const flute = note(`<
  A B A C ~@4 D@2 E@3 F G@2 H I J B ~@4 K L K M N@2 ~@11 O P ~@5 Q R Q R S@4 T U V@2 ~@18
>`.pickRestart({
  A: "b4 d5", B: "b4", C: "c5 ~", D: "[~@2 f#5@8 d5@8 ~@12 g5 a5]/2",
  E: "[b5@4 b5!2 a5@6 g5 f#5 g5@10 ~@5 b4 c5 d5@4 d5@3 d5@2 c5@4 c5@2 b4@2]/3", F: "c5 b4 b4@6 ~@6 b4 c5",
  G: "[d5@2 d5@2 d5@2 c5@6 b4 a4 b4@10 ~@8]/2", H: "~ d6!2 b5 c6 b5 a5 g5", I: "g4!2 b4 b4@2 ~@3",
  J: "b4 ~ b4 ~ b4 ~ b4 ~", K: "g4!2 b4 b4@5", L: "~ a4!2 b4 a4 g4!2 d5", M: "~ a4!2 b4 a4 g4!2 d4",
  N: "[g4!2 b4!2 ~ g4 d5 d5@2 c5 b4 a4@2 g4@2 b4]/2", O: "g4@2 g4@2 b4@2 b4@4 e4@2 e4@2 g4 a4",
  P: "b4@4 c5 b4 a4@6 g4 f#4 g4@2", Q: "g5!2 b5 b5@5", R: "~ a5!2 b5 a5 g5!2 d5",
  S: "[g5!2 b5!2 ~ g5 d6 d6@2 c6 b5 a5@2 g5@2 b5@2 g5!2 g5@2 d5!2 b5@2 c6 b5 a5@2 g5 f#5 g5]/4", T: "d5", U: "c5",
  V: "[b4@6 d5 e5]/2",
})).s("gm_flute").gain(0.3)

// other · flute · soft notes
const flute_soft = note(`<
  ~@4 A ~ B@2 ~@22 C D ~ E ~@2 F G@3 H ~@2 I ~@2 J@2 ~@12 K L M@2 K L M@2 ~@5 N@5
>`.pickRestart({
  A: "d5@2 d5 c5@2 d5 c5@2", B: "[~@12 b4 a4 b4@10 ~@8]/2", C: "e5 c5", D: "b5!2", E: "d5@3 ~", F: "b4 d5",
  G: "[~@10 b4@2 b4@2 c5 d5@3 d5@4 c5@6 b4 a4 b4@18]/3", H: "~ d5!2 b4 c5 b4 a4 g4", I: "g4",
  J: "[~ e5!2 f#5 g5 g4!2 b4@2 c5 b4 a4@2 g4!3]/2", K: "d5", L: "c5", M: "b4/2",
  N: "[f#5 e5 d5 c5@2 b4@2 d5@2 b4!2 b4@2 f#4!2 d5@2 c5 b4 a4@2 g4 f#4 g4@17]/5",
})).s("gm_flute").gain(0.2)

// other · flute · "Flöte"
const flute_2 = note(`<
  A B ~ C ~@4 D@2 ~ E@2 F G H I ~ J K ~@4 L M N ~ O ~ P A ~ Q ~@2 R S T U V ~@5 W ~ X ~ X Y Z AA ~@2 AB AC K AD ~@18
>`.pickRestart({
  A: "g5!2", B: "g5@15 ~", C: "a5 ~", D: "[~ d5@4 g4@4 ~@7]/2", E: "[~@13 g4 a4 b4@4 b4@3 b4@2 a4@4 b4@2 a4@2]/2",
  F: "a4 g4 g4@6 ~@6 g4 a4", G: "b4@2 b4@2 b4@2 a4@2 a4@4 g4 a4 g4@2", H: "g4 ~", I: "~ d6 d6@2 c6@4", J: "b4@2 c5 g4",
  K: "g4@15 ~", L: "b4@2 b4@2 d5@2 d5@9 ~", M: "~ a4!5 d5!2", N: "b4!2 d5 d5@5", O: "b4!2 d5!2 ~@4", P: "c5 a4",
  Q: "g4@11 ~@5", R: "d5 f#5", S: "~@10 b4@2 b4@2 c5 d5", T: "d5@2 d5@4 c5@6 b4 a4 b4@2", U: "b4@15 ~", V: "e5 d5",
  W: "a5@2 e5@2 c6@2 a5 f#5", X: "g4 d5 g5 g4 a4 d5 f#5 b4", Y: "c5 f#5 c6 e6 d5 a5 d6 e6",
  Z: "e5 g5 b5 e6 c5 g5 b5 c6", AA: "b5@2 d5 g5!3 f#5 g5", AB: "~ b4@6 b4", AC: "a4", AD: "d5@2 f#5 g5",
})).s("gm_flute").gain(0.25)

// other · flute · "Flöte" · soft notes
const flute_soft_2 = note("<~@4 A ~ B C ~@52 D E F@3 G H ~@7 I J H K>".pickRestart({
  A: "b4@3 a4@2 b4 a4@2", B: "~@12 b4 a4 b4@2", C: "b4 ~", D: "g5", E: "e5", F: "d5", G: "c5", H: "b4", I: "g5!2",
  J: "b5 a5", K: "b4@15 ~",
})).s("gm_flute").gain(0.15)

// other · violin · "Violine"
const violin = note(`<
  ~@3 A B@2 C D ~@4 E D E D F G H I ~@2 J K L M N ~ O ~ P Q ~@3 R S T U V W X Y ~@3 J Z AA ~ AA ~ AB AC AD AE AF AG AH
  AI AJ AK V@2 AJ AK V ~ L AL L AM AN AO AP AQ AH@2
>`.pickRestart({
  A: "~@13 e4 g4 a4", B: "[b4@2 b4!2 b4@2 a4@4 b4 a4!2 g4 g4@10 ~@6 g4 a4]/2", C: "d5@2 d5@4 a4@2 a4@4 g4 f#4 g4@2",
  D: "g4 ~", E: "b4 a4", F: "~ d6!2 b5 c6 b5 a5 g5", G: "g4@2 g4@2 b4@2 b4@2 b4@2 d4@2 d4@2 g4 a4",
  H: "b4@4 c5 b4 a4@2 a4@4 g4 f#4 g4@2", I: "g4", J: "~ e5!2 f#5 g5 g4!2 b4", K: "b4 a4 g4 a4@2 g4!3",
  L: "g4!2 b4 b4@5", M: "~ f#4!2 g4 f#4 e4!2 b3", N: "e4!2 g4 g4@5", O: "e4!2 g4!2 ~@4", P: "e4 c4", Q: "d5!2",
  R: "~@6 g4 a4", S: "c5 d5@3 d5@2 d5 c5@5 d5@2 c5@2", T: "c5 b4@3 ~ b4@3", U: "d5 c5", V: "b4", W: "d5 a5",
  X: "g4@2 g4@2 b4@2 b4@4 e4@2 e4@2 g4 a4", Y: "b4@4 c5 b4 a4@6 g4 f#4 g4@2", Z: "b4 c5 b4 a4@2 g4!3",
  AA: "g5!2 b5 b5@5", AB: "g5!2 b5!2 ~ g5 d6!2", AC: "d6 c6 b5 a5@2 g5@2 b5", AD: "b5 g5!2 g5@2 d5!2 b5",
  AE: "b5 c6 b5 a5@2 g5 f#5 g5", AF: "~@3 g4@5", AG: "f#4", AH: "e4", AI: "b4@2 d5 e5", AJ: "d5", AK: "c5",
  AL: "~ a4!2 b4 c5 b4 a4 g4", AM: "~ a4!2 b4 c5 b4 g4 d4", AN: "g4!2 b4!2 ~ g4 d5!2", AO: "d5 c5 b4 a4@2 g4@2 b4",
  AP: "b4 g4!2 g4@2 d4!2 b4", AQ: "d5 c5 b4 a4@2 g4 f#4 g4",
})).s("gm_violin").gain(0.25)

// other · alto sax · "Altsaxophon"
const alto_sax = note("<~@8 A B ~@20 C D E ~ F G H I ~@2 J K L M N O ~ P Q R S T U V ~@2 W X Y Z ~@18>".pickRestart({
  A: "~@2 d5@2 d5@2 b4 c5@3 b4@2 a4@2 g4@2", B: "g4!2 b4 b4@3 ~@2", C: "b4 g4!2 g4@2 d4!2 b4",
  D: "b4 c5 b4 a4@2 g4 f#4 g4", E: "g4 ~@7", F: "b3@2 g4 a3 b3@2 g4@2", G: "~@6 g4 a4",
  H: "a4 b4@3 b4@2 b4 a4@5 b4@2 a4@2", I: "a4 g4@3 ~@4", J: "~ d5!2 b4 c5 b4 a4 g4", K: "e4 b4 f#4 e4 d4@2 d4@2",
  L: "g4 f#4", M: "b4", N: "a4 c5", O: "g4 d4", P: "b4 c5 b4 a4@2 g4!3", Q: "g4!2 b4 b4@5", R: "~ f#4!2 g4 f#4 e4!2 b3",
  S: "g4 a4 b4 b4@5", T: "~ f#4!2 g4 f#4 e4!2 a3", U: "e4 g4 b4 e5 c4 g4 b4 c5", V: "b4@2 f#4 g4 a4 g4 f#4 g4",
  W: "~ d4", X: "c4", Y: "b3", Z: "b4@2 d5 e5",
})).s("gm_alto_sax").gain(0.25)

// other · alto sax · "Altsaxophon" · soft notes
const alto_sax_soft = note("<~@12 A B C ~ D E F G ~ H I H J K L ~ M N ~@30 O P Q@2 O P Q ~@7 R S T@2>".pickRestart({
  A: "b3 d4", B: "b3 ~", C: "g4 b4", D: "g4 e4", E: "c5@2 d5 c5 b4@2 g4@2", F: "g3@2 b3 e3", G: "g3", H: "g4 d4",
  I: "a4 c5", J: "b3!2 d4!2 d4@4", K: "a3 f#3", L: "g4!2 b4 b4@5", M: "g4!2 b4!2 ~ g4 d5!2", N: "d5 c5 b4 a4@2 g4@2 b4",
  O: "d5", P: "c5", Q: "b4", R: "g4!2", S: "g4 a4", T: "b3",
})).s("gm_alto_sax").gain(0.15)

// other · alto sax · "Altsaxophon"
const alto_sax_2 = note(`<
  ~@5 A B C D E ~@6 F ~ G H ~ I J K L M L ~ N O P Q R ~@4 S T H U V W X Y ~ Z ~ AA ~ AA AB AC ~@3 AD AE H AF ~@18
>`.pickRestart({
  A: "c5", B: "g4 b4", C: "c5 ~", D: "~@2 b4@2 b4@2 g4 f#4 f#4@2 g4@2 f#4@2 e4@2", E: "e4!2 g4!2 g4@2 ~@2",
  F: "e4 ~ e4 ~ d4 ~ d4 ~", G: "b3 ~ b3 ~ b3 ~ b3 ~", H: "b3", I: "g3 d3", J: "a3 e4",
  K: "g4@2 f#4@2 e4@2 d4@2 c4 d4 e4@6", L: "g3 d4 g4 g3 b3 d4 f#4 b3", M: "c4 d4", N: "g4@2 b4@2 ~ e4 b4!2",
  O: "b4 a4 g4 f#4@2 e4@2 g4", P: "g4 e4!2 e4@2 b3!2 g4", Q: "b3 c4 b3 a3@2 g3 f#3 g3", R: "g3 ~@7",
  S: "~@10 b3@2 b3@2 c4 d4", T: "d4@2 d4@4 c4@6 b3 g3 b3@2", U: "d4 c4", V: "g4 b4 f#4 e4 f#4@2 d4@2", W: "b3 a3",
  X: "d4", Y: "a3 c4", Z: "a4@2 e4@2 c5@2 a4 f#4", AA: "g3 d4 g4 g3 a3 d4 f#4 b3", AB: "c4 f#4 c5 e5 d4 a4 d5 f#5",
  AC: "g4!2 b4!2 ~@4", AD: "~@3 d4", AE: "c4", AF: "b4@2 d5 e5",
})).s("gm_alto_sax").gain(0.25)

// other · alto sax · "Altsaxophon" · soft notes
const alto_sax_soft_2 = note("<~@12 A B C ~@45 D E F@2 G H D ~@7 I J K@2>".pickRestart({
  A: "d4 f#4", B: "c4 ~", C: "g3 b3", D: "b4", E: "a4", F: "g4", G: "d5", H: "c5", I: "e4 c4", J: "f#4!2", K: "g3",
})).s("gm_alto_sax").gain(0.15)

// chords · piano
const piano = note(`<
  A B C D C E C E F G H I J K L M N O P Q R S T U J V W V X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM R AN AO AP AQ AR
  AS ~@2 AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BJ BL BM BN BO BP@2
>`.pickRestart({
  A: "[g3,g4,b4] [b3,g4,d5]", B: "[c4,g4,b4]", C: "g3 b3", D: "c3@3 ~", E: "c4", F: "e4 d4", G: "c4 g3", H: "c4 d4",
  I: "g3", J: "[b3,d4] [d4,f#4]", K: "[c4,d4] ~", L: "[b3,d4]@3 ~@4 [b2,b3], ~@3 [d4,f#4]@5",
  M: "[c2,c3,c4,d4]@2 [b3,g4] [a3,f#4]", N: "[e3,b3,e4,g4] [d3,a3,d4,f#4]", O: "[c3,e4]@2 ~ d4, ~ g2",
  P: "[c3,g3,c4,e4] [d3,f#3,d4]", Q: "[g2,g3,b3,d4]", R: "[a2,a3,e4,a4,c5] [c3,c4,e4,g4]",
  S: "[g2,b3,d4] [d2,a3,d4,f#4]", T: "[a2,e4,a4,c5] [c3,g4]", U: "[g2,b3,d4] [d2,g3,d4]",
  V: "[c2,c3,c4,g4] [d2,d3,d4,f#4]", W: "[b3,d4] [d4,f#4], g1 ~@3 b1 ~@3", X: "[b3,e4] d4 [c3,g3,c4]@2, [e3,g3] ~",
  Y: "b3@2 d3 g3 [d3,g3,a3]@4, g2 ~", Z: "[e2,b3,e4] [c2,g3,c4]", AA: "[d3,g3,b3] [d3,f#3,a3]", AB: "[g2,g3] [b3,f#4]",
  AC: "[c4,g4,d5]@3 [d4,a4,d5,f#5]", AD: "[g3,g4] [b3,f#4]", AE: "[c4,g4,d5] ~",
  AF: "[g5,d6]@2 g6 g5 d6@2 g6 g5, [b3,d4] [d4,f#4]", AG: "[c6,g6]@6 g5 c6, c4 ~",
  AH: "[g5,d6]@2 g6 g5 d6@2 g6 g5, [b3,d4]@3 [d4,f#4]@5", AI: "c6@2 g6 f#6, [c4,d4]", AJ: "[e4,b5,e6,g6] [d4,a5,f#6]",
  AK: "[c6,e6] g6 d6 c6 [b5,d6]@2 b5@2, c4 g3", AL: "[e4,g5,e6] [d4,f#5,d6]", AM: "[g3,b4,g5]",
  AN: "[g2,g3,b3,d4] [f#2,d3,a3,d4,f#4]", AO: "[a2,a3]@2 e6@2 [c3,c4]@2 g6 d6, [e4,a4,c5] g4",
  AP: "[g2,g3] [b5,g6] [d2,d3] [a5,f#6], [b3,d4] [d4,f#4]", AQ: "b4!2 d5 d5@5", AR: "c2 g2 c3 e3 d2 a2 d3 f#3",
  AS: "[g1,b4] b4 d5 ~ b1 ~@3, ~@3 d5@5", AT: "g2 d3", AU: "[e2,e3]@2 b3 b2 [c2,c3]@2 c4 c3",
  AV: "[d3,g3,b3]@2 [d3,f#3,a3] [d2,d3]", AW: "[g2,g3] d4 g4 g3 b3 a3@2 d4", AX: "[c2,c3] c4 f#4 c4 f#4@2 g4 b3",
  AY: "[e2,e3] g3 b3 e4 g3 b3@2 g3", AZ: "[b3,d4]@3 d4 ~ g3 ~ b3, ~@2 d4 e4", BA: "[g2,g3] d4 g4 g3 b4 g3 a4 g3",
  BB: "[c2,c3] c4 f#4 c4 f#4 e4 g4 b3", BC: "[e2,e3] c4 f#4 c4 g3 [b3,e4]@2 g3",
  BD: "[e2,e3] b3 [e4,g4] b3 [e4,a4] b3 [d4,f#4] b3", BE: "[g2,g3] d4 b4 g3 a4 g3 g4 g3",
  BF: "[c2,c3] c4 g4 c4 f#4 c4 e4 b3", BG: "[e2,e3] g3 b3 e4 g3 [b3,d4]@2 g3", BH: "[e4,e5,g5,b5]",
  BI: "[g5,d6] [f#5,d6]", BJ: "[c6,d6]", BK: "[g5,d6] d5 d6@2 [f#5,d6]@4", BL: "[b5,d6,e6,g6]@2 b6 b5 [c6,g6,c7]@4",
  BM: "[g6,b6]@2 d6 g6 [d6,g6,a6]@4", BN: "[b5,e6,g6] [g5,c6,g6]", BO: "[d6,g6,b6] [d6,f#6,a6]", BP: "[g5,b5]/2",
})).s("gm_piano").gain(0.25)

// bass · electric bass finger · "E-Bass (Tabulatur)"
const bass = note(`<
  ~@4 A B A B C D E F ~@2 G H C D E I J K J K ~ E ~ E L K M N O P Q R ~@8 J S T U ~@5 K V W X Y ~ Z AA AB AC ~@4 AD ~@10
>`.pickRestart({
  A: "g1 b1", B: "c2", C: "e2 d2", D: "c2 g1", E: "c2 d2", F: "g2", G: "~@7 b1", H: "c2@2 b2 a2", I: "g1", J: "a1 c2",
  K: "g1 d2", L: "e2 c2", M: "e1 c2", N: "d2!2", O: "g1 b2", P: "c3@3 d3", Q: "g2 b2", R: "c3 ~", S: "g1 f#1",
  T: "a1 ~ c2 ~", U: "g1 ~ d2 ~", V: "e1@2 ~ b1 c2@2 ~ c2", W: "d2@2 d2!2", X: "g1 ~@2 g2 ~ a2@2 d3",
  Y: "c2 ~@2 c3 ~@3 b2", Z: "b2@3 ~@2 g2 e2@2", AA: "g2 ~@2 g2 ~ g2 ~ g2", AB: "~ c3 ~ c3 ~ e3 ~ b2",
  AC: "e2 ~ e2 ~ g2 ~@2 g2", AD: "e2",
})).s("gm_electric_bass_finger").gain(0.15)

stack(
  flute, flute_soft, flute_2, flute_soft_2, violin, alto_sax, alto_sax_soft, alto_sax_2, alto_sax_soft_2, piano, bass
)