Strudelify

Smiles and Tears

Ari17

KeyG majorTempo70 bpm
0:00/0:00
// Smiles and Tears — Ari17
// 70 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/3643801; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 97 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(70/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
const violin = note(`<
  ~@9 A B C D E F G H I A B C D E F G H I J K L M N K O P Q ~@22 R@3 S T U@2 V W X Y Z AA X AB AC AD X Y Z AA X AB AE AF
  AG AH AI AJ AK AL@2 AM@2 AN@2 AO AP AQ
>`.pickRestart({
  A: "~@5 d4 g4 a4", B: "b4@2 b4 d5 a4@2 a4 b4", C: "g4@4 ~ g4 b4 a4", D: "g4@2 b4 d5 c#5@2 c#5 d5", E: "d5@6 ~ b4",
  F: "g4@3 b4 a4@2 d5@2", G: "e5@6 b4 a4 g4@6 e4@2", H: "g4@3 b4 a4@2 g4 f#4", I: "g4", J: "~@5 g4 b4 d5",
  K: "e5@2 g5@2 f#5@3 d5", L: "b4 d5 b4@4 a4 b4", M: "g4@2 b4@2 a4@3 g4", N: "g4@3 f#4 f#4@3 ~", O: "b4 f#4 a4 g4@4 e4",
  P: "g4@2 g4 b4 a4@2 g4 f#4", Q: "g4 ~", R: "[b5@10 a5 g5]/3", S: "g5 f#5", T: "b5 a5", U: "[g5@3 a5]/2",
  V: "g5@14 b5 a5", W: "g5@3 e5@2 d5@3", X: "g5 a5", Y: "b5 a5 g5 f#5", Z: "g5@4 a5@3 a5", AA: "d5 e5 f#5 a5",
  AB: "d6@3 b5@4 ~", AC: "~ e5 g5@2 ~ e5 a5@2", AD: "~@2 g5 a5 b5@2 b5 c6 d6@2 d6 c6 b5 a5 g5@2",
  AE: "~ e5 g5 b5 a5@2 g5 f#5", AF: "g5@6 b4 d5", AG: "e5@4 g5@4 f#5@6 g5 a5", AH: "b5 d6 a5 d6 g5@4",
  AI: "g5@2 a5 a#5 a5@2 e5@2", AJ: "g5", AK: "g5@2 a5 a#5 a5@3 d6", AL: "[e6@6 b5 a5 g5@16 ~@8]/2",
  AM: "[~@7 e5@2 g5@4 a5@2 a#5@2 a5@8 ~@7]/2", AN: "[~@9 g5@4 a5@2 a#5@2 a5@8 g5@5 a5@2]/2",
  AO: "a#5@2 ~ a5@4 g5@5 g4@2 b4@2", AP: "~ d5@2 b4@2 ~ d5@2 g5@2 ~ b5@2 d6@2 ~", AQ: "g6@15 ~",
})).s("gm_violin").gain(0.4)

// other · violin · soft notes
const violin_soft = note("<A@8 ~@45 B@2 C D E ~@39>".pickRestart({
  A: "[~@11 g5@117]/8", B: "g5@12 a5 a#5 ~ a5", C: "g5", D: "b4@3 g5@3 c5@2", E: "b4@3 g5@5",
})).s("gm_violin").gain(0.2)

// other · pizzicato strings
const pizzicato_strings = note(`<
  ~@40
  [g5 a#4 g4 a#4 g5 a#4 g4 a#4]
  [f5 a#4 g4 a#4 e5 a#4 g4 a#4]
  [d#4 g4 d#5 a#5 d6 f#5 a4 f#4]
  [c#4 g4 c#5 a5!2 d5!2 f#4]
  [b4 d5 g5 c5 d5 g5 c5 d5]!4
  ~@49
>`).s("gm_pizzicato_strings").gain(0.25)

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

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@10 A B C D E F G H I ~@78>".pickRestart({
  A: "g4@2 d4 g4 e4@2 a3@2", B: "~ g3 b3 c4 d4 ~ g4 e4", C: "g4 b4 a4 e4", D: "~ a4 f#4 ~", E: "g4 f#4", F: "b4!4",
  G: "g4@2 g4 c4 g4@2 g4@2", H: "g4@3 g4@3 g4@2", I: "g4@3 g4@3 ~@2",
})).s("gm_pizzicato_strings").gain(0.25)

