Strudelify

clash on the big bridge

Nobuo Uematsu

KeyF majorTempo178 bpm
0:00/0:00
// clash on the big bridge — Nobuo Uematsu
// 178 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 5/4 at bar 24, 4/4 at bar 25) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "Electric Bass" named as a bass, played on electric bass finger (its electric guitar jazz patch is not one); ch 9 "Bb Trumpet" named as a brass, played on trumpet (its pad warm patch is not one)
// note: duplicate parts dropped: ch 9 "Bb Trumpet" trumpet (copy of ch 4 "Bb Trumpet" synth brass 1)
// note: Transcription provider: pdmx. https://musescore.com/score/167357; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 103 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(178/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.

// bass · electric bass finger · "Electric Bass"
const bass = note(`<
  A@7 B C D B C E F G H I J K L M N O P ~ Q R S T Q R S T U@2 V W X@2 Y Z AA AB AC AD AE@2 AF AG AH@2 AI AJ AK AL AM AN
  AO AP AO AP N O Q R S T Q R S T U@2 V W X@2 Y Z AA AB AC AD AE@2 AF AG AH@2 AI AJ AK AL AM AN AO AP AO AP N O AQ@2
>`.pickRestart({
  A: "[~@12 f2@24 eb2@24 db2@24 eb2@20 [d3,eb3] [c3,db3] [bb2,b2] [ab2,a2] f2@2 f2@2]/7", B: "f3 f2!2 f3 f2!2 ab2 a2",
  C: "bb2 b2 f2!2 f3 f2!2 f3", D: "f2!2 eb2!4 f2!2", E: "f2!2 eb2!4 f3!2", F: "c4 b3 ~ b3", G: "bb3 ~ bb3 a3",
  H: "f2!2 f3 f2!2 f3 f2!2", I: "g2 ab2 a2 bb2 f2!2 f3 f2", J: "f2 f3 f2!2 eb2!4", K: "f3!2 c4@2 b3@2 ~@2",
  L: "b3 bb3 ~ bb3", M: "a3 ~ a3 ab3", N: "f2!2 ~ f2 ab2 f2 ~ f2", O: "ab2 f2 bb2 b2 bb2 ab2 f2 eb2",
  P: "f2!2 ~ f2 ab2 g2 f2 ~", Q: "f2@3 f3@2 c3 bb2 ab2", R: "f2@3 f3@2 c3 bb2 db3", S: "c3@3 g2@3 bb2@2",
  T: "db3@3 ab2 eb3 bb2@2 g2", U: "c3!8", V: "g2@3 d3@3 b2@2", W: "g2@3 a2@3 b2@2", X: "bb2!8", Y: "f2@3 c3@3 a2@2",
  Z: "f2@3 g2@3 a2@2", AA: "ab2!8", AB: "ab2!6 bb2!2", AC: "c3@3 g3@3 eb3@2", AD: "c3@3 g2@3 c3@2",
  AE: "[a2@3 c3@3 eb3@3 gb3@3 eb3@2 c3@2]/2", AF: "g2!2 g3 g2!2 g3 g2!2", AG: "g3 ~@7", AH: "~ g2 ~ g2",
  AI: "c2@2 d2 eb2@3 g2@2", AJ: "f2@2 g2 a2@3 b2@2", AK: "c2!2 ~ c2 eb2 c2 ~ c2", AL: "eb2 c2 f2 gb2 f2 eb2 c2 bb1",
  AM: "f2@3 e2@3 eb2@2", AN: "c2 c3 b2 bb2", AO: "a2", AP: "ab2", AQ: "[f2!2 ~ f2 ab2 g2 f2@4 ~@6]/2",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · percussive organ · "Mallet synthesizer"
const percussive_organ = note(`<
  A B C D B C D B C D B C E F G H I J K L M N O P ~ Q@2 R S Q@2 R T U@2 V@2 W X Y@2 Z@2 AA@2 AB@2 AC AD AE AF AG AH AI
  AJ AK AL AM AN AM AN N O Q@2 R S Q@2 R T U@2 V@2 W X Y@2 Z@2 AA@2 AB@2 AC AD AE AF AG AH AI AJ AK AL AM AN AM AN N O
  AO@2
>`.pickRestart({
  A: "~@12 c4 f4 g4 c5", B: "f5 g5 c6 f6 g6 f6 c6 f6 g6 c7 g6 f6 c6 g5 f5 c5",
  C: "g4 f4 c4 f3 c4 f4 g4 c5 f5 g5 c6 f6 g6 f6 c6 f6", D: "g6 c7 g6 f6 c6 g5 f5 c5 g4 f4 c4 f3 c4 f4 g4 c5",
  E: "g6 c7 g6 f6 c6 g5 f5 c5 g4 f4 c4 f3 ~@4", F: "[e5,eb6] [eb5,d6] ~ [eb5,d6]", G: "[d5,db6] ~ [d5,db6] [db5,c6]",
  H: "c4 f4 g4 c5 f5 g5 c6 f6 g6 f6 c6 f6 g6 c7 g6 f6", I: "c6 g5 f5 c5 g4 f4 c4 f3 c4 f4 g4 c5 f5 g5 c6 f6",
  J: "g6 f6 c6 f6 g6 c7 g6 f6 c6 g5 f5 c5 g4 f4 c4 f3", K: "~ [e5,eb6] [eb5,d6] ~", L: "[eb5,d6] [d5,db6] ~ [d5,db6]",
  M: "[db5,c6] ~ [db5,c6] [c5,b5]", N: "[c5,f5]!2 ~ [c5,f5] [eb5,ab5] [c5,f5] ~ [c5,f5]",
  O: "[eb5,ab5]@2 [c5,f5]@2 [f5,bb5]@2 [f5,b5]@2 [bb5,b5] [a5,bb5] [eb5,ab5]@2 [c5,f5]@2 [bb4,eb5]@2, ~@4 f5 ~@3", // Ab5 F5 Bb5 Fdim Bmaj7 Bbmaj7 Ab5 F5 …
  P: "[c5,f5]!2 ~ [c5,f5] [eb5,ab5] [d5,g5] [c5,f5] ~", Q: "[f5,c6]/2", R: "[e5,bb5]", S: "[f5,ab5] [g5,bb5]",
  T: "[f5,ab5] [db5,f5] [ab4,db5] [f5,ab5] [db5,f5] [ab4,db5] [db5,f5] [f5,ab5] [g5,bb5] [eb5,g5] [bb4,eb5] [g5,bb5] [eb5,g5] [bb4,eb5] [eb5,g5] [g5,bb5]", // Fm Db Db5 Fm Db Db5 Db Fm …
  U: "[g5,c6]/2", V: "[[g5,b5]@28 [f5,g5,bb5,c6] [ab5,a5,d6,eb6] [bb5,b5,f6,g6] [c6,db6,ab6,a6]]/2",
  W: "bb6 a6 bb6 f6 g6 f6 d6 eb6, d6@3 c6@3 bb5@2", X: "f6 e6 f6 d6 eb6 c6 bb5 d6, d5@3 f5@3 g5@2", Y: "[a5,c6]/2",
  Z: "[[eb5,c6]@2 [eb5,bb5] [eb5,ab5]@2 [eb5,bb5] [eb5,c6]@6 [eb5,c6]@2 [f5,d6]@2]/2", // Cm Eb5 Ab5 Eb5 Cm Dm
  AA: "[[g5,eb6]@2 [g5,d6] [g5,c6]@2 [g5,d6] [g5,eb6]@8 ~@2]/2", // Cm G5 C5 G5 Cm
  AB: "[[eb5,a5]@3 [gb5,c6]@3 [a5,eb6]@3 [c6,gb6]@3 [eb6,a6]@2 [gb6,c7]@2]/2", // Ebdim Gbdim Adim Cdim Ebdim Gbdim
  AC: "[f6,d7]@2 [e6,db7] [eb6,c7] [d6,b6] [db6,bb6] [c6,a6] [b5,ab6] [bb5,g6] [a5,gb6] [ab5,f6] [g5,e6] [gb5,eb6] [f5,d6] [e5,db6] [eb5,c6]", // Dm Dbm Cm G Gb F E Eb …
  AD: "~ g5 b5 d6 g6 f6 d6 b5, g4 f4 eb4 d4", AE: "[c6,ab6]@2 [b5,g6] ~ [bb5,gb6]@2 [b5,g6] ~",
  AF: "[c6,ab6] [ab5,eb6] [eb5,c6] [ab5,eb6] [b5,g6] [g5,d6] [d5,b5] [g5,d6] [bb5,gb6] [gb5,db6] [db5,bb5] [gb5,db6] [b5,g6]@2 ~@2", // Fm Ab5 Cm Ab5 Em G5 G G5 …
  AG: "[eb6,c7] [c6,g6] [g5,eb6] [c6,g6] [d6,bb6] [bb5,f6] [f5,d6] [bb5,f6] [c6,ab6] [ab5,eb6] [eb5,c6] [ab5,eb6] [b5,g6] [g5,d6] [d5,b5] [g5,d6]", // Cm C5 Cm C5 Gm Bb5 Dm Bb5 …
  AH: "[ab5,f6] [f5,c6] [c5,ab5] [f5,c6] [g5,eb6] [d5,c6] [b4,g5] [d5,c6] [a5,eb6] [gb5,c6] [eb5,a5] [gb5,c6] [g5,d6] [d5,b5] [b4,g5] [g4,d5]", // Db F5 Fm F5 Cm D7 Em D7 …
  AI: "[g5,c6]!2 ~ [g5,c6] [bb5,eb6] [g5,c6] ~ [g5,c6]", // C5 Eb5 C5
  AJ: "[bb5,eb6]@2 [g5,c6]@2 [c6,f6]@2 [c6,gb6]@2 [f6,gb6] [e6,f6] [bb5,eb6]@2 [g5,c6]@2 [f5,bb5]@2, ~@4 c6 ~@3", // Eb5 C5 F5 Cdim Gbmaj7 Fmaj7 Eb5 C5 …
  AK: "[a5,ab6]@3 [ab5,g6]@3 [g5,gb6]@2", AL: "~ [bb5,eb6] [a5,d6] [ab5,db6]",
  AM: "[g5,c6] [a5,d6] [g5,c6] [a5,d6] [g5,c6] [a5,d6] [g5,c6] [a5,d6]", // C5 D5 C5 D5 C5 D5 C5 D5
  AN: "[gb5,b5] [ab5,db6] [gb5,b5] [ab5,db6] [gb5,b5] [ab5,db6] [gb5,b5] [ab5,db6]", // B5 Db5 B5 Db5 B5 Db5 B5 Db5
  AO: "[[c5,f5]!2 ~ [c5,f5] [eb5,ab5] [d5,g5] [c5,f5]@4 ~@6]/2", // F5 Ab5 G5 F5
})).s("gm_percussive_organ").gain(0.3).pan(0.4)

// other · percussive organ · "Mallet synthesizer"
const percussive_organ_2 = note("<~@13 A B ~@3 C D E ~@34 F G H I H I ~@32 F G H I H I ~@4>".pickRestart({
  A: "bb5 a5 ~ a5", B: "ab5 ~ ab5 g5", C: "~ bb5 a5 ~", D: "a5 ab5 ~ ab5", E: "g5 ~ g5 gb5", F: "eb6@3 d6@3 db6@2",
  G: "~ e5 eb5 d5", H: "db5 eb5 db5 eb5 db5 eb5 db5 eb5", I: "c5 d5 c5 d5 c5 d5 c5 d5",
})).s("gm_percussive_organ").gain(0.3).pan(0.3)

// other · synth brass 1 · "Bb Trumpet"
const synth_brass_1 = note(`<
  ~@25 A B C D A B C E F@2 G@2 H I J K L@2 M@2 N@2 O ~@15 A B C D A B C E F@2 G@2 H I J K L@2 M@2 N@2 O ~@17
>`.pickRestart({
  A: "f4@2 g4 ~ ab4 ~ f4 ~ bb4 ~ ab4 ~ g4 ~ f4 ~", B: "c5 ~ f4@2 db5 ~ f4@2 c5 ~ ab4@4 ab4@2",
  C: "bb4 ~ e4@2 c5 ~ e4@2 bb4 ~ g4@4 g4@2", D: "ab4 g4 f4 g4 ab4 bb4 ab4 g4", E: "ab4 bb4 c5 db5 eb5 db5 c5 db5",
  F: "[eb5@10 c5 d5 eb5@2 g5@2]/2", G: "f5/2", H: "bb4@3 f4@3 eb4@2", I: "d4@3 eb4@3 d4@2", J: "c4@3 f4@3 g4@2",
  K: "a4@3 c5@3 d5@2", L: "[eb5@2 d5 c5@2 d5 eb5@6 eb5@2 f5@2]/2", M: "[g5@2 f5 eb5@2 f5 g5@10]/2",
  N: "[a5@2 gb5 eb5 a4 c5 d5 eb5@2 eb5@2 c5 f5@2 eb5@2]/2", O: "d5",
})).s("gm_synth_brass_1").gain(0.48).pan(0.3)

// other · overdriven guitar · "Electric Guitar"
const overdriven_guitar = note(`<
  A@7 B@5 C D E B@3 F G H I J K ~ L@2 M N L@2 M N O@2 P@2 Q@2 R S T U O@2 V@2 P W X@2 Y Z I AA ~@6 I J L@2 M N L@2 M N
  O@2 P@2 Q@2 R S T U O@2 V@2 P W X@2 Y Z I AA ~@6 I J AB@2
>`.pickRestart({
  A: "[~@12 f4@24 eb4@24 db4@24 eb4@24 f4@2 f4!2]/7", B: "f4@2 f4!2 f4@2 f4!2 f4@2 f4!2 f4@2 f4!2",
  C: "f4@2 f4!2 f4@2 f4!2 f4@2 f4!2 ~@4", D: "c5 b4 ~ b4", E: "bb4 ~ bb4 a4", F: "~ c5 b4 ~", G: "b4 bb4 ~ bb4",
  H: "a4 ~ a4 ab4", I: "c4!2 ~ c4 eb4 c4 ~ c4", J: "eb4 c4 f4!3 eb4 c4 bb3", K: "c4!2 ~ c4 eb4 d4 c4 ~",
  L: "f4@2 f4!3 ~ f4!3 ~ f4!6", M: "e4@2 e4!3 ~ e4!3 ~ e4!4 c4!2", N: "db4!2 ab3@4 eb4!2 eb4@2 bb3@6", O: "c4!8",
  P: "g4!8", Q: "bb4!8", R: "f4!8", S: "f4!7 g4", T: "ab4!8", U: "ab4!4 ab4@2 ab4@2", V: "a4!8", W: "g4 ~@7",
  X: "~ g4 ~ g4", Y: "c4@14 c4!2", Z: "c4", AA: "eb4 c4 f4 gb4 f4 eb4 c4 bb3", AB: "[c4!2 ~ c4 eb4 d4 c4@4 ~@6]/2",
})).s("gm_overdriven_guitar").gain(0.26).pan(0.8)

// other · melodic tom · "Mallet synthesizer"
const melodic_tom = note("<~@6 A B C D B C E F ~ G H I J ~@3 K@2 ~@30 L M ~@6 N ~@29 L M ~@6 N ~@2>".pickRestart({
  A: "~@12 ab3 ~ ab3!2", B: "db5 ~ ab3!3 ~ ab3!2 e4 ~ ab3!3 ~ ab3!2", C: "~@2 ab3!3 ~ ab3!2 db5 ~ ab3!3 ~ ab3!2",
  D: "e4 ~ ab3!3 ~ ab3!2 ~@2 ab3!3 ~ ab3!2", E: "e4 ~ ab3!3 ~ ab3!2 ~@2 ab3!2 ~@4", F: "~@6 e5 e4 eb3 ~@7",
  G: "ab3 ~ ab3!2 db5 ~ ab3!3 ~ ab3!2 e4 ~ ab3!2", H: "ab3 ~ ab3!2 ~@2 ab3!3 ~ ab3!2 db5 ~ ab3!2",
  I: "ab3 ~ ab3!2 e4 ~ ab3!3 ~@7", J: "~@10 e5 e4 eb3 ~@3", K: "~@2 ab5!2 ~@2 c5!2 ~@2 db4!2 ~@4",
  L: "~@2 e5!2 ~@2 a4!2 ~@2 b3!2 ~@4", M: "~@2 c3!3 ~@3 eb2!3 ~@5", N: "~@2 a5!2 ~@2 c5!2 ~@2 db4!2 ~@4",
})).s("gm_melodic_tom").gain(0.48).pan(0.6)

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

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

// drums · hihat
const hihat = s("hh").struct("<~@24 A B@23 C ~@2 D@2 ~@10 B@23 C ~@2 D@2 ~@12>".pickRestart({
  A: "~@6 x!2 ~@2 x!2 ~@2 x!2", B: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", C: "~@2 x!2 ~@12", D: "x ~ x!3 ~ x!2",
})).gain(0.3).pan(0.6)

// drums · open hat
const open_hat = s("oh").struct("<~@24 A B@23 C ~@2 D@2 ~@10 B@23 C ~@2 D@2 ~@12>".pickRestart({
  A: "~ x!3", B: "x!4", C: "x", D: "~ x ~@3 x ~@2",
})).gain(0.3).pan(0.6)

// drums · high tom
const high_tom = s("ht").struct("<~@22 [~ x ~@2] ~@80>").gain(0.3).pan(0.6)

// drums · ride bell
const ride_bell = s("rd").struct("<~@101 [~ x ~@2] ~>").gain(0.3).pan(0.6)

// drums · crash
const crash = s("cr").struct(`<
  A ~ B A ~ B ~ C@6 D E F@3 G D E H A F ~@25 F@2 ~@2 H F I ~ H@5 F ~@24 F@2 ~@2 H F I ~ H@5 F A ~
>`.pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "x!2", D: "x!2 ~ x", E: "x ~ x!2", F: "~ x ~ x", G: "~ x!2 ~", H: "x", I: "~@4 x ~@2 x",
})).gain(0.3).pan(0.6)

stack(
  bass, percussive_organ, percussive_organ_2, synth_brass_1, overdriven_guitar, melodic_tom, kick, snare, hihat,
  open_hat, high_tom, ride_bell, crash
)

More by Nobuo Uematsu