Strudelify
Hijo De La Luna cover art

1993 · Descanso Dominical / Une Femme Avec Une Femme

Hijo De La Luna

Mecano

KeyC minorTempo164 bpm
0:00/0:00
// Hijo De La Luna — Mecano
// 164 bpm, 3/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 257 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(164/3)

// 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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@100 A B A C A B A C D E A F G F H@2 D E A F G F H@2 A E I B D E@2 A F J K B D L@2 A F J K A K A E A M N O P Q@4 A K
  G K A B A C A B A C D E A F G F H@2 R E A F G F H@2 A E I B D E@2 A F J K B D L@2 A F J K A K A E A M N O P Q@4 A K G
  K ~@16 D E S@2 G F Q@4 A K G T@4 ~@4
>`.pickRestart({
  A: "c3", B: "f3", C: "b2", D: "eb3", E: "d3@15 ~", F: "bb2", G: "ab2", H: "c3/2", I: "g3@15 ~", J: "a2", K: "g2",
  L: "[d3@31 ~]/2", M: "bb2@7 ~@9", N: "a3@15 ~", O: "ab3", P: "g3@8 ~@3 g3@4 ~", Q: "c3/4", R: "eb3@13 ~@3",
  S: "[c3@15 bb2@16 ~]/2", T: "[g2@15 c3@49]/4",
})).s("gm_acoustic_bass").gain(0.41)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@37 A B C D@2 E F ~@2 G F ~@7 H@2 I ~@4 J K L@2 ~@3 M N@3 ~ O P Q R S T S U ~@4 V W X@2 ~@10 Y@3 ~@11 Z AA ~@6 Z AB
  AC AD AE ~@7 AF AG AH AI AJ ~@7 AK AL AM@2 AN AO AP ~@29 AQ AR AQ AS AT ~@70
>`.pickRestart({
  A: "~@5 d5@5 ~ eb5@5", B: "[eb5,g5]", C: "f5@15 ~, d5@13 ~@3", D: "[[c5,eb5]@29 ~@3]/2",
  E: "~@5 [eb5,g5]@6 [f5,ab5]@2 ~@3", F: "~@5 [eb5,g5]@5 ~ [d5,f5]@4 ~", G: "~@5 [eb5,g5]@6 [f5,ab5]@3 ~@2",
  H: "[~@5 d5@5 ~@6 g5@15 ~, ~@11 eb5@21]/2", I: "[d5,f5]@15 ~", J: "d5@3 eb5@2 g5@2 ~ eb5@3 d5 eb5 d5 ~ eb5",
  K: "d5 eb5 ~ d5 eb5 d5 ~ eb5 d5@5 eb5 ~ d5", L: "[c5@5 ~@3]/2", M: "a5@5 bb5@4 ~@2 a5@5", N: "d5/3",
  O: "~@11 c6@2 bb5@2 ~", P: "a5@9 ~@2 bb5@2 a5@3", Q: "g5@10 ~ a5@2 g5@2 ~", R: "gb5@5 a5@5 ~ gb5@5", S: "g5@15 ~",
  T: "f5@15 ~", U: "gb5@15 ~", V: "~@5 g5@5 ~ a5@5", W: "bb5@5 a5@5 ~ c6@5", X: "[d6@13 ~@3]/2", Y: "g4/3",
  Z: "~@5 [eb4,g4]@5 ~ [d4,f4]@2 ~@3", AA: "~@5 [bb3,d4]@6 [g3,c4]@4 ~", AB: "~@4 [bb3,d4]@5 ~ [g3,c4]@2 ~@4",
  AC: "~@5 eb4@5 [d4,f4]@2 ~@4, ~@4 g4@5 ~@7", AD: "~@5 [gb4,a4]@8 bb4@2 ~", AE: "g4 ~@15",
  AF: "~@6 bb4 ~, ~@11 c5@2 ~@3", AG: "a4@10 ~@2 a4@3 ~, ~@11 bb4@2 ~@3", AH: "g4@5 ~ g4 ~, ~@11 a4@2 ~@3",
  AI: "gb4@5 a4@5 ~ gb4@5", AJ: "g4@15 ~", AK: "~@5 g4@5 ~ a4@5", AL: "bb4@9 ~@2 c5@5", AM: "d5/2",
  AN: "~@5 [ab3,ab4]@2 [bb3,bb4]@3 ~@2 [d4,d5]@3 ~, ~@11 [c4,c5]@3 ~@2", // Ab Bb D C
  AO: "[eb4,eb5]@10 ~ d5 [eb4,d5]@3 ~, ~@11 [d4,eb5]@4 ~", AP: "[c4,c5]", AQ: "~@5 eb5@5 [d5,f5]@2 ~@4, ~@4 g5@5 ~@7",
  AR: "~@4 [bb4,d5]@5 ~ [g4,c5]@2 ~@4", AS: "~@5 [gb5,a5]@8 bb5@2 ~", AT: "g5 ~@15",
})).s("gm_acoustic_guitar_nylon").gain(0.31)

