Strudelify

Returning Home - Orchestral

TheNightreader

KeyA majorTempo120 bpm
0:00/0:00
// Returning Home - Orchestral — TheNightreader
// 120 bpm, 3/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: ch 1 "Flutes" named as a pipe, played on flute (its pizzicato strings patch is not one); ch 2 "Oboes" named as a reed, played on oboe (its tremolo strings patch is not one); ch 3 "Clarinets in B♭" named as a reed, played on clarinet (its string ensemble 1 patch is not one); ch 4 "Bassoons" named as a reed, played on bassoon (its pizzicato strings patch is not one); ch 5 "Horns in F" named as a brass, played on brass section (its tremolo strings patch is not one); ch 6 "Trumpets in B♭" named as a brass, played on trumpet (its contrabass patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/1352166; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 72 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/3)

// 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 · oboe · "Oboes"
const oboe = note("<~@34 A B@2 C A B D E F G D E F G H I ~@22>".pickRestart({
  A: "c#5@5 b4@5 ~ a4@5", B: "b4@5 c#5@5 ~ a4@5", C: "b4", D: "d5@5 c#5@5 ~ a4@5", E: "e5", F: "a5@5 g#5@5 ~ f#5@5",
  G: "f#5@5 c#5@5 ~ c#5@5", H: "f#5@5 g#5@5 ~ a5@5", I: "b5",
})).s("gm_oboe").gain(0.5)

// other · oboe · "Oboes" · soft notes
const oboe_soft = note("<~@2 A B C D A B C D A B C D A B A E ~@4 A B C D A B C D A B A E ~@38>".pickRestart({
  A: "a4", B: "f#4", C: "d4", D: "e4", E: "b4",
})).s("gm_oboe").gain(0.3)

// chords · clarinet · "Clarinets in B♭"
const clarinet = note(`<
  A@3 B C D A B C D E F G H E F I J A B C D K L M N O P Q H O P R J S T U V S T W N E F G H E F I X ~ Y Z AA AB AC Z AA
  AB AD AE AF AG AH AE AF AI@2 AJ AK@3
>`.pickRestart({
  A: "a2@3 e3@2 [a3,c#4]@5 ~ [a3,c#4]@5", B: "f#2@3 c#3@2 [f#3,a3]@5 ~ [f#3,a3]@5",
  C: "d2@3 a2@2 [d3,f#3]@5 ~ [d3,f#3]@5", D: "e2@3 b2@2 [e3,g#3]@5 ~ [e3,g#3]@5",
  E: "f#2@3 c#3@2 [f#3,a3,g#4]@5 ~ [f#3,a3,f#4]@5, a4@5 ~@11", F: "f#2@3 c#3@2 [a3,c#4]@5 ~ [a3,c#4]@5, f#4@5 ~@11",
  G: "d2@3 a2@2 [f#3,a3,c#4]@5 ~ [f#3,a3]@5, d4@5 ~@11", H: "e2@3 g#2@2 b2@3 e3@3 g#3@2 b3@3, e4",
  I: "d2@3 a2@2 [f#3,a3,g#4]@5 ~ [f#3,a3,a4]@5, f#4@5 ~@11", J: "e2@3 g#2@2 b2@3 e3@3 g#3@2 b3@3, b4",
  K: "a2@3 e3@2 [a3,c#4]@5 ~ [a3,c#4]@5, a4", L: "f#2@3 c#3@2 [f#3,a3]@5 ~ [f#3,a3]@5, f#4",
  M: "d2@3 a2@2 [d3,f#3]@5 ~ [d3,f#3]@5, d4", N: "e2@3 b2@2 [e3,g#3]@5 ~ [e3,g#3]@5, e4",
  O: "f#2@3 c#3@2 [f#3,a3]@5 ~ [f#3,a3]@5, a4", P: "f#2@3 c#3@2 [a3,c#4]@5 ~ [a3,c#4]@5, f#4",
  Q: "d2@3 a2@2 [f#3,a3]@5 ~ [f#3,a3]@5, d4", R: "d2@3 a2@2 [f#3,a3]@5 ~ [f#3,a3]@5, a4",
  S: "a2@3 e3@2 [a3,b3,c#4]@5 ~ [a3,c#4]@5, c#4@5 ~@11", T: "f#2@3 c#3@2 [f#3,a3,c#4]@5 ~ [f#3,a3]@5, b3@5 ~@11",
  U: "d2@3 a2@2 [d3,f#3,c#4]@5 ~ [d3,f#3,a3]@5, b3@5 ~@11", V: "e2@3 b2@2 [e3,g#3]@5 ~ [e3,g#3]@5, b3",
  W: "d2@3 a2@2 [d3,f#3,c#4]@5 ~ [d3,f#3,a3]@5, d4@5 ~@11", X: "[e2,b4]", Y: "~@5 a2@3 e3@3 [a3,c#4]@5",
  Z: "[a3,c#4]@5 f#2@3 c#3@3 [f#3,a3]@5", AA: "[f#3,a3]@5 d2@3 a2@3 [d3,f#3]@5", AB: "[d3,f#3]@5 e2@3 b2@3 [e3,g#3]@5",
  AC: "[e3,g#3]@5 a2@3 e3@3 [a3,c#4]@5", AD: "[e3,g#3]@5 f#2@3 c#3@3 [f#3,a3]@5",
  AE: "[f#3,a3]@5 f#2@3 c#3@3 [a3,c#4]@5", AF: "[a3,c#4]@5 d2@3 a2@3 [f#3,a3]@5", AG: "[f#3,a3]@5 e2@3 g#2@3 b2@2 e3@3",
  AH: "g#3@3 b3@2 f#2@3 c#3@3 [f#3,a3]@5", AI: "[[f#3,a3]@5 e2@16 ~@11]/2", AJ: "~@11 a2@2 e2@3",
  AK: "[a2@3 e3@2 a3@5 ~@3 a3@22 ~@13, ~@11 [e2,a2]@24 ~@13, ~@12 e3@23 ~@13]/3", // A5
})).s("gm_clarinet").gain(0.3)

