Strudelify

i am the doctor

Murray Goldarr. Trippy

KeyF majorTempo160 bpm
0:00/0:00
// i am the doctor — Murray Goldarr. Trippy
// 160 bpm, 7/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (7/4 at bar 1, 4/4 at bar 17, 7/4 at bar 42) are rendered on a constant 7/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/628301; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 58 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(160/7)

// 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.

// chords · marimba
const marimba = note(`<
  A B A C A B A B A B A B A B A B ~ D E F G@3 ~@3 H I J K L M J N O P J I Q R S@2 ~ T U@2 ~ V W ~@6 X@2 ~
>`.pickRestart({
  A: "d4@3 d4@3 ~ e4@3 e4@3 ~ f4@3 f4@3 ~ g4@3 f4@3 f4@3 ~ e4@3 e4@3 ~ d4@3 d4@3 ~ e4@3",
  B: "d4@3 d4@3 ~ e4@3 e4@3 ~ f4@3 f4@3 ~ g4@3 f4@3 f4@3 ~ e4@3 e4@3 ~ c4@3 c4@3 ~ e4@3",
  C: "d4@3 d4@3 ~ e4@3 e4@3 ~ f4@3 f4@3 ~ g4@3 f4@3 f4@3 ~ e4@3 e4@3 ~ [c4,d5]@3 ~@4 c5@3", // Csus2
  D: "~@7 [f4,ab4,c5,f5]@7 [f4,ab4,c5,f5]@7 [f4,ab4,c5,f5]@3 [f4,ab4,c5,f5]@7 [f4,c5,f5]@7 [f4,ab4,c5,f5]@7 [f4,ab4,c5,f5]@3, ~@31 ab4@3 ~@14", // Fm F5 Fm
  E: "[f4,ab4,c5,f5]@7 [f4,ab4,c5,f5]@7 ~@34", F: "~@7 [c4,e4,g4,c5]@9",
  G: "[~@14 c5@13 [c4,e4,g4,c5]@27 ~@28 [c4,e4,g4,c5]@27 ~@35]/3", H: "~@41 [d4,f4,a4]@3 ~ [d4,f4,a4]@3",
  I: "~@7 [d4,f4,a4]@3 [d4,f4,a4]@3 ~@8 [d4,f4,a4]@3 [d4,f4,a4]@3 ~@7 [d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~@7", // Dm
  J: "[d4,f4,a4]@3 [d4,f4,a4]@3 ~@8 [d4,f4,a4]@3 [d4,f4,a4]@3 ~@7 [d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~@7 [d4,f4,a4]@3 ~ [d4,f4,a4]@3", // Dm
  K: "~@7 [e4,g4,b4]@3 [e4,g4,b4]@3 ~@8 [e4,g4,b4]@3 [e4,g4,b4]@3 ~@7 [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~@7", // Em
  L: "[e4,g4,b4]@3 [e4,g4,b4]@3 ~@8 [f4,g4,bb4]@3 [f4,g4,bb4]@3 ~@7 [e4,g4,bb4]@3 ~ [f4,g4,bb4]@3 ~@7 [f4,g4,bb4]@3 ~ [f4,g4,bb4]@3", // Em Gm7 Edim Gm7
  M: "~@7 [f4,g4,bb4]@3 [f4,g4,bb4]@3 ~@8 [d4,f4,a4]@3 [d4,f4,a4]@3 ~@7 [d4,f4,a4]@3 ~ [d4,f4,a4]@3 ~@7", // Gm7 Dm
  N: "~@7 [d4,f4,a4]@3 [d4,f4,a4]@3 ~@8 [d4,f4,a4]@3 [d4,f4,a4]@3 ~@7 [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~@7", // Dm Em
  O: "[e4,g4,b4]@3 [e4,g4,b4]@3 ~@8 [e4,g4,b4]@3 [e4,g4,b4]@3 ~@7 [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~@7 [f4,g4,bb4]@3 ~ [f4,g4,bb4]@3", // Em Gm7
  P: "~@7 [e4,g4,bb4]@3 [f4,g4,bb4]@3 ~@8 [f4,g4,bb4]@3 [f4,g4,bb4]@3 ~@7 [e4,g4,bb4]@3 ~ [f4,g4,bb4]@3 ~@7", // Edim Gm7 Edim Gm7
  Q: "[d4,f4,a4]@3 [d4,f4,a4]@3 ~@8 [e4,g4,b4]@3 [e4,g4,b4]@3 ~@7 [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~@7 [e4,g4,b4]@3 ~ [e4,g4,b4]@3", // Dm Em
  R: "~@7 [e4,g4,b4]@3 [e4,g4,b4]@3 ~@8 [f4,g4,bb4]@3 [f4,g4,bb4]@3 ~@7 [e4,g4,bb4]@3 ~ [f4,g4,bb4]@3 ~@7", // Em Gm7 Edim Gm7
  S: "[[f4,g4,bb4]@3 [f4,g4,bb4]@3 ~@8 [e4,g4,bb4]@3 [f4,g4,bb4]@3 ~@7 [d4,d5]@27 ~@42]/2", // Gm7 Edim Gm7 D
  T: "~@34 d5@3 ~ e5@3 f5@3 ~ d5@3", U: "[e5@3 f5@3 ~ g5@3 e5@3 ~ f5@3 g5@3 ~ a5@3 e5@3 d5@3 ~ e5@3 [d4,d5]@48 ~@14]/2",
  V: "~@29 eb4@3 g4@3 bb4@3 eb5@3 ~ f4@3 a4@3", W: "c5 f5 ~@14", X: "[~@6 eb5@77 ~@13]/2",
})).s("gm_marimba").gain(0.25)

