Strudelify

a town with an ocean view

Joe Hisaishi

KeyA majorTempo90 bpm
0:00/0:00
// a town with an ocean view — Joe Hisaishi
// 90 bpm, 4/4, key A 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 22, 4/4 at bar 22, 2/4 at bar 57) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5940675; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 65 bars on a 48-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 · [...]/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 · trumpet · "B♭ Trumpet"
const trumpet = note("<~@4 A B C D A E F ~ G H@2 I@2 J K L M ~@17 N@2 O@2 P Q@6 R S ~@6 T@4 U@4>".pickRestart({
  A: "~@6 g4 ~", B: "~@2 f#4 ~@3 e4 ~", C: "~@2 d4 ~@3 c4 ~", D: "~@2 d4 ~@5", E: "~@2 a4 ~@3 b4 ~",
  F: "~@2 g#4 ~@2 e4 c4 a3", G: "~@2 e4 f#4 g4!4", H: "[g4@2 f#4@2 e4@2 f#4@2 d4@12 ~@2 c4 d4 e4@2 e4@2 e4@2 e4@2]/2",
  I: "[e4 d4 c4 d4 b3@6 ~ b4 g#4 a4 c5 e4]/2", J: "d4@3 c4 a#3 b3 d4 f#4", K: "a4@2 g4@2 f#4@2 g4@2 b4@6 a4 b4",
  L: "e4@6 d4 e4 b4@6 a4 b4", M: "e4 f#4", N: "[~@38 d#4@31 g4@2 ~@2 g4@2 ~@2 f4@2 ~@2 c4@2 ~@2 d#4@8 ~@3]/2",
  O: "[~ g4@8 g4@2 ~@2 f4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 a#3@4 c4@4 a#3@2 ~@2 d4@4 f4@44 ~@11]/2",
  P: "~@2 f4 ~ f4 ~ f4 ~ f4 ~ f4@2 g4 ~@3 g#4@6 g#4 ~",
  Q: "[g#4@2 ~@2 g4@4 f4@4 ~@4 d#4@36 d#4@4 ~@4 a#3@8 c4@8 d4@7 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@2 c4@2 ~@2 d#4@2 ~@9 a#4@2 ~@2 a#4@52 a#3@4 ~@4 a#3@2 ~@2 a#3@2]/6",
  R: "~ g#3@2 g3@2 ~@4 a#3 ~ a#3 ~ a#3 ~ a#3 ~ a#3 ~ c4 ~ d4 ~@2", S: "~@2 f4@8 ~@4 f4@4 ~@7 f4@4 d#4@13 ~@6",
  T: "[~@22 c4@34 c4@11 e4@34 e4@11 ~ d4@23 ~@5 d4@17 ~@34]/4",
  U: "[~@12 c4@5 f4@6 a4@6 f4@6 c5@5 f4@6 c4@11 e4@11 ~ e4@2 f4@3 g4@3 e4@3 c4@11 e4@11 ~ d4@11 f4@11 a#3@11 ~ c4@6 a#3@5 a3@34 ~@10]/4",
})).s("gm_trumpet").gain(0.25)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<~@21 A@3 B C D@3 E@3 F@3 G@2 ~ H ~@26>".pickRestart({
  A: "[~@11 c4@6 d#4@6 f4@11 f4@6 g4@6 d#4@11 c4@6 d#4@6 f4@11 f4@6 a#4@6 g4@11 g4@6 a#4@6 c4@6 c4@5 c4@6 d#4@6 d4@6]/3",
  B: "c4@5 a#3@6 g#3@6 g4@11 f4@6 c4@6 g4@8", C: "~@3 c4@6 d#4@6 f4@11 f4@6 g4@6 d#4@10",
  D: "[~ c4@6 d#4@6 f4@11 a#4@11 ~ g4@11 g4@6 a#4@6 c4@5 c4@6 c4@6 d#4@6 d4@5 c4@6 g4@6 c4@6 d#4@34 c4@5]/3",
  E: "[~ d#4@6 f4@11 f4@6 g4@6 d#4@11 c4@6 d#4@6 f4@11 f4@6 a#4@6 g4@11 g4@6 a#4@6 c4@5 c4@6 c4@6 d#4@6 d4@5 c4@6 a#3@6 g#4@5]/3",
  F: "[~ g4@11 f4@6 c4@5 g4@11 ~ c4@6 d#4@5 f4@11 ~ f4@6 g4@5 d#4@11 ~ c4@6 d#4@5 f4@11 ~ f4@6 a#4@5 g4@11 ~ g4@6 a#4@5 c4@6]/3",
  G: "[c4@6 c4@6 d#4@5 d4@6 c4@6 g4@6 c4@5 d#4@34 ~@22]/2", H: "~@3 d4@16 ~@5",
})).s("gm_trumpet").gain(0.15)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A B@3 C D E F C D E G H@2 I@2 J K L@3 ~@8 M@3 N@2 O P Q R@2 S T U V W@3 X@3 Y Z ~@6 AA@3 AB@2 AC AD@2
>`.pickRestart({
  A: "b4 a4 g4!2 f#4 e4 f#4 a4", B: "[g4 f#4 g4 d5@3 c5 b4@3 a4 a4@3 g4 a4@4 b4@4 ~]/3", C: "~@6 b4 ~ g5 ~@5 b4 ~",
  D: "f#5 ~@5 b4 ~ e5@2 ~@2 d5@2 c5@2", E: "d5 ~@2 b4 a4 c5 e5 g5", F: "f#5 d5 b4 a4 b4@3 ~", G: "a5 b5 f#5 d5 e5@3 ~",
  H: "[~@4 e4 f#4 g4 a4 b4@16 ~@4 a5@4]/2", I: "[g5 f#5 e5@4 d5 b5]/2", J: "a5 g5 e5@2", K: "f#5 d5",
  L: "[a5 e5@2 e4@2 f#3]/3",
  M: "[~@7 g#3@5 d#4@6 c5@6 d#4@6 g#3@5 d#4@6 c5@6 d#4@6 g3@5 d#4@6 a#4@6 d#4@6 g3@5 d#4@6 a#4@6 d#4@6 f3@5 c4@6 g#4@6 c4@6 f3@5 c4@6 g#4@6 c4@5]/3",
  N: "[~ g3@5 d4@6 g4@6 d4@5 g3@6 d4@6 g4@6 d4@5 g#3@6 d#4@6 c5@6 d#4@5 g#3@6 d#4@6 c5@6 d#4@5 g3@4]/2",
  O: "~@2 d#4@6 a#4@6 d#4@5 g3@6 d#4@6 a#4@6 d#4@5 f3@6", P: "c4@6 g#4@6 c4@5 g3@6 d4@6 a#4@6 d4@5 d#4@8",
  Q: "~@4 d4@11 c4@11 ~@12 d#3@2 ~@2 d#3@2 ~@2 g3@2",
  R: "[~ a#3 ~ a3@2 a#3@2 a3@2 a#3@2 d#3 ~ d#3 ~ g3 ~ a#3 ~ a3@2 a#3@2 a3@2 a#3@2 d#3 ~ d#3 ~ g3 ~ a#3 ~ a3@2 a#3@2 a3@2 a#3@2 d#3 ~ d#3 ~ g3]/2",
  S: "~@2 a#3@2 ~ a3@4 a#3@4 a3@4 a#3@4 d#3@2 ~@2 d#3@2 ~@2 g3@2 ~@2 a#3@2 ~@2 a3@4 a#3@4 a3@3",
  T: "~ a#3@4 d#3@2 ~@2 d#3@2 ~@2 g3@2 ~@2 a#3@2 ~@2 a3@4 a#3@4 a3@4 a#3@4 a#3@2 ~@2 a#3@2 ~@2 d3@2 ~",
  U: "~ f3@2 ~@2 e3@4 f3@4 e3@4 f3@4 a#3@2 ~@2 a#3@2 ~@2 d3@2 ~@2 f3@2 ~@2 e3@4 f3@3 e3@4",
  V: "f3@2 g#5 ~ g#5 ~ g#5 ~ g#5 ~ g#5@2 a#5@2 ~@2 c6@6 c6 ~",
  W: "[c6@2 ~@2 a#5@4 g#5@4 ~@4 g5@36 d#4@2 ~@2 d#4@2 ~@2 c#4@2 ~@2 c#4@2 ~@2 c4@2 ~@2 c4@2 ~@2 a#3@2 ~@2 f5@3 c5@4 d#5@4 f5@4 d#5@4 f5@2 f#5@2 f5@4 d#5@4 f#5@8 f5@4 d#5@16 ~@5]/3",
  X: "[~@3 c5@4 d#5@4 f5@4 d#5@4 f5@2 f#5@2 f5@4 d#5@4 f#5@8 f5@4 d#5@16 ~@8 d5@2 ~@2 d5@59 a#5@4 ~@4 a#5@2 ~@2 a#5@2]/3",
  Y: "~ g#5@2 g5@2 ~@2 f5@6 f4 f#4 g4 g#4 a4 a#4 b4 c5 c#5 d5 d#5", Z: "e5@2 f5@4 ~@8 f5@4 ~@7 f5@2 ~@2 d#5@13 ~@6",
  AA: "[~@22 f4@34 f4@11 c4@34 c4@11 ~ a3@23 ~@8]/3",
  AB: "[~@14 a#3@6 d4@6 f4@5 d4@6 a#4@23 c4@5 c4@6 a3@6 c4@6 f3@5 f3@6 a3@2]/2",
  AC: "~ g3@3 f3@5 g3@6 c4@6 e4@5 g3@6 c4@6 c4@5 a3@3 g3@2",
  AD: "[~ f3@3 g3@3 f3@11 d4@3 d#4@3 d4@3 a#3@2 d3@3 c4@3 a#3@6 f3@6 g3@5 f3@34 ~@10]/2",
})).s("gm_clarinet").gain(0.3)

stack(trumpet, trumpet_soft, clarinet)

More by Joe Hisaishi