Strudelify

fly me to the moon

Bart Howard

KeyB♭ majorTempo120 bpm
0:00/0:00
// fly me to the moon — Bart Howard
// 120 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (12/8 at bar 1, 4/4 at bar 10) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/36202; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 44 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · tremolo strings · "Violin"
const tremolo_strings = note(`<
  A@2 B C@2 D E@3 F@2 G@2 ~@4 H@2 I J K L I M N@3 O P@2 Q R S@2 T@2 U@2 V W X Y Q
>`.pickRestart({
  A: "[g4@4 d5 c5 d5@10]/2", B: "c5 bb4 a4@2 d5@2 f5@2", C: "[g5@30 g4 [ab4,bb4]]/2",
  D: "c5 [d5,eb5] f5 [g5,ab5] bb5@6 ab5@6", // Ebmaj7 Abmaj7
  E: "[g5@8 d6@2 c6@2 d6@8 bb5 c6 [d6,eb6] f6 gb6@16 ab6 [f6,gb6] [d6,eb6] [bb5,c6] [gb5,ab5] [eb5,f5] [c5,d5] [ab4,bb4]]/3", // Ebmaj7 Gbmaj7 Ebmaj7 Bbsus2 Gbsus2 Ebsus2 Csus2 Absus2
  F: "[f4, gb4 ~@31]/2", G: "[gb4@3 a4]/2", H: "[g4@15 c5]/2", I: "a4", J: "bb4 b4", K: "~ bb4", L: "g4",
  M: "f4@11 ab4@2 a4@3", N: "[g4@28 c5@12 bb4@3 a4@2 bb4@3]/3", O: "c5@12 ~ [d5,eb5] [f5,g5] [a5,bb5]",
  P: "[d6, c6 ~@31]/2", Q: "c6", R: "~@3 f5@2 gb5@3 g5@3 c6@2 g6@3", S: "[d6@3 eb6]/2",
  T: "[d6@22 bb4@2 bb5@3 ab5@2 eb6@3]/2", U: "[g5@3 a5]/2", V: "f5@4 ~ ab4@3", W: "~@4 d5@2 f5@2 ab5@3 bb5@2 ab5@3",
  X: "g5@12 eb5 [f5,g5] ab5 [bb5,c6]", Y: "d6",
})).s("gm_tremolo_strings").gain(0.15)

// other · violin
const violin = note("<A@3 B@3 C@3 D@2 E@2 ~@4 F@2 G H I J@2 K L@3 M N@3 O P@2 Q R S T U ~ V W J>".pickRestart({
  A: "[eb4@2 bb4 bb4@6 gb4 a4 c5]/3", B: "[e5@6 c5@4 b4 bb4 a4@6 ab4@6]/3", C: "[bb4 g4 c4@2]/3", D: "d4/2", E: "eb4/2",
  F: "f4/2", G: "gb4", H: "f4 g4", I: "~ g4", J: "f4", K: "d4", L: "[eb4@7 g4@2 f4@3]/3", M: "g4@3 g4 a4@4", N: "g4/3",
  O: "a4 ab4", P: "[g4@3 c5]/2", Q: "a4", R: "bb4@6 a4 bb4 b4@8", S: "d5@11 c5@2 bb4@3", T: "a4 bb4", U: "c5 ~",
  V: "eb4", W: "g4",
})).s("gm_violin").gain(0.23)

