Strudelify

amaranth

Nightwish

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

// other · piano
const piano = note("<A B A B C B D E ~@86 F G F G H G D E ~@22>".pickRestart({
  A: "a4 c5 d5 ~@5", B: "a5 c5 g5 f5 e5 a4 d5 c5", C: "a4 c5 d5 a4 c5 d5 c5 a4", D: "d4 f4 a4 f4 a4 d5 a4 d5",
  E: "f5 d5 f5 d6 ~@4", F: "a5 c6 d6 ~@5", G: "a6 c6 g6 f6 e6 a5 d6 c6", H: "a5 c6 d6 a5 c6 d6 c6 a5",
})).s("gm_piano").gain(0.56)

// other · pad new age
const pad_new_age = note("<A B A C D B E F ~@86 A ~ A ~ G ~@2 H ~@22>".pickRestart({
  A: "a4 c5 d5 ~@5", B: "a5 c5 g5 f5 e5 a4 d5 c5", C: "c6 f5 bb5 a5 g5 c5 f5 e5", D: "a4 c5 d5 a4 c5 d5 c5 a4",
  E: "d4 f4 a4 f4 a4 d5 a4 d5", F: "f5 d5 f5 d6 ~@4", G: "a4 c5 d5 a4 c5 d5 c5 ~", H: "~@5 [d3,d4,d5] ~ [d3,d4,d5]",
})).s("gm_pad_new_age").gain(0.34)

// chords · pad warm
const pad_warm = note(`<
  ~@7 A@2 B C D C B E F ~@2 G@2 H@2 I@2 G@4 H@2 I@2 G@2 J K J L C B C B C B E F ~@4 G@2 H@2 I@2 G@2 J K J L C B C B C B
  E F C B C B C B E F ~@8 M N O P M N O Q ~@8 R S R S R S T U V W V W V W X Y ~@6
>`.pickRestart({
  A: "[~@7 [d4,a4,d5]@9]/2", B: "[c4,f4,c5] [c4,g4,c5]", C: "[d4,a4,d5]", D: "[bb3,f4,bb4,f5] [a3,e4,a4,e5]",
  E: "[f4,bb4,d5]", F: "[eb4,g4,bb4]", G: "[d5,f5,a5]/2", H: "[c5,f5,a5]/2", I: "[c5,e5,g5]/2", J: "g4", K: "f4",
  L: "[f4,c5]", M: "a4 d4", N: "bb4 d4", O: "c5 bb4 a4 g4", P: "a4@2 f4 g4", Q: "a4 ~", R: "[e4,b4,e5]",
  S: "[d4,g4,d5] [d4,a4,d5]", T: "[c4,e4,g4]", U: "~ f5, [c4,f4,a4]", V: "[e4,b4,e5,g5,b5]",
  W: "[d4,g4,d5,g5,b5] [d4,a4,d5,gb5,a5]", X: "[c4,g4,c5,e5,g5]", Y: "[d4,a4,d5,gb5,a5]",
})).s("gm_pad_warm").gain(0.5)

// chords · pad warm · soft notes
const pad_warm_soft = note("<A B A C A B D@2 ~@86 A B A C A B E@2 ~@22>".pickRestart({
  A: "[d3,a3,d4]", B: "[f3,c4,f4] [c3,g3,c4]", C: "[bb2,f3,bb3] [a2,e3,a3]", D: "[[d3,a3,d4]@3 ~]/2", E: "[d3,a3,d4]/2",
})).s("gm_pad_warm").gain(0.3)

// other · string ensemble 1
const string_ensemble_1 = note(`<
  ~@7 A@2 B C B C B D E F G ~@26 D E F G H I ~@18 D E ~@6 D E F G H J ~@19 K ~@16 F G H J L@2
>`.pickRestart({
  A: "[~@7 [d4,d5]@2 [c4,c5] [d4,d5]@2 [a3,a4] [c4,c5] [d4,d5] [c4,c5]]/2", // D C D A C D C
  B: "[a4,a5]@2 [g4,g5] [f4,f5] [e4,e5]@2 [d4,d5] [c4,c5]", // A G F E D C
  C: "[a3,a4] [c4,c5] [d4,d5]@2 [a3,a4] [c4,c5] [d4,d5] [c4,c5]", D: "bb4 ~ d5 ~ f5 ~ bb4 ~ d5 ~ f5@4 ~@2",
  E: "bb4 ~ eb5 ~ g5 ~ bb4 ~ eb5 ~ g5@4 ~@2", F: "~ [ab3,ab4]!2 ~ [g3,g4]!2 ~ [f3,f4]",
  G: "~ [d3,d4] [eb3,eb4] [d3,d4] ~ [d3,d4] [eb3,eb4] [d3,d4]", H: "~ [ab3,ab4,ab5]!2 ~ [g3,g4,g5]!2 ~ [f3,f4,f5]",
  I: "~ [d3,d4,d5] [eb3,eb4,eb5] [d3,d4,d5] ~ [d3,d4,d5] [eb3,eb4,eb5] [d3,d4,d5]", // D Eb D Eb D
  J: "~ [d3,d4,d5] [eb3,eb4,eb5] [d3,d4,d5] ~@4", K: "~@5 [d3,a3,d4,a4,d5] ~ [d3,a3,d4,a4,d5]", L: "[[d3,d4]@5 ~@3]/2",
})).s("gm_string_ensemble_1").gain(0.26)

