Strudelify

wonderful tonight

Eric Claption

KeyG majorTempo80 bpm
0:00/0:00
// wonderful tonight — Eric Claption
// 80 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4052816; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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("<A@3 B C@2 D E F@2 G H I@2 J K@3 L M N O P Q J R S T@2 J U V A@3 W X@3 B Y Z>".pickRestart({
  A: "[~@3 d4 g4 f#4 e4 f#4@4 d4 g4 f#4 b3 d4@2 c4@2 c4 g4 f#4 e4@2]/3", B: "f#4 g4 a4 f#4", C: "[d4@15 ~]/2",
  D: "b4@3 a4@3 g4@2", E: "f#4", F: "[b3@5 c4 b3 a3@2 d4@7]/2", G: "c4 a3", H: "c4@2 c4 c4@5", I: "[d4@7 d4@2 f#4@7]/2",
  J: "e4", K: "[c4@12 g4!3 f#4@2 d4@7]/3", L: "b3", M: "d4 c4@7", N: "c4 e4!2 d4", O: "c4@2 c4 g4@2 f#4 e4 c4",
  P: "d4 d#4", Q: "e4 f4", R: "d4", S: "f#4@3 d4", T: "[c4@10 c4 e4@5]/2", U: "d4@3 d4 c4@4", V: "a3@3 b3@5",
  W: "f#4 g4 a4 c5", X: "[b4@3 d4 g4 a4 g4 f#4@4 d4 g4 f#4 b3 d4@2 c4@2 e4 g4 a4 g4@2]/3", Y: "g4", Z: "~ g4@3",
})).s("gm_violin").gain(0.3).pan(0.3)

// other · viola
const viola = note("<A B C D E@2 F@2 G@2 H@2 I@2 J K L@2 M@2 N@2 ~ O P Q R@2 P S T@2 A B C U A B C V W X>".pickRestart({
  A: "b3", B: "a3", C: "g3", D: "a3@2 a3 a3@2 a3!3", E: "[b3@6 d3@2 b3@2 a3@2 g3@2 a3@8 a3@2 b3@2 d4@4 b3 a3]/2",
  F: "[g3 e3 g3 a3 b3 c4 b3 a3@3 b3@2 c4@2 e4@2]/2", G: "[~ d4 g3 a3 b3 c4 b3 a3@2 d4@7]/2",
  H: "[~@3 g3 b3 c4 b3 b3@3 a3 a3@5]/2", I: "[~@2 d3@2 a3@2 g3 a3 b3@2 c4@2 b3@2 a3@4 d4@14]/2", J: "d4 c4 b3 c4",
  K: "b3@2 a3 a3@5", L: "[~@4 e4!3 d4@2 a3@7]/2", M: "[~@2 b3 a3 b3 d4@2 g3@6 g3 a3 b3]/2", N: "[c4@3 ~ c4@12]/2",
  O: "~@5 g3 b3 d4", P: "e4@2 e4 e4@4 g3", Q: "d4@2 d4 d4@4 c4", R: "[b3@2 b3 a3 b3 d4@2 g3@6 g3 b3 d4]/2",
  S: "d4@2 d4 b3@4 b3", T: "[c4@2 b3@2 a3@2 g3 a3@5 b3 a3 g3 e3]/2", U: "c4 b3 a3@2", V: "c4@2 b3 a3",
  W: "~ d3 a3 b3 c4@2 e4@2", X: "d4",
})).s("gm_viola").gain(0.4).pan(0.7)

// other · cello · "Violoncello"
const cello = note("<A B C D E@2 F G H@2 A I J@2 C K C L M@2 N@2 O P Q R S T U V W@2 A B C X A B C Y A Z>".pickRestart({
  A: "g3", B: "f#3", C: "e3", D: "e3@2 e3 e3@2 e3!3", E: "[d3@3 d3 g3 f#3 e3 f#3@4 d3!2 f#3@2 d3]/2", F: "c3",
  G: "f#3 g3 a3 c4", H: "[g3@5 a3 g3 f#3@2 a3@7]/2", I: "e3@2 e3 e3@5", J: "[~ g2 c3 d3 e3 a3 e3 d3@2 ~@7]/2",
  K: "g3@5 f#3@3", L: "~@3 d3 e3@2 f#3@2", M: "[g3@2 d3@2 d3 g3@2 d3@2 c3@7]/2", N: "[e3@3 e3 e3@12]/2",
  O: "~ d3 g3 b3 ~ d#3 g3 b3", P: "~ e3 g3 b3 d4 b3 g3 d3", Q: "c4", R: "a3", S: "d4@3 g3", T: "f#3 e3@7",
  U: "f#3@2 c4 a3@5", V: "g3@2 d4 g3@5", W: "[c4@2 g3@2 f#3@2 e3 d3@7 d3@2]/2", X: "a3 g3 f#3@2", Y: "a3@2 g3 f#3",
  Z: "~ b3@3",
})).s("gm_cello").gain(0.3).pan(1)

stack(violin, viola, cello)