Strudelify

Ay No Digas

Chris Montez

KeyG majorTempo122 bpm
0:00/0:00
// Ay No Digas — Chris Montez
// 122 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 93 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(122/4)

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

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D@2 E F C G H I J@2 K L F C G H I J@2 G M I C N O I J@6 K L F P G H I Q J G M I C N O I J@2 G H R P G H S B P
  J@4 G H R P G H S B G H R C G T U B C J@8 V W
>`.pickRestart({
  A: "~@6 d1 f#1", B: "g1@3 ~ d1@3 ~ g1@3 ~ d1@3 ~", C: "g1@3 ~ d1@3 ~ g1@3 ~ d1@2 f#1@2",
  D: "g1@3 ~ d1@3 ~ g1@4 d1@2 f#1@2", E: "d2@3 ~ a1@3 ~ d2@4 a1@2 d2@2", F: "c2@3 ~ g1@3 ~ c2@3 ~ g1@2 c2@2",
  G: "g1@3 ~ d1@3 ~ g1@3 ~ b1@2 c2@2", H: "d2@3 ~ a1@3 ~ d2@3 ~ a1@3 ~", I: "d2@3 ~ a1@3 ~ d1@3 ~ e1@2 f#1@2",
  J: "g1@3 ~ b1@2 d2@2 g1@3 ~ b1@2 d2@2", K: "g1@3 ~ d1@3 ~ g1@3 ~ d1@2 g1@2", L: "d2@3 ~ a1@3 ~ d2@3 ~ a1@2 d2@2",
  M: "d2@3 ~ a1@3 ~ d2@3 ~ a1@2 c2@2", N: "g1@3 ~ d1@3 ~ g1@3 ~ g1@2 a1@2", O: "d1@3 ~ a1@3 ~ d2@3 ~ a1@3 ~",
  P: "g1@3 ~ d1@3 ~ g1@3 ~ d1 ~ f#1@2", Q: "g1@3 ~ b1@2 d2@2 g1@3 ~ b1 ~ d2@2", R: "c2@3 ~ g1@3 ~ c2@3 ~ c2@3 ~",
  S: "d2@3 ~ a1@3 ~ d2@3 ~ d1@3 ~", T: "d2@3 ~ a1@3 ~ d1@3 ~ a1@3 ~", U: "d2@3 ~ a1@3 ~ d1@3 ~ d1@3 ~",
  V: "g1@3 ~ b1@2 d2@2 g1 ~ g1 ~ e1 ~ d1 ~", W: "g1@15 ~",
})).s("gm_electric_bass_finger").gain(0.33)

// other · marimba
const marimba = note("<~@13 A B C D E F G H ~@10 I J K L M ~@26 I J K L M ~@17 J K L N J K L O P>".pickRestart({
  A: "~@4 b3@2 c4@2 d4 [b3,d4]!7", B: "b3 ~@3 f#4@2 g4@2 a4 [f#4,a4]!7", C: "f#4 ~@3 e4@2 f#4@2 g4 [e4,g4]!7",
  D: "e4 ~@15", E: "~@4 g4@2 a4@2 b4 [g4,b4]!7", F: "g4 ~@3 f#4@2 g4@2 a4 [f#4,a4]!7",
  G: "f#4 ~@3 a4@2 b4@2 c5 [a4,c5]!7", H: "a4 ~@15", I: "~@6 g4 a4", J: "b4 [g4,b4]!15", K: "g4 ~@11 b4@2 c5@2",
  L: "d5 [b4,d5]!15", M: "b4 ~@15", N: "b4 ~@11 g4@2 a4@2", O: "g4@2 b4 d5 g4!2 e4 d4, b4 ~@15", P: "g4",
})).s("gm_marimba").gain(0.3)

// chords · brass section · "BRASS 1"
const brass_section = note(`<
  ~@13 A B C D E F@2 G H ~@13 A B C I J F@2 K L ~@9 A B M D J F@2 K L ~@4 A B M D J F@2 ~ A B M N J F@2 O L ~@10
