Strudelify

How Can I Keep From Singing

Enya

KeyD majorTempo100 bpm
0:00/0:00
// How Can I Keep From Singing — Enya
// 100 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 75 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · piano · "A.PIANO 1"
const piano = note("<~@3 A B@2 C@7 D@7 E@6 F@4 G@5 H@8 I@7 J@3 K@8 L@4 M@6 N@4>".pickRestart({
  A: "~@25 d4@7, ~@9 a3@7, ~@23 b3@9",
  B: "[~@14 e4@4 ~@16 d3@5 ~@15 f#3@9 d4, [d2,f#4]@9 g3@11 ~@2 a2@10, ~@4 a2@14 b3@11 b3@10 ~@10 d3@15, ~@9 d3@10 [g2,d4]@20 [d2,a3]@25, ~@24 d3@10 ~@5 f#3@15 ~@10]/2", // D G5 D5
  C: "[~@36 e3@5 f#4@2 ~@15 a3@5 ~@6 d4@5 ~@15 e4@4 ~@10 b3@9 ~@21 d4@5 ~@31 e3@5 f#4@2 ~@33 g4@5 ~@5 c#3@4 c#4, ~@4 c#4@27 d4@10 d2@12 f#3@10 a3@4 b3@7 a3@19 g3@20 ~@25 c#4@22 e3@4 d4@10 d3@18 d3@8 d4@15 ~@9, ~@4 a3@6 e3@4 a3@8 e4@20 ~ a4@32 d4@18 b3@10 ~@9 [d2,f#3,a3]@26 a3@5 e3@4 a3@28 ~@3 f#3@8 f#3@21 f#4@8 ~@9, ~@5 e4@13 e3@2 d4@6 e3 a3@15 ~@7 d3@27 ~@4 a2@5 d3@9 ~@5 d3@14 ~@9 d3@17 e4@12 e3@2 d4@2 e4@20 ~ a4@38 ~@10, ~@6 a2@36 ~@3 a2@31 [d2,f#4]@18 [g2,d4]@19 ~@4 a2@22 a2@36 ~@7 a3@32 [f#2,a4]@10]/7", // D G5 F#m
  D: "[~@8 a4@4 ~@33 d4@6 ~@25 e4@5 f#4@3 ~@24 d4@5 ~@15 e4@4 ~@15 d3@5 ~@28 d4@6 ~@35 e3@3, ~@3 f#3@9 b3@18 d4@6 f#3@15 d2@23 f#4@7 a2@32 a3@11 d3@8 g3@20 a3@21 a3@4 b3@8 ~ b3@10 b3@9 c#4@19, ~@5 f#4@8 d4@11 f#3@4 e4@25 ~@7 d3@22 ~@5 e3@27 d4@19 b3@9 b3@11 ~@9 d3@25 [b2,d4,f#4]@19 [a2,e4]@18, ~@14 b2@39 ~@3 a2@13 [a3,g4]@14 ~ a4@31 ~@4 a2@14 [g2,d4]@20 ~@4 a2@31 ~@4 f#3@9 f#3@5 ~@5 e3@10 ~@3, ~@14 f#4@4 f#3@3 f#4@31 f#4@13 f#3@17 ~@20 a3@4 b3@9 [d2,f#4]@18 ~@5 d3@9 ~@5 [d2,f#3]@36 ~@16 a3@11 a3@9]/7", // Bm A5 A7 G5 D
  E: "[~@2 e4@3 ~@33 d4@5 ~@15 e4@4 ~@15 d3@4 ~@19 d4@4 ~@32 e3@4 ~@30 d4@5 ~@11 d3@4 e4@2, ~@2 d2@41 a3@19 g3@20 d2@23 c#4@22 e3@4 d4@9 f#4@2 a4@33 a3@17, ~@2 a3@9 d3@20 a3@5 b3@8 d4@19 b3@9 b3@10 ~@10 d3@14 e4@12 e3@3 d4 e4@19 ~@7 a3@15 ~ a3@4 b3@8 d4@16, ~@2 f#3@4 a2@39 [d2,f#4]@18 [g2,d4]@20 ~@4 a2@20 a2@34 d3@17 d3@19 [d2,f#4]@15, ~@5 d4@13 f#3@27 ~@4 a2@5 d3@9 ~@4 d3@10 ~@4 [f#3,a3]@23 a3@7 e3@3 a3@27 ~@3 f#3@9 f#3@24 ~@5 a2@10]/6", // D G5 D F#m
  F: "[~@17 d3@4 ~@27 d4@5 ~@34 e3@5 e4@2 ~@29 g4@5, ~@2 g3@20 a3@10 d3@10 a3@12 d4@17 a3@11 a3@10 f#3@9 d3@15 d4@5 f#4@7, ~@2 b3@10 b3@10 ~@5 a2@28 [b2,f#4]@17 c#4@21 ~@2 d4@11 f#3@22, ~@3 [g2,d4]@19 d2@33 ~@4 f#3@9 f#3@5 [a2,e4]@20 ~@3 a2@32, ~@7 d3@9 ~@5 f#3@25 b3@7 b3@10 ~ b3@9 ~@4 e3@10 ~@5 [d2,a3]@36]/4", // B5 G5 A5 D5
  G: "[~@19 a4@4 ~ f#4@4 ~@24 d4@6 ~@25 e4@5 ~@10 a3@11 ~@7 d4@4 ~@21 b3@5 ~@8 [g3,b3]@5 d3, ~ f#2@22 d4@7 d4@7 e4@21 ~@9 d3@14 f#4@7 f#4@3 a4@30 d4@10 d3@5 e4@5 [g2,d4]@19, ~ a4@15 f#4@8 ~@5 f#4@28 ~ f#4@14 f#3@17 a2@31 a3@24 ~@16, ~@6 c#3@17 [b2,b3]@36 ~@3 a2@14 [a3,g4]@14 ~@3 e3@29 [d2,f#4]@22 ~@16, ~@11 f#3@13 ~@4 f#3@12 d4@5 f#3@13 [d2,d4]@32 ~@19 a3@5 b3@8 ~@4 a2@18 ~@5 d3@10 ~]/5", // G G5 B A7 D
  H: "[~@35 d4@4 ~@35 e3@5 e4@2 ~@50 f#3@5 ~@16 d3@5 ~@77 b3@3 ~@15 e3@4, ~@4 [d2,f#3]@29 b3@6 b3@10 b3@8 a3@11 ~ a3@10 f#3@9 d3@4 f#3@6 d3@20 [d2,d4]@18 g3@11 g3@11 [b1,b3]@20 c#4@20 d4@10 d3@8 d4@13 e4@8 ~@10 a3@9, ~@4 a3@24 ~ a3@12 ~@4 f#3@9 f#3@4 c#4@21 ~@2 d4@35 a3@21 ~ d4@21 d4@20 [a2,e4]@20 [d2,f#4]@13 f#3@5 [b2,f#4]@21 ~@18, ~@9 a2@31 ~ b2@18 [a2,e4]@21 ~@3 a2@36 ~@3 a2@15 [g2,b3]@22 ~@4 b2@8 e4@2 f#4@3 b2@4 ~@4 e3@10 e3@6 ~@3 a2@12 b3@16 d4@6 [a2,c#4,e4]@19, ~@15 d3@25 [d4,f#4]@20 ~@3 e3@11 ~@5 [d2,a3]@37 f#3@11 d3@10 ~@5 d3@10 ~@5 f#3@11 f#3@9 a3@12 a3@8 a3@20 ~@5 f#3@16 ~@4 e3@10 ~@4]/8", // D B A5 D B5 A5 G A …
  I: "[~@25 d4@5 ~@29 d#4@8 ~@14 f4@4 ~@16 d#3@4 ~@24 d#4@6 ~@67 d#4@6 ~@10 d#3@4 f4@2, ~ a3@11 d3@9 a3@9 a#1@23 a#3@5 c4@11 ~@8 d#3@9 ~ d#4@18 ~@10 d#3@20 d4@36 a#3@3 ~@2 a#4@32 [a#3,d#4]@16, ~ f#3@6 a2@23 a#3@13 f3@26 ~@3 a#2@13 [g#2,g#3]@20 [d#2,a#3]@30 a#3@5 f3@4 a#3@24 f3@5 g4@19 d#2@5 a#3@3 c4@9 ~@15, ~@2 d2@28 f3@7 a#2@31 [d#2,a#3,d#4,g4]@18 ~@5 d#3@10 ~@4 g3@15 g3@16 f4@12 f3@5 [a#2,f4]@20 d#2@4 a#2@5 d#3@28 ~@4 a#2@10, ~@2 d4@15 f#3@15 d4@36 ~@18 c4@10 c4@9 ~@5 a#2@26 ~ a#2@14 d#4@7 f3@4 d#4@10 d#4@14 a#2@23 [d#2,g4]@15]/7", // D#5 G# D#5 D# A#5 D#
  J: "[~@17 d#3@5 ~@29 d#4@5 ~@16 g3@4 ~@15 f3@5, ~@2 [g#2,g#3]@20 [d#2,g3]@27 c4@7 c4@11 c4@9 a#3@10 a#3@10, ~@3 c4@10 c4@10 ~@4 a#2@30 d#4@20 f4@19, ~@4 d#4@19 ~@9 d#3@26 [c3,g4]@19 ~@4 f3@10 ~@5, ~@7 d#3@10 ~@5 a#3@23 a#3@14 ~@3 g3@9 ~@5 [a#2,d4]@20]/3", // G# D# C5 A#
  K: "[f4@3 ~@28 g#4@8 ~@17 a#4@4 ~ [d#4,g4]@5 ~@12 d#4@14 d#4@6 ~@10 a#3@5 [a#3,d#4]@5 ~@2 f4@10 g4@2 ~@26 d#4@5 ~@16 f4@4 ~@16 d#3@4 ~@28 d#4@5 ~@17 g3@3, [d#2,g3,a#3]@39 g2@14 g4@7 c4@7 [c4,g4]@31 d#2@32 a#2@33 a#3@7 a#2@13 g#3@20 d#2@21 a#3@5 c4@7 c4@12 c4@8, ~@3 d#4@19 d#4@17 a#4@10 d4@13 ~@5 d#4@8 f4@23 d#4@9 d#3@24 ~@4 f3@29 d#4@10 d#3@10 c4@5 d#3@5 c4@9 a#3@11 d#3@23 d#4@19, ~@9 d#3@31 ~@4 d3@18 ~@4 g3@32 a#3@5 a#2@15 [a#3,d#4,g4]@14 ~@19 a#3@5 c4@9 d#2@19 g#2@20 ~@5 a#2@29 [c3,g4]@18, ~@28 g4@13 ~@7 g3@13 c3@38 g4@14 g#4@19 a#4@34 g4@19 d#4@19 g3@34 ~@5 g3@10 ~@3]/8", // D# D#5 D# C5 D# C5
  L: "[~@17 f3@5 f4@2 ~@18 d#2@21 ~@16 a#2@8 ~@15 d#3@5 ~@16 g4@5, ~ [a#2,d4,f4]@21 d#2@14 a#2@29 ~@3 a#2@11 ~@8 [g#2,c4,d#4]@21 ~@5 c3@8 f4@7, ~@2 a#3@9 a#3@10 ~@3 d#4@39 [d#2,a#3,d#4]@24 g#3@10 g#3@11 c4@20, ~@6 f3@10 ~@6 [g3,a#3]@42 g3@24 ~@19 g3@10 ~ g3@10, ~@26 a#2@5 d#3@33 ~@10 d#3@15 ~@3 d#3@10 ~@5 [c2,d#4]@21]/4", // A# G# D#5 Gm Cm
  M: "[~@16 a#2@6 ~@13 a#2@5 ~@55 f3@5 ~@14 d#3@4 ~@16 d#3@5 ~@14 g4@5 ~@15 f3@5 ~@9 d#3@5, [d4,f4]@23 ~@8 d#3@9 c4@13 d#4@5 [d4,f4]@43 ~@18 g#3@9 g#3@10 ~ g3@9 g3@10 a#3@9 ~ a#3@10 ~@14, a#3@10 a#3@12 ~@5 a#2@8 ~@5 [c3,g4]@20 ~@4 f3@9 f3@5 d3@23 g3@9 g3@10 ~@3 d#3@10 ~@11 c3@14 [a#2,d4,f4]@22 ~@2 a#2@10, ~ a#1@22 ~@21 g3@15 a#2@42 ~@4 d#3@9 ~@4 [g#2,c4,d#4]@20 ~@13 f4@7 ~@5 f3@10 ~@19, ~@5 a#2@11 ~@6 [d#2,a#3,d#4,g4]@18 d#4@11 f4@5 c4@4 ~@9 a#3@14 f3@6 a#3@11 [d#2,a#3,d#4]@19 ~@20 [c2,c4,d#4]@20 ~@19 [d#2,a#3,d#4,g4]@14]/6", // Dm C5 A# G# D# D#5 Cm D#
  N: "[a#3@5 ~@19 c4@4 ~@62 d#5@19 ~@19, ~@5 [c3,g4]@24 ~@5 f3@12 f3@9 ~@4 a#2@7 d#3@8 g4@36 ~@18, ~@5 c4@16 d#4@8 ~@24 [d#2,a#3]@57 ~@18, ~@5 d#4@13 f4@10 a#3@11 a#3@13 g3@29 a#4@29 ~@18, ~@10 g3@18 [a#2,d4,f4]@26 d#4@55 ~@19]/4", // C5 D#5 A#
})).s("gm_piano").gain(0.36)

