Strudelify

make you feel my love

Bob Dylan Adele

KeyA majorTempo76 bpm
0:00/0:00
// make you feel my love — Bob Dylan Adele
// 76 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4877801; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 49 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(76/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 · acoustic guitar nylon · "Klassieke gitaar"
const acoustic_guitar_nylon = note(`<
  A B C D E F G@2 A B C D E F H I J K L M J N O P A B Q D R F G@2 J S T M J U V W A B Q D R F H X ~
>`.pickRestart({
  A: "~@4 e4@2 e4 ~@3 e4@2 d4@2 c#4@2, a2@7 e4@3 ~@6, ~ a2", B: "e4@2 g#3 ~ e2@4, e2 ~, ~@3 g#3@3 ~@2",
  C: "~@4 e4@2 e4!2 d4@6 c#4@2, g2!2", D: "d4 a3@2 ~ f#2@4, f#2 ~, ~@3 a3@3 ~@2",
  E: "~@4 d4@2 d4!2 c#4@2 c#4@2 c#4@2 b3 c#4, f2!2", F: "c#4@3 a3@3 ~@2 a2@8, a2 ~, ~@3 a3@3 ~@2",
  G: "[~ a3!2 c#4 a3 a3@2 ~ a2@4 a2@4, b2 e2 ~@2, ~@7 a3@2 ~@7]/2", H: "~ a3!2 c#4 a3 a3@2 a3, b2 e2",
  I: "a2!2, a3 ~@3", J: "~ a4!5 g#4 f#4, d3!2", K: "e4@2 a3!2 a2@4, a2@2 a3 ~",
  L: "~@2 c#4@2 c#4@2 c#4@2 c#4@2 b3!2 b3@2 a3!2, f2 f#2", M: "[a2,a3] a2", N: "e4!2 a4!2 a2@4, a2@2 a4 ~",
  O: "c#4@2 b3@2 b3@2 c#4@2 c#4@2 c#4@2 e4@2 a3 b3, b2!2", P: "e2!2, b3 ~@3", Q: "~@4 e4@2 e4!2 d4@2 d4@4 c#4@2, g2!2",
  R: "~@4 d4@2 d4!2 c#4@2 c#4@2 c#4 b3!2 c#4, f2!2", S: "e4@3 c#4 [a2,c#4]@4, a2 ~",
  T: "c#4@2 c#4@2 c#4@2 c#4@2 b3@2 b3@2 a3@2 a3!2, f2 f#2", U: "e4@3 a4 [a2,a4]@4, a2 ~",
  V: "c#4 b3@2 a3!3 c#4 a3, b2!2", W: "[e2,b3] e2", X: "a2 ~, a3 ~@7",
})).s("gm_acoustic_guitar_nylon").gain(0.3)

