Strudelify

Hyadain no KakakataâKataomoi-C

Jerome Tan

KeyF majorTempo180 bpm
0:00/0:00
// Hyadain no KakakataâKataomoi-C — Jerome Tan
// 180 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5820771; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 66 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · pizzicato strings
const pizzicato_strings = note("<~@13 A B C ~ D E D E D E F ~@42>".pickRestart({
  A: "~@2 [bb4,g5,bb5] ~@2 [bb4,g5,bb5] ~@2", B: "~@2 [a4,f5,a5] ~@2 [a4,f5,a5] ~@2",
  C: "~@2 [g4,e5,g5] ~@2 [g4,e5,g5] ~@2", D: "~@2 [f4,c5] ~@2 [f4,d5] ~@2", E: "~@2 [e4,g4] ~@2 [g4,c5] ~@2",
  F: "[bb4,bb5] [d5,d6] [f5,f6] [c5,c6] ~ [c5,c6] [g5,g6] [f5,f6]", // Bb D F C G F
})).s("gm_pizzicato_strings").gain(0.4)

// other · epiano2 · "Effect Synthesizer"
const epiano2 = note("<~@24 A B C D E F E G H I J K L M N O P ~@15 Q ~@9>".pickRestart({
  A: "~ [g5,b5] [gb5,bb5]@2 [f5,a5] [e5,ab5] [eb5,g5]@2", B: "~@2 f4 c5 f5 ~ a5 c6", C: "f6@3 c5 c6@4 a5@4 f5@4",
  D: "f4 ~ f4 c5 f5 a5 f6 c6", E: "f6 ~ c6 ~ a5 ~ f5 ~", F: "f4 ~ f4 c5 f5 ~ a5 c6", G: "f4 ~ f4 a4 f5 ~ a5 c6",
  H: "a6 f6 c6 a5 f6 c6 a5 f5", I: "a5", J: "ab5", K: "g5", L: "c6 b5 c6 b5", M: "bb2 a2", N: "g2 c3", O: "f2 ~ f2 ~",
  P: "f2!2 ~@2", Q: "~ bb4 d5 f5 bb5 ~@3",
})).s("gm_epiano2").gain(0.2)

// other · tubular bells
const tubular_bells = note("<~@10 A@2 B ~ C ~@51>".pickRestart({
  A: "[~@7 [d4,d5]@2 ~@6 [c4,c5]]/2", B: "~@4 [f4,f5] ~@3", C: "~@7 [g4,g5]",
})).s("gm_tubular_bells").gain(0.3)

// other · clavinet
const clavinet = note("<~@24 A B C D E F E G H ~@33>".pickRestart({
  A: "~ [g5,b5] [gb5,bb5]@2 [f5,a5] [e5,ab5] [eb5,g5]@2", B: "~@2 f4 c5 f5 ~ a5 c6", C: "f6@3 c5 c6@4 a5@4 f5@4",
  D: "f4 ~ f4 c5 f5 a5 f6 c6", E: "f6 ~ c6 ~ a5 ~ f5 ~", F: "f4 ~ f4 c5 f5 ~ a5 c6", G: "f4 ~ f4 a4 f5 ~ a5 c6",
  H: "a6 f6 c6 a5 f6 c6 a5 f5",
})).s("gm_clavinet").gain(0.2)

// other · marimba
const marimba = note("<~@33 A B C D ~@2 E F G H I J K H L M N H L M ~@3 O ~@9>".pickRestart({
  A: "~ [a4,a5] [c5,c6] ~", B: "~ [ab4,ab5] [c5,c6] ~", C: "~ [f4,f5] [bb4,bb5] [d5,d6]", D: "[c5,c6] ~@3",
  E: "~@3 bb3 b3 [c4,db4] d4 [eb4,e4] f4 [gb4,g4] ab4 [a4,bb4] b4 [c5,db5] d5 [eb5,e5]", // Dbmaj7 Emaj7 Gmaj7 Bbmaj7 Dbmaj7 Emaj7
  F: "f5 [gb5,g5] ab5 [a5,bb5] b5 [c6,db6] d6 [eb6,e6] f6 [gb6,g6] ab6 [a6,bb6] b6 [c7,db7] d7 [eb7,e7]", // Gmaj7 Bbmaj7 Dbmaj7 Emaj7 Gmaj7 Bbmaj7 Dbmaj7 Emaj7
  G: "f7@2 c4 g4 bb4 f5 c6 ~@3 f4 c5 f5 c6 f6 ~", H: "~@2 d4 bb4 g5 d6 g6 ~@3 g4 d5 g5 d6 bb6 ~",
  I: "~@2 g4 d5 g5 d6 bb6 ~@3 d4 bb4 g5 d6 g6 ~", J: "~@2 a4 e5 a5 e6 c7 ~@3 g4 d5 g5 d6 bb6 ~",
  K: "~@2 c4 g4 bb4 f5 c6 ~@3 f4 c5 f5 c6 f6 ~", L: "~@2 a4 e5 d6 a6 d7 ~@3 d4 bb4 g5 d6 bb6 ~",
  M: "~@2 g4 d5 g5 d6 bb6 ~@3 g4 d5 g5 d6 bb6 ~", N: "~@4 bb4 f5 c6 ~@3 f4 c5 f5 c6 f6 ~", O: "~ bb4 d5 f5 bb5 ~@3",
})).s("gm_marimba").gain(0.3)

