Strudelify

persona 5 - beneath the mask

Shoji Meguro

KeyG majorTempo74 bpm
0:00/0:00
// persona 5 - beneath the mask — Shoji Meguro
// 74 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5504472; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 80 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(74/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · baritone sax
const baritone_sax = note("<~@7 A B@2 C D B@2 E F G H I J G H K L ~@56>".pickRestart({
  A: "~@11 [f2,g2] ~ a#2 ~ c3", B: "d3@2 ~@9 g2 a#2 c3 d3 d#3", C: "d3@2 g2 a#2@4 ~@4 g2 a#2@2 c3@2",
  D: "[a#2,c3] a2@7 ~@3 [f2,g2] a#2 ~ c3 ~", E: "d3@2 g2 a#2@8 g2 a#2@2 c3@2", F: "[a#2,c3] a2@3 ~@8 g3@2 f3@2",
  G: "g3 c4 c4@6 ~@4 g3@2 f3@2", H: "g3 a#3 a3@6 ~@3 d3 c3@2 d3@2", I: "f3@2 g3 c3@6 ~@2 g2 a#2 c3 d3 d#3",
  J: "d3@4 ~@2 g3 f3", K: "f3@2 g3 c3@6 ~@2 g2 a#2@2 c3@2", L: "a2",
})).s("gm_baritone_sax").gain(0.3)

// other · alto sax
const alto_sax = note("<~@39 A B C D E B C F G ~@7 H I J K L M N O P B C D E B C F G ~@8>".pickRestart({
  A: "~@6 g4 f4", B: "g4 c5 c5@6 ~@4 g4@2 f4@2", C: "g4 a#4 a4@6 ~@3 d4 c4@2 d4@2",
  D: "f4@2 g4 c4@6 ~@2 g3 a#3 c4 d4 d#4", E: "d4@4 ~@2 g4 f4", F: "f4@2 g4 c4@6 ~@3 a#3@2 c4@2", G: "a3", H: "~@7 f4",
  I: "g4@2 a#3 c4 c4@4 ~@3 c4 d4@2 a#4@2", J: "a4@6 g4 f4", K: "g4@2 a#3 c4 c4@4 ~@3 g3 a#3 c4 d4 d#4", L: "d4@3 f4",
  M: "g4@2 f4 g4 g4@4 ~@4 g4@2 c5 a#4, ~@12 f4 ~@3", N: "a4@3 f4", O: "g4@3 a#3 a#3@4 ~@3 a#3 c4@2 f4@2",
  P: "d4@6 g4 f4",
})).s("gm_alto_sax").gain(0.4)

// other · alto sax · soft notes
const alto_sax_soft = note("<~@32 A B A B A B A ~@33 A B A B A B A C>".pickRestart({
  A: "~@2 d4@3 a#3@3 d4@3 a#3@3 ~@2", B: "~@2 d4@3 a3@3 d4@3 a3@3 ~@2", C: "d4",
})).s("gm_alto_sax").gain(0.15)