// bass · acoustic bass · "ACOU BASS"
const bass = note("<A@4 B@2 C D E@2 F G@8 H I@8 J@2 K@6 L@7 M@2 N@2 O@7 P@7 Q@7 R@7>".pickRestart({
  A: "[~@55 f#2@28 [a1,c#4]@41 ~@4, ~ d4@84 ~@43, ~ [d2,d3,f#3,a3]@27 g1@30 ~@70, ~@27 [g3,b3]@31 ~@70]/4", // A D G
  B: "[[d2,d3,f#3,a3]@17 ~ [g2,g3]@21 ~ d2@24, d4, ~@17 b3@22 [f#3,a3]@25]/2", C: "~@3 [a2,c#4,e4]@13",
  D: "~ [f#3,a3,d4]@3", E: "[~@12 [d2,f#3,a3]@16 ~ g2@20 ~ f#3@14, ~@11 d4@53, ~@28 [g3,b3]@21 d2@15]/2",
  F: "~@13 c#4@19, ~@3 [a2,a3,e4]@5", // A5
  G: "[~@13 [d2,f#3,a3]@41 [f#2,a3,c#4]@21 [b2,b3]@39 [d2,a3]@32 ~ a2@31 ~ d2@17 ~ g2@19 [d2,f#3,a3]@32 ~ [b2,f#4]@7, ~@12 d4@41 ~ f#4@87 ~@37 d4@64 ~@6 [b3,d4]@8, ~@75 d4@65 ~@6 [a3,c#4,e4]@32 [f#3,a3]@18 [g3,b3]@21 ~@39]/8", // D F#m B D5 D B5 Bm A …
  H: "~@13 [a2,c#4,e4]@19", // A
  I: "[~ e4@3 d4@41 [d2,f#3,a3]@17 [g2,g3,b3]@20 [d2,f#3,a3]@24 [a2,a3,c#4,e4]@34 ~ d2@35 ~ d2@16 ~ [g2,g3]@19 [d2,f#3,a3]@34 [b2,d4,f#4]@9, ~ [d2,a3]@44 d4@62 ~@33 [f#3,a3,d4]@36 d4@64 ~@16, ~@176 [f#3,a3]@17 b3@21 ~@42]/8", // D G D A G D Bm D5 …
  J: "[~@9 [a2,a3,e4]@19 ~@3 d4@33, ~@2 c#4@5 [d2,a3]@9]/2", // A5 D5
  K: "[~@2 [f#2,c#4]@20 [b2,b3,d4]@35 [d2,f#3,a3,d4]@32 ~ a2@32 [d2,f#3,a3]@18 ~ g3@23 [f#3,a3]@28, ~@2 f#4@56 ~@31 [a3,c#4,e4]@33 d4@69 ~, ~@35 [g2,b3]@6 ~@7]/6", // F#5 Bm D F#m A G
  L: "[~@10 [b2,f#4]@16 [a2,a3,c#4,e4]@20 ~@40 [d2,f#3,a3]@18 [g2,g3]@22 ~@2 f#3@18 ~ e4@20 ~@18 [b2,b3]@19 [a2,e3,a3]@20, ~@9 [b3,d4]@18 ~@19 [d2,a3]@40 ~@18 b3@42 [a2,c#4]@22 f#3@37 ~@19, ~@49 d4@72 ~@5 d4@21 ~@20 d4@37 ~@20, ~@127 b2@20 ~@20 [d2,a3]@18 ~@39]/7", // B5 A D G B A5 Bm D5 …
  M: "[~ [d2,f#3,a3]@29 [a#1,f3,a#3]@34, ~ d4@63]/2", // D A#5
  N: "[~ [d#2,g3,a#3]@19 ~ g#1@20 [d#2,g3,a#3]@23, ~ d#4@63, ~@20 c4@21 ~@23]/2", // D#
  O: "[~@7 [d4,f4]@36 [d#2,a#3,d#4,g4]@38 [d#2,g3,a#3]@17 [g#1,g#3,c4]@19 ~ [g3,a#3]@35 [c2,g3,c4,d#4]@19 [a#1,f3,a#3,d4]@19 [d#2,g3,a#3,d#4]@33, ~@6 [a#1,a#3]@37 ~@38 d#4@64 ~@79, ~@117 d#2@37 ~@70]/7", // Dm D# G# Gm Cm A# D# A#
  P: "[~@5 [g2,d4,g4,a#4]@22 [c2,c4,d#4,g4]@38 [d#2,g3,a#3,d#4]@30 ~ f3@37 [d#2,g3,a#3]@20 [g#1,g#3,c4]@18 ~ d#2@33 ~ c2@18, ~@95 [a#1,a#3,d4]@38 d#4@67 ~@5 [g3,c4,d#4]@19, ~@171 [g3,a#3]@35 ~@18]/7", // Gm Cm D# G# A# Cm Gm
  Q: "[~ [a#1,a#3,d4]@20 [d#2,g3,a#3]@41 ~@22 [g#1,g#3,c4]@23 [c2,g3,c4]@20 [a#1,f3,a#3,d4]@21 ~ g3@19 [c2,g3,c4]@18 ~ f3@37, ~@21 d#4@103 ~@24 d#4@39 ~@37, ~@62 [d#2,g3,a#3]@25 ~@61 [d#2,a#3]@21 ~@17 [a#1,a#3,d4]@38]/7", // A# D# G# C5 A# C5 D# D#5 …
  R: "[~@4 g3@19 [g#1,g#3,c4]@19 ~ [g3,c4]@18 [a#1,f3,d4]@20 ~@19 [c2,c4]@23 [a#1,f3,d4]@25 ~ g3@58 ~@17, ~@3 d#4@58 a#3@40 ~@22 a#3@84 ~@17, ~@3 [d#2,a#3]@21 ~@18 c2@20 ~@19 d#4@42 ~@101, ~@81 d#2@20 ~@47 [d#2,d#4]@59 ~@17, ~@41 g3@21 ~@50]/7", // G# C5 A# C A# D#5 D#
})).s("gm_acoustic_bass").gain(0.29)

// bass · acoustic bass · "ACOU BASS" · soft notes
const bass_soft = note("<A@4 ~@2 B@3 C@2 ~@8 D E@2 ~@5 F@4 ~@4 G@2 H@2 ~ I@2 J ~@2 K@2 ~@28>".pickRestart({
  A: "[~@27 g2@28 ~@28 e3@41 ~@4, ~@55 a3@64 ~@9, ~@55 [f#1,f#3]@30 ~@43, ~@41 a2@21 ~@2]/4", // F#
  B: "[~@6 a3@34 ~ d2@35 ~@20]/3", C: "[~@9 a3@13 ~@10]/2", D: "~@13 a3@19", E: "[~ f#3@44 ~@19]/2",
  F: "[~@23 b3@19 ~@18 f#3@38 a3@20 ~@10, ~@60 e4@3 ~@65]/4", G: "[~@5 d2@38 ~@21]/2",
  H: "[~@7 f#3@20 ~@5, ~@13 e4@4 ~@47]/2", I: "[~@18 a3@21 ~@25]/2", J: "~@3 c#4@5", K: "[~@21 g#3@21 ~@22]/2",
})).s("gm_acoustic_bass").gain(0.14)

stack(piano, bass, bass_soft)

More by Enya