Strudelify

haggstrom

C418

KeyC majorTempo112 bpm
0:00/0:00
// haggstrom — C418
// 112 bpm, 7/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Xylomarimba" named as a mallet, played on marimba (its slap bass 1 patch is not one); ch 2 "Harp" named as a string part, played on orchestral harp (its slap bass 2 patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5873567; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 53 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(112/7)

// 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.

// chords · marimba · "Xylomarimba"
const marimba = note("<A B@2 C@2 D@2 E@4 F@6 G H I J I K L M ~@2 N O ~@6 P Q P Q P Q P Q R Q ~@8>".pickRestart({
  A: "~@7 [g4,c5]@7 d4@7 c4@7 [g4,c5]@6 d4@7 c4@7", // C5
  B: "[a4@7 [g4,c5]@7 d4@7 c4@7 [g4,c5]@6 d4@7 c4@14 [g4,c5]@7 d4@7 c4@7 [g4,c5]@6 d4@7 c4@7]/2", // C5
  C: "[a4@7 [g4,c5]@7 d4@7 c4@7 [g4,c5]@6 d4@7 c4@14 [g4,c5,c6]@7 [d4,b5]@7 [c4,g5]@7 [g4,c5,c6]@6 [d4,g5,b5]@7 [c4,e5]@7]/2", // C5 G C5 G C
  D: "[a4@7 [g4,c5,c6]@7 [d4,b5]@7 [c4,g5]@7 [g4,c5,c6]@6 [d4,b5]@7 [c4,c5]@14 [g4,c5,e5,c6]@7 [d4,g5,b5]@7 [c4,g5]@7 [g4,c5,e5,c6]@6 [d4,g5,b5]@7 [c4,e5]@7]/2", // C5 G C5 G C G C5 C …
  E: "[[a4,d6]@7 [g4,c5,c6,e6]@7 [d4,g6]@7 [c4,c6]@7 [g4,c5,e6]@6 [d4,g6]@7 [c4,c6]@14 [e4,a4,e5,b5]@7 [d4,a5]@7 [a3,e5]@7 [e4,a4,e5,b5]@6 [d4,a5]@7 a3@7 f#4@7 [e4,a4,e5,b5]@7 [d4,a5]@7 [a3,e5]@7 [e4,a4,d5]@6 [d4,c#5]@7 [a3,a4]@14 [e4,a4,a5,b5]@7 [d4,a5,c#6]@7 [a3,e5,a5]@7 [e4,a4,a5,b5]@6 [d4,a5,c#6]@7 [a3,g#5,e6]@7, ~@28 c6@3 ~@58 g#5@14 ~@89]/4", // D5 C G5 C G5 C Esus4 D5 …
  F: "[f#4@7 [e4,a4,b5,g#6]@7 [d4,a5,a6]@7 [a3,e5,e6]@7 [e4,a4,d5,g#6]@6 [d4,c#5,a6]@7 [a3,a4]@14 [e4,a4,a5]@7 [b3,g#5]@7 [a3,e5]@7 [e4,a4,a5]@6 [b3,e5,g#5]@7 a3@7 f#4@7 [e4,a4,e5,a5]@7 [b3,g#5]@7 [a3,e5]@7 [e4,a4,a5]@6 [b3,g#5]@7 [a3,a4]@14 [e4,a4,e5,a5]@7 [b3,g#5,b5]@7 [a3,d5,e5]@7 [e4,a4,a5]@6 [b3,g#5,b5]@7 a3@7 f#4@7 [e4,a4,a5,g#6]@7 [b3,g#5,a6]@7 [a3,e5,e6]@7 [e4,a4,a5,g#6]@6 [b3,g#5,a6]@7 [a3,a4,e6]@27 ~ [g4,c5,e5,c6]@7 [d4,b5]@6 [c4,g5]@7 [g4,c5,e5,c6]@7, ~@89 c#5@14 ~@82 c#5@14 ~@89]/6", // E D5 A5 E7 Dmaj7 A A5 E …
  G: "[d4,b5]@7 [c4,g5]@7 [a4,d5]@7 [g4,c5,e5,c6]@7 [d4,b5]@6 [c4,g5]@7 [g4,c5,e5,f5]@7", // G C5 D5 C G C5 C
  H: "[d4,e5]@7 c4@14 [g4,c5,e5,c6]@7 [d4,g5,a5,b5]@6 [c4,f5,g5]@7 [g4,c5,e5,c6]@7", // Dsus2 C G Csus4 C
  I: "[d4,g5,a5,b5]@7 [c4,d5,e5]@7 [a4,d6]@7 [g4,c5,c6,a6]@7 [d4,b5,g6]@6 [c4,g5,e6]@7 [g4,c5,e5,f5,g6]@7", // G C D5 Am7 G C
  J: "[d4,e5,d6]@7 [c4,c5,c6]@14 [g4,c5,e5,c6]@7 [d4,g5,a5,b5]@6 [c4,f5,g5]@7 [g4,c5,e5,c6]@7", // Dsus2 C G Csus4 C
  K: "[d4,e5,d6]@7 [c4,c5,c6]@14 [e4,g4,c5,e5,c7]@7 [d4,g5,a6]@6 [c4,d5,g6]@7 [g4,c5,e5,e6]@7", // Dsus2 C Dsus4 Csus2 C
  L: "[d4,g5,a5,g6]@7 [e5,a6]@7 [a4,g6]@7 [g4,c5,c6,a6]@7 [d4,b5,g6]@6 [c4,g5,e6]@7 [g4,c5,e5,f5,g6]@7", // Dsus4 A5 A7 Am7 G C
  M: "[d4,d6]@7 [c4,c5,c6]@41", N: "c7@7 g6@7 c6@7 c7@6 g6@7 c6@7 ~@7", O: "c7@7 g6@7 c6@7 c7@6 g6@7 [c6,c7]@7 ~@7",
  P: "e3@7 ~@27 g3@14", Q: "a3@7 ~@17", R: "e3@7 ~@27 a5@7 e5@7, ~@17 g3@7",
})).s("gm_marimba").gain(0.3)

