Strudelify

and so it goes

Billy Joel

KeyF majorTempo60 bpm
0:00/0:00
// and so it goes — Billy Joel
// 60 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6064240; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 38 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(60/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 · clarinet · "B♭ Clarinet"
const clarinet = note("<A B C D@2 E F@7 G@2 H@3 I J@3 K@3 L B M N O P@2 Q R@2 S T@2>".pickRestart({
  A: "db5@2 f5 ab5@3 bb5@6 ab5@2 bb5@2", B: "~ ab5 f5@8 ~@2 eb5@2 f5@2", C: "~ eb5 f5 ab5@3 ab5@3 f5 eb5@6",
  D: "[~ db5 f5@3 ab5 bb5@6 ab5@2 bb5 ab5@3 f5@10 eb5@2 f5@2]/2", E: "ab5@2 ab5@2 f5 eb5 db5@3 db5 db5@4 ~@2",
  F: "[~@2 ab4@4 db5@8 eb5@4 gb5@12 ab5@4 f5@4 bb5@4 eb5@12 db5@4 eb5@2 f5@6 ab5@4 db6@12 db6@4 bb5@4 bb5@4 eb5@8 ~@2 db5@2 f5 ab5@3 bb5 ab5]/7",
  G: "[~@6 bb5@2 ab5 f5@11 eb5@2 f5@2 eb5 f5@3 ab5@2 ab5@2]/2",
  H: "[~ f5 eb5@7 db5 f5@2 ab5@2 bb5@6 ab5@2 bb5@3 ab5 f5@8 ~@2 eb5@2 f5@2 ab5@2 ab5@2 f5 eb5 db5@2]/3",
  I: "~ db5 db5@4 ~@4 db5@4 eb5@2", J: "[f5@3 f5@2 gb5@6 ab5@2 f5@2 bb5@2 eb5@5 db5 f5]/3",
  K: "[ab5 db6@7 bb5@2 ab5@2 gb5 ab5@13 db6@4 bb5@4 bb5@4 eb5@10]/3", L: "~ db5 f5@3 ab5 bb5@7 ab5 bb5@2",
  M: "~ eb5 f5@3 bb5 ab5@3 f5 eb5@6", N: "db5 f5 ab5 bb5@3 ab5 bb5", O: "c6 db6@5 eb6 ab5",
  P: "[db6@2 db6@2 bb5@2 ab5@2 ab5 ab5@9 ~@2 db5@2 f5@2 ab5@2 bb5@6]/2", Q: "ab5 bb5 ab5 f5@4 ~",
  R: "[eb5@2 f5@2 eb5 f5@3 ab5@2 ab5@3 f5 eb5@6 db5@2 f5@2 ab5 db6@7]/2", S: "bb5@2 ab5@2 gb5 ab5@9 ~@2",
  T: "[gb5@2 f5@2 ab5@4 f5 eb5 db5@3 db5 db5@12 ~@6]/2",
})).s("gm_clarinet").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note("<A B C D@2 E F@7 G@2 H@3 I@7 J B K L M N@2 O P@2 Q R@2>".pickRestart({
  A: "db5@2 f5 ab5@3 bb5@6 ab5@2 bb5@2", B: "~ ab5 f5@8 ~@2 eb5@2 f5@2", C: "~ eb5 f5 ab5@3 ab5@3 f5 eb5@6",
  D: "[~ db5 f5@3 ab5 bb5@6 ab5@2 bb5 ab5@3 f5@10 eb5@2 f5@2]/2", E: "ab5@2 ab5@2 f5 eb5 db5@3 db5 ab4@4 ~@2",
  F: "[~@2 ab4@4 db5@8 eb5@4 eb5@12 db5@4 db5@4 eb5@4 db5@4 c5@8 ab4@4 db5@8 eb5@4 ab5@12 ab5@4 f5@4 db5@4 eb5@4 c5@4 ~@2 db5@2 f5 ab5@3 bb5 ab5]/7",
  G: "[~@6 bb5@2 ab5 f5@11 eb5@2 f5@2 eb5 f5@3 ab5@2 ab5@2]/2",
  H: "[~ f5 eb5@7 db5 f5@2 ab5@2 bb5@6 ab5@2 bb5@3 ab5 f5@8 ~@2 eb5@2 f5@2 ab5@2 ab5@2 f5 eb5 db5@2]/3",
  I: "[~ db5 ab4@4 ~@4 ab4@4 db5@8 eb5@4 eb5@12 db5@4 db5@4 eb5@4 db5@4 c5@8 ab4@4 db5@8 eb5@4 eb5@12 ab5@4 f5@4 db5@4 c5@10]/7",
  J: "~ ab4 db5@3 db5 bb5@7 ab5 bb5@2", K: "~ eb5 f5@3 bb5 ab5@3 f5 eb5@6", L: "db5 f5 ab5 bb5@3 ab5 bb5",
  M: "c6 db6@5 eb6 ab5", N: "[db6@2 db6@2 bb5@2 ab5@2 ab5 ab5@9 ~@2 db5@2 f5@2 ab5@2 bb5@6]/2", O: "ab5 bb5 ab5 f5@4 ~",
  P: "[eb5@2 f5@2 eb5 f5@3 ab5@2 ab5@3 f5 eb5@6 db5@2 f5@2 ab5 db6@7]/2", Q: "bb5@2 ab5@2 gb5 ab5@9 ~@2",
  R: "[gb5@2 f5@2 ab5@4 f5 eb5 db5@3 db5 db5@12 ~@6]/2",
})).s("gm_clarinet").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet_3 = note("<A B C D@2 E F@7 G@2 H@3 I@7 J B K L M N@2 O P@2 Q R@2>".pickRestart({
  A: "ab4@2 db5 db5@3 gb5@6 db5@2 gb5@2", B: "~ eb5 f5@8 ~@2 eb5@2 f5@2", C: "~ eb5 f5 db5@3 bb4@3 bb4 c5@6",
  D: "[~ ab4 db5@3 db5 ab5@4 gb5@2 db5@2 gb5 eb5@3 f5@10 eb5@2 db5@2]/2", E: "db5@2 bb4@2 bb4@2 bb4@3 bb4 f4@4 ~@2",
  F: "[~@2 f4@4 ab4@8 db5@4 gb4@12 f4@4 ab4@4 bb4@8 ab4@8 f4@4 ab4@8 db5@4 gb4@12 f4@4 ab4@4 eb4@4 eb4@8 ~@2 f4@2 ab4 c5@3 ab5 db5]/7",
  G: "[~@6 gb5@2 eb5 f5@11 eb5@2 f5@2 eb5 f5@3 db5@2 bb4@2]/2",
  H: "[~ bb4 c5@7 ab4 db5@2 db5@2 ab5@4 gb5@2 db5@2 gb5@3 eb5 f5@8 ~@2 eb5@2 db5@2 db5@2 bb4@2 bb4@2 bb4@2]/3",
  I: "[~ bb4 f4@4 ~@4 f4@4 ab4@8 db5@4 gb4@12 f4@4 ab4@4 bb4@8 ab4@8 f4@4 ab4@8 db5@4 gb4@12 f4@4 ab4@4 eb4@4 eb4@10]/7",
  J: "~ f4 ab4@3 c5 ab5@4 gb5@3 db5 gb5@2", K: "~ eb5 f5@3 db5 bb4@3 bb4 c5@6", L: "ab4 db5!2 ab5@2 gb5 db5 gb5",
  M: "ab5 f5@5 ab5 f5", N: "[ab5@2 ab5@2 f5 eb5 db5@2 db5@10 ~@2 ab4@2 db5@2 db5@2 ab5@6]/2", O: "db5 ab5 eb5 f5@4 ~",
  P: "[eb5 f5@4 eb5@2 c5@3 db5!2 eb5@4]/2", Q: "eb5@2 bb4@2 bb4 db5@9 ~@2",
  R: "[db5@2 f5@2 db5@4 db5@2 db5@3 db5 db5@12 ~@6]/2",
})).s("gm_clarinet").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet_4 = note("<A B C D@2 E F@7 G@2 H@3 I@4 J@3 K B L M N O@2 P Q@2 R S@2>".pickRestart({
  A: "db4@2 db4 f4@3 gb4@6 f4@2 gb4@2", B: "~ ab4 bb4@8 ~@2 c4@2 db4@2", C: "~ c4 db4 f4@3 gb3@3 gb3 ab3@6",
  D: "[~ db4 db4@3 f4 gb4@6 f4@2 gb4 ab4@3 bb4@10 c4@2 db4@2]/2", E: "f3@2 gb3@2 gb3@2 ab3@3 ab3 db4@4 ~@2",
  F: "[~@2 c4@4 b3@8 bb3@4 a3@12 ab3@4 bb3@4 g3@4 ab3@12 db4@2 c4@2 b3@8 bb3@4 a3@12 ab3@4 bb3@4 g3@4 ab3@8 ~@2 db4@2 db4 f4@3 gb4 f4]/7",
  G: "[~@6 gb4@2 ab4 bb4@11 c4@2 db4@2 c4 db4@3 f4@2 gb3@2]/2",
  H: "[~ gb3 ab3@7 db4 db4@2 f4@2 gb4@6 f4@2 gb4@3 ab4 bb4@8 ~@2 c4@2 db4@2 f3@2 gb3@2 gb3@2 ab3@2]/3",
  I: "[~ ab3 db4@4 ~@4 c4@4 b3@8 ~@4 a3@12 ab3@4 bb3@4 g3@4 ab3@12 db4@2]/4",
  J: "[c4 b3@4 bb3@2 a3@6 ab3@2 bb3@2 g3@2 ab3@5]/3", K: "~ db4 db4@3 f4 gb4@7 f4 gb4@2",
  L: "~ c4 db4@3 f3 gb3@3 gb3 ab3@6", M: "db4!2 f4 gb4@3 f4 gb4", N: "ab4 bb4@5 eb4 db4",
  O: "[f4@2 db4@2 db4@2 eb4@2 db4 db4@9 ~@2 db4@2 db4@2 f4@2 gb4@6]/2", P: "f4 gb4 ab4 bb4@4 ~",
  Q: "[c4@2 db4@2 c4 db4@3 f4@2 gb3@3 gb3 ab3@6 f4@2 db4@2 f4 db4@7]/2", R: "db4@2 db4@2 eb4 gb4@9 ~@2",
  S: "[eb4@2 db4@2 db4 db4@3 db4@2 eb4@3 db4 db4@12 ~@6]/2",
})).s("gm_clarinet").gain(0.25)

stack(clarinet, clarinet_2, clarinet_3, clarinet_4)

More by Billy Joel