// chords · piano
const piano = note(`<
  A B A C A B A C ~@16 A B A C A B A C ~@16 A B A C A B A C ~@8 A B A C A B A C A B A C A B A C
>`.pickRestart({
  A: "[g4,a#4,d5]@3 f5@3 d5@3 f5@3 d5@2 f5@2, [c3,f3,g3,a#3]@15 ~", B: "~ d5@15, [g2,a#2,d3,f3,a3,d4,a#4]",
  C: "~ d5@15, [g2,a#2,d3,f3,a3,d4,a4]", // Gm7
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note("<~@8 A B A B A B A B C D C E C D C E ~@8 A B A B A B A B C D C E C D C E ~@32>".pickRestart({
  A: "[c4,f4,g4,a#4]@15 ~", B: "[g3,a#3,d4,f4,a4]@15 ~",
  C: "[g4,a#4,d5]@3 f5@3 d5@3 f5@3 d5@2 f5@2, [c3,f3,g3,a#3]@15 ~", D: "~ d5@15, [g2,a#2,d3,f3,a3,d4,a#4]",
  E: "~ d5@15, [g2,a#2,d3,f3,a3,d4,a4]", // Gm7
})).s("gm_piano").gain(0.2)

// bass · acoustic bass
const bass = note(`<
  A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H A B C D E F G H ~@8 A
  B C D E F G H A B C D E F G I
>`.pickRestart({
  A: "c2@8 a#1@2 a#1 a1@3 ~@2", B: "g1@8 g1@2 g1 d2@3 g1@2", C: "c2@8 a#1@2 a#1 a1 ~@2 f1@2", D: "g1@8 d2@3 g1 g1@4",
  E: "c2@6 ~ g1 a#1@2 c2@6", F: "g1@8 g1@2 g1 f1 ~ g1@3", G: "c2@8 a#1@2 a#1 a1@3 f1@2", H: "g1@3 d2@3 g1@10", I: "g1",
})).s("gm_acoustic_bass").gain(0.3)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A C A D A B A B A C A E A B A B A C A F A B A B A C A G A B A B A C A E A B A B A C A F A B A B A C A D ~@7 H
  A B A B A C A F A B A B A C A I
>`.pickRestart({
  A: "x ~@2 x ~@4 x ~ x!2 ~@4", B: "x ~@2 x ~@4 x ~ x!2 ~@3 x", C: "x ~@2 x ~@4 x ~ x!2 ~ x ~ x",
  D: "x ~@2 x ~ x!2 ~ x ~@3 x ~@2 x", E: "x ~@2 x ~@2 x ~ x ~ x!2 ~@4", F: "x ~@2 x ~@2 x ~@3 x!2 ~@3 x",
  G: "x ~@2 x ~@2 x ~@2 x ~ x ~@4", H: "x ~@2 x ~@2 x ~@3 x ~@5", I: "x",
})).gain(0.3)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@56 [x ~@2 x ~@4 x ~ x!2 ~@4] [x ~ x!3 ~@3] [x ~ x!3 ~@2 x]!5 ~@17>").gain(0.15)

// drums · snare
const snare = s("sd").struct("<A@7 B A@7 C D A@6 E A@15 C D A@6 E A@7 B A ~@6 F D A@6 E A@7 ~>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@4 x ~@6", C: "~ x ~@2 x ~@2 x ~@4 x ~@2 x", D: "x!2 ~ x", E: "~@4 x ~@4 x ~@2 x ~@3",
  F: "~@7 x ~@4 x ~@2 x",
})).gain(0.3)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@7
  [~@3 x]
  ~@47
  [~@3 x]
  ~
  [x ~@2 x ~@2 x ~ x ~ x!3 ~ x ~]
  [x ~@2 x ~@4 x ~ x!3 ~@3]!5
  ~@17
>`).gain(0.15)

// drums · hihat
const hihat = s("hh").struct("<A@7 B C A@7 C A@15 C A@7 C A@14 B C ~@6 D C A@14 E>".pickRestart({
  A: "x!8", B: "x ~ x ~@2 x!2 ~ x ~ x ~ x ~@3", C: "~ x!7", D: "~@4 x ~ x!2", E: "x",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~@7 B ~@23 B ~@15 A ~@7 C ~@16>".pickRestart({
  A: "~@11 x ~@4", B: "~@9 x ~ x ~@4", C: "~ x ~@2 x ~@4 x ~ x ~@4",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@8 A ~@7 A ~@15 A ~@7 A ~@15 A ~@7 A ~@15>".pickRestart({
  A: "x",
})).gain(0.3)

stack(
  baritone_sax, alto_sax, alto_sax_soft, piano, piano_soft, bass, kick, kick_soft, snare, low_tom, hihat, mid_tom, crash
)

More by Shoji Meguro