// chords · string ensemble 1 · "Violins"
const string_ensemble_1 = note("<~@20 A@5 ~@28>".pickRestart({
  A: "[~@21 [g4,c5,e5]@20 ~@21 a5@7 [c5,e5]@20 [e4,c5]@27 ~ [g4,c5,e5]@20 ~@21 a5@7 [g4,c5,e5]@20 [e4,c5]@44 ~@11, ~@41 [g4,b4,d5]@27 ~ e3@48 ~@20 [g4,b4,d5]@27 ~ e3@65 ~@10]/5", // C G
})).s("gm_string_ensemble_1").gain(0.15)

// chords · string ensemble 1 · "Violins" · soft notes
const string_ensemble_1_soft = note("<~@8 A@6 B@2 ~@23 C D C D ~@10>".pickRestart({
  A: "[~@7 [e4,a4]@48 [c#4,c#5]@48 [e4,e5]@48 [c#4,a5]@48 f#3@48 ~@41]/6", B: "[~@7 f#3@48 ~@41]/2", C: "[g4,b4,d5]",
  D: "[g4,e5]", // C
})).s("gm_string_ensemble_1").gain(0.05)

// chords · piano
const piano = note("<~@25 A B A B ~ C ~ C D C E F E F E F E F E F ~@2 D ~ D ~ D ~>".pickRestart({
  A: "~@17 e5@7, c6@7 c6@9, ~@7 b5@20 ~@21, ~@14 g5@13 [g5,b5]@21", // G
  B: "~@17 c5@7, c6@7 c6@9, ~@7 b5@20 b5@21, ~@7 g5@17",
  C: "[e4,a5]@2 ~ [e4,a5]@2 ~@2 [c5,g5,a5]@2 ~ [c5,a5]@2 ~@2 [g4,b4,e5]@2 ~ [g4,b4,e5]@2 ~@2 [g4,a5]@2 ~ [g4,a5]@2 ~ [c5,g5,a5]@2 ~@2 [c5,a5]@2 ~ [b4,g5,a5]@2 ~@2 [b4,a5]@2 ~ [g4,e5]@2 ~@2 [g4,e5]@2 ~", // A5 Am7 F Em Gsus2 Am7 F Em …
  D: "c6@2 ~ c6@2 ~@2 b5@2 ~ c6@2 ~@2 g5@2 ~ g5@2 ~@2 c6@2 ~ c6@2 ~ b5@2 ~@2 c6@2 ~ b5@2 ~@2 b5@2 ~ e5@2 ~@2 e5@2 ~",
  E: "[d5,g5,b5]@3 [d5,g5,b5]@2 [d5,g5,b5]@2 [d5,g5,b5]@3 [d5,g5,b5]@2 [d5,g5,b5]@2 [d5,g5,b5]@3 [d5,g5,b5]@2 [d5,g5,b5]@2 [d5,a5]@3 [d5,a5]@2 [d5,a5] [d5,a5]@3 ~ [d5,a5]@2 [d5,a5] [d5,a5]@3 ~ [d5,a5] [d5,a5]@2 [d5,a5]@3 ~ [d5,a5] [d5,a5]@2", // G D5
  F: "[g5,c6]@3 [g5,c6]@2 [g5,c6]@2 [g5,c6]@3 [g5,c6]@2 [g5,c6]@2 [g5,c6]@3 [g5,c6]@2 [g5,c6]@2 [g5,c6]@3 [g5,c6]@2 g5 [g5,d6]@3 ~ [g5,d6]@2 [g5,d6] [g5,d6]@3 ~ [g5,d6] [g5,d6]@2 [g5,d6]@3 ~ [g5,d6] [g5,d6]@2, ~@13 c6 ~@10", // C5 G5
})).s("gm_piano").gain(0.15)

