Strudelify

Macalania Woods

Masashi Hamauzu

KeyC majorTempo100 bpm
0:00/0:00
// Macalania Woods — Masashi Hamauzu
// 100 bpm, 6/4, key C 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 (6/4 at bar 1, 4/4 at bar 14, 6/4 at bar 16, 4/4 at bar 37, ...) are rendered on a constant 6/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5839522; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 46 bars on a 48-step grid, each part at one level. Source detail keeps the original performance.
setcpm(100/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("<~@12 A B@2 ~@20 C D@2 ~@8>".pickRestart({
  A: "~@20 f5@9 ~ d5@9 ~@9", B: "[~@19 f5@13 d5@30 ~@34]/2", C: "~@9 f5@9 ~ d5@9 ~@20", D: "[~@7 f5@13 ~ d5@30 ~@45]/2",
})).s("gm_flute").gain(0.3)

// chords · epiano1 · "Electric Piano"
const epiano1 = note("<A@5 B@6 C D ~@2 E@8 F@4 E@7 G@2 ~ H I@7 J>".pickRestart({
  A: "[~@11 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@5, ~@11 f4@48 f4@48 f4@48 f4@48 ~@37]/5", // Dm7 A#5 Dm7 A#5 Dm7 A#5 Dm7 A#5 …
  B: "~ [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@5", // A#5 Dm7 A#5 Dm7 A#5 Dm7
  C: "~ [f5,a#5]@6 ~@4 [c5,d5,f5]@7 [f5,a#5]@7 ~@4 [c5,d5,f5]@7 [f5,a#5]@7 ~@5", D: "[c5,d5,f5]@7 ~ [f5,a#5]@7 ~@33",
  E: "[c5,d5,f5]@3 [f5,a#5]@3 ~@2 [c5,d5,f5]@3 [f5,a#5]@3 ~@2 [c5,d5,f5]@3 [f5,a#5]@3 ~@2", // Dm7 A#5 Dm7 A#5 Dm7 A#5
  F: "[c5,d5,f5]@3 [f5,a#5]@3 ~@2 [c5,d5,f5]@3 [f5,a#5]@3 ~@2 [c5,d5,f5]@3 [f5,a#5]@3 ~@2, f4", // Dm7 A#5 Dm7 A#5 Dm7 A#5
  G: "[[c5,d5,f5]@7 [f5,a#5]@7 ~@4 [c5,d5,f5]@7 [f5,a#5]@7 ~@5 [c5,d5,f5]@7 [f5,a#5]@7 ~@45]/2", // Dm7 A#5 Dm7 A#5 Dm7 A#5
  H: "~@37 [c5,d5,f5]@6 [f5,a#5]@5", // Dm7 A#5
  I: "~@5 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@5", // Dm7 A#5 Dm7 A#5 Dm7 A#5
  J: "~@5 [c5,d5,f5]@6 [f5,a#5]@6 ~@4 [c5,d5,f5]@6 [f5,a#5]@6 ~@15", // Dm7 A#5 Dm7 A#5
})).s("gm_epiano1").gain(0.3)

// other · string ensemble 1 · "Violins"
const string_ensemble_1 = note("<A@5 ~@18 B@4 C ~@18>".pickRestart({
  A: "[~@11 c6@48 c6@48 c6@48 c6@48 c6@16 ~@21]/5", B: "c6", C: "c6 ~@2",
})).s("gm_string_ensemble_1").gain(0.05)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1_2 = note("<A B@3 C@7 D@2 ~ E F G@3 F G@3 H@4 I J@3 I J@2 K@2 L M@8 N>".pickRestart({
  A: "~@11 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~", B: "~@3 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~",
  C: "[~@3 g5@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@4 [a#4,g5]@4 ~@4 [c5,g5]@4 ~, ~@11 [g#2,d#3,g3,c4]@48 [g2,e3,a3,c4]@48 [g2,e3,a3,c4]@48 [g2,e3,a3,c4]@48 [g#2,d#3,g3,c4]@48 [g2,e3,a3,c4]@48 [g2,e3,a3,c4]@37]/7", // C5 D# C5 D# C5 D# C5 D# …
  D: "[~@3 [a#4,g5]@4 ~@4 [c5,g5]@4 ~@5 [a#4,g5]@4 ~@5 [c5,g5]@5 ~@5 [a#4,g5]@5 ~@4 [c5,g5]@5 ~@5 [a#4,g5]@5 ~@33, ~@11 [g2,e3,a3,c4]@57 ~@28]/2", // D# C5 D# C5 D# C5 D# Am7
  E: "d4 c4, a2", F: "g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~, [g#2,d#3,g3,c4]",
  G: "g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~, [g2,d3,a3,c4]", H: "g5 ~ g5 ~ g5 ~ g5 ~ g5 ~ g5 ~",
  I: "[c5,g5] ~ [a#4,g5] ~ [c5,g5] ~ [a#4,g5] ~ [c5,g5] ~ [a#4,g5] ~, [g#2,d#3,g3,c4]", // C5 D# C5 D# C5 D# G#maj7
  J: "[c5,g5] ~ [a#4,g5] ~ [c5,g5] ~ [a#4,g5] ~ [c5,g5] ~ [a#4,g5] ~, [g2,e3,a3,c4]", // C5 D# C5 D# C5 D# Am7
  K: "[[c5,g5]@4 ~@5 [a#4,g5]@4 ~@5 [c5,g5]@5 ~@4 [a#4,g5]@5 ~@5 [c5,g5]@5 ~@5 [a#4,g5]@5 ~@44, [g2,e3,a3,c4]@19 ~@13]/2", // C5 D# C5 D# C5 D# Am7
  L: "~@37 [a2,d4]@11", // D5
  M: "[~@13 c4@24 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@3, ~@37 [g#2,d#3,g3,c4]@48 [g2,d3,a3,c4]@48 [g2,d3,a3,c4]@48 [g2,d3,a3,c4]@48 [g#2,d#3,g3,c4]@48 [g2,d3,a3,c4]@48 [g2,d3,a3,c4]@48 [g2,d3,a3,c4]@11]/8", // G#maj7 Gsus4 G#maj7 Gsus4
  N: "~@5 g5@4 ~@4 g5@4 ~@4 g5@4 ~@4 g5@4 ~@15",
})).s("gm_string_ensemble_1").gain(0.3)

// other · french horn · "Horn in F"
const french_horn = note("<~@4 A@7 B@2 ~@14 C D@2 E C F G H@2 ~@10>".pickRestart({
  A: "[~@11 f4@16 d#4@16 d4@16 e4@48 e4@48 e4@16 c4@32 f4@16 d#4@16 d4@16 e4@32 g4@16 g4@32 c5@5]/7",
  B: "[~@11 e5@57 ~@28]/2", C: "f4 d#4 d4", D: "e4", E: "e4 c4@2", F: "e4@2 g4", G: "g4@2 c5", H: "[e5@19 ~@13]/2",
})).s("gm_french_horn").gain(0.3)

stack(flute, epiano1, string_ensemble_1, string_ensemble_1_2, french_horn)

More by Masashi Hamauzu