Strudelify

Final Fantasy X - Calm Before The Storm

Nobuo Uematsuarr. notfge

KeyD♭ majorTempo85 bpm
0:00/0:00
// Final Fantasy X - Calm Before The Storm — Nobuo Uematsuarr. notfge
// 85 bpm, 6/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "Celesta" named as a mallet, played on celesta (its string ensemble 1 patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5856149; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 80 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(85/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.

// chords · celesta
const celesta = note(`<
  ~@4 A B C D E F G H I B J B I K L M ~ N O P Q N R S T U@2 V W V X V W Y Z@2 ~@4 A B C D E F G H I B J B I K L M ~ N O
  P Q N R S T U@2 V W V X V W Y Z@2
>`.pickRestart({
  A: "~@3 bb5@3 ~@5 ab5, [ab4,db5]@7 c6 db6 f5 g5@2, f5 bb5, db6 f6@5, ~ eb6@11", B: "[bb4,eb5,g5]",
  C: "~@3 bb5@3 ~@5 ab5, [ab4,db5]@7 c6 db6 [f5,ab5] g5@2, f5 bb5, db6 f6@5, ~ eb6@11", D: "~ eb6@5, [bb4,eb5,g5]",
  E: "~@11 g5, [g4,c5]@5 f5, eb5@3 g5@2 f5 g5@3 eb5@3, g5 ab5@5, ~ bb5@11", F: "~ c6@5, [ab4,db5,f5]",
  G: "~@11 c6, [g4,c5,e5]@5 b5, c6@3 c6@2 b5 c6@3 a5@3, ~ e6@11, ~ d6@5", H: "~ g6@5, [f4,bb4,d5,bb5]",
  I: "bb4 c5 db5 bb5 a5 f5 ab5 g5 eb5 db5 eb5 f5, ab4, f5@5 ~@7, db5 ~@5",
  J: "~ c5 db5 bb5 a5 f5 ab5 g5 eb5 db5 eb5 f5, bb4, f5@5 ~@7, db5 ~@5", K: "[eb5,g5]@5 [f5,ab5], bb4",
  L: "bb4 c5@2 db5 c5 bb4 ab4@2 f4@2 ab4@2, [gb5,bb5] ~, db5 ~ [c5,f5,ab5]@2", M: "[bb4,d5,f5,bb5]",
  N: "[d5,d6]!2 [eb5,eb6] [f5,f6] [bb4,bb5] [bb5,bb6]", // D Eb F Bb
  O: "[ab5,ab6]@4 [g5,g6]@2 [f5,f6]@3 [eb5,eb6] [d5,d6] [eb5,eb6]", // Ab G F Eb D Eb
  P: "[f5,f6]@4 [d5,d6]@2 [bb4,bb5]@3 [c5,c6] [bb4,bb5]@2", Q: "[ab4,ab5]@2 [g4,g5] [f4,f5]@3",
  R: "[ab5,ab6]@2 [g5,g6] [f5,f6]!2 [g5,g6]", S: "[ab5,ab6]@2 [f5,f6] [f5,f6]@2 [ab5,ab6]",
  T: "[bb5,bb6]@2 [gb5,gb6] [gb5,gb6]@2 [bb5,bb6]", U: "[c6,c7]/2",
  V: "~ c5 db5 bb5 a5 f5 ab5 g5 eb5 db5 eb5 f5, [db4,f4,bb4]", W: "[eb4,g4,bb4]", X: "[d4,eb4,g4,g5]",
  Y: "~ c5@2 db5 c5 bb4 f4@2 f4@2 ab4@2, [db4,gb4] c4, bb4@5 ~ ab4@4 ~@2", Z: "[c4 d4 eb4 d4, [f4,bb4]]/2",
})).s("gm_celesta").gain(0.2)