// other · pizzicato strings
const pizzicato_strings_3 = note("<A@8 B ~ C D E F G H I J K ~@78>".pickRestart({
  A: "[~@7 b4@2 d5@2 g5@2 c5@2 d5@2 g5@2 c5@2 d5@2 b4@2 d5@2 g5@2 c5@2 d5@2 g5@2 c5@2 d5@2 b4@2 d5@2 g5@2 c5@2 d5@2 g5@2 c5@2 d5@2 b4@2 d5@2 g5@2 c5@2 d5@2 g5@2 c5@2 d5@2 b4@2 d5@2 g5@2 c5@2 d5@2 g5@2 c5@2 d5@2 b4@2 d5@2 g5@2 c5@2 d5@2 g5@2 c5@2 d5@2 b4@2 d5@2 g5@2 c5@2 d5@2 g5@2 c5@2 d5@2 b4@2 d5@2 g5@2 c5@2 d5]/8",
  B: "~ g5@2 c5@2 d5@2 ~@9", C: "b4!2 a4!2", D: "g4@3 g4", E: "b4!2 c#5 d5", F: "a4@3 ~", G: "g4!2 a4 d5",
  H: "e5!2 d5 b4", I: "g4@3 b4 a4@2 g4@2", J: "g4@3 c5@5", K: "g4@3 d5@3 ~@2",
})).s("gm_pizzicato_strings").gain(0.25)

// other · viola
const viola = note(`<
  ~@2 A@7 ~@10 B C D E F G H I J K L K M K N K O ~@8 P Q P Q P Q P Q P Q P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH
  AI AJ AK AL AM AN AK AO AP AQ AR AS AT AU AT AV@2 AW AX@2 AY@3 AZ
>`.pickRestart({
  A: "[~@7 g4@4 d4@2 g4@6 a4@4 g3@4 d4@2 g4@10 g3@6 c4@6 d4@4 g4@6 c4@6 d4@4 g3@6 g3@2 g3@8 g3@6 g3@2 g3@8 ~@9]/7",
  B: "g4@2 d4 g4 e4@2 a3@2", C: "~ g3 b3 c4 d4 ~ g4 e4", D: "g4 b4 a4 e4", E: "~ a4 f#4 ~", F: "g3 d4 g4 d4 f#4@4",
  G: "b4!4", H: "g4@2 g4 c4 g4@2 g4@2", I: "d4 b3 d4 e4@3 f#4@2", J: "d4 b3 d4 e4@3 ~@2", K: "g4!8 a4!8",
  L: "b4!4 a4!4 g4!4 f#4!4", M: "d4!4 e4!4 g4!4 a4!4", N: "b4!8 g4!8", O: "g4@3 g4@3 ~@2", P: "~ b3 d4 g4 ~ a3 d4 g4",
  Q: "~ g3 d4 g4 ~ g3 ~ a3", R: "g3@6 c3@8 b3 c4", S: "d4@4 e4 ~ c4@8 ~@2", T: "g3@2 c4 d4", U: "g3", V: "e4 a3",
  W: "d4", X: "g3 b3", Y: "e4 d#4 d4 c#4", Z: "c4 d4", AA: "g3@2 d4 c4@2 e4 d4@2", AB: "g3 d4 b4 c4@2 c4 d4@2",
  AC: "c4@3 c4 d4@3 d4", AD: "g4@3 d4 g4!2 f#4@2", AE: "e4@2 d4@2 c#4 b3 a3@2", AF: "d4@6 a3 ~ d4 ~ d4 ~ d4@2 c#4@2",
  AG: "c4 ~ c4@4 e4@2 d4 ~ d4@4 a3@2", AH: "b3@4 f#4 ~ e4@6 d4@4", AI: "c4@3 c4 d4@2 d4@2", AJ: "g3@3 g3 ~ g3 b3 d4",
  AK: "e4@2 g4@2 f#4@3 d4", AL: "b3 d4 b3@4 a3 b3", AM: "g3@2 b3@2 a3@3 g3", AN: "g3@3 f#3 f#3@3 ~",
  AO: "b3 f#3 a3 g3@4 e3", AP: "g3@6 e3@2 a3@6 g3 a3", AQ: "b3 c4 d4 ~", AR: "e4 f#4", AS: "g4@4 f4@4 e4@4 e4!3 ~",
  AT: "g4 a4", AU: "g4@6 d4@2 g4@2 g4@2 g3!4", AV: "[g4 g4@2 ~]/2", AW: "~@9 g4@7",
  AX: "[~ a4@8 g4@4 a4@2 a#4@2 a4@8 g4@7]/2", AY: "[~ a4@8 g4@14 ~@5 g3@7 g3@2 ~ g3@5 g3@5]/3", AZ: "d4@15 ~",
})).s("gm_viola").gain(0.25)

// other · pizzicato strings
const pizzicato_strings_4 = note("<~@10 A B C D E F G H I ~@78>".pickRestart({
  A: "g3 e3", B: "~ g3 b3 c4 d4 ~ g4 e4", C: "g3!2 a3!2", D: "f#3 e3 f#3 ~", E: "g3 d4 g4 d4 ~@4", F: "g3!4",
  G: "g3@2 g3 c3 g3@2 g3@2", H: "d4 b3 d4 e4@3 f#4@2", I: "d4 b3 d4 e4@3 ~@2",
})).s("gm_pizzicato_strings").gain(0.25)

