Strudelify

sleeping sun

Nightwish

KeyF majorTempo110 bpm
0:00/0:00
// sleeping sun — Nightwish
// 110 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/3103656; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 109 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/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.

// chords · pad metallic · "Halo Synthesizer"
const pad_metallic = note(`<
  A B C D E F G H@4 ~@17 I J@2 K L M N K O P Q R S T U P ~@17 I J@2 K L M N K O P Q R S T U P V@2 W X Y Z AA AB ~@8 AC@2
  AD AE AF O AD AG@3 AD AH AE AH AC@2
>`.pickRestart({
  A: "d4@6 e4@5 ~ f4@4", B: "f4@6 g4@5 ~ a4@4", C: "d5@6 d5@5 ~ c5@4", D: "g4", E: "a4 f4@3", F: "g4 e4@3",
  G: "f4@6 e4@5 ~ c4@4", H: "[~ d5@3, d4]/4", I: "~@2 a4 g4", J: "[d4,f4]/2", K: "[f4,bb4]", L: "[f4,a4]",
  M: "[g4,bb4]", N: "[d4,a4]", O: "[f4,c5]", P: "[d4,d5]", Q: "e5 f5, d4", R: "[f4,f5]", S: "[e4,g5]", T: "[f3,a5]",
  U: "[c4,g5]", V: "[d4@22 e4@5 ~ f4@4]/2", W: "e4@6 d4@5 ~ c4@4", X: "d4 c5", Y: "d5", Z: "e5 f5", AA: "a5 f5@3",
  AB: "e5 c5@3", AC: "[f4,c5]/2", AD: "[db5,ab5]", AE: "[ab4,eb5]", AF: "[bb4,f5]", AG: "[f4,c5]/3", AH: "[eb5,bb5]",
})).s("gm_pad_metallic").gain(0.45)

// other · pad new age · "Pad Synthesizer"
const pad_new_age = note(`<
  ~@7 A B A B A B A B C D C E A B A F G H G H A I ~@15 A B A B C D C E A B A F G H G H A I ~@24 J@4 K L@5 M J@4 N@3 K
  M@2 O ~
>`.pickRestart({
  A: "d5 a4 d5 a4 e5 a4 f5 a4", B: "d5 a4 d5 a4 e5 g4 c5 e5", C: "f5 c5 f5 c5 g5 c5 a5 c5",
  D: "f5 c5 f5 c5 g5 c5 e5 g5", E: "f5 c5 f5 c5 g5 c5 g5 e5", F: "d5 a4 d5 a4 g5 g4 c5 e5",
  G: "d5 bb4 d5 bb4 e5 bb4 f5 bb4", H: "d5 bb4 d5 bb4 f5 bb4 f5 e5", I: "d5 a4 d5 a4 f5 a4 f5 e5", J: "f4/4", K: "g4",
  L: "f4/5", M: "eb4", N: "f4/3", O: "f4",
})).s("gm_pad_new_age").gain(0.45)

// other · string ensemble 1 · "Kontrabasse"
const string_ensemble_1 = note("<~@7 A@3 B ~@98>".pickRestart({
  A: "d2/3", B: "d1",
})).s("gm_string_ensemble_1").gain(0.45)

// chords · distortion guitar · "Elektrische Gitarre"
const distortion_guitar = note(`<
  ~@44 A ~ A ~ B ~ B ~ A ~ A C A ~ D ~ E@2 ~@23 F G H I J K L M N@2 O P Q R O S@3 O T P T U@2
>`.pickRestart({
  A: "[d3,a3,d4]!3 ~@3 [d3,a3,d4]!2 [d3,a3,d4]@2 ~@6", B: "[f3,c4,f4]!3 ~@3 [f3,c4,f4]!2 [f3,c4,f4]@2 ~@6",
  C: "~@2 db5 ~", D: "[g2,d3,g3]!3 ~@3 [g2,d3,g3]!2 [g2,d3,g3]@2 ~@6", E: "[d3,a3]/2",
  F: "c5@2 g4 ~ g4 ~ d5@2 a4 ~ a4 ~ c5@4", G: "d4@6 e4@5 ~ f4@4", H: "f4@6 g4@5 ~ a4@4",
  I: "[d5,f5]@6 [d5,f5]@5 ~ [c5,e5]@4", J: "[g4,c5]", K: "bb4 a4 g4@4 c5 bb4 a4@8",
  L: "[f5,a5] [e5,g5] [d5,f5] [c5,e5] [d5,f5] [e5,g5] [d5,f5]@7 ~@3", M: "[c4,f4]@6 [d4,g4]@5 ~ [f4,ab4]@4",
  N: "[[f2,c3], [ab4,c5] ~]/2", O: "[db3,ab3]", P: "[ab2,eb3]", Q: "[bb2,f3]", R: "[f2,c3]", S: "[f2,c3]/3",
  T: "[eb3,bb3]", U: "[f2,c3]/2",
})).s("gm_distortion_guitar").gain(0.4)

