Strudelify

Pursuit Cornered

Masakazu Sugimori

KeyB♭ majorTempo150 bpm
0:00/0:00
// Pursuit Cornered — Masakazu Sugimori
// 150 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 6 "Orchestra Hit" named as a string part, played on string ensemble 1 (its electric guitar jazz patch is not one); ch 1 "Synth Brass" named as a brass, played on synth brass 1 (its guitar harmonics patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5978749; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 60 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(150/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 · string ensemble 1 · "Orchestra Hit"
const string_ensemble_1 = note("<~@11 A B ~@10 A B ~@10 A B ~@10 A B ~@10 A>".pickRestart({
  A: "~@8 [c4,c5]@3 [eb4,eb5]@3 [e4,e5]@2", B: "[f4,f5] ~",
})).s("gm_string_ensemble_1").gain(0.45)

// other · string ensemble 1 · "Orchestra Hit" · soft notes
const string_ensemble_1_soft = note("<~@7 [~@8 c4@3 eb4@3 e4@2] [f4 ~] ~ [f4 ~] ~@49>")
  .s("gm_string_ensemble_1").gain(0.25)

// other · string ensemble 1 · "Violins"
const string_ensemble_1_2 = note(`<
  ~@11 A B C D E F G H I J K ~@2 L M N E O P Q R K ~@3 B C D E F G H I J K ~@2 L M N E O P Q R K ~@3
>`.pickRestart({
  A: "~ [g4,g5]", B: "[c5,c6]@14 [bb4,bb5] [c5,c6]", C: "[f4,f5]@14 [g4,g5] [ab4,ab5]", D: "[bb4,bb5]",
  E: "[g4,g5] [eb4,eb5]", F: "[f4,f5]@3 [c5,c6]", G: "[db5,db6]@2 [c5,c6] [ab4,ab5]", H: "[bb4,bb5] [eb5,eb6]",
  I: "[c5,c6]@2 [bb4,bb5] [ab4,ab5]", J: "[g4,g5] [ab4,ab5]", K: "[f4,c5,f5]@2 ~ [c4,f4] ~@2 [c4,f4] ~@9",
  L: "[c5,f5,c6]@8 [eb5,ab5,eb6]@6 [ab4,ab5] [bb4,bb5]", M: "[ab4,c5,ab5]@14 [bb4,bb5] [c5,c6]", N: "[bb4,eb5,bb5]",
  O: "[f4,f5] [c4,c5]", P: "[db4,db5]@2 [eb4,eb5] [g4,g5]", Q: "[ab4,ab5] [f4,f5]", R: "[bb4,bb5]@2 [g4,g5] [eb4,eb5]",
})).s("gm_string_ensemble_1").gain(0.4)

// other · string ensemble 1 · "Violins" · soft notes
const string_ensemble_1_soft_2 = note("<~@21 A ~@10 A ~@12 A ~@10 A ~@3>".pickRestart({
  A: "~@9 [c4,f4] ~@2 [c4,f4]@2 [bb3,eb4]@2", // F5 Eb5
})).s("gm_string_ensemble_1").gain(0.15)

// chords · synth brass 1 · "Synth Brass"
const synth_brass_1 = note(`<
  ~@4 A B A B C D C D E@2 F G E H F G C I C I E@2 F G E@2 F G C D C D E@2 F G E H F G C I C I E@2 F G E@2 F G C D C D
>`.pickRestart({
  A: "[c3,f3] ~@2 [c3,f3] ~@2 [c3,f3] ~@2 [c3,f3] ~@2 [c3,f3]@2 [db3,gb3]@2", // F5 Gb5
  B: "[c3,f3] ~@2 [c3,f3] ~@2 [c3,f3] ~@2 [c3,f3] ~@2 [c3,f3]@2 [b2,e3]@2", // F5 E5
  C: "[c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4]@2 [db3,gb3,db4,gb4]@2", // F5 Gb5
  D: "[c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4]@2 [b2,e3,b3,e4]@2", // F5 E5
  E: "[c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4]@2 [c3,f3,c4,f4]@2", // F5
  F: "[f3,bb3,f4,bb4] ~@2 [f3,bb3,f4,bb4] ~@2 [f3,bb3,f4,bb4] ~@2 [f3,bb3,f4,bb4] ~@2 [f3,bb3,f4,bb4]@2 [f3,bb3,f4,bb4]@2", // Bb5
  G: "[eb3,g3,eb4,g4] ~@2 [eb3,g3,eb4,g4] ~@2 [eb3,g3,eb4,g4] ~@2 [eb3,g3,eb4,g4] ~@2 [eb3,g3,eb4,g4]@2 [eb3,g3,eb4,g4]@2", // Eb
  H: "[c3,ab3,c4,ab4] ~@2 [c3,ab3,c4,ab4] ~@2 [c3,ab3,c4,ab4] ~@2 [c3,ab3,c4,ab4] ~@2 [c3,ab3,c4,ab4]@2 [c3,ab3,c4,ab4]@2", // Fm
  I: "[c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4] ~@2 [c3,f3,c4,f4]@2 [bb2,eb3,bb3,eb4]@2", // F5 Eb5
})).s("gm_synth_brass_1").gain(0.4)

