Strudelify

when i grow up

Tim Minchin

KeyF majorTempo80 bpm
0:00/0:00
// when i grow up — Tim Minchin
// 80 bpm, 12/8, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 12/8 at bar 17, 6/8 at bar 23, 12/8 at bar 24) are rendered on a constant 12/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5866631; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 35 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/6)

// 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("<~@13 A B@2 C D E ~ F G H I J K L M N O P Q R S T>".pickRestart({
  A: "~@4 c4@2 a4@2 g4@2 f4 c4@2 a4@2 g4@3 ~ f4 bb4@2 a4@2",
  B: "[f4@2 f4 bb4@2 a4@2 e4@2 f4@2 g4@5 ~@6 a4 g4@2 a4@3 f4@11 ~@9]/2", C: "~@6 g4 a4 ~@4", D: "~@11 f4",
  E: "g4@2 a4@3 a4 g4@2 a4@2 c5@2 ~@2 g4@2 a4@2 ~@6", F: "~ f4!3 g4 a4 d4 f4 ~@4",
  G: "~@4 f4!2 f4@2 g4@2 a4@2 c5@4 bb4 a4 g4@2 f4@2 e4@2", H: "d4@6 ~@4 f4!2 f4@4 f4!2 e4@2 f4@2 g4@2",
  I: "d4@15 ~@3 f4@2 f4@2 f4@2", J: "g4@2 a4@3 a4 a4@2 g4@4 ~@4 f4@2 f4@2 g4@2 a4@2", K: "a4@2 g4@4 ~@2 f4!2 g4 a4",
  L: "a4@4 bb4@11 ~ bb4!2 bb4@2 a4@2 bb4 c5", M: "c5@11 ~@13", N: "a4@23 ~", O: "g4@15 ~@5 e4@2 f4@2",
  P: "c5@6 e5@11 ~ d5@6", Q: "c5@4 bb4 a4 g4@2 f4@2 e4@2 f4@2 e4@2 d4@2 e4@2 d4@2 c4@2", R: "d4@6 e4@6 d4@11 ~",
  S: "c5 g4 e4 f4", T: "f5@23 ~",
})).s("gm_flute").gain(0.3)

// chords · piano
const piano = note("<A B C D E F C D E G@6 H ~@19>".pickRestart({
  A: "~@6 [f4,a4] c4 [f4,a4] c4 [f4,a4] c4", B: "[f4,a4] c4 [f4,a4] c4 [f4,a4] c4 [f4,a4] c4 [f4,a4] c4 [e4,g4] c4",
  C: "[e4,g4] c4 [e4,g4] c4 [e4,g4] c4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4", // Em Bb5
  D: "[f4,bb4] d4 [f4,bb4] db4 [f4,bb4] db4 [f4,bb4] db4 [f4,bb4] db4 [f4,a4] c4", // Bb5 F
  E: "[f4,a4] c4 [e4,g4] c4 [e4,g4] c4 [f4,bb4] d4 [f4,bb4] d4 [f4,bb4] d4", // F Em Bb5
  F: "[f4,bb4] d4 [f4,a4] c4 [f4,a4] c4 [f4,a4] c4 [f4,a4] c4 [e4,g4] c4", // Bb5 F Em
  G: "[[f4,bb4] d4 [f4,bb4,c5] d4 [f4,bb4,c5] d4 [f4,bb4,c5] d4 [f4,bb4,c5] d4 [a4,c5] f4 [a4,c5] f4 [a4,c5] f4 [a4,c5] f4 [g4,bb4] d4 [g4,bb4] d4 [g4,bb4,d5] d4 [g4,bb4,d5] d4 [f4,a4,c5] c4 [f4,a4,c5] c4 [f4,a4,c5] c4 [f4,a4,c5] c4 [f4,bb4,c5] d4 [f4,bb4,c5] d4 [f4,bb4,c5] d4 [f4,bb4,c5] d4 [a4,c5] e4 [a4,c5] e4 [a4,c5] e4 [a4,c5] e4 [f4,bb4,d5] f4 [bb4,d5] f4 [bb4,d5] f4 [bb4,d5] f4 [g4,c5] e4 [g4,c5] [c3,e4] [a4,db5] e4 [a4,db5] e4 [a4,db5] e4 [a4,db5] e4 [f4,a4,d5] d4, ~@4 bb2@15 ~ a2@15 ~ g2@15 ~ f2@15 ~ bb2@15 ~ a2@15 ~ g2@15 ~ c2@6 ~@2 db2@15 ~ d2@4]/6", // Bb5 Fsus4 Am Gm F Fsus4 Am Bb …
  H: "[f4,a4,c5]@2 d4@2 [bb1,bb2]@11 ~ [bb1,bb2]@2 f2@2 ~@4, c2@4 [d4,f4,bb4]@15 ~@5", // F Bb
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<~@15 A@5 B@2 C D E F G H I J K L M N O>".pickRestart({
  A: "[~@20 bb2@6 bb2@2 bb2@2 bb2@2 bb2@2 [bb2,d3]@2 [c4,f4]@23 ~ [e4,a4]@23 ~ [c4,f4]@23 ~ d5@6 bb4@6, ~@4 [d4,f4,bb4]@3 ~@17]/5", // Bb F5 A5 F5 Bb
  B: "[d5@6 g5@6 d4@11 ~ d4@4 f4!2 f4@2 g4@2 f4@2 [d4,f4]@4 e4 d4 e4@2 d4@2 c4@2, ~@12 bb3@23 ~@7 a3@6]/2", // Dm
  C: "bb3@4 ~@6 f4!2 ~@4 d5@2 ~@4 a4@2, d4@3 ~@4 a4@2 ~ e4@2, ~@2 bb3@4 d3@3 a2@3",
  D: "~@4 bb4@13 ~ [f3,f4]@2 [f3,f4]@2 [f3,f4]@2, bb2@17 ~@7, ~@2 f4@15 ~@7", // F
  E: "d5@2 d5@3 d5 d5@2 d5@4 [bb2,d5]@6 [bb2,d5]@6, bb2@11 ~@13", // Bb
  F: "[bb2,db5]@11 ~ [a2,db5]@6 [a2,a4]@2 [db3,b4]@2 [e3,db5]@2", // Bbm A Db7 Dbm
  G: "[bb2,d5]@2 [eb3,eb5]@9 ~ [d3,g5]@4 [bb2,bb4]@2 [bb2,bb4]@2 [a2,a4]@2 [bb2,bb4] [c3,c5]", // Bb Eb G5 Bb A Bb C
  H: "[f3,f5]@11 ~ c3@6 f3@6", I: "[f2,c3,f5]@23 ~", J: "[c3,f5]@17 ~@3 [e2,e4]@2 [f2,f4]@2",
  K: "[d3,f4]@6 [a2,e4]@6 [bb2,f3,f4]@11 ~, c4@23 ~", // Dm A5 Bb5
  L: "[d3,a4]@3 [a2,e4]@3 [bb2,f3,d5] [bb2,f3,c5] [bb2,f3,bb4]!2 [bb2,f3,a4] [bb2,f3,g4]", // D5 A5 Bb Bbsus2 Bb5 Bbmaj7 Gm7
  M: "f4 a4 d5 c5 g4 e4 f4@3 bb4@3, f3@23 ~, d3@6 c3@6 bb2@11 ~",
  N: "f4@2 a4@2 d5@2 c5@2 g4@2 e4@2 [bb2,f4]@11 ~, d3 c3 ~@2", O: "[f2,c3,f4,a4]@23 ~",
})).s("gm_piano").gain(0.2)

stack(flute, piano, piano_soft)