// other · vibraphone
const vibraphone = note("<A B C D A B C D E F G H I@3 J K@2 L@5 ~@8 M N O@3 P Q R S T@2 U@2 V@7 W@6 ~>".pickRestart({
  A: "[e4,a4,d5]", B: "[bb3,f4,bb4]", C: "[c4,g4,c5]", D: "[g3,d4,g4]",
  E: "[d4,a4,d5]@7 [d4,a4,d5]@7 [d4,a4,d5]@7 [d4,a4,d5]@6 [d4,a4,d5]@7 [d4,a4,d5]@7 [d4,a4,d5]@7", // D5
  F: "[bb3,f4,bb4]@7 [bb3,f4,bb4]@7 [bb3,f4,bb4]@7 [bb3,f4,bb4]@6 [bb3,f4,bb4]@7 [bb3,f4,bb4]@7 [bb3,f4,bb4]@7", // Bb5
  G: "[c4,g4,c5]@7 [c4,g4,c5]@7 [c4,g4,c5]@7 [c4,g4,c5]@6 [c4,g4,c5]@7 [c4,g4,c5]@7 [c4,g4,c5]@7", // C5
  H: "[f3,d4,g4]@7 [f3,d4,g4]@7 [f3,d4,g4]@7 [f3,d4,g4]@6 [f3,d4,g4]@7 [f3,d4,g4]@7 [f3,d4,g4]@7", // G7
  I: "d4@7 d4@7 bb3@7 ~@3 g3@7 g3@7 d3@7 d4@3", J: "d4@7 d4@7 bb3@10 g3@7 g3@7 bb3@10",
  K: "[[d4,d5]@14 [e4,e5]@13 [f4,f5]@14 [g4,g5]@14 [f4,f5]@14 [g4,g5]@13 [ab4,ab5]@14]/2", // D E F G F G Ab
  L: "[[bb4,bb5]@14 [b3,b4]@13 [d4,d5]@14 [d4,d5]@14 [e4,e5]@14 [f4,f5]@54 [c4,c5]@14 [a3,a4]@14 ~@27 [bb3,bb4]@27 ~@35]/5", // Bb B D E F C A Bb
  M: "~@7 [d4,d5]@7 ~ [c4,c5]", N: "[d4,d5]@7 ~ [e4,e5] [f4,f5]@7",
  O: "[[g4,g5]@14 ~@7 [a4,a5]@6 g5@7 g5@24 ~@4 [g4,g5]@7 [a4,a5]@6 [bb4,bb5]@14 [a4,a5]@14 [g4,g5]@14 [f4,f5]@13 [d4,d5]@10 ~ [c4,c5]@3, ~@27 g4@31 ~@86]/3", // G A G A Bb A G F …
  P: "[d4,d5]@7 ~ [c4,c5] [d4,d5]@7", Q: "~@3 [e4,e5]@3 ~ [f4,f5]@20 [g4,g5]@14 ~@7",
  R: "[a4,a5]@7 g5@7 g5@24 ~@3 [g4,g5]@7, ~@7 g4@31 ~@10", S: "[a4,a5]@7 [bb4,bb5]@14 [a4,a5]@13 [g4,g5]@14",
  T: "[[f4,f5]@14 [d4,d5]@10 [c4,c5]@3 [a4,a5]@27 ~@28 [d4,d5]@3 ~@4 [d4,d5]@3 ~@4]/2", // F D C A D
  U: "[d4,d5]@3 [d4,d5]@3 ~@4 [d4,d5]@3 ~@4 [d4,d5]@3 ~@4 [d4,d5]@3 [d4,d5]@3 ~@4 [d4,d5]@3 ~@4 [d4,d5]@3 ~@4", // D
  V: "[[d4,d5]@3 [d4,d5]@3 ~@4 [d4,d5]@3 ~@4 [d4,d5]@3 ~@4 [d4,d5]@3 [d4,d5]@3 ~@4 [d4,d5]@48 [e4,e5]@90 ~ [eb4,eb5]@90 [bb3,bb4]@73]/7", // D E Eb Bb
  W: "[~@17 [c4,c5]@90 ~ [ab3,ab4]@90 ~@26 eb5@64, ~@56 eb4@13 ~@3]/6", // C Ab
})).s("gm_vibraphone").gain(0.25)