// other · bassoon · "Bassoons"
const bassoon = note("<~@6 A B C D A B C D A B A E A B C D A B C D A B C D A B A E ~@38>".pickRestart({
  A: "a3", B: "f#3", C: "d3", D: "e3", E: "b3",
})).s("gm_bassoon").gain(0.3)

// chords · brass section · "Horns in F"
const brass_section = note(`<
  ~@18 A B C D A B E F G H I J G H K L M N O P M N O P M N O P M N M Q ~@9 R@8 ~ S@4
>`.pickRestart({
  A: "c#5@5 b4@5 ~ a4@5, a4@11 ~@5", B: "b4@5 c#5@5 ~ a4@5, f#4", C: "b4@5 c#5@5 ~ a4@5, d4", D: "[e4,b4]",
  E: "d5@5 c#5@5 ~ a4@5, d4", F: "[e4,e5]", G: "~@5 g#4@5 ~ f#4@5, a4", H: "~@5 c#4@5 ~ c#4@5, f#4",
  I: "~@5 c#4@5 ~ a4@5, d4", J: "[e4,g#4]", K: "f#4@5 g#4@5 ~ a4@5, a4@11 ~@5", L: "[g#4,b4]", M: "a4", N: "f#4",
  O: "d4", P: "e4", Q: "b4", R: "[~@5 a4@16 f#4@16 d4@16 e4@16 a4@16 f#4@16 d4@16 e4@11]/8",
  S: "[~@11 [e4,a4]@40 ~@13]/4", // A5
})).s("gm_brass_section").gain(0.5)

// other · trumpet · "Trumpets in B♭"
const trumpet = note(`<
  A@3 B@2 C A B@2 C B@3 D B@3 D E F G H E F G H I F G J I F I K A B@2 C E F G H I F G J I F I K ~ L@8 M@8 ~ N@4
>`.pickRestart({
  A: "~@5 a1@11", B: "~@5 f#1@11", C: "~@5 e1@11", D: "e1", E: "~@5 a1@11, a4", F: "~@5 f#1@11, f#4",
  G: "~@5 f#1@11, d4", H: "~@5 e1@11, e4", I: "~@5 f#1@11, a4", J: "[e1,e4]", K: "[e1,b4]",
  L: "[~@11 a1@11 ~@5 f#1@11 ~@5 f#1@11 ~@5 e1@11 ~@5 a1@11 ~@5 f#1@11 ~@5 f#1@11 ~@5 e1@5]/8",
  M: "[~@11 f#1@10 ~@6 f#1@10 ~@6 f#1@10 [e1,e4]@16 ~@6 f#1@10 ~@6 f#1@10 ~@6 f#1@10 [e1,e4]@11, ~@5 a4@16 f#4@16 d4@16 ~@16 a4@16 f#4@16 d4@16 ~@11]/8", // E
  N: "[~@11 [a1,a4]@40 ~@13]/4", // A
})).s("gm_trumpet").gain(0.25)