// chords · piano
const piano = note("<A@3 B@3 C@3 D@2 E@2 ~@3 F G@2 H I J K L M N@3 O P@3 Q R S@2 T U V W X Y@2 Z>".pickRestart({
  A: "[bb3@2 eb4 eb4@6 eb4!2 a4]/3", B: "[e4@10 g4 f4 e4@6 eb4@6]/3", C: "[[g3,d4]!2 [gb3,bb3]@2]/3", D: "[f3,c4]/2",
  E: "[a3@3 f3, c4]/2", F: "a3@6 bb3 a3 ab3@3 d4@2 f4@3", G: "[bb3,eb4]/2", H: "[eb3,c4]", I: "g3 b3, d4",
  J: "~ [bb3,c4]", K: "c4", L: "d3 eb3, c4", M: "[d3,b3]", N: "[[g3,bb3]@3 [a3,c4]]/3", O: "[bb3,eb4] [c4,g4]",
  P: "[f4 ~ a3, bb3@2 ~, ~ eb4@2]/3", Q: "a3 ab3, d4", R: "[bb3,d4]", S: "[c4 a3 c4@2, eb4]/2",
  T: "bb3@6 a3 bb3 b3@8, g4", U: "g4@11 g4@2 ~ g3@2, bb3@13 g4@3", V: "f3 eb3, eb4", W: "ab3 d3", X: "[g3,c4] [gb3,c4]",
  Y: "[ab3 eb4, f3]/2", Z: "d4",
})).s("gm_piano").gain(0.72)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  ~@9 A B C D E@2 F@2 G H I J K L M N K O P Q R S T U V W X Y Z O AA AB Z AC AD
>`.pickRestart({
  A: "[f3,a3,c4,d4] ~ [f3,a3,c4,d4]@3 [f3,a3,c4,d4]@2 [f3,a3,c4,d4]", // Dm7
  B: "~ [f3,a3,c4,d4]@2 [f3,a3,c4,d4]!3 [f3,a3,c4,d4]@2", // Dm7
  C: "[gb3,a3,c4,eb4] ~ [gb3,a3,c4,eb4]@3 [gb3,a3,c4,eb4]@2 [gb3,a3,c4,eb4]", // Gbdim
  D: "~ [gb3,a3,c4,eb4]@2 [gb3,a3,c4,eb4] [f3,a3,c4,eb4]!2 [f3,a3,c4,eb4]@2", // Gbdim F7
  E: "[[f3,g3,bb3,d4] ~ [f3,g3,bb3,d4]@3 [f3,g3,bb3,d4]@2 [f3,g3,bb3,d4]@2 [f3,g3,bb3,d4]@2 [f3,g3,bb3,d4] [f3,g3,bb3,d4]@2 [f3,g3,bb3,d4]@2]/2", // Gm7
  F: "[[f3,a3,c4,eb4] ~ [f3,a3,c4,eb4]@3 [f3,a3,c4,eb4]@2 [f3,a3,c4,eb4]@2 [f3,ab3,c4,eb4]@2 [f3,ab3,c4,eb4] [f3,g3,b3,d4]@2 [f3,g3,b3,d4]@2]/2", // F7 Fm7 G7
  G: "[g3,bb3,d4,f4]@4 [g3,bb3,d4,f4]@3 ~@3 [bb3,d4,g4] ~@3 [g3,c4,eb4]@2", // Gm7 Gm Cm
  H: "~ [g3,c4,eb4]@3 [g3,c4,eb4]@2 [g3,c4,eb4]@2", // Cm
  I: "[gb3,a3,c4,eb4]@4 [gb3,a3,c4,eb4]@3 ~@3 [gb3,a3,c4,eb4] ~@3 [f3,g3,bb3,d4]@2", // Gbdim Gm7
  J: "~ [f3,g3,bb3,d4]@3 [f3,ab3,b3,d4]@2 [f3,ab3,bb3,d4]@2", // Gm7 Fdim Bb7
  K: "[f3,g3,bb3,d4]@4 [f3,g3,bb3,d4]@3 ~@3 [f3,g3,bb3,d4] ~@3 [f3,g3,bb3,d4]@2", // Gm7
  L: "~ [eb3,a3,d4]@3 [a3,c4,gb4]@2 [a3,c4,gb4]@2", M: "[a3,c4,f4]@4 [a3,c4,f4]@3 ~@3 [a3,c4,f4] ~@3 [a3,c4,f4]@2",
  N: "~ [c4,eb4,f4,bb4]!2 [c4,eb4,f4,a4]@2 [c4,eb4,f4,d5]@3", // Cm7 F7 Dm7
  O: "~ [eb3,a3,d4]@2 [eb3,a3,d4] [eb3,a3,d4]@2 [eb3,a3,d4]@2", // D
  P: "[f3,a3,d4]@4 [f3,a3,d4]@3 ~@3 [f3,a3,d4] ~@3 [f3,a3,d4]@2", // Dm
  Q: "~@2 [f3,c4,d4] ~@3 [g3,c4,d4]@2 [gb3,c4,eb4]@4 [gb3,c4,eb4]@4", // Dm7 Gsus4 Cdim
  R: "[f3,bb3,d4]@4 [f3,bb3,d4]@7 ~@3 [f3,bb3,d4]@2", // Bb
  S: "~@2 [eb3,g3,bb3,d4] ~@3 [eb3,g3,bb3,d4]@2 [eb3,g3,bb3,d4]@4 [bb3,d4,eb4,g4]@4", // Ebmaj7
  T: "[a3,d4,eb4,g4]@2 [a3,d4,eb4,g4]@3 [a3,d4,eb4,gb4]@3", U: "[a3,c4,d4,f4]@4 f3@2 g3@2 ab3@3 c4@2 g4@3",
  V: "[g3,bb3,d4]@4 [g3,bb3,d4]@6 [bb3,d4,g4] ~@3 [g3,c4,eb4]@2", // Gm Cm
  W: "~ [g3,c4,eb4] ~ [g3,c4,eb4] [g3,c4,eb4]@2 [g3,c4,eb4]@2", // Cm
  X: "[gb3,a3,c4,eb4]@2 [gb3,a3,c4,eb4]@3 [gb3,bb3,c4,eb4] ~ [f3,bb3,d4]", // Gbdim Cm7b5 Bb
  Y: "~ [f3,bb3,d4]@2 [f3,bb3,d4] [f3,b3,d4] [f3,b3,eb4]@3", // Bb Bdim Fm7b5
  Z: "[eb3,g3,bb3,d4]@2 [eb3,g3,bb3,d4]@3 [eb3,g3,bb3,d4] ~ [eb3,g3,bb3,d4]", // Ebmaj7
  AA: "[ab3,c4,f4]@2 [ab3,c4,f4]@3 [ab3,c4,f4] ~ [c4,eb4,f4,ab4]", // Fm Fm7
  AB: "~ [eb3,bb3,eb4]@2 [eb3,bb3,eb4] [eb3,bb3,eb4]@2 [eb3,bb3,eb4]@2", // Eb5
  AC: "~ [eb3,g3,a3,d4]@3 [eb3,g3,a3,d4]@2 [eb3,g3,a3,d4]@2", AD: "[f3,a3,c4]",
})).s("gm_acoustic_guitar_nylon").gain(0.25)

// bass · electric bass pick · "Bass Guitar"
const bass = note("<A@3 B@3 C@3 D E F G H I J K L M N O I P Q R I S K T H I J K U M V O I P W X I Y D>".pickRestart({
  A: "[~@6 bb1@3 a1 ab1 g1 f1@6 f2@3 f2 e2 eb2]/3", B: "[d2 g2]/3", C: "[c3 bb2]/3", D: "bb2",
  E: "~ bb2@2 f2 bb2 f2 bb2@2", F: "f2@3 f2 f2@3 f2", G: "f2@3 f2 f3@2 f2@2", H: "g2@3 d2 d2@3 g2",
  I: "c2@3 g2 g2@3 c2", J: "f2@3 c2 c2@3 f2", K: "bb2@3 f2 f2@3 bb2", L: "eb2@3 bb2 bb2@3 eb2", M: "a2@3 eb2 eb2@3 a2",
  N: "d2@3 a2!2 d2 e2 f2", O: "g2@3 g2 g2@3 g2", P: "f2@3 f2 eb2@3 eb2", Q: "d2@3 d2 d2@3 a2", R: "g2@3 d2 d2@2 g2@2",
  S: "f2@3 f2 c3@2 f2@2", T: "a2@3 a2 d2@3 gb2", U: "d2@3 bb2 bb2@3 eb2", V: "d2@3 a2 d3@3 a2", W: "d2@3 d3 d3@3 ab2",
  X: "g2@3 g2 g2@3 d2", Y: "f2@3 c2 c2@2 f2@2",
})).s("gm_electric_bass_pick").gain(0.3)

stack(tremolo_strings, violin, piano, acoustic_guitar_nylon, bass)