// other · rock organ · "NYLON GTR"
const rock_organ = note("<~@194 A B C D E ~@7 F G H@2 I J K ~@44>".pickRestart({
  A: "~@11 c5@2 bb4@2 ~", B: "a4@10 bb4@2 ~ a4@3", C: "g4@10 a4@2 ~ g4@2 ~", D: "gb4@5 a4@5 ~ gb4@5", E: "~ g4@15",
  F: "~@5 g4@5 a4@5 ~", G: "~ bb4@9 ~ c5@5", H: "d5/2", I: "~@5 [ab3,ab4]@2 [bb3,bb4]@3 [c4,c5]@3 [d4,d5]@3",
  J: "[eb4,eb5]@10 d5 ~@2 d5@2 ~, ~@10 d4@2 eb4@3 ~, ~@11 eb5@4 ~", K: "[c4,c5]",
})).s("gm_rock_organ").gain(0.14)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon_2 = note(`<
  ~@96 A B C D ~ E F G H@2 I J K L M N O P Q R S T U V W X Q Y Z AA AB AC AD AE@2 AF AG AH AI AC AD AE AJ AF AG AH AI AF
  AI AF AE AF AG AH AK AL AM AN AO AP AM AN AO AP AN AQ AR AS AT AU AP AS AV AW AX AY AZ BA BB BC AV AW BD AY AZ BA Q Y
  Z AA AB AC AD AE@2 AF AG AH AI AC AD AE AJ AF AG AH AI AF AI AF AE AF AG AH AK AL AM AN AO AP AM BE BF BG ~@16 BH BI
  BJ BK BL BM ~@4 BN BO BP BQ BR@3 ~@4
>`.pickRestart({
  A: "~@5 [eb4,g4,eb5,g5]@5 ~ [d4,f4,d5,f5]@3 ~@2", B: "~@5 [bb3,d4,bb4,d5]@4 ~@2 [ab3,c4,ab4,c5]@5",
  C: "~@5 [c4,eb4,c5,eb5]@4 ~@2 [d4,f4,d5,f5]@4 ~", D: "~@5 [bb3,d4,bb4,d5]@4 ~@2 ab3@2 g3@3, ~@11 [c4,g4,c5]@5",
  E: "~@5 [c4,c5]@3 [g3,g4]@3 [c4,c5]@2 [d4,d5]@2 ~", F: "[eb4,eb5]@9 ~@2 [g4,g5]@5", G: "[eb4,eb5]@10 ~ [d4,d5]@5",
  H: "[[c4,c5]@9 ~@7]/2", I: "~@11 [d4,d5]@5", J: "[eb4,eb5]@9 ~@2 f4@5, ~@11 f5@2 ~@3", K: "[bb3,g4,bb4,g5]@15 ~",
  L: "[b3,f4,b4,f5]@7 ~", M: "~@5 [eb4,eb5]@4 ~@2 [f4,f5]@5", N: "[d4,d5]@8 [c4,c5]@3 [eb4,eb5]@2 [d4,d5]@3",
  O: "[c4,c5]@15 ~", P: "[d4,f4,bb4,d5]@15 ~", Q: "~@5 [eb5,g5]@5 ~ [d5,f5] ~@4, ~@5 g4@8 ~@3",
  R: "~@5 [f4,d5]@5 ~ c5 ~@4, ~@5 bb4@6 ~@5", S: "[bb4,eb5,g5]@13 ~@3, [eb4,g4]@11 ~@5", T: "[d4,f4,b4,f5]@13 ~@3",
  U: "~@3 [c4,eb4,c5,eb5]@5 [f4,f5]@4 ~@4", V: "[d4,f4], bb4@7 ~, d5@9 ~@7", W: "[c4,eb4,ab4], c5@7 ~",
  X: "[d4,f4,bb4,d5]@11 ~@5", Y: "~@5 [f4,bb4,d5]@6 [g4,c5] ~@4", Z: "~@5 [g4,eb5,g5]@6 [d5,f5] ~@4",
  AA: "~@5 [gb4,c5,gb5]@8 bb5@3, ~@5 a5@6 ~@5", AB: "[g3,g4], g5 ~@15", AC: "[f3,f4]", AD: "[eb3,eb4]", AE: "[d3,d4]",
  AF: "[c3,c4]", AG: "[bb2,bb3]", AH: "[a2,a3]", AI: "[g2,g3]", AJ: "d3@15 ~, d4 ~@15", AK: "[ab2,ab3]@15 ~",
  AL: "[g2,g3]@9 ~@2 [g2,g3]@4 ~", AM: "[c3,c4]@5 [eb4,g4] ~@5 [eb4,g4] ~@4",
  AN: "~@5 [eb4,g4] ~@5 [eb4,g4] ~@4, c3@5 ~@3", AO: "~@5 [eb4,ab4] ~@5 [eb4,ab4] ~@4, c3@11 ~@5",
  AP: "~@5 [eb4,g4] ~@5 [eb4,g4] ~@4, c3@7 ~", AQ: "~@5 eb4@3 g4@2 ~ [eb4,ab4]@2 ~@3, f3@3 ~",
  AR: "~@5 [eb4,g4] ~@5 [eb4,g4]@2 ~@3, c3@5 ~@3", AS: "~@5 [d4,g4] ~@5 [d4,g4]@2 ~@3, b2@3 ~",
  AT: "~@5 [eb4,g4]@2 ~@4 [eb4,g4]@2 ~@3, c3@3 ~", AU: "~@5 [eb4,ab4]@3 g4@3 [eb4,ab4]@2 ~@3, f3@13 ~@3",
  AV: "~@5 [eb4,g4] ~@5 [eb4,g4]@2 ~@3, eb3@15 ~", AW: "~@5 [d4,g4]@9 ~@2, d3@7 ~",
  AX: "~@5 [eb4,g4] ~@5 [eb4,g4]@3 ~@2, c3@15 ~", AY: "~@5 [d4,f4]@9 ~@2, bb2@15 ~",
  AZ: "~@5 [c4,eb4]@2 ~@4 [c4,eb4]@2 ~@3, ab2@15 ~", BA: "~@5 [d4,f4] ~@5 [d4,f4]@2 ~@3, bb2",
  BB: "~@5 [eb4,g4]@5 ~ [eb4,ab4]@2 ~@3, c3@13 ~@3", BC: "~@5 [eb4,g4]@4 ~@2 [d4,f4]@3 ~@2, c3@3 ~",
  BD: "~@5 [eb4,g4] ~@5 [eb4,g4]@2 ~@3, c3@15 ~", BE: "~@5 [eb4,g4] ~@5 [eb4,g4] ~@4, g2@5 ~@3",
  BF: "~@5 [eb4,ab4] ~@5 [eb4,ab4] ~@4, ab2@11 ~@5", BG: "~@5 [eb4,g4] ~@5 [eb4,g4] ~@4, g2@7 ~",
  BH: "eb5@7 ~ g5@3 d5@2 c5@2 ~, eb3@15 ~, eb4@13 ~@3", BI: "b4@4 ~ d5@6 ~@5, [d3,d4]@13 ~@3",
  BJ: "eb5@2 ~ c5@2 eb5@3 g5@2 ~ f5@2 eb5@3, [c3,c4]@7 ~", // C
  BK: "d5@2 ~ bb4@2 d5@2 ~ f5@3 eb5@2 d5@2 ~, [bb2,bb3]@13 ~@3", BL: "[ab2,ab3]@13 ~@3, ab4", BM: "[bb2,bb3,bb4]@7 ~",
  BN: "~@5 [eb4,g4]@5 ~ [d4,f4]@3 ~@2, c3@15 ~", BO: "~@5 [bb3,d4]@5 ~ [g3,c4]@4 ~, g2@15 ~",
  BP: "~@5 [c4,eb4]@5 ~ [d4,f4]@4 ~, ab2@15 ~", BQ: "~@5 [bb3,d4]@5 ~ [f3,bb3]@5, g2@15 ~", BR: "[c3,g3,c4]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.36)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@2 A B C B D E F G H I J K L M N O P Q R S T U V B W X Y S Z S A B C B D E F G H I J K L M N O P Q R S T U V B W X Y
  S Z S AA AB AC AD AE AF AG AH AI AF AG AH AJ AK AL AM AN AO AP AQ@2 AR AS AR AT AU AV AW AX AY@5 D E F G H I J K L M N
  O P Q R S T U V B W X Y S Z S AA AB AC AD AE AF AG AH AI AF AG AH AJ AK AL AM AN AO AP AQ@2 AR AS AR AT AU AV AW AX
  AY@5 D E F G H I J K L M N O P Q R S T U V B W X Y S Z S AA AB AC AD AE AF AG AH AI AF AG AH AJ AK AL AM AN AO AP AQ@2
  AR AS AR AT AU AV AW AX AY@5 D E F G H I J K L M N O AZ BA BB BC BD BE AA BF AZ BA BB BC BD BE A B C B D E BG@8 ~
>`.pickRestart({
  A: "~@5 [eb5,g5]@5 ~ [d5,f5]@5, c4 ~, ~@5 g4@11", B: "~@5 [bb4,d5]@5 ~ [g4,c5]@5, c4@5 ~@3, ~@5 f4@10 ~",
  C: "~@5 [c5,eb5]@5 ~ [d5,f5]@5, c4@5 ~@3, ~@5 ab4@11", D: "~@5 [eb5,g5]@4 ~@2 [d5,f5]@4 ~, c4@5 ~@3, ~@5 g4@10 ~",
  E: "~@5 [f4,bb4,d5]@5 ~ [g4,c5]@5, g3@9 ~@7", F: "~@5 [c5,eb5]@4 ~@2 [d5,f5]@5, ab3@11 ~@5, ~@5 ab4@11",
  G: "~@5 [bb4,d5]@5 ~ [g4,c5]@5, g3@5 ~@3, ~@5 f4@10 ~", H: "~@5 [c4,eb4,g4] ~@5 [g3,c4,eb4,g4]@2 ~@3, c3@9 ~@7",
  I: "f3@5 ~@6 ab3@4 ~, ~@5 [c4,f4,ab4]@11", J: "~@5 g4@5 ~ [f4,ab4]@4 ~, c3@5 ~@3, ~@5 eb4@10 ~",
  K: "~@5 [eb4,g4]@5 ~ [d4,f4]@5, b2@11 ~@5", L: "~@5 [c4,eb4,g4] ~@5 [g3,c4]@4 ~, c3@9 ~@2 [eb4,g4]@2 ~@3",
  M: "f3@5 ~@6 ab3@5, ~@5 [c4,f4,ab4]@11", N: "~@5 [eb4,g4]@6 [f4,ab4]@5, c3@3 ~",
  O: "~@5 [eb4,g4]@5 ~ [d4,f4]@4 ~, b2@15 ~", P: "eb3@4 ~ bb3@5 ~ g3@4 ~, ~@5 [eb4,g4,bb4]@9 ~@2",
  Q: "b2@5 [d4,f4,g4]@10 ~", R: "c3@5 ~@6 g3@5, ~@5 [c4,eb4,g4]@10 ~", S: "~@5 [bb3,d4,f4]@10 ~, bb2@9 ~@7",
  T: "ab2@5 ~@6 eb3@2 ~@3, ~@5 [ab3,c4,eb4]@8 ~@3", U: "~@11 f3@5, bb2@7 ~@9, ~@5 [bb3,d4,f4]@8 ~@3",
  V: "~@5 [eb5,g5]@4 ~@2 [d5,f5]@4 ~, c3, ~@5 g4@10 ~", W: "eb3@5 ~@6 bb3@4 ~, ~@5 [eb4,g4,bb4]@10 ~",
  X: "~@5 [b3,d4,f4,g4]@10 ~, b2@9 ~@7", Y: "~@11 g3@5, c3@9 ~@7, ~@5 [c4,eb4,g4]@10 ~",
  Z: "ab2@5 ~@6 eb3@5, ~@5 [ab3,c4,eb4]@9 ~@2", AA: "~@5 [eb5,g5]@5 ~ [d5,f5]@5, c3@5 ~@3, ~@5 g4@11",
  AB: "~@5 [bb4,d5]@5 ~ [g4,c5]@3 ~@2, c3 ~, ~@5 f4@9 ~@2", // Bb C5
  AC: "~@5 [eb4,g4]@4 ~@2 [d4,f4]@4 ~, c3@5 ~@3, ~@5 g3@9 ~@2", AD: "~@5 a4@8 bb4@2 ~, d3@13 ~@3, ~@5 [c4,gb4]@10 ~",
  AE: "d4 ~@10 bb3@4 ~, [g2,g4]@15 ~, bb3@11 ~@5, ~@5 d4@9 ~@2", AF: "~@11 a3@5, [f2,f4], ~@5 c4@10 ~",
  AG: "~@11 g3@5, [eb2,eb4]@15 ~, ~@5 bb3@10 ~", AH: "~@11 gb3@5, [d2,d4], ~@5 a3@10 ~",
  AI: "~@11 bb3@5, [g2,g4], ~@5 d4@10 ~", AJ: "~@5 d4@5 ~ c5@2 bb4@3, g3@10 ~ bb3@5",
  AK: "~@13 a4@2 ~, f3@15 ~, a4@13 ~@3, ~@5 c4@10 ~, ~@11 [a3,bb4]@5", // Bbmaj7
  AL: "eb3@4 ~@9 g4@2 ~, g4@13 ~@3, ~@5 bb3@9 ~@2, ~@11 [g3,a4]@5", AM: "[d3,gb4]@5 [gb3,a4]@5 ~ [a3,gb4]@5",
  AN: "~@11 g3@5, [g2,d4], ~@5 bb3@11", AO: "~@11 f3@5, [f2,c4], ~@5 a3@11", AP: "bb3@5 ~@5 eb3@6, eb2, ~@5 g3@11",
  AQ: "[~@10 d3@5 ~@6 g3 ~@4 bb3@5 ~, [d2,a3]@16 ~@5 bb3@5 ~@6, ~@5 gb3@10 g2@16 ~, ~@23 g3@8 ~]/2", // D5
  AR: "~@5 [g3,c4,eb4]@11, c3", AS: "~@5 g3@3 ~@3 bb3@5, g2, ~@5 bb3@5 ~@6, ~ g3",
  AT: "~@11 c4@5, [d2,d3], ~@5 [a3,a4]@11, ~@5 d4@3", AU: "~@5 [c4,d4]@3, c3, ~@5 [a3,a4]@11",
  AV: "~@5 [c4,d4]@3, bb2, ~@5 [a3,a4]@11", AW: "~@10 [c4,d4]@5 ~, a2, ~@5 [a3,a4]@10 ~",
  AX: "~@5 ab3@3 bb3@3 c4@2 d4@2 ~, ab2@15 ~",
  AY: "[g2@10 d4 ~@2 d4@2 c4@2 ~@4 [eb5,g5]@5 [d5,f5]@4 ~@12 [f4,g4,c5]@5 ~@11 [d5,f5]@5 ~@11 [g4,c5]@5 ~, eb4@6 ~@5 eb4@4 c2@16 ~@5 bb4@11 ~@6 ab4@11 ~@5 [f4,bb4,d5]@11, ~@15 c3@14 ~@2 c3@16 c3@16 c3@16 ~, ~@37 d5@11 ~@4 eb5@11 ~@17]/5", // Eb Dm Fsus2 Dm C5 Bb
  AZ: "eb3@4 ~@4 g5@3 d5@2 c5@2 ~, eb5@7 ~@9, ~@5 bb3@5 ~ g3@5", BA: "[b2,b4]@5 g3@10 ~, ~@5 d5@6 ~@5",
  BB: "c3@3 c5@2 [g3,eb5]@3 g5@3 [c3,f5]@2 eb5@3, eb5 ~@7", // Cm F5
  BC: "bb2@3 bb4@2 d5@2 ~ f5@3 [bb2,eb5]@2 d5@2 ~, d5@2 ~@3 f3@5 ~@6", // Eb5
  BD: "c5@2 ~@3 [c4,eb4]@2 ~@4 [c4,eb4]@3 ~@2, ab2@11 ~@5", BE: "bb2@5 f3@5 ~ bb2@2 ~@3, ~@5 [bb3,d4,f4]@8 ~@3",
  BF: "~@5 [bb4,d5]@5 ~ [g4,c5]@5, c3, ~@5 f4@11", // Bb C5
  BG: "[~@5 [c5,eb5]@4 ~@2 [d5,f5]@5 ~@112, ab3@11 ~@117, ~@5 ab4@123]/8", // Cm Dm
})).s("gm_piano").gain(0.47)

// other · woodblock
const woodblock = note(`<
  ~@2 A@88 ~@2 A@4 ~@4 B@26 ~@30 B@30 ~@30 A@4 C D C D C D C D C D C D C D C D B@14 ~@7
>`.pickRestart({
  A: "~@5 d6 ~@5 d6 ~@4", B: "~@5 g6 ~@2 g6 ~@2 g6 ~ g6 ~@2", C: "c6 ~@7", D: "c6@2 ~@9 c6 ~@4",
})).s("gm_woodblock").gain(0.04)

// drums · rim
const rim = s("rim").struct("<~@91 [~@11 x!3 ~@2] x ~@164>").gain(0.29)

// drums · hihat
const hihat = s("hh").struct("<~@66 [x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2]!24 [x!2 ~@14] ~@166>").gain(0.22)

// drums · ride
const ride = s("rd").struct("<~@90 A ~@5 B ~ B ~ B@53 ~ B ~ B@57 ~ B ~ B@4 ~@30 C B D ~@4>".pickRestart({
  A: "x!2 ~@14", B: "x", C: "x!12 ~ x ~ x", D: "~@15 x",
})).gain(0.29)

// drums · bongos
const bongos = s("bongo:4").struct("<~@9 [~@15 x] [~ x ~@14] ~@246>").gain(0.83)

// drums · bongos
const bongos_2 = s("bongo:18").struct(`<
  A@2 ~@96 B ~@2 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@7 B
  ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@47
>`.pickRestart({
  A: "x ~@4 x ~@5 x ~@4", B: "x",
})).gain(0.83)

// drums · bell tree
const bell_tree = s("marktrees:0").struct("<~@236 x!15 ~@6>").gain(1.7)

// drums · lt
const lt = s("lt").struct("<~@237 A ~ A ~ A ~ A ~ A ~ A ~ A ~@7>".pickRestart({
  A: "x",
})).gain(0.32)

stack(
  bass, acoustic_guitar_nylon, rock_organ, acoustic_guitar_nylon_2, piano, woodblock, rim, hihat, ride, bongos,
  bongos_2, bell_tree, lt
)