// bass · tremolo strings · "Timpani"
const bass = note("<~@34 A B C D A B C D A B C D A B E F ~@22>".pickRestart({
  A: "a2!2 ~ a2!3 ~ a2!3 ~ a2!3 ~ a2", B: "f#2!2 ~ f#2!3 ~ f#2!3 ~ f#2!3 ~ f#2", C: "d2!16", D: "e2!16", E: "a2!16",
  F: "b2",
})).s("gm_tremolo_strings").gain(0.4)

// other · string ensemble 1 · "Violins I"
const string_ensemble_1 = note(`<
  A@3 B C D E B C D B@2 F C B@2 F C E B C D E B C D B@2 F C B@2 F C E B C D E B C D B@2 F C B@2 F C ~ G H@2 I@2 H J K@2
  L M N@2 L O P@2 Q@4
>`.pickRestart({
  A: "a4/3", B: "f#4", C: "d4", D: "e4", E: "a4", F: "c#4", G: "~@5 c#4@5 ~ b3@5", H: "a3@5 b3@5 ~ c#4@5",
  I: "[a3@5 b3@16 c#4@5 ~ b3@5]/2", J: "a3@5 d4@5 ~ c#4@5", K: "[a3@5 e4@16 a5@5 ~ g#5@5]/2", L: "f#5@5 f#5@5 ~ c#5@5",
  M: "c#5@5 d5@5 ~ c#5@5", N: "[a4@5 e5@16 a5@5 ~ g#5@5]/2", O: "c#5@5 f#5@5 ~ g#5@5", P: "[a5@5 b5@16 ~@11]/2",
  Q: "[~@11 a5@40 ~@13]/4",
})).s("gm_string_ensemble_1").gain(0.2)

// other · string ensemble 1 · "Violins II"
const string_ensemble_1_2 = note(`<
  A@3 B C D C B C D B@2 E F B@2 E F C B C D C B C D B@2 E F B@2 E F C B C D C B C D B@2 E F B@2 E F ~@5 G H I J@2 K L
  M@2 K N O@2 P@4
>`.pickRestart({
  A: "a3/3", B: "c#4", C: "a3", D: "b3", E: "f#4", F: "g#4", G: "~@5 c#5@5 ~ b4@5", H: "a4@5 b4@5 ~ c#5@5",
  I: "a4@5 d5@5 ~ c#5@5", J: "[a4@5 e5@16 a4@5 ~ g#4@5]/2", K: "f#4@5 f#4@5 ~ c#4@5", L: "c#4@5 d4@5 ~ c#4@5",
  M: "[a3@5 e4@16 a4@5 ~ g#4@5]/2", N: "c#4@5 f#4@5 ~ g#4@5", O: "[a4@5 b4@16 ~@11]/2", P: "[~@11 a3@40 ~@13]/4",
})).s("gm_string_ensemble_1").gain(0.2)

// other · string ensemble 1 · "Violas"
const string_ensemble_1_3 = note(`<
  A@3 B C D A B C D B@2 C D B@2 C D A B C D A B C D B@2 C D B@2 C D A B C D A B C D B@2 C D B@2 C D ~ E F G H E F G H
  F@2 G H F@2 G H ~ I@4
>`.pickRestart({
  A: "a3@5 ~@11", B: "f#3@5 ~@11", C: "d3@5 ~@11", D: "e3@5 ~@11", E: "~@5 a3@5 ~@6", F: "~@5 f#3@5 ~@6",
  G: "~@5 d3@5 ~@6", H: "~@5 e3@5 ~@6", I: "[~@11 a4@40 ~@13]/4",
})).s("gm_string_ensemble_1").gain(0.25)

stack(
  oboe, oboe_soft, clarinet, bassoon, brass_section, trumpet, bass, string_ensemble_1, string_ensemble_1_2,
  string_ensemble_1_3
)

More by TheNightreader