// chords · piano
const piano_2 = note("<~@25 A B A B C ~ C ~ C ~ D E D E D E D E D E D E D E D E D E>".pickRestart({
  A: "~@41 a4@7, [g4,c5]@7 [g4,c5]@9, ~@7 d4@20 d4@21, ~@7 c4@10 c4@7", // C5
  B: "~@17 c4@7, [g4,c5]@7 [g4,c5]@9, ~@7 d4@20 d4@21, ~@7 c4@10 ~@7", // C5
  C: "[g4,c5,e5]@2 ~@5 [g4,b4,d5]@2 ~@5 [g4,b4,d5]@2 ~@5 [g4,c5,e5]@2 ~@4 [g4,b4,d5]@2 ~@5 [g4,b4,d5]@2 ~@5 [e4,g4,b4]@2 ~@5", // C G C G Em
  D: "[g4,c5,e5]@2 ~ [g4,c5,e5]@2 ~@2 [g4,b4,d5]@2 ~ [g4,c5,e5]@2 ~@2 [g4,b4,d5]@2 ~ [g4,b4,d5]@2 ~@2 [g4,c5,e5]@2 ~ [g4,c5,e5]@2 ~ [g4,b4,d5]@2 ~@2 [g4,c5,e5]@2 ~ [g4,b4,d5]@2 ~@2 [g4,b4,d5]@2 ~ [e4,g4,b4]@2 ~@2 [e4,g4,b4]@2 ~", // C G C G C G C G …
  E: "[e4,a5]@2 ~ [e4,a5]@2 ~@2 [c5,g5,a5]@2 ~ [c5,a5]@2 ~@2 [g4,b4,e5]@2 ~ [g4,b4,e5]@2 ~@2 [g4,a5]@2 ~ [g4,a5]@2 ~ [c5,g5,a5]@2 ~@2 [c5,a5]@2 ~ [b4,g5,a5]@2 ~@2 [b4,a5]@2 ~ [g4,e5]@2 ~@2 [g4,e5]@2 ~", // A5 Am7 F Em Gsus2 Am7 F Em …
})).s("gm_piano").gain(0.15)

// chords · piano · soft notes · C G C G Em C G C …
const piano_soft = note(`<
  ~@29
  [~@3 [g4,c5,e5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,b4,d5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,b4,d5]@2 ~@5 [e4,g4,b4]@2 ~]
  ~
  [~@3 [g4,c5,e5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,b4,d5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,b4,d5]@2 ~@5 [e4,g4,b4]@2 ~]
  ~
  [~@3 [g4,c5,e5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,b4,d5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,c5,e5]@2 ~@5 [g4,b4,d5]@2 ~@5 [e4,g4,b4]@2 ~]
  ~@19
>`).s("gm_piano").gain(0.05)

// other · lead 1 square · "Square Synthesizer"
const lead_1_square = note("<~@35 A B C B C B C B C D ~@8>".pickRestart({
  A: "b6@2 ~@5 c7@2 ~@5 [e6,b6]@2 ~@5 c7@2 ~@4 e6@2 ~@5 c7@2 ~@5 e6@2 ~@5", // E5
  B: "a6@2 ~@5 c7@2 ~@5 b6@2 ~@5 g6@2 ~@4 e6@2 ~@5 d6@2 ~@5 e6@2 ~@5",
  C: "e7@2 ~@5 c7@2 ~@5 [b6,e7]@2 ~@5 [b6,c7]@2 ~@4 [e6,b6]@2 ~@5 g6@2 ~@5 e6@2 ~@5", D: "a6 ~@23",
})).s("gm_lead_1_square").gain(0.2)

// other · lead 1 square · "Square Synthesizer" · soft notes
const lead_1_square_soft = note("<~@44 [~@7 c7@2 ~@5 b6@2 ~@5 g6@2 ~@4 e6@2 ~@5 d6@2 ~@5 e6@2 ~@5] ~@8>")
  .s("gm_lead_1_square").gain(0.1)

// chords · synth strings 1 · "String Synthesizer"
const synth_strings_1 = note("<~@35 A B A B A B A B A C D ~@7>".pickRestart({
  A: "e3", B: "[e3,a3]", C: "a3", D: "e3@7 ~@9",
})).s("gm_synth_strings_1").gain(0.15)

// bass · acoustic bass
const bass = note("<~@4 A@8 B@3 C@8 D@2 ~@28>".pickRestart({
  A: "[~@7 c3@21 c3@27 c3@21 c3@27 c3@21 c3@27 c3@21 c3@27 a2@21 a2@27 a2@21 a2@27 a2@21 a2@27 a2@21 a2@20]/8",
  B: "[~@7 f#2@21 f#2@27 f#2@21 f#2@27 f#2@21 f#2@20]/3",
  C: "[~@7 f#2@21 f#2@41 c3@20 c3@27 ~ c3@20 c3@27 ~ c3@20 c3@27 ~ c3@20 c3@27 ~ c3@20 c3@27 ~ c3@20 c3@27 ~ c3@20 c3@7]/8",
  D: "[~@21 c3@20 c3@55]/2",
})).s("gm_acoustic_bass").gain(0.2)

stack(
  marimba, string_ensemble_1, string_ensemble_1_soft, piano, piano_2, piano_soft, lead_1_square, lead_1_square_soft,
  synth_strings_1, bass
)

More by C418