Strudelify

bruises

JacZerin24

KeyE majorTempo105 bpm
0:00/0:00
// bruises — JacZerin24
// 105 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "B♭ Clarinet" clarinet (copy of ch 1 "Flute" flute)
// note: Transcription provider: pdmx. https://musescore.com/score/5854709; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 32 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(105/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · flute
const flute = note("<~@16 A B C D A B ~ E F G H I J E K@2>".pickRestart({
  A: "~@2 c#5 b4 c#5@2 c#5 b4", B: "c#5 b4 c#5 b4 c#5 g#4 g#4@2", C: "~ b4 c#5 b4 c#5 b4 c#5 b4",
  D: "c#5 b4 c#5 b4 g#4 b4 b4@2", E: "~ g#5 f#5 g#5 f#5 e5 c#5 b4", F: "e5@6 g#5@9 ~", G: "~ e5 f#5 g#5 f#5 e5 c#5 b4",
  H: "b4@6 c#5@9 ~", I: "~@2 f#5 g#5 f#5 e5 c#5 b4", J: "d#5@6 e5@9 ~", K: "[f#5@6 c#5@21 ~@5]/2",
})).s("gm_flute").gain(0.4)

// other · clarinet · "Bass Clarinet"
const clarinet = note("<~@16 A@2 B C A@2 B ~ D@2 E@2 F@2 G@2>".pickRestart({
  A: "a3/2", B: "g#3", C: "b3", D: "[a3@3 g#3@13]/2", E: "[b3@3 a3@13]/2", F: "[b3@3 g#3@13]/2",
  G: "[b3@3 a3@11 ~@2]/2",
})).s("gm_clarinet").gain(0.4)

// other · alto sax · "Alto Saxophone"
const alto_sax = note("<~@16 A@2 B C A@2 B ~ D@2 E@2 F@2 G@2>".pickRestart({
  A: "c#4/2", B: "c#4", C: "d#4", D: "[c#4@3 c#4@13]/2", E: "[g#3@3 c#4@13]/2", F: "[d#4@3 c#4@13]/2",
  G: "[d#4@3 c#4@11 ~@2]/2",
})).s("gm_alto_sax").gain(0.4)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@16 A@2 B C A@2 B ~ D@2 E@2 F@2 G@2>".pickRestart({
  A: "e3/2", B: "e3", C: "f#3", D: "[e3@3 e3@13]/2", E: "[d#3@3 e3@13]/2", F: "[f#3@3 e3@13]/2",
  G: "[g#3@3 e3@11 ~@2]/2",
})).s("gm_tenor_sax").gain(0.4)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note("<~@16 A@2 B C A@2 B ~ D@2 E@2 F@2 G@2>".pickRestart({
  A: "a2/2", B: "g#2", C: "b2", D: "[a2@3 g#2@13]/2", E: "[b2@3 a2@13]/2", F: "[b2@3 g#2@13]/2",
  G: "[b2@3 a2@11 ~@2]/2",
})).s("gm_baritone_sax").gain(0.4)

// other · french horn · "Horn in F"
const french_horn = note("<A@2 B@2 C@2 B@2 D@2 B@2 C@2 B@2 ~@8 E@2 F@2 G@2 H@2>".pickRestart({
  A: "e4/2", B: "[e4@3 e4@11 ~@2]/2", C: "[e4@3 g#4]/2", D: "[e4@3 b4]/2", E: "[e4@3 e4@13]/2", F: "[b4@3 a4@13]/2",
  G: "[b4@3 g#4@13]/2", H: "[b4@3 a4@11 ~@2]/2",
})).s("gm_french_horn").gain(0.25)

// other · trombone
const trombone = note("<A@2 B@2 C@2 B@2 D@2 B@2 C@2 B@2 ~@8 E@2 F@2 G@2 H@2>".pickRestart({
  A: "g#3/2", B: "[a3@3 g#3@11 ~@2]/2", C: "[g#3@3 f#3]/2", D: "[g#3@3 g#3]/2", E: "[a3@3 g#3@13]/2",
  F: "[g#3@3 e3@13]/2", G: "[f#3@3 e3@13]/2", H: "[g#3@3 e3@11 ~@2]/2",
})).s("gm_trombone").gain(0.25)

// bass · tuba
const bass = note("<A@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 ~@8 D@2 E@4 F@2>".pickRestart({
  A: "c#3/2", B: "[c#3@3 b2@11 ~@2]/2", C: "[c#3@3 d#3]/2", D: "[c#3@3 c#3@13]/2", E: "[d#3@3 c#3@13]/2",
  F: "[d#3@3 c#3@11 ~@2]/2",
})).s("gm_tuba").gain(0.25)

stack(flute, clarinet, alto_sax, tenor_sax, baritone_sax, french_horn, trombone, bass)