Strudelify

Welcome home

Noble W. Ridgeway

KeyB♭ majorTempo90 bpm
0:00/0:00
// Welcome home — Noble W. Ridgeway
// 90 bpm, 4/4, key Bb 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 (4/4 at bar 1, 2/4 at bar 20, 4/4 at bar 21, 1/4 at bar 27, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "Piano" named as a piano, played on piano (its tuba patch is not one); ch 2 "Piano" named as a piano, played on piano (its trombone patch is not one); ch 3 "Violin" named as a string part, played on violin (its acoustic bass patch is not one); ch 6 "Violoncello" named as a string part, played on cello (its slap bass 1 patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5151205; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 30 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 · piano
const piano = note("<~@11 A B C D@2 E F@5 G@8>".pickRestart({
  A: "~@29 d3@3", B: "~ eb3@4 f3@4 g3@2 ab3@7 ~@8 ab3@3 gb3@3", C: "~ gb3@2 f3@2 gb3@7 ~@12 gb3@4 f3@4",
  D: "[f3@3 eb3@2 f3@4 eb3@2 eb3@4 d3@4 ~ eb3@4 eb3@4 d3@2 eb3@7 ~@12 d3@2 ab3@2 gb3@6 f3@5, ~@19 f3@2 ~@43]/2",
  E: "~ eb3@3 f3@8 ~ ab3@4 gb3@6 f3@6 d3@3",
  F: "[f3@6 bb3@3 ab3@3 ab3@6 gb3@6 eb3@3 f3@8 ~@2 bb3@4 ab3@8 f3@8 ab3@6 f3@15 ~@11 f3@6 f3@6 bb3@15 ~@6 d3@3 eb3@11 ~@7 d3@3 f3@3 d4@11]/5",
  G: "[~ f4@11 ~ c4@8 ~@10 f3@3 f3@3 bb3@15 ~@7 eb3@2 ~ f3@3 eb3@11 ~@3 d3@3 f3@3 d4@11 ~ f4@11 ~ a2@12 ~@14 f3@3 f3@3 bb3@23 ~ c4@15 ~@3 f3@3 bb3@3 d4@23 ~ eb4@15 ~@28, ~@61 eb2@24 bb2@24 c4@8 ~@4 f2@20 ~@115]/8",
})).s("gm_piano").gain(0.25)

// other · piano · soft notes
const piano_soft = note("<~@3 A@3 B@6 ~@11 C ~@6>".pickRestart({
  A: "[d4 eb4 d4 c4]/3", B: "[d4@23 eb4@23 d4@23 c4@22 d4@24 eb4@24 d4@24 c4@24 ~@5]/6", C: "~@5 g2@24 ~@3",
})).s("gm_piano").gain(0.1)

// other · violin
const violin = note("<~@5 A ~@2 B@3 C@7 D@2 E@7 ~@3>".pickRestart({
  A: "~@10 f5@5 ~", B: "[~@27 f6@40 ~@29]/3", C: "[~@27 ab4@30 ~ gb4@30 gb4@15 f4@15 eb4@30 ~ ab3@28 d4@28 eb4@19]/7",
  D: "[~@5 c4@20 d4@39]/2", E: "[~@5 d4@24 eb4@24 d4@24 c4@24 ~@16 bb4@8 eb5@24 d5@24 f5@32 ~@19]/7",
})).s("gm_violin").gain(0.1)

// other · violin · soft notes
const violin_soft = note("<~@6 A@3 ~ B@2 ~@18>".pickRestart({
  A: "[d5@23 eb5@23 d5@23 ~@3 c6@11 ~@13]/3", B: "[~@11 c7@48 ~@5]/2",
})).s("gm_violin").gain(0.05)

// other · cello · "Violoncello"
const cello = note("<A@3 ~@27>".pickRestart({
  A: "[bb3@5 ~]/3",
})).s("gm_cello").gain(0.05)

// other · flute
const flute = note("<~@2 A B@3 C@6 ~@18>".pickRestart({
  A: "~@20 f5@11 ~", B: "[bb5@68 ~@16 f5@9 ~ bb5@2]/3", C: "[d6@65 ~@19 bb5@4 d6@3 f6@38 ~@2 d6@4 bb5@4 f5@46 ~@7]/6",
})).s("gm_flute").gain(0.25)

// other · flute · soft notes
const flute_soft = note("<A@2 ~@18 B@6 ~@4>".pickRestart({
  A: "[~@12 bb6@15 ~@5]/2", B: "[~@21 bb6@46 ~@6 bb6@4 d7@6 c7@17 ~@25 bb6@53 ~@14]/6",
})).s("gm_flute").gain(0.1)

// other · clarinet
const clarinet = note("<~ A@2 ~ A@2 ~ B@2 ~ C@2 ~@11 D@4 ~@3>".pickRestart({
  A: "[~@2 d5@3 c5@3]/2", B: "[~@14 d5@23 c5@23 ~@4]/2", C: "[~@11 d5@24 c5@24 ~@5]/2",
  D: "[~@5 d5@24 eb5@24 f5@24 c5@32 ~@19]/4",
})).s("gm_clarinet").gain(0.2)

// other · trumpet
const trumpet = note("<~@23 A@4 ~@3>".pickRestart({
  A: "[~@5 d4@8 d4@16 eb4@24 d4@24 c4@32 ~@19]/4",
})).s("gm_trumpet").gain(0.25)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@2 x ~@27>").gain(0.59)

stack(piano, piano_soft, violin, violin_soft, cello, flute, flute_soft, clarinet, trumpet, bell_tree)