Strudelify

A Hundred Pipers

Traditional

KeyG majorTempo140 bpm
0:00/0:00
// A Hundred Pipers — Traditional
// 140 bpm, 6/8, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5610754; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/3)

// 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 · string ensemble 1 · "Violins"
const string_ensemble_1 = note("<~@57 A B C D E F G H I J K L I J M N I J K L I J G O>".pickRestart({
  A: "[g4,b4]@5 d4@3 d4@3 e4@2 d4@3", B: "[c4,e4]@5 g4@3 g4@5 e5@3", C: "c5 d5@4 b4@3 b4@3 a4@2 g4@3",
  D: "[g4,b4]@3 ~@2 a4@3 a4@3 g4@2 a4@3", E: "a4 b4@4 d4@3 d4@3 e4@2 d4@3", F: "[d4,e4]@5 g4@3 g4@5 e5@3",
  G: "c5 d5@4 b4@3 a4@3 b4@2 a4@3", H: "[d4,g4]@8 g4@5 a4 ~@2", I: "[g4,b4]@5 d5@3 d5@3 b4@2 d5@3",
  J: "[c5,e5]@5 g5@3 g5@3 f#5@2 e5@3", K: "[b4,d5]@5 b4@3 b4@3 a4@2 g4@3", L: "a4 b4@4 a4@3 a4@3 g4@2 a4@3",
  M: "[b4,d5]@5 b4@3 a4@3 b4@2 a4@3", N: "[d4,g4]@8 g4@5 g4@3", O: "[d4,g4]@8 g4@5 ~@3",
})).s("gm_string_ensemble_1").gain(0.14)

// chords · accordion
const accordion = note(`<
  A B C D E F G H I B C D E F G H I J K L M N K O P J K L M N K H Q R S D T F U H V W X Y M Z X AA AB W X Y M Z X H AB R
  S D T F U H V W X Y M Z X AA AB W X Y M Z X H AC
>`.pickRestart({
  A: "~@13 g4 a4@2", B: "b4@5 [g3,b3] ~@2 [d2,d4]@3 e4@2 [g3,b3] ~@2, g2@3 ~@2 d4@3 ~@5 d4@3",
  C: "e4@5 [c4,e4] ~@2 g4@5 [c4,e4,g4] ~@2, c2@3 ~@2 g4@3 g2@3 ~@2 e5@3", // C
  D: "c5 d5@4 [g3,b3,d4] ~@2 [d2,b4]@3 a4@2 [g3,b3,d4] ~@2, g2@3 ~@2 b4@3 ~@5 g4@3", // G
  E: "[g2,g3,b3,d4,b4]@3 ~@2 a4@3 a4@3 g4@2 a4@3, ~@8 d2 ~@2 e2 ~ f#2 ~@2", // G
  F: "a4 b4@4 [g3,b3] ~@2 [c2,d4]@3 e4@2 [c4,e4,g4] ~@2, g2@3 ~@2 d4@3 ~@5 d4@3", // G Csus2 C
  G: "e4@5 [g3,b3,d4] ~@2 g4@5 [g3,b3,d4] ~@2, b2@3 ~@2 g4@3 g2@3 ~@2 e5@3", // G
  H: "c5 d5@4 [d4,f#4,a4] ~@2 [d2,a4]@3 b4@2 [d4,f#4] ~@2, a2@3 ~@2 b4@3 ~@5 a4@3", // D D5 D
  I: "[g2,g3,b3,d4]@3 ~@5 [g2,g3,b3,d4]@3 ~@2 a4 ~@2, g4@8 g4@5 ~@3", // G
  J: "b4@5 [g3,b3,d4] ~@2 [d2,d5]@3 b4@2 [g3,b3,d4] ~@2, g2@3 ~@2 d5@3 ~@5 d5@3", // G D G
  K: "e5@5 [c4,e4,g4] ~@2 [g2,g5]@3 f#5@2 [c4,e4,g4] ~@2, c2@3 ~@2 g5@3 ~@5 e5@3", // C G C
  L: "d5@5 [g3,b3,d4] ~@2 [g2,b4]@3 a4@2 [g3,b3,d4] ~@2, b2@3 ~@2 b4@3 ~@5 g4@3", // G
  M: "a4 b4@4 a4@3 a4@3 g4@2 a4@3, [g2,g3,b3,d4]@3 ~@5 a2 ~@2 g2 ~ f#2 ~@2", // G
  N: "b4@5 [e3,g3,b3] ~@2 [b2,d5]@3 b4@2 [e3,g3,b3] ~@2, e2@3 ~@2 d5@3 ~@5 d5@3", // Em Bm Em
  O: "d5@5 [g3,b3,d4] ~@2 [a2,a4]@3 b4@2 [g3,b3,d4] ~@2, g2@3 ~@2 b4@3 ~@5 a4@3", // G A G
  P: "[g2,g3,b3,d4]@3 ~@5 [g2,g3,b3,d4]@3 ~@2 g4@3, g4@8 g4@5 ~@3", // G
  Q: "[g2,g3,b3,d4]@3 ~@5 [g2,g3,b3,d4]@3 ~@5, g4@8 g4@5 ~@3", // G
  R: "[g4,b4]@5 [g3,b3] ~@2 [d2,d4]@3 e4@2 [g3,b3] ~@2, g2@3 ~@2 d4@3 ~@5 d4@3", // G D G
  S: "[c4,e4]@5 [c4,e4] ~@2 g4@5 [c4,e4,g4] ~@2, c2@3 ~@2 g4@3 g2@3 ~@2 e5@3", // C
  T: "[g2,g3,b3,d4,g4,b4]@3 ~@2 a4@3 a4@3 g4@2 a4@3, ~@8 d2 ~@2 e2 ~ f#2 ~@2", // G
  U: "[d4,e4]@5 [g3,b3,d4] ~@2 g4@5 [g3,b3,d4] ~@2, b2@3 ~@2 g4@3 g2@3 ~@2 e5@3", // Dsus2 G
  V: "[g2,g3,b3]@3 ~@5 [g2,g3,b3,d4]@3 ~@2 a4 ~@2, [d4,g4]@8 g4@5 ~@3", // G G5
  W: "[g4,b4]@5 [g3,b3,d4] ~@2 [d2,d5]@3 b4@2 [g3,b3,d4] ~@2, g2@3 ~@2 d5@3 ~@5 d5@3", // G D G
  X: "[c5,e5]@5 [c4,e4,g4] ~@2 [g2,g5]@3 f#5@2 [c4,e4,g4] ~@2, c2@3 ~@2 g5@3 ~@5 e5@3", // C G C
  Y: "[b4,d5]@5 [g3,b3,d4] ~@2 [g2,b4]@3 a4@2 [g3,b3,d4] ~@2, b2@3 ~@2 b4@3 ~@5 g4@3", // Bm G
  Z: "[g4,b4]@5 [e3,g3,b3] ~@2 [b2,d5]@3 b4@2 [e3,g3,b3] ~@2, e2@3 ~@2 d5@3 ~@5 d5@3", // G Em Bm Em
  AA: "[b4,d5]@5 [g3,b3,d4] ~@2 [a2,a4]@3 b4@2 [g3,b3,d4] ~@2, g2@3 ~@2 b4@3 ~@5 a4@3", // Bm G A G
  AB: "[g2,g3,b3]@3 ~@5 [g2,g3,b3,d4]@3 ~@2 g4@3, [d4,g4]@8 g4@5 ~@3", // G G5
  AC: "[g2,g3,b3]@3 ~@5 [g2,g3,b3,d4]@3 ~@5, [d4,g4]@8 g4@5 ~@3", // G G5
})).s("gm_accordion").gain(0.48)

stack(string_ensemble_1, accordion)

More by Traditional