// bass · electric bass pick · "Bass Guitar"
const bass = note(`<
  ~@7 A B C B C D E F G D E F G D H F G D E F G D E F G B E F G D E F G D E F G D H F G D E F G D E F G B E F G
>`.pickRestart({
  A: "~@8 f1 [gb1,g1] ab1 [a1,bb1] b1 [c2,db2] d2 [eb2,e2]", B: "f2 ~ f2!2 ~ f2!2 ~ f2!2 ~ f2 f2@2 gb2@2",
  C: "f2 ~ f2!2 ~ f2!2 ~ f2!2 ~ f2 f2@2 e2@2", D: "f2 ~ f2!2 ~ f2!2 ~ f2!2 ~ f2 f2@2 f2@2",
  E: "ab2 ~ ab2!2 ~ ab2!2 ~ ab2!2 ~ ab2 ab2@2 ab2@2", F: "db2 ~ db2!2 ~ db2!2 ~ db2!2 ~ db2 db2@2 db2@2",
  G: "eb2 ~ eb2!2 ~ eb2!2 ~ eb2!2 ~ eb2 eb2@2 eb2@2", H: "c2 ~ c2!2 ~ c2!2 ~ c2!2 ~ c2 c2@2 c2@2",
})).s("gm_electric_bass_pick").gain(0.3)

// other · pad warm · "Warm Pad"
const pad_warm = note(`<
  ~@4 A@2 B@2 ~@4 C D E F C D E F C G E F C D E F C D E F C D E F C D E F C D E F C G E F C D E F C D E F C D E F
>`.pickRestart({
  A: "[f2,c3,f3]/2", B: "[[f2,c3,f3]@15 ~]/2", C: "[f2,f3]@15 ~", D: "[ab2,ab3]@15 ~", E: "[db2,db3]@15 ~",
  F: "[eb2,eb3]@15 ~", G: "[c2,c3]@15 ~",
})).s("gm_pad_warm").gain(0.4)

// other · pad warm · "Warm Pad" · soft notes
const pad_warm_soft = note("<A@4 ~@56>".pickRestart({
  A: "[f2,c3,f3]/2", // F5
})).s("gm_pad_warm").gain(0.2)