// other · xylophone
const xylophone = note("<~@3 A B C B C B C B C D@4 ~@5 E F@9 G H I J K H I J K L@2 ~@2 M@2 ~@9 N@2 ~>".pickRestart({
  A: "~@38 c7@3 d7@7", B: "d5@7 e5@7 f5@7 g5@3 f5@7 e5@7 d5@7 e5@3", C: "d5@7 e5@7 f5@7 g5@3 f5@7 e5@7 c5@7 e5@3",
  D: "d6@7 ~@7 bb5@7 d5@7 ~@6 bb5@7 d6@7", E: "~@34 bb5@3 ~ bb5@3 bb5@3 ~ bb5@3",
  F: "bb5@3 bb5@3 ~ bb5@3 bb5@3 ~ bb5@3 bb5@3 ~ bb5@3 bb5@3 bb5@3 ~ bb5@3 bb5@3 ~ bb5@3 bb5@3 ~ bb5@3",
  G: "bb5@3 bb5@3 ~ bb5@3 bb5@3 ~ bb5@3 bb5@3 ~ [d5,d6]@3 [d5,d6]@3 [d5,d6]@7 [d5,d6]@3 ~ [d5,d6] [d5,d6]@2 [d5,d6]@3 ~ [d5,d6]@3", // D
  H: "[d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@7 [d5,d6]@3 [d5,d6]@2 [d5,d6]@2 [d5,d6]@3 [d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@3 [d5,d6]@7 [d5,d6]@3 ~ [d5,d6] [d5,d6]@2", // D
  I: "[d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@7 [d5,d6]@3 [d5,d6]@2 [d5,d6] [d5,d6]@3 ~ [d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@3 [d5,d6]@7", // D
  J: "[d5,d6]@3 [d5,d6]@2 [d5,d6]@2 [d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@6 [d5,d6]@3 ~ [d5,d6]@2 [d5,d6] [d5,d6]@3 ~ [d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@3", // D
  K: "[d5,d6]@7 [d5,d6]@3 [d5,d6]@2 [d5,d6]@2 [d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@3 [d5,d6]@3 [d5,d6]@7 [d5,d6]@3 ~ [d5,d6] [d5,d6]@2 [d5,d6]@3 ~ [d5,d6]@3", // D
  L: "[[d5,d6]@3 [d5,d6]@3 ~ [d5,d6]@7 [d5,d6]@3 [d5,d6]@2 [d5,d6]@2 [d5,d6]@3 [d5,d6]@3 [d5,d6]@27 ~@42]/2", // D
  M: "[~@17 [d5,d6]@24 ~@7]/2", N: "[~ eb5@2, ~@8 eb4@13 ~@3]/2",
})).s("gm_xylophone").gain(0.3)

stack(marimba, vibraphone, xylophone)