// other · cello
const cello = note(`<
  ~@2 A B@6 ~@10 C D E F G H I J K L M N O P Q R S ~@8 T@4 U@2 V W X Y X Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO
  AL AP AQ AR L M N O P Q R S L AS AT AU AV AW@2 AX@6 AY
>`.pickRestart({
  A: "~@7 a3@9",
  B: "[~ a3@2 b3@2 c4@2 e4@6 d4@6 b3@2 d4@2 g4@6 e4@6 c4@4 b3@6 g3@6 e3@2 d3@2 g3@8 f3@4 e3@4 b3@8 c4@4 d4@4 ~@9]/6",
  C: "g2@2 c3 d3", D: "g2", E: "e3 a2", F: "d3", G: "g2 b2", H: "e3 d#3 d3 c#3", I: "c3 d3", J: "g2@2 d3 c3@2 e3 d3@2",
  K: "g2 d3 b3 c3@2 c3 d3@2", L: "c3@3 c3 d3@3 d3", M: "g3@3 d3 g3!2 f#3@2", N: "e3@2 d3@2 c#3 b2 a2@2",
  O: "d3@6 a2 ~ d3 ~ d3 ~ d3@2 c#3@2", P: "c3 ~ c3@4 e3@2 d3 ~ d3@4 a2@2", Q: "b2@4 f#3 ~ e3@6 d3@4",
  R: "c3@3 c3 d3@2 d3@2", S: "g2@3 d3 g3@4", T: "g2/4", U: "[g2 g2@15]/2", V: "g2 g2@7", W: "b2@2 c3 d3",
  X: "g2@2 g2@4 g2!2 f2@2 f2@4 ~ f2", Y: "e2@2 e2@4 e2!2 d#3@4 f3 f2!3", Z: "e2@2 e2@4 e2!2 d#2!4 f2!4",
  AA: "g2@3 c2@5", AB: "c3@3 d3@2 d3 g3 a3", AC: "b3@2 b3 d4 a3@2 a3 b3", AD: "g3@4 ~ g3 b3 a3",
  AE: "g3@2 b3 d4 c#4@2 c#4 d4", AF: "d4@6 ~ b3", AG: "g3@3 b3 a3@2 d4@2", AH: "e4@6 b3 a3 g3@6 e3@2",
  AI: "g3@3 b3 a3@2 g3 f#3", AJ: "g3", AK: "~@5 g3 b3 d4", AL: "e4@2 g4@2 f#4@3 d4", AM: "b3 d4 b3@4 a3 b3",
  AN: "g3@2 b3@2 a3@3 g3", AO: "g3@3 f#3 f#3@3 ~", AP: "b3 f#3 a3 g3@4 e3", AQ: "g3@3 e3 a3@3 g3", AR: "b3@3 ~",
  AS: "g3 f3 e3@2", AT: "d#3@3 d#3 d3@2 d3@2", AU: "g3@6 d3@2 g3@2 g3@2 g2!4", AV: "d#3@3 d#3 d3@3 d3",
  AW: "[e3 d#3 d3 c#3@3 ~@2]/2", AX: "[~@9 c3@6 c3@2 d3@4 d3@4 d#3@16 d3@16 d#3@9 ~ d3@9 g2@7 g2@2 ~ g2@5 g2@5]/6",
  AY: "g2@15 ~",
})).s("gm_cello").gain(0.3)

// other · pizzicato strings
const pizzicato_strings_5 = note("<~@10 A B C D E F G H I ~@17 J K L M J K L M ~@53>".pickRestart({
  A: "g2@2 c3 d3", B: "g2", C: "e3 a2", D: "d3", E: "g2 b2", F: "e3 d#3 d3 c#3", G: "c3 d3", H: "g2@3 c3@5",
  I: "g2@3 c3@3 ~@2", J: "g3 ~ a#3 ~ d4 ~ a#3 ~ f#3 ~ a#3 ~ d4 ~ a#3 ~",
  K: "f3 ~ a#3 ~ d4 ~ a#3 ~ e3 ~ a#3 ~ d4 ~ a#3 ~", L: "d#3 ~ g3 ~ a#3 ~ d4 ~ f#3 ~ a3 ~ d4 ~@3",
  M: "c#3 ~ e3 ~ g3 ~ a#3 ~ d4 ~ a#3 ~ f#3 ~ d3 ~",
})).s("gm_pizzicato_strings").gain(0.2)

stack(
  violin, violin_soft, pizzicato_strings, violin_2, pizzicato_strings_2, pizzicato_strings_3, viola,
  pizzicato_strings_4, cello, pizzicato_strings_5
)