// chords · acoustic guitar nylon · "Klassieke gitaar"
const acoustic_guitar_nylon_2 = note(`<
  A B C D E F G H A B C D E F G I J K L M J N O P Q B R D S T U I V W X M Y Z AA AB AC B AD D AE AF G AG AH
>`.pickRestart({
  A: "[e3,a3,c#4]@6 ~@6 a3 c#4 [e3,e4]@2, a2!2, ~@3 [e3,a3,c#4]@3 ~@2", // A E A
  B: "[g#3,b3,e4]@3 ~ e2@2 f#2@2, e2 ~, ~@3 [g#3,b3,e4]@3 ~@2", // E
  C: "[g3,b3,e4]@3 ~@2 g3 [b3,d4] g3, g2@2 g2 a2, ~@3 [g3,b3,d4]@2 ~@3", // Em Bm G
  D: "[f#3,a3,d4]@3 ~@3 f#3 a3, d3!2, ~@3 [f#3,a3,d4]@3 ~@2", // D
  E: "[a3,d4,f4]@6 ~@4 a3@2 e4 d4@3, d3!2, ~@3 [a3,d4,f4]@2 ~@3", // Dm
  F: "[e3,a3,c#4]@6 ~@2 a2@4 ~ e3 a3 c#4, a2@2 ~ a2, ~@3 [e3,a3,c#4]@3 ~@2", // A
  G: "[f#3,a3,d#4] f#3@2 a3 [e3,g#3,d4] e3@2 g#3, b2 e2", // D#dim E7
  H: "[e3,a3,c#4]@6 ~@4 e3@3 f#3 a3 b3, a2!2, ~@3 [e3,a3,c#4]@2 ~@3", // A
  I: "[e3,a3,c#4]@6 ~@6 f#3 a3 d4@2, a2!2, ~@3 [a3,c#4,e4]@3 ~@2", // A
  J: "d3@2 ~@3 a3@2 c#4, [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~@3, ~ d3 d3@2", K: "[a3,c#4,e4]@3 [a3,c#4,e4]@2 a3@2 c#4, a2",
  L: "[a3,c#4] ~@2 [a3,c#4] [a3,d4] ~@2 a3, f2!2 f#2!2, ~ f3@2 ~@2 f#3@2 ~", // A D5
  M: "[e3,a3,c#4]@6 [a3,c#4,e4]@4 e3@2 [a3,b3] c#4 e4@2, a2", N: "[a3,c#4,e4]@3 [a3,c#4,e4]@2 e3 a3 c#4, a2",
  O: "[f#3,a3,d#4]@3 ~@2 a3 e4 d#4, b2!2, ~@3 [f#3,a3,d#4]@2 ~@3", // D#dim
  P: "[g#3,b3,e4]@3 ~@2 e2 [g#3,e4] b3, e2@5 ~ e2@2, ~@3 [g#3,b3,e4]@3 ~@2", // E C#m E
  Q: "[e3,a3,c#4]@6 ~@4 e3 a3 d4 c#4 a3@2, a2!2, ~@3 [e3,a3,c#4]@2 ~@3", // A
  R: "[g3,b3,e4]@6 ~@4 g3 b3 e4 d4 g3@2, g2@2 g2 a2, ~@3 [g3,b3,d4]@2 ~@3", // Em G
  S: "[a3,d4,f4]@6 ~@4 a3@2 e4 d4 a3 f3, d3!2, ~@3 [a3,d4,f4]@2 ~@3", // Dm
  T: "[e3,a3,c#4]@3 ~@3 [e3,c#4] a3, a2!2, ~@3 [e3,b3,c#4]@3 ~@2", U: "[b2,f#3,a3,d#4] [e2,e3,g#3,d4]",
  V: "d3@2 ~@3 f#4 e4 d4, [a3,d4,f#4]@3 [a3,d4,f#4]@2 ~@3, ~ d3 d3@2", W: "[a3,c#4,e4]@3 [a3,c#4,e4] e3 a3 c#4 a3, a2",
  X: "[a3,c#4] f3 a3 c#4 [a3,d4] f#3 a3 b3, f2 f#2", Y: "d3@2 ~@3 a3@2 b3, [a3,d4,f#4]@3 [d4,f#4,a4]@2 ~@3, ~ d3 d3@2",
  Z: "[a3,c#4,e4]@3 ~@2 e3 c#4 a3, a2!2, ~@3 [a3,c#4,e4]@2 ~@3", // A
  AA: "[b2,f#3,a3,d#4]@3 [f#3,a3,d#4]@2 a3 f#4 d#4, ~@3 b2@5", // B7 D#dim
  AB: "[g#3,b3,e4]@6 ~@4 g#3 b3 e4 b3 g#3@2, e2!2, ~@3 [g#3,b3,e4]@2 ~@3", // E
  AC: "[e3,a3,c#4]@6 ~@4 e3 a3 b3 c#4 e4 a3, a2!2, ~@3 [e3,a3,c#4]@2 ~@3", // A
  AD: "[g3,b3,e4]@6 ~@4 g3 b3 e4 b3 g3 b3, g2@2 g2 a2, ~@3 [g3,b3,d4]@2 ~@3", // Em G
  AE: "[a3,d4,f4]@6 ~@6 e4 d4@3, d3!2, ~@3 [a3,d4,f4]@3 ~@2", // Dm
  AF: "[e3,a3,c#4]@3 ~@3 [e3,c#4] a3, a2!2, ~@3 [e3,a3,c#4]@3 ~@2", // A C#m A
  AG: "[e3,a3,c#4]@3 ~@2 [e3,a3,c#4]@2 a3, a2!2, ~@3 [e3,a3,c#4]@2 ~@3", AH: "[a2,a3] ~",
})).s("gm_acoustic_guitar_nylon").gain(0.3)

stack(acoustic_guitar_nylon, acoustic_guitar_nylon_2)