Strudelify
Laura no esta cover art

Nek

Laura no esta

Nek

KeyA majorTempo127 bpm
0:00/0:00
// Laura no esta — Nek
// 127 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 4 "STRING" named as a string part, played on string ensemble 1 (its epiano2 patch is not one); ch 5 "STRING" named as a string part, played on string ensemble 1 (its electric guitar clean patch is not one)
// note: duplicate parts dropped: ch 5 "STRING" string ensemble 1 (copy of ch 4 "STRING" string ensemble 1)
// note: Full arrangement: all 71 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(127/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · synth bass 1 · "BAJO 1"
const bass = note(`<
  ~ A B C D A B C D B E A D B F G H I J G H I J K L M N K O P@2 K Q N R S@2 T@2 U A V W U A V W A X U W A Y Z AA AB G Z
  AA AB G Z AA AB G Z AA AB AC AD ~
>`.pickRestart({
  A: "a2@4 ~@2 a2 ~ a2@6 ~@2", B: "f2@4 ~@2 f2 ~ f2@6 ~@2", C: "g2@4 ~@2 g2 ~ g2@7 ~", D: "e2@4 ~@2 e2 ~ e2@6 ~@2",
  E: "g2@4 ~@2 g2 ~ g2@6 ~@2", F: "g2@3 ~ g2@3 ~@9", G: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~",
  H: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~", I: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ f2 ~",
  J: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", K: "d3", L: "b2@13 ~ b2@2", M: "c3", N: "a2", O: "b2",
  P: "[a2@3 b2@3 c3@3 e2@7]/2", Q: "g#2", R: "g2", S: "f2", T: "e2/2", U: "c#3@4 ~@2 c#3 ~ c#3@6 ~@2",
  V: "b2@4 ~@2 b2 ~ b2@7 ~", W: "g#2@4 ~@2 g#2 ~ g#2@6 ~@2", X: "b2@4 ~@2 b2 ~ b2@6 ~@2", Y: "b2@3 ~ b2@3 ~@9",
  Z: "c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~ c#3 ~", AA: "e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~ e3 ~",
  AB: "f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ f#2 ~ a2 ~", AC: "a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2 ~ a2@2 ~@2",
  AD: "c#2@3 ~ c#2@8 ~@4",
})).s("gm_synth_bass_1").gain(0.31)

// chords · string ensemble 1 · "STRING"
const string_ensemble_1 = note(`<
  ~ A ~ B C D E B F G H I C J K D L M G D L M G N O L G N K P@2 N Q I K R@2 S@2 T ~ U V W X U Y Z AA AB V AC AD W AE AF
  Z W AE AF Z W AE AF Z W AE AF Z AG@2
>`.pickRestart({
  A: "[e4,a4]@15 ~", B: "[d4,g4,b4]@15 ~", C: "[e4,g4,b4]@15 ~", D: "[e4,a4,c5]@15 ~", E: "[c4,f4,a4]@15 ~",
  F: "[g4,b4]@15 ~", G: "[f4,a4,c5]@15 ~", H: "[g4,b4,d5]", I: "[a4,c5,e5]@15 ~", J: "[f4,a4]@15 ~",
  K: "[g4,b4,d5]@15 ~", L: "[g4,c5,e5]@15 ~", M: "[d4,f4,a4]@15 ~", N: "[a4,d5,f5]@15 ~", O: "[b4,d5]@15 ~",
  P: "[[a4,c5,e5]@31 ~]/2", Q: "[g#4,b4,d5]@15 ~", R: "[[f4,a4,c5]@7 ~]/2", S: "[[e4,g#4,b4]@31 ~]/2",
  T: "[g#4,c#5]@15 ~", U: "[f#4,b4,d#5]@15 ~", V: "[g#4,b4,d#5]@15 ~", W: "[g#4,c#5,e5]@15 ~", X: "[e4,a4,c#5]@15 ~",
  Y: "[b4,d#5]@15 ~", Z: "[a4,c#5,e5]@15 ~", AA: "[b4,d#5,f#5]", AB: "[c#5,e5,g#5]@15 ~", AC: "[a4,c#5]@15 ~",
  AD: "[b4,d#5,f#5]@15 ~", AE: "[b4,e5,g#5]@15 ~", AF: "[f#4,a4,c#5]@15 ~",
  AG: "[[c#4,f#4,c#5]@3 ~ [c#4,f#4,c#5]@15 ~@13]/2", // F#5
})).s("gm_string_ensemble_1").gain(0.31)

// chords · string ensemble 1 · "STRING" · soft notes
const string_ensemble_1_soft = note("<~ A B ~@5 C ~@4 A ~@10 D ~@14 E F ~@5 G ~@4 E ~@19>".pickRestart({
  A: "c5@15 ~", B: "[c4,f4,a4]@15 ~", C: "e4@15 ~", D: "g4@15 ~", E: "e5@15 ~", F: "[e4,a4,c#5]@15 ~", G: "g#4@15 ~",
})).s("gm_string_ensemble_1").gain(0.15)

// chords · synth strings 2 · "STRING"
const synth_strings_2 = note("<~@23 A B C D A B E@2 A F G B H@2 I@2 ~@32>".pickRestart({
  A: "[a4,d5,f5]@15 ~", B: "[g4,b4,d5]@15 ~", C: "[g4,c5,e5]@15 ~", D: "[f4,a4,c5]@15 ~", E: "[[a4,c5,e5]@31 ~]/2",
  F: "[g#4,b4,d5]@15 ~", G: "[a4,c5,e5]@15 ~", H: "[[f4,a4,c5]@7 ~]/2", I: "[[e4,g#4,b4]@31 ~]/2",
})).s("gm_synth_strings_2").gain(0.31)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!22 x!15 ~ [x!2]!30 ~@2>").gain(0.31)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~ [~@3 x ~@4]!22 ~@16 [~@3 x ~@4]!30 ~@2>").gain(0.2)

// drums · snare
const snare = s("sd").struct("<~ [~ x ~ x]!22 [~ x]!15 ~ [~ x ~ x]!30 ~@2>").gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<~ [x!8]!22 [x!4]!15 ~ [x!8]!30 ~@2>").gain(0.31)

// drums · open hat
const open_hat = s("oh").struct("<~@69 x ~>").gain(0.41)

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

stack(bass, string_ensemble_1, string_ensemble_1_soft, synth_strings_2, kick, kick_soft, snare, hihat, open_hat, crash)

More by Nek