// bass · synth bass 1 · "Synth Bass"
const bass_2 = note(`<
  ~@11 A B C D E B F G H I J K L B C M N O P Q R S C K L B C D E B F G H I J K L B C M N O P Q R S C K L
>`.pickRestart({
  A: "~@8 g3 [f3,gb3] [eb3,e3] [db3,d3] c3 [bb2,b2] [ab2,a2] [gb2,g2]", B: "f2 ~ f2!2 ~ f2!2 ~ f2!2 ~ f2 f2@2 f2@2",
  C: "ab2 ~ ab2!2 ~ ab2!2 ~ ab2!2 ~ ab2 ab2@2 ab2@2",
  D: "bb4@2 db2!2 ~ db2 bb5@2 db2!2 ~ db2 [db2,f5]@2 [db2,ab5]@2, db2 ~ db5@2 f5@2 db2 ~ ab5@2 db5@2 ~@4", // Db Db5
  E: "g4@2 eb2!2 ~ eb2 g5@2 eb2!2 ~ eb2 [eb2,bb4]@2 [eb2,eb5]@2, eb2 ~ bb4@2 eb5@2 eb2 ~ eb4@2 g4@2 ~@4", // Eb5 Eb
  F: "db5@2 ab2!2 ~ ab2 db6@2 [ab2,c5] [ab2,eb5] g5 [ab2,c6] ab4 c5 f5 ab5, ab2 ~ f5@2 ab5@2 ab2 ~@5 ab2@2 ab2@2", // Ab Ab5 Ab
  G: "eb4@2 db2!2 ~ db2 bb5@2 db2!2 ~ db2 [db2,bb5]@2 [db2,eb6]@2, db2 ~ bb4@2 eb5@2 db2 ~ bb4@2 eb5@2 ~@4", // Gb Dbsus2
  H: "f4@2 eb2!2 ~ eb2 c6@2 eb2!2 ~ eb2 [eb2,ab4]@2 [eb2,c5]@2, eb2 ~ c5@2 f5@2 eb2 ~ bb4@2 c5@2 ~@4", // Ab5 Cm
  I: "g4@2 f2!2 ~ f2 g5@2 f2!2 ~ f2 [f2,eb5]@2 [f2,gb5]@2, f2 ~ ab4@2 eb5@2 f2 ~ ab4@2 c5@2 ~@4", // F7 Gbmaj7
  J: "c2 ~ c2!2 ~ c2!2 ~ c2!2 ~ c2 c2@2 c2@2, f5@15 ~", K: "db2 ~ db2!2 ~ db2!2 ~ db2!2 ~ db2 db2@2 db2@2",
  L: "eb2 ~ eb2!2 ~ eb2!2 ~ eb2!2 ~ eb2 eb2@2 eb2@2",
  M: "bb4@2 db2!2 ~ db2 bb5@2 db2!2 ~ db2 [db2,bb5]@2 [db2,g5]@2, db2 ~ eb5@2 g5@2 db2 ~ eb5@2 g5@2 ~@4", // Gb Dbdim
  N: "g4@2 eb2!2 ~ eb2 g5@2 eb2!2 ~ eb2 [eb2,g4]@2 [eb2,bb4]@2, eb2 ~ bb4@2 eb5@2 eb2 ~ eb4@2 eb4@2 ~@4", // Eb Eb5
  O: "f4@2 f2!2 ~ f2 f5@2 f2!2 ~ f2 [f2,ab4]@2 [f2,c5]@2, f2 ~ ab4@2 c5@2 f2 ~ c4@2 f4@2 ~@4", // Fm F5
  P: "db4@2 ab2!2 ~ ab2 db5@2 ab2!2 ~ ab2 [ab2,g4]@2 [ab2,bb4]@2, ab2 ~ f4@2 ab4@2 ab2 ~ eb4@2 ab4@2 ~@4", // Abmaj7 Absus2
  Q: "ab4@2 db2!2 ~ db2 ab5@2 db2!2 ~ db2 [db2,c5]@2 [db2,f5]@2, db2 ~ c5@2 eb5@2 db2 ~ f4@2 ab4@2 ~@4", // Dbmaj7 Db
  R: "bb4@2 eb2!2 ~ eb2 bb5@2 eb2!2 ~ eb2 [eb2,eb4]@2 [eb2,bb4]@2, eb2 ~ db5@2 f5@2 eb2 ~ g4@2 bb4@2 ~@4", // Eb Eb5
  S: "f2 ~ f2!2 ~ f2!2 ~ f2!2 ~ f2 f2@2 gb2@2, f5@15 ~",
})).s("gm_synth_bass_1").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@8 [x ~ x ~@2 x!2 ~ x!2 ~ x ~@2 x ~]!4 [x ~ x!2 ~ x!2 ~ x!2 ~ x ~@2 x ~]!48>").gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@11 [~ x ~ x]!49>").gain(0.5)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@4 [~ x ~ x]!7 ~@49>").gain(0.3)

// drums · low tom
const low_tom = s("lt").struct("<~ [~@2 x!2] [x!4] [x ~@2 x!13] [x!16]!7 ~@49>").gain(0.25)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<[x!16] [x!8 ~ x!3 ~ x!3] [~ x!3 ~ x!3 ~ x!3 ~ x!3] [~ x!2 ~@13] ~@56>").gain(0.1)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@12 A@11 ~ A@11 ~ A@11 ~ A@11 ~>".pickRestart({
  A: "x!4",
})).gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@11 A B@11 A B@11 A B@11 A B@11 A>".pickRestart({
  A: "x ~@3 x ~@6 x ~@2 x ~", B: "~ x ~ x ~ x ~ x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@11 A B ~@3 B ~@6 A B ~@10 A B ~@3 B ~@6 A B ~@10 A>".pickRestart({
  A: "~@8 x!2 ~@2 x ~@3", B: "x",
})).gain(0.4)

stack(
  string_ensemble_1, string_ensemble_1_soft, string_ensemble_1_2, string_ensemble_1_soft_2, synth_brass_1, bass,
  pad_warm, pad_warm_soft, bass_2, kick, snare, snare_soft, low_tom, low_tom_soft, pedal_hat, open_hat, crash
)