// bass · electric bass finger · "Elektrischer Bass"
const bass = note(`<
  ~@10 A B@4 C@2 D@2 B@4 E@2 F@2 G@2 H I J K L I J M H I J N O P H Q R Q R S T S T B@2 Q R U V W X G@2 Y Z AA AB AC Y AA
  AD Y Z J AE AB AE H Y AF AE AG Y AF AB AH AI H AJ J AK L AL J AB@2 AM AN AA AB AM AB@3 AM AO AN AO O ~
>`.pickRestart({
  A: "~@3 c2", B: "[d1@3 c2]/2", C: "[f1@3 c2]/2", D: "[f1@3 g1]/2", E: "bb1/2", F: "g1/2", G: "d1/2", H: "d1",
  I: "d1@2 d1@13 ~", J: "bb1", K: "f1@2 f1@13 ~", L: "g1", M: "f1 f1@3 e1@4", N: "c2@2 c2@13 ~", O: "f1", P: "c2",
  Q: "d1@4 d1@3 d1", R: "~@2 d1!2 c2 c2@3", S: "f1@4 f1@3 f1", T: "~@2 f1!2 c2 c2@3", U: "bb1@4 bb1@3 bb1",
  V: "~@2 bb1!3 bb1@3", W: "g1@4 g1@3 g1", X: "~@2 g1!3 g1@3", Y: "d1!2", Z: "d1 d2", AA: "bb1!2", AB: "f1!2",
  AC: "g1!2", AD: "f1@2 f1!2 e1@4", AE: "c2!2", AF: "~@2 d1!2 d2!2 ~@2", AG: "~@2 bb1!4 ~@2", AH: "~@2 f1!2 c2!2 ~@2",
  AI: "c2 ~@7", AJ: "d1@2 d1!2 d2@4", AK: "f1@2 f1!3 f1@3", AL: "d1@2 d1!2 d2 d2@3", AM: "db2!2", AN: "ab1!2",
  AO: "eb2!2",
})).s("gm_electric_bass_finger").gain(0.45)

// drums · kick
const kick = s("bd").struct(`<
  ~@11 A B A B A B A B A B A B A B A B A ~ A C A C A C A C A C A C A D ~@2 E A E A E A E A E A E A E A E ~@2 F G H G H G
  H G H G H G H I J@2 K J K J K J K A H G H G H G L H G H G H G H G H G H G H G M ~
>`.pickRestart({
  A: "x", B: "~@7 x", C: "x!2 ~@6", D: "x!2 ~@4 x!2", E: "x ~ x!2 ~@4", F: "~@3 x ~@3 x", G: "~@2 x!2 ~@4",
  H: "x ~@2 x ~@3 x", I: "~@2 x!2 ~@3 x", J: "x ~@2 x ~@2 x!2", K: "x ~@2 x ~@2 x ~", L: "x ~@2 x ~ x ~ x",
  M: "~@4 x ~@2 x",
})).gain(0.45)

// drums · rim
const rim = s("rim").struct("<~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~@67>".pickRestart({
  A: "~ x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct("<~@30 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@17 B A@22 C ~ A@6 D A@14 E ~>".pickRestart({
  A: "~ x", B: "~@4 x ~@2 x!2 ~@3 x ~@3", C: "~ x!2 ~ x!2 ~ x", D: "~@3 x!2 ~@3 x ~@3 x!2 ~@2", E: "~@2 x!2 ~@2 x ~",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct("<~@28 A ~@14 B ~@17 C ~@14 D ~@30 E ~>".pickRestart({
  A: "x ~@2 x!2 ~ x ~ x ~ x ~ x ~@3", B: "~ x ~ x ~@2 x ~", C: "~@5 x ~ x", D: "~ x ~ x ~ x!2 ~", E: "~ x ~@6",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@7 A@4 B@17 ~ B@14 ~ B C D C D C D C B C D C D C D C B E F C@7 F C@5 G H I H I H I H J ~@7 K L@14 ~@2
>`.pickRestart({
  A: "~@3 x ~@4", B: "~ x ~ x", C: "x!4", D: "x!2 ~ x", E: "x", F: "~ x!3", G: "~ x!6 ~", H: "x!7 ~",
  I: "x ~ x ~ x ~ x ~ x ~ x ~ x!4", J: "x ~@2 x!2 ~@3", K: "x!2", L: "x!8",
})).gain(0.3)

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 A ~@14 B ~@32 C ~@30 D ~>".pickRestart({
  A: "x!2", B: "~@4 x!2 ~@2", C: "x", D: "~ x ~@3 x ~@2",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<~@52 A ~@17 A ~@5 B@2 ~ B ~ B ~ B@2 ~ A ~@22>".pickRestart({
  A: "x", B: "~@7 x",
})).gain(0.45)

// drums · tambourine
const tambourine = s("tb").struct("<~@7 [~ x]!4 ~@98>").gain(0.45)

// drums · splash
const splash = s("cr").struct(`<
  ~@11 A ~@15 A B A ~@7 A ~@5 A@2 ~@7 A ~@7 A B A ~@6 B A ~@5 A ~@8 A@2 ~@5 C A ~@6 B A ~@5 A@2
>`.pickRestart({
  A: "x", B: "~@7 x", C: "x ~@6 x",
})).gain(0.45)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@86 [x!8]!7 x ~@15>").gain(1.51)

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct("<~@11 [~ x ~ x]!17 x ~@80>").gain(0.75)

stack(
  pad_metallic, pad_new_age, string_ensemble_1, distortion_guitar, bass, kick, rim, snare, low_tom, hihat, mid_tom,
  open_hat, tambourine, splash, cabasa, cabasa_soft
)

More by Nightwish