Strudelify

persona 2 innocent sin psp - mayas theme

Ezgorom

KeyE majorTempo88 bpm
0:00/0:00
// persona 2 innocent sin psp - mayas theme — Ezgorom
// 88 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1298516; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 17 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/4)

// 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 · french horn · "Horn in F"
const french_horn = note("<A B C D A B E@2 F G@2 H ~@5>".pickRestart({
  A: "~@2 g#4@2 f#4@2 e4 f#4@3 g#4@6", B: "~@2 g#4@2 f#4@2 e4 f#4@3 e4 c#4@5", C: "~ g#4 f#4 e4 f#4 e4 c#4 e4",
  D: "a4@2 b4@2 g#4@2 f#4 e4", E: "[~@2 g#4@2 f#4@2 e4@2 f#4@2 e4@2 c#4@2 e4@4 c#4@9 [b2,b3]@2 [c#3,c#4]@2 ~]/2",
  F: "e4@2 d#4 c#4@3 b3 c#4 e4@2 d#4 c#4 c#4@2 b3 c#4",
  G: "[e4@2 d#4@2 c#4@2 b3 g#3@5 f#3@2 g#3 f#3@3 e3@10 [f#3,f#5]@2 [g#3,g#5]@2]/2", H: "f#4@2 e4 c#4@9 b3@2 c#4@2",
})).s("gm_french_horn").gain(0.28)

// chords · piano
const piano = note("<A B C D E F G@8 H@3>".pickRestart({
  A: "c#3@2 g#5@2 f#5@2 e5 f#5@3 ~@2 [c#4,d#4]@4, d#4@4 ~ g#5@3", // C#sus2
  B: "~@2 g#5@2 f#5@2 e5 f#5@3 e5 ~@3 e2@2, b3@11 c#5@5, [e3,d#4]@9 ~@7", // Emaj7
  C: "~ g#5 f#5 e5 f#5 e5 c#5 e5, [f#2,f#3,a3,c#4] [g#2,g#3]", // F#m G#
  D: "[c#3,a5]@4 [c#3,b5]@3 ~@5 f#5@2 [g#2,e5]@2, ~@7 g#2@3 b2@4 ~@2, ~@2 g#5 ~", // F#m C#7 C#m
  E: "c#4 ~ g#5@2 f#5@2 e5 f#5@3 ~@2 g#3@4, [b3,d#4]@15 ~, ~ g#3@2 ~, ~@5 g#5@3", // B
  F: "c#4@2 g#5@2 f#5@2 [g#4,e5] f#5 ~@2 e5 c#5 [g#4,c#5,e5]@4, e4@2 [d#5,f#5] ~", // C#m D#m
  G: "[~@2 g#5@2 f#5@2 [c#4,e5]@2 f#5@2 e5@2 c#5@2 ~@2 [e3,f#3,f#4] ~ c#5@9 ~@2 [c#4,c#5]@2 ~ [f#4,e5,f#5]@2 d#5 ~@3 b4 c#5 e5@2 d#5 c#5 c#5@2 b4 c#5 [b2,e5]@2 [g#2,d#5]@2 [c#3,c#5]@2 b4 ~@3 g#3@2 ~@2 g#4 ~ e4@2 e4@2 f#1@6 ~@2 [f#4,f#6]@2 ~@2 f#5@2 e5 ~ [b1,b2]@4 [c#2,c#3]@4 [c#3,b4]@2 ~@3 b1@4 [g#1,g#2]@2 ~@5 e3 ~@2 g#1 ~@3 b2 g#3@3 b2@2 ~@3 [b1,c#2,b2,c#3] [c#2,c#3]@3, [b3,d#4]@16 ~ [f#3,f#4]@3 ~@7 [b3,b4]@2 ~@5 [e4,e5]@2 c#3@4 ~@28 [f#2,e4]@8 g#2@8 ~@10 [g#2,c#5]@3 b2@8 a1@8 ~@15, f#3@4 ~@4 f#4@8 e4@3 ~@9 [g#3,g#4]@8 [b3,d#4]@15 ~ e4@8 [d#4,f#4]@4 [c#4,g#4]@4 ~@6 g#1@4 [g#4,g#6]@2 ~@3 c#5@9 ~@17 a3@4 ~@15, ~@14 e5@4 ~@10 g#5@4 ~@3 c#5@3 ~@17 g#4@5 ~@3 f#4@3 ~@9 c#5@4 f#4@4 ~@12 [b3,g#4]@8 ~@2 a2@6 g#2@9 ~@8]/8", // C#m Esus2 C# F#7 E5 G#5 C# F# …
  H: "[[g#2,g#3]@2 ~ b1@11 ~@5 c#3 ~@2 g#1 ~@3 [f#4,f#5]@2 [g#4,g#5]@2 ~ [c#2,c#3]@2 c#2@2 [c2,c3]@2 c2@2 [b1,b2]@2 b1@2 [a#1,a#2]@2 a#1@2 ~, ~@2 b2@9 ~@4 a2@6 ~ g#2@9 ~@8 [g#3,g#4]@4 ~@5, ~@3 g#4@8 ~@9 e3@4 ~@11 f#4@8 ~@5]/3", // G# F# G# C# C B A# G#
})).s("gm_piano").gain(0.32)

stack(french_horn, piano)