Strudelify

once upon a time theme

Mark Isham

KeyG majorTempo52 bpm
0:00/0:00
// once upon a time theme — Mark Isham
// 52 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/1300051; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 32 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(52/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 1"
const trumpet = note("<A@5 ~@5 B C B C B C D E ~ F G F H ~@4 I ~ J@2 K>".pickRestart({
  A: "[~@28 d5@7 a#5@6 a5@7 g5@6 c6@13 ~ e5@13 d5@6 a#5@7 a5@7 g5@6 e5@26 ~ d5@26]/5", B: "b4 a4 ~ f#4", C: "b4 a4 ~@2",
  D: "b4 a4 g#4 f#4", E: "d5 c#5 b4 a4", F: "d#5 g4 f4 d#4", G: "d5", H: "f5 d5", I: "c5",
  J: "[~@30 d#5@4 d#5@4 d#5@4 d5@4 c5@4 b4@4 d#5@3 d#5@4 d#5@3]/2", K: "~ d5@4 c5@4 b4@4 g4@16 ~@3",
})).s("gm_trumpet").gain(0.25)

// other · trumpet · "B♭ Trumpet 1" · soft notes
const trumpet_soft = note("<~@23 g4 f4 g4 f4 ~@5>").s("gm_trumpet").gain(0.15)

// other · trumpet · "B♭ Trumpet 2"
const trumpet_2 = note("<A@5 ~@5 B C B C B C B C ~ D E D F ~@6 G@2 H>".pickRestart({
  A: "[~@28 d4@7 a#4@6 a4@7 g4@6 c5@13 ~ e4@13 d4@6 a#4@7 a4@7 g4@6 c4@13 e4@13 ~ d4@26]/5", B: "f#4", C: "e4",
  D: "d#4", E: "d5 g4 f4 a#4", F: "f5 d5 a#4 d5", G: "[~@30 d#4@4 d#4@4 d#4@4 d4@4 c4@4 b3@4 g3@3 d#4@4 d#4@3]/2",
  H: "~ d4@4 c4@4 b3@4 g3@16 ~@3",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet 2" · soft notes
const trumpet_soft_2 = note("<~@23 d#4 d4 d#4 d4 c4 ~@4>").s("gm_trumpet").gain(0.15)

// other · trombone
const trombone = note("<~ A@4 ~@5 B C B C B C B C ~@5 D E D F G ~ H@3>".pickRestart({
  A: "[~@22 c2@26 ~ d3@6 a#3@7 a3@7 g3@6 c2@26 ~ d2@26]/4", B: "f#2", C: "e2", D: "d#3!4", E: "d3!3 a#2",
  F: "f3!2 d3 a#2", G: "c2", H: "[~@30 c3@47 g2@16 ~@3]/3",
})).s("gm_trombone").gain(0.2)

// bass · tuba
const bass = note("<~ A@2 B@2 ~@22 C D@4>".pickRestart({
  A: "[~@22 c2@26 ~ d2@2 a2@2 d2@2 a2@2 ~ d3@2 g2@2 d3@2]/2", B: "[f2@2 d3@2 ~ e2@2 d3@2 d2@2 c2@26 ~ d2@26]/2",
  C: "c2", D: "[c2@16 g#2@15 g2@8 f2@4 f#2@19 g2@47 g2@16 ~@3]/4",
})).s("gm_tuba").gain(0.3)

// bass · tuba · soft notes
const bass_soft = note("<~@6 A B A B A B A B A B C D ~@14>".pickRestart({
  A: "f#2", B: "e2", C: "d3 c#3 b2 a2", D: "d3 c#3 b2 e2",
})).s("gm_tuba").gain(0.2)

stack(trumpet, trumpet_soft, trumpet_2, trumpet_soft_2, trombone, bass, bass_soft)