// other · marimba · soft notes · Gmaj7 Emaj7
const marimba_soft = note(`<
  ~@39
  [f3 [gb3,g3] ab3 a3 ~@12]
  ~@13
  [~@6 [b6,c7,db7,d7] [f6,gb6,g6,ab6,a6,bb6] [b5,c6,db6,d6,eb6,e6] [f5,gb5,g5,ab5,a5,bb5] [b4,c5,db5,d5,eb5,e5] [f4,gb4,g4,ab4,a4,bb4] [b3,c4,db4,d4,eb4,e4] [f3,gb3,g3,ab3,a3,bb3] [eb3,e3] ~]
  [d3 ~@7]
  ~@11
>`).s("gm_marimba").gain(0.15)

// drums · kick
const kick = s("bd").struct(`<
  A B@2 C D B@3 ~ B@2 C E B@3 F B@5 F ~@10 G H G H I@3 B J B@6 K J C L M H N L ~ B@2 C D B@3 O P
>`.pickRestart({
  A: "~@2 x!2", B: "x!4", C: "x ~ x ~ x ~ x!2", D: "~@3 x ~ x!2 ~", E: "~ x ~ x ~ x ~ x", F: "x!2 ~@2", G: "x ~@2 x",
  H: "x", I: "x!2", J: "~ x!3", K: "x!3 ~", L: "~ x!3 ~ x!3", M: "~ x!4 ~ x ~", N: "~ x ~ x ~@3 x", O: "~@7 x",
  P: "~ x ~@2",
})).gain(0.4)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@25 [x!2]!8 ~@33>").gain(0.15)

// drums · snare
const snare = s("sd").struct("<A B@3 C B@2 D E B@7 F B@5 G ~@17 H B@7 I B J B K L M B N B@3 C B@2 D O P>".pickRestart({
  A: "~@8 x!2 ~ x ~@4", B: "~ x ~ x", C: "~@2 x ~ x ~@3 x ~ x!3 ~ x ~", D: "x!4 ~@10 x ~", E: "~@6 x!2",
  F: "~@4 x ~@3 x!6 ~@2", G: "~@4 x ~@3 x!2 ~@6", H: "x ~ x ~ x!3 ~", I: "x ~ x ~ x ~ x ~ x!2 ~@6", J: "~@2 x ~@3 x!2",
  K: "~@2 x ~ x ~ x ~ x!6 ~@2", L: "x", M: "~@3 x", N: "~ x!4 ~@3", O: "~@7 x", P: "~@2 x!3 ~@11",
})).gain(0.4)

// drums · clap
const clap = s("cp").struct("<~@36 [~ x!2 ~] ~@29>").gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@7 A ~ B@2 C ~ B@3 D E@5 F ~@16 G H ~@22 A ~@2>".pickRestart({
  A: "~@7 x", B: "x!2 ~ x!3 ~ x", C: "x!2 ~ x!3 ~@2", D: "x!2 ~ x ~@4", E: "x!4", F: "x!2 ~@2", G: "~@10 x!6",
  H: "x!9 ~ x ~ x ~@3",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@25 [x ~ x!3 ~ x!2]!8 ~@6 [x!10 ~@6] ~@26>").gain(0.15)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@6 B ~@14 C ~@16 D ~@8 C ~@3 A ~@3 E ~@6 B ~@2>".pickRestart({
  A: "~@14 x!2", B: "~@12 x!2 ~@2", C: "~@12 x!4", D: "x!2", E: "~ x!4 ~@3",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct(`<
  A B@3 C B@2 ~@2 B@2 D E B@3 A F@5 G ~@17 H I B@6 A J B ~@2 K ~@3 B@3 C B@2 ~@3
>`.pickRestart({
  A: "x!2 ~@2", B: "x!4", C: "~ x!2 ~ x ~@3", D: "x ~ x ~ x ~ x!2", E: "~ x ~ x ~ x ~@2", F: "~ x ~ x ~ x ~ x",
  G: "~ x ~ x ~@4", H: "x ~ x ~@4 x", I: "~ x!3", J: "~@2 x!2", K: "x",
})).gain(0.4)

// drums · high tom
const high_tom = s("ht").struct("<A ~@6 B ~@8 C ~@5 D ~@16 E F ~@7 D ~@14 B ~@2>".pickRestart({
  A: "~@12 x!2 ~@2", B: "~@4 x!8 ~@4", C: "~@14 x!2", D: "~@10 x!2 ~@4", E: "x!2", F: "~@4 x!3 ~",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~ A ~ B C ~@3 D ~@3 B ~@27 B ~@8 E B C F ~ G C ~ A ~ B C ~@3 B E>".pickRestart({
  A: "x", B: "~@7 x", C: "~@3 x ~@3 x", D: "~@6 x!2", E: "~ x ~@2", F: "~ x!3 ~@4", G: "~ x!3 ~@3 x",
})).gain(0.45)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@3 B A@2 C ~ D@14 ~@18 A@7 E F C G H I G J K ~@9>".pickRestart({
  A: "x!4", B: "~ x!2 ~ x ~ x ~", C: "x ~ x ~ x ~ x!2", D: "x!16", E: "x ~ x ~ x ~ x ~ x!8", F: "~ x!3",
  G: "~ x!3 ~ x!3", H: "~@2 x ~ x ~ x ~ x!8", I: "x", J: "~@2 x ~ x ~ x ~@3 x ~ x ~ x!2", K: "x!10 ~@6",
})).gain(0.15)

stack(
  pizzicato_strings, epiano2, tubular_bells, clavinet, marimba, marimba_soft, kick, kick_soft, snare, clap, hihat,
  hihat_soft, mid_tom, open_hat, high_tom, crash, tambourine
)

More by Jerome Tan