// chords · acoustic guitar steel · "Pedal Steel Guitar"
const acoustic_guitar_steel = note(`<
  A B A B A B A B C D E F A B A B A B G H@3 I H I H I D J K@2 A B A B A B G H@2 A B A B A B A B C D E F A B A B A B G
  H@3 I H I H I D J K@2 A B A B A B G H@2
>`.pickRestart({
  A: "~@11 f4, bb4@2 bb4 bb4@2 bb4, ~ f4@4 f4@2 f4@4 ~, ~ db4@3 db4@2",
  B: "~@11 f4, bb4@2 bb4 bb4@2 bb4, ~ f4@4 f4@2 f4@4 ~, ~ eb4@3 eb4@2",
  C: "~@11 d4, g4@2 g4 g4@2 g4, ~ eb4@4 eb4@2 eb4@5, ~ c4@3 c4@2",
  D: "~@11 f4, ab4@2 ab4 ab4@2 ab4, ~ f4@4 f4@2 f4@4 ~, ~ db4@3 db4@2",
  E: "~@11 e4, a4@2 a4 a4@2 a4, ~ e4@4 e4@2 e4@4 ~, ~ d4@5, ~@2 c4",
  F: "~@11 d4, g4@2 g4 g4@2 g4, ~ d4@4 d4@2 d4@4 ~, ~ bb3@3 bb3@2",
  G: "~@11 f4, bb4@2 bb4@3 ab4, ~ gb4@4 gb4@7, ~ db4@5, ~@6 ab4 f4 c4@4",
  H: "~@11 f4, bb4@2 bb4 bb4@2 bb4, ~ f4@4 f4@2 f4@4 ~, ~ d4@3 d4@2",
  I: "~@11 c4, f4@2 f4 f4@2 f4, ~ c4@4 c4@2 c4@4 ~, ~ ab3@3 ab3@2",
  J: "~@11 gb4, bb4@2 bb4 bb4@2 bb4, ~ gb4@4 gb4@2 gb4@4 ~, ~ db4@3 db4@2",
  K: "~@11 f4, a4@2 a4 a4@2 a4, ~ f4@4 f4@2 f4@4 ~, ~ c4@3 c4@2",
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(0)

// chords · acoustic guitar steel · "Pedal Steel Guitar"
const acoustic_guitar_steel_2 = note(`<
  A B A B A B A B C D E F A B A C A B G H@2 I J I J I J K L M@2 A B A C A B G H@2 A B A B A B A B C D E F A B A C A B G
  H@2 I J I J I J K L M@2 A B A C A B G H@2
>`.pickRestart({
  A: "~@11 ab3, bb2, ~ ab3@4 ab3@2 bb3@2 f4@3, ~ bb3!2 eb4@3, ~@3 f4@5 ab3@2 bb3@2",
  B: "~@11 g3, eb2, ~ g3@4 g3@2 bb3@2 eb4@3, ~ bb3!2 f4@3, ~@3 eb4@5 g3@2 bb3@2",
  C: "~@11 g3, c3, ~ g3@4 g3@3 g3@3 ~, ~@2 d4@2 d4@3 d4@3 d4@2, ~ eb4!3",
  D: "~@11 ab3, db3, ~ ab3@4 ab3@3 ab3@3 ~, ~@2 bb3@2 bb3@3 bb3@3 bb3@2, ~ f4!3",
  E: "~@11 g3, a2, ~ g3@4 g3@3 g3@3 ~, ~@2 b3@2 b3@3 b3@3 b3@2, ~ e4!3",
  F: "~@11 f3, g2, ~ f3@4 f3@2 bb3@2 d4@3, ~ bb3!2 eb4@3, ~@3 d4@5 f3@2 bb3@2",
  G: "~@5 gb3 ~@5 eb3, gb2 f2, ~ db3@5 ~ eb3@4 ~, ~ ab3!2 ~ ab3!2, ~ bb3 ~ c4",
  H: "~@11 f3, bb2@5 bb3, ~ f3@4 f3@2 bb3 f3 d4@3, ~ bb3!2 c4@3, ~ eb4@3",
  I: "~@11 bb3, bb2, ~ f3@11, ~ bb3 d4 eb4 bb3 d4, ~@3 eb4@2 bb3@2 d4@2 eb4@3",
  J: "~@11 ab3, f2, ~ eb3@11, ~ ab3 c4 f4 ab3 c4, ~@3 f4@2 ab3@2 c4@2 f4@3",
  K: "~@11 f3, db3, ~ f3@4 f3@3 f3@3 ~, ~@2 ab3@2 ab3@3 ab3@3 ab3@2, ~ c4!3",
  L: "~@11 gb3, gb2, ~ gb3@4 gb3@3 gb3@3 ~, ~@2 bb3@2 bb3@3 bb3@3 bb3@2, ~ f4!3",
  M: "[~@23 a3, f2 f2, ~ a3@4 a3@3 a3@3 a3@2 a3@4 a3@3 a3@3 ~, ~@2 c4@2 c4@3 c4@3 c4@4 c4@2 c4@3 c4@3 c4@2, ~ g4!2 g4@2 g4!3]/2",
})).s("gm_acoustic_guitar_steel").gain(0.2).pan(1)

// bass · fretless bass · "Fretless Electric Bass"
const bass = note(`<
  ~@12 A B C D A E F G ~ H I H J K I L M N O A B C D A E F G ~@13 A B C D A E F G ~ H I H J K I L M N O A B C D A E F G
  ~
>`.pickRestart({
  A: "bb2@5 bb2 f3@5 f3", B: "eb3@12 bb2@10 ab2 a2", C: "bb2@10 bb2@2 f3@10 f3 gb3", D: "g3 c3@3 g2@2",
  E: "eb3@12 bb2@10 ab2 g2", F: "gb2@5 gb2 f2@4 ab2@2", G: "bb2 bb1", H: "bb2@5 c3 d3@4 bb2@2", I: "f2@5 g2 ab2@4 c3@2",
  J: "f2@7 g3 f3 ~ d3 eb3", K: "f3@2 bb2@3 c3 d3@4 bb2@2", L: "db3@5 ab2 ab2@4 g2@2", M: "gb2@5 db3 db3@2 bb2@2 gb2@2",
  N: "f2@2 c3 c3@2 c2", O: "f2@2 c3 c3@3",
})).s("gm_fretless_bass").gain(0.25)

stack(celesta, acoustic_guitar_steel, acoustic_guitar_steel_2, bass)

More by Nobuo Uematsuarr. notfge