// chords · overdriven guitar
const overdriven_guitar = note(`<
  ~@7 A B C D E D C F@2 G H I@6 J K L I L I L I M N O P Q R D C D C D C F@2 G H G H L I L I L I M N O P Q R D C D C D C
  F@2 D C D C D C F@2 G H G H@2 S H S H S H S H S H S ~@7 T U V U V U V W@2 U V U V U V X Y Z@2 AA H ~@2
>`.pickRestart({
  A: "~@7 [d2,a2,d3]", B: "~ [d2,a2,d3]!2 ~ [d2,a2,d3]!2 ~ [d2,a2,d3]", C: "~ [f2,c3,f3]!2 ~ [c3,g3,c4]!2 ~ [c3,g3,c4]",
  D: "[d2,a2,d3]!3 ~ [d2,a2,d3]!2 ~ [d2,a2,d3]", E: "~ [bb2,f3,bb3]!2 ~ [a2,e3,a3]!2 ~ [a2,e3,a3]",
  F: "[f3 eb3, [bb2,bb3]]/2", G: "~ [ab2,eb3,ab3]!2 ~ [g2,d3,g3]!2 ~ [f2,c3,f3]",
  H: "~ [d2,a2,d3] [eb2,bb2,eb3] [d2,a2,d3] ~ [d2,a2,d3] [eb2,bb2,eb3] [d2,a2,d3]", I: "d2!8", J: "d2!7 f2", K: "e2!8",
  L: "d2!2 [f2,c3] d2!5", M: "d2!2 [f2,c3] d2!3 [f2,c3] f2", N: "e2!7 f2", O: "[g2,d3]!3 [f2,d3] [g2,d3]!3 [a2,d3]",
  P: "[d2,a2]!8", Q: "[g2,d3]!3 [f2,d3] [g2,d3]!3 [f2,d3]", R: "[eb2,bb2]!8",
  S: "~ [d2,a2,d3] [eb2,bb2,eb3] [d2,a2,d3] ~ [d2,a2,d3] [eb2,bb2,eb3] [f2,c3,f3]", T: "~@5 [d2,a2,d3] ~ [d2,a2,d3]",
  U: "[e2,b2,e3]!3 ~ [e2,b2,e3]!2 ~ [e2,b2,e3]", V: "~ [g2,d3,g3]!2 ~ [d3,a3,d4]!2 ~ [d3,a3,d4]",
  W: "[g3 f3, [c3,c4]]/2", X: "[c3,g3,c4]", Y: "[d2,a2,d3]",
  Z: "[~ [ab2,eb3,ab3]!2 ab2 [g2,d3,g3]!2 g2 [f2,c3,f3]@2 [d2,a2,d3] [eb2,bb2,eb3] [d2,a2,d3] d2 [d2,a2,d3] [eb2,bb2,eb3] [d2,a2,d3]]/2", // Ab5 G5 F5 D5 Eb5 D5 Eb5 D5
  AA: "d2 [ab2,eb3,ab3]!2 ~ [g2,d3,g3]!2 ~ [f2,c3,f3]", // Ab5 G5 F5
})).s("gm_overdriven_guitar").gain(0.24)

// bass · electric bass finger
const bass = note(`<
  ~@7 A B C D E D C F G H I J@6 K L J@6 K L M J N O D C D C D C F G H I H I J@6 K L M J N O D C ~@4 F G D C ~@4 F G H I
  H I@2 P I P I P I P I P I P ~@7 Q R S R S R S T U R S R S R S T V W@2 X I ~@2
>`.pickRestart({
  A: "~@7 d1", B: "~ d1!2 ~ d1!2 ~ d1", C: "~ f1!2 ~ c2!2 ~ c2", D: "d1!3 ~ d1!2 ~ d1", E: "~ bb1!2 ~ a1!2 ~ a1",
  F: "bb1", G: "eb1", H: "~ ab1!2 ~ g1!2 ~ f1", I: "~ d1 eb1 d1 ~ d1 eb1 d1", J: "d1!8", K: "d1!7 f1", L: "e1!8",
  M: "g1!3 f1 g1!3 a1", N: "g1!3 f1 g1!3 f1", O: "eb1!8", P: "~ d1 eb1 d1 ~ d1 eb1 f1", Q: "~@5 d1 ~ d1",
  R: "e1!3 ~ e1!2 ~ e1", S: "~ g1!2 ~ d1!2 ~ d1", T: "c2", U: "f1", V: "d2",
  W: "[~ ab1!3 g1!3 f1@2 d1 eb1 d1!3 eb1 d1]/2", X: "d1 ab1!2 ~ g1!2 ~ f1",
})).s("gm_electric_bass_finger").gain(0.19)

// bass · piano
const bass_2 = note("<~@7 A B C@7 D E C@28 F G H E C@28 F G H I J@8 K@3 L ~@7 M C@16 F G H I ~@2>".pickRestart({
  A: "~@7 [c2,e2]", B: "~ c2 e2 ~ c2!2 e2 c2", C: "c2!2 e2 c2!3 e2 c2", D: "db3 [e2,c3]!2 ~ [e2,c3]!2 ~ [e2,c3]",
  E: "~ [e2,c3]!3 ~ [e2,c3]!3", F: "[c2,db3] c2 [c2,e2] c2!3 [c2,e2] [c2,c3]",
  G: "[c2,c3]!2 [c2,e2] [c2,c3]!3 [c2,e2] c2", H: "c2 [e2,c3]!2 ~ [e2,c3]!2 ~ [e2,c3]", I: "~ [e2,c3]!3 ~ [e2,c3,g3]!3",
  J: "g3 [e2,g3] g3 [e2,g3]", K: "[db3,g3] [e2,db3] [db3,g3] [e2,db3]", L: "[db3,g3]@2 [c2,db3] c2 [a2,c3]!4",
  M: "~@5 [c2,e2] ~ [c2,e2]", // C
})).s("gm_piano").gain(0.35)

stack(piano, pad_new_age, pad_warm, pad_warm_soft, string_ensemble_1, overdriven_guitar, bass, bass_2)

More by Nightwish