Strudelify

Ievan's Polkka [Transcription]

Matthew McDermand

KeyA majorTempo120 bpm
0:00/0:00
// Ievan's Polkka [Transcription] — Matthew McDermand
// 120 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3308591; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 48 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note("<~@4 A@3 B C D C E F G F H ~@8 A I J K L I M N C D C E F G F O C D C E F G F P>".pickRestart({
  A: "~ f#3 ~ f#3 ~ f#3 ~ f#3", B: "~@2 f#3@2 ~@2 f#3@2 f#3@3 ~@4 f#3",
  C: "c#3@2 f#3@2 f#3@3 g#3 a3!2 f#3!2 f#3@2 f#3 a3", D: "g#3@2 e3!2 e3@2 e3 g#3 a3@2 f#3@2 f#3@2 ~ f#3",
  E: "c#4!2 b3!2 a3!2 g#3!2 a3@2 f#3@2 f#3 ~ f#3 a3", F: "c#4@2 c#4!2 b3@2 a3!2 g#3@2 e3@2 e3 ~ e3 g#3",
  G: "b3!4 a3!2 g#3!2 a3@2 f#3@2 f#3 ~ f#3 a3", H: "b3!4 a3!2 g#3!2 a3@2 f#3@2 f#3 ~@3", I: "~ c#4 ~ c#4 ~ f#4 ~ f#4",
  J: "~ f#4 ~ f#4 ~ f#4 ~ f#4", K: "~ c#4 ~ c#4 ~ f#3 ~ f#3", L: "~ f#3 ~ f#3 ~ c#4 ~ c#4",
  M: "~ f#4 ~ f#4 ~ c#4 ~ c#4", N: "~@2 c#4@2 ~@2 c#4@2 ~@2 f#3@2 ~@3 f#3", O: "b3!4 a3!2 g#3!2 a3@2 f#3@2 f#3 ~@2 f#3",
  P: "b3!4 a3!2 g#3!2 a3@2 f#3@2 c#4 ~@3",
})).s("gm_tenor_sax").gain(0.4)

// other · trombone
const trombone = note("<~@4 A@3 B C D C E F G F H ~@8 I J I J K J K J C D C E F G F L C D C E F G F H>".pickRestart({
  A: "f#3 ~@3 c#3 ~@3 f#3 ~@3 c#3@2 e3@2", B: "f#3 ~@3 c#3 ~@3 f#3@3 ~@4 f#3",
  C: "c#3@2 f#3@2 f#3@3 g#3 a3!2 f#3!2 f#3@2 f#3 a3", D: "g#3@2 e3!2 e3@2 e3 g#3 a3@2 f#3@2 f#3@2 ~ f#3",
  E: "c#4!2 b3!2 a3!2 g#3!2 a3@2 f#3@2 f#3 ~ f#3 a3", F: "c#4@2 c#4!2 b3@2 a3!2 g#3@2 e3@2 e3 ~ e3 g#3",
  G: "b3!4 a3!2 g#3!2 a3@2 f#3@2 f#3 ~ f#3 a3", H: "b3!4 a3!2 g#3!2 a3@2 f#3@2 f#3 ~@3", I: "f#3 ~ c#3 ~ f#3 ~ c#3 e3",
  J: "c#3 ~ e3 c#3 f#3 ~ c#3 e3", K: "f#3 ~ c#3 e3 c#3 ~ c#3 e3", L: "b3!4 a3!2 g#3!2 a3@2 f#3@2 f#3 ~@2 f#3",
})).s("gm_trombone").gain(0.4)

// bass · acoustic bass
const bass = note(`<
  A@7 B C D C D E D E D C D C D E D E D C D C D E D E D C D C D E D E D C D C D E D E F
>`.pickRestart({
  A: "f#2 ~@3 c#2 ~@3 f#2 ~@3 c#2@2 e2@2", B: "f#2 ~@3 c#2 ~@3 f#2@3 ~@5", C: "f#2 ~ c#2 ~ f#2 ~ c#2 e2",
  D: "c#2 ~ e2 c#2 f#2 ~ c#2 e2", E: "f#2 ~ c#2 e2 c#2 ~ c#2 e2", F: "c#2 ~ e2 c#2 f#2 ~ c#2 ~",
})).s("gm_acoustic_bass").gain(0.4)

// other · piano
const piano = note(`<
  A@4 B@3 C D E D E F E F G H I H J K L K M H I H J K L K N D E D E F E F G D E D E F E F O
>`.pickRestart({
  A: "f#2 ~@3 c#2 ~@3 f#2 ~@3 c#2@2 e2@2", B: "f#2 ~ f#5@2 c#2 ~ f#5@2 f#2 ~ f#5@2 c#2@2 [e2,f#5]@2",
  C: "f#2 ~ f#5@2 c#2 ~ f#5@2 [f#2,f#5]@3 ~@5", D: "f#2 f#4 c#2 f#4 f#2 f#4 c#2 [e2,f#4]",
  E: "c#2 c#4 e2 [c#2,c#4] f#2 f#4 c#2 [e2,f#4]", F: "f#2 f#4 c#2 [e2,f#4] c#2 c#4 c#2 [e2,c#4]",
  G: "c#2@2 c#4@2 e2@2 [c#2,c#4]@2 f#2@2 f#4@2 c#2@2 ~ f#4, ~@7 e2", H: "c#4@2 f#4@2 f#4@3 g#4 a4!2 f#4!2 f#4@2 f#4 a4",
  I: "g#4@2 e4!2 e4@2 e4 g#4 a4@2 f#4@2 f#4@2 ~ f#4", J: "c#5!2 b4!2 a4!2 g#4!2 a4@2 f#4@2 f#4 ~ f#4 a4",
  K: "c#5@2 c#5!2 b4@2 a4!2 g#4@2 e4@2 e4 ~ e4 g#4", L: "b4!4 a4!2 g#4!2 a4@2 f#4@2 f#4 ~ f#4 a4",
  M: "b4!4 a4!2 g#4!2 a4@2 f#4@2 f#4 ~@2 f#4", N: "b4!4 a4!2 g#4!2 a4@2 f#4@2 f#4 ~@3",
  O: "c#2 c#4 e2 [c#2,c#4] f#2 f#4 [f#2,f#4] ~", // C# F#
})).s("gm_piano").gain(0.4)

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

// drums · rim
const rim = s("rim").struct("<~@4 A B A C ~@8 A B A B A B A B A B A B A B A B ~@16>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~ x ~@2",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@8 A B A B A B A B ~@16 A B A B A B A B A B A B A B A C>".pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~ x ~@2",
})).gain(0.4)

// drums · hihat
const hihat = s("hh").struct("<~@4 [~ x ~ x ~ x ~ x]!3 [~ x ~ x ~@4] ~@8 [~ x ~ x ~ x ~ x]!16 ~@16>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@47 [~@3 x]>").gain(0.4)

// drums · ride
const ride = s("rd").struct("<~@8 [~ x ~ x ~ x ~ x]!8 ~@16 [~ x ~ x ~ x ~ x]!15 [~ x ~ x ~ x ~@2]>").gain(0.4)

stack(tenor_sax, trombone, bass, piano, kick, rim, snare, hihat, crash, ride)