>`.pickRestart({
  A: "~@2 [g5,b5] ~ [g5,b5] ~ [g5,b5] ~ [g5,b5] ~@7", B: "~@2 [f#5,a5] ~ [f#5,a5] ~ [f#5,a5] ~ [f#5,a5] ~@7",
  C: "[e5,g5]", D: "[b4,d5]@4 [c5,e5] ~ [d5,f#5] ~ [e5,g5]@3 ~ [f#5,a5] ~ [g5,a#5] ~", E: "[g5,b5]@3 ~",
  F: "~@2 [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~ [d5,f#5] ~@7", // D
  G: "[d5,b5]@4 [c5,a5] ~ g5@2 [a4,f#5]@3 ~ [b4,g5] ~ [c5,a5] ~, ~@6 b4 ~@9", H: "[b4,g5]@3 ~",
  I: "[b4,d5]@3 ~ [c5,e5] ~ [d5,f#5] ~ [e5,g5]@4 [f#5,a5] ~ [g5,a#5] ~", J: "[g5,b5]@11 ~@5",
  K: "[d5,b5]@4 [c5,a5] ~ [b4,g5] ~ [a4,f#5]@3 ~ [b4,g5] ~ [c5,a5] ~", L: "[b4,g5]@15 ~", M: "[e5,g5]@15 ~",
  N: "[b4,d5]@3 ~ [c5,e5] ~ [d5,f#5] ~ [e5,g5]@3 ~ [f#5,a5] ~ [g5,a#5] ~", // Bm C D Em F#m Gm
  O: "[d5,b5]@3 ~ [c5,a5] ~ [b4,g5] ~ [a4,f#5]@3 ~ [b4,g5] ~ [c5,a5] ~", // G F Em D Em F
})).s("gm_brass_section").gain(0.3)

// other · string ensemble 1 · "STRINGS"
const string_ensemble_1 = note(`<
  ~@22 A B C D A E@4 ~@4 F@2 G H I J K L@2 A B C D A M@2 N@2 O P Q B I B K L@2 ~@4 O P Q B I B K D O P Q B I B K D ~@11
>`.pickRestart({
  A: "b4@7 c5", B: "d5", C: "d5@3 c5", D: "b4", E: "d5/4", F: "d4/2", G: "[c4,e4]", H: "[b3,d4]", I: "b4@3 c5", J: "a4",
  K: "c5", L: "b4/2", M: "d5/2", N: "g5/2", O: "g5", P: "f#5", Q: "e5",
})).s("gm_string_ensemble_1").gain(0.18)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@2 A B C D E C@2 D@2 C@3 D E C@2 D@2 C@3 D@2 C@2 D@2 C@7 D E C@2 D@2 C@3 D@2 C@2 D@2 C@3 D E C@2 D@2 C@7 D E C@2 D@2
  C@2 D E C@2 D@2 C@10 F G
>`.pickRestart({
  A: "~@12 d3 ~ f#3 ~", B: "g3@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~",
  C: "~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~@3 [d4,g4,b4] ~", // G
  D: "~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~", // D
  E: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~", F: "g4@2 b4 d5 g4!2 e4 d4", G: "[d4,g4,b4] ~@7",
})).s("gm_piano").gain(0.35)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A@4 B C D B@2 C@2 B@3 C D B@2 C@2 B@3 C@2 B@2 C@2 B@7 C D B@2 C@2 B@3 C@2 B@2 C@2 B@3 C D B@2 C@2 B@7 C D B@2 C@2 B@2
  C D B@2 C@2 B@10 E F
>`.pickRestart({
  A: "g3@2 [b3,d4,g4] ~ d4@2 [b3,d4,g4] ~ g3@2 [b3,d4,g4] ~ d4@2 [b3,d4,g4] ~", // G
  B: "~@2 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~@3 [g4,b4,d5] ~", // G
  C: "~@2 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~@3 [f#4,a4,d5] ~", // D
  D: "~@2 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~@3 [e4,g4,c5] ~", E: "g4 ~@3 b4 ~ d5 ~ g4 ~ g4 ~ e4 ~ d5 ~",
  F: "[g4,b4,d5] ~@15", // G
})).s("gm_electric_guitar_clean").gain(0.28)

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

// drums · snare
const snare = s("sd").struct("<~ A B@19 C B@12 C B@8 C B@29 C B@18 D>".pickRestart({
  A: "~@10 x ~ x!4", B: "~ x ~ x", C: "~@4 x ~@5 x ~ x!4", D: "x",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<[x!4]!2 [x!8]!52 [x!2 ~ x!5] [x!8]!37 x>").gain(0.56)

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

// drums · cowbell
const cowbell = s("cb").struct("<~@2 A@20 B@7 A@15 B@7 A@23 B@9 A@9 ~>".pickRestart({
  A: "~ x ~ x", B: "x!4",
})).gain(0.4)

// drums · guiro
const guiro = s("guiro:0").struct("<~@4 [~@2 x!2 ~@2 x!2]!88 ~>").gain(10.14)

// drums · guiro
const guiro_2 = s("guiro:4").struct("<~@4 [x!2]!88 x>").gain(10.14)

stack(
  bass, marimba, brass_section, string_ensemble_1, piano, electric_guitar_clean, kick, snare, hihat, crash, cowbell,
  guiro, guiro_2
)

More by Chris Montez