Strudelify

Ciganko Moja

Traditional

KeyD majorTempo230 bpm
0:00/0:00
// Ciganko Moja — Traditional
// 230 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5218665; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 120 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(230/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.

// chords · alto sax · "Sassofono contralto"
const alto_sax = note(`<
  A B C D A B C D A B C D A B C D E F G H E F G I E F G H E F G I J K L M J K L M N F N I N F N I ~@32 E F G H E F G I E
  F G H E F G I J K L M J K L M N F N I N F N I A B C D A B C D
>`.pickRestart({
  A: "[d4,f#4,a4,d5] ~@5 [a3,d4,f#4,a4]@2 [c4,d#4,g4,c5]@4 ~@3 d#5, ~@3 d#4, ~@13 g4@3, ~@7 a#4", // D Cm
  B: "~@2 [d4,f#4,a4,d5]@2 ~@2 [a3,d4,f#4,a4]@2 [c4,d#4,g4,c5]@4 ~@3 d#5, ~@3 d#4, ~@13 g4@3, ~@7 a#4", // D Cm
  C: "[d4,f#4,a4,d5]@2 ~ [a3,d4,f#4,a4] [c4,d#4,g4,c5]@2 [d4,f#4,a4,d5]@2", // D Cm D
  D: "[d#4,g4,a#4,d#5]@2 ~ [g4,a#4] d#5 [g4,a#4] d#5 ~ [c4,d#4,g4,c5]@2 [c4,d#4,g4,c5]@2 [c4,d#4,g4,c5]@2 ~@2, ~ d#4!2 ~@5", // D# Gm Cm
  E: "g4@2 g4 f#4 d#4@2 d#4 d4", F: "d4@4 f#4 g4 a4@2", G: "f#4 g4!2 f#4 d#4@2 d#4 d4", H: "d4@2 f#4 g4 a4 f#4 g4 d#4",
  I: "d4@3 d#4 d4 c4 d4@2", J: "~@2 f#4 g4 a4@2 a4@2", K: "a4!3 g4", L: "c5 a#4", M: "a4@3 g4 f#4 g4 a4@2",
  N: "g4@3 f#4 d#4@3 d4",
})).s("gm_alto_sax").gain(0.3).pan(0.3)

// chords · trumpet · "Tromba in Si♭"
const trumpet = note(`<
  ~@8 A B C D A B C D E F G H E F G I E F G H E F G I J K L M J K L M N F N I N F N I ~@32 E F G H E F G I E F G H E F G
  I J K L M J K L M N F N I N F N I A B C D A B C D
>`.pickRestart({
  A: "[d4,f#4,a4,d5] ~@5 [a3,d4,f#4,a4]@2 [c4,d#4,g4,c5]@4 ~@3 d#5, ~@3 d#4, ~@13 g4@3, ~@7 a#4", // D Cm
  B: "~@2 [d4,f#4,a4,d5]@2 ~@2 [a3,d4,f#4,a4]@2 [c4,d#4,g4,c5]@4 ~@3 d#5, ~@3 d#4, ~@13 g4@3, ~@7 a#4", // D Cm
  C: "[d4,f#4,a4,d5]@2 ~ [a3,d4,f#4,a4] [c4,d#4,g4,c5]@2 [d4,f#4,a4,d5]@2", // D Cm D
  D: "[d#4,g4,a#4,d#5]@2 ~ [g4,a#4] d#5 [g4,a#4] d#5 ~ [c4,d#4,g4,c5]@2 [c4,d#4,g4,c5]@2 [c4,d#4,g4,c5]@2 ~@2, ~ d#4!2 ~@5", // D# Gm Cm
  E: "g4@2 g4 f#4 d#4@2 d#4 d4", F: "d4@4 f#4 g4 a4@2", G: "f#4 g4!2 f#4 d#4@2 d#4 d4", H: "d4@2 f#4 g4 a4 f#4 g4 d#4",
  I: "d4@3 d#4 d4 c4 d4@2", J: "~@2 f#4 g4 a4@2 a4@2", K: "a4!3 g4", L: "c5 a#4", M: "a4@3 g4 f#4 g4 a4@2",
  N: "g4@3 f#4 d#4@3 d4",
})).s("gm_trumpet").gain(0.3).pan(0.7)

// chords · trombone
const trombone = note(`<
  A B C D A B C D A B C D A B C D E@3 F E@2 G E@4 F E@2 G E@3 H E@3 H E@3 G E@3 G E I@2 J I@3 J I@3 J I@3 J I@3 J I@3 J
  I@3 J I@3 J I E@3 F E@2 G E@4 F E@2 G E@3 H E@3 H E@3 G E@3 G E A B C D A B C D
>`.pickRestart({
  A: "d3 ~@5 a2@2 c3@4 d#3@4", B: "~ d3 ~ a2 c3@2 d#3@2", C: "d3@2 ~ a2 c3@2 d3@2", D: "d#3!3 ~ c3!3 ~",
  E: "~@2 [d3,f#3,a3]!2 ~ [d3,f#3,a3]!3", F: "[d3,f#3,a3] ~@3", G: "~@2 [c3,d#3,g3]!2 ~ [c3,d#3,g3]!3", H: "c3 c#3",
  I: "~@2 f#3!2 ~ f#3!3", J: "~@2 d#3!2 ~ d#3!3",
})).s("gm_trombone").gain(0.11).pan(0.3)

// bass · tuba
const bass = note(`<
  A B C D A B C D A B C D A B C D E@2 F G F@2 H F E@2 F G F@2 H F@3 I F@3 I F@3 H F@3 H F J@2 K J@3 K J@3 K J@3 K J@3 K
  J@3 K J@3 K J@3 K J E@2 F G F@2 H F E@2 F G F@2 H F@3 I F@3 I F@3 H F@3 H F A B C D A B C D
>`.pickRestart({
  A: "d2 ~@5 a1@2 c2@4 d#2@4", B: "~ d2 ~ a1 c2@2 d#2@2", C: "d2@2 ~ a1 c2@2 d2@2", D: "d#2!3 ~ c2!3 ~",
  E: "d2@3 ~@3 f#2@6 a2@4", F: "d2@3 f#2@3 a2@2", G: "d2 ~@3", H: "c2@3 d#2@3 g2@2", I: "c2 c#2",
  J: "d2@3 ~@3 f#2@3 ~@3 a2@2 ~@2", K: "c2@3 ~@3 d#2@3 ~@3 g2@2 ~@2",
})).s("gm_tuba").gain(0.3).pan(0.7)

// drums · kick
const kick = s("bd").struct(`<
  A B C D A B C D E B C D E B C D@4 C D@7 C D@55 C D@7 C D@20 A B C F A B C F
>`.pickRestart({
  A: "x ~@2 x ~@4", B: "x!2 ~@2", C: "x", D: "x!2", E: "x ~ x!2 ~@4", F: "x!3 ~ x ~@3",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<A@3 B A@3 B A@3 B A@3 B C@3 ~ C@7 ~ C@55 ~ C@7 ~ C@20 A@3 B A@3 B>".pickRestart({
  A: "~@3 x!5", B: "x!3 ~ x!3 ~", C: "~@3 x ~@2 x!2",
})).gain(0.3)

stack(alto_sax, trumpet, trombone, bass, kick, snare)

More by Traditional