Strudelify
Cinnamon Girl cover art

1977 · Everybody Knows This Is Nowhere

Cinnamon Girl

Neil Young

KeyD majorTempo104 bpm
0:00/0:00
// Cinnamon Girl — Neil Young
// 104 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 3 "OVERDRIVE" overdriven guitar (copy of ch 1 "STEEL GTR" acoustic guitar steel); ch 9 "MUTED GTR" electric guitar muted (copy of ch 8 "JAZZ GTR" electric guitar jazz)
// note: Full arrangement: all 69 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(104/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 steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C D E B E D F G@2 H I J@2 K@2 H L M@2 N@2 O@2 P@2 Q R G@2 H I J@2 K@2 H L S@2 T@2 U@2 V@2 W X@3 Y@2 Z@2 AA G@2 H I
  J@2 K@2 H L AB@3
>`.pickRestart({
  A: "d3@2 d3@2 c3@2 d3@4 c3@2 d3@3 ~", B: "c3@2 b2@2 a2@2 f2@4 g2@3 ~@3", C: "d3@2 d3@2 c3@2 d3@4 c3@2 d3 ~@3",
  D: "c3 b2 a2 f2@4 ~", E: "d3!2 c3 d3@2 c3 d3 ~", F: "~@7 d4, ~ a3@2 f#4@3 f#4@2, ~@2 d4@3 d4@2 ~, ~ a3",
  G: "[e4 d4 ~ c4@2 ~@9 d4 g3, ~@4 e4@6 g3@7 ~ g3@4 e4@4 ~@6, ~@12 c4@6 ~@2 c4@4 g3@5 ~@3, ~@14 d4@12 c4@5 ~]/2",
  H: "d4 ~@6 g3, ~ g3@4 g3@2 ~, ~ b3@2 b3, ~@3 d4@5", I: "~@2 a3@2 c4@2 ~@2 d4 ~@3 d4@4, ~@3 a3@2 ~ a3 ~",
  J: "[c4 b3 c4 ~@4 a3@3 ~@4 f#4 a3, ~@6 a3@7 ~@7 f#4@7 ~@5, ~@5 d4@8 d4@3, ~@11 a3@4 ~]/2",
  K: "[e4 d4 ~ c4@2 ~@5 g3 ~@4 g3, ~@4 e4@6 g3@9 ~@7 g3@4 ~@2, ~@6 c4@4 ~ c4@5, ~@7 d4@9, ~@7 e4]/2",
  L: "~@2 a3@2 c4@2 ~@2 [d3,d4] ~@3 d4@4, ~@6 a3@4 ~@2 d3 ~@3", // D
  M: "[[c3,c4]@2 [b2,b3]@2 [c3,c4]@2 a3@4 d4@3 ~@3 d3@2 d3@2 c3@2 d3@4 c3@2 [d3,a3] ~@3, ~@6 a2@7 ~ a3@13 ~@5, ~@20 d4@9 ~@3]/2", // C B C D5
  N: "[c3@2 b2@2 a2@2 [f2,c3]@4 [g2,d3,a3]@2 d4@2 ~@2 d3@2 d3@2 c3@2 d3@4 c3@2 [d3,a3] ~@3, ~@14 a3@13 ~@5, ~@4 d4@3 ~]/2", // F5 Gsus2 D5
  O: "[c3@2 b2@2 a2@2 ~@4 d4@4 ~@2 d3@2 d3@2 c3 ~ d3@4 c3@2 [d3,a3]@2 ~@2, ~@6 [f2,c3]@7 ~ a3@5 ~ a3@7 ~@5, ~@16 d4@5 ~ d4@8 ~@2]/2", // D5 F5
  P: "[c3@2 b2@2 a2@2 [f2,c3]@4 ~@2 d4@2 ~@2 d3@2 d3@2 c3@2 d3@4 c3@2 [d3,a3] ~@3, ~@10 [g2,d3]@4 a3@6 a3@7 ~@5, ~@16 d4@5 ~ d4@7 ~@3]/2", // F5 D5 G5
  Q: "c3 b2 a2 [f2,c3]@4 ~", R: "~@7 d4, a3@3 f#4@3 f#4@2, ~ d4@4 d4@2 ~, ~ a3",
  S: "[[c3,c4]@2 [b2,b3]@2 [c3,c4]@2 a3@4 d4@3 ~@3 c3@2 d3@2 c3@2 d3@5 ~ [d3,a3] ~@3, ~@6 a2@7 ~ a3@13 ~@5, ~@20 d4@9 ~@3]/2", // C B C D5
  T: "[c3@2 b2@2 a2@2 ~@4 a3@2 d4@2 ~@2 c3@2 d3@2 c3@2 d3@5 ~ [d3,a3] ~@3, ~@6 f2@6 ~@2 a3@13 ~@5, ~@4 d4@3 ~]/2", // D5
  U: "[c3@2 b2@2 a2@2 ~@6 g2 ~@3 c3@2 d3@2 c3 ~ d3@5 ~ [d3,a3]@2 ~@2, ~@6 f2@6 ~@4 d4@5 ~ d4@8 ~@2, ~@10 d4@4 a3@5 ~ a3@7 ~@5]/2", // D5
  V: "[c3@2 b2@2 a2@2 f2@5 ~ [g2,d4]@2 ~@2 c3@2 d3@2 c3@2 d4@6 [d3,a3] ~@3, ~@14 a3@6 a3@7 ~@5, ~@16 d4@5 ~ d3@5 ~@5]/2", // G5 D5
  W: "c3@2 b2@2 a2@2 f2@6 g2 ~@3",
  X: "[g3 ~ g3 c4 g3 ~ g3 ~ g3 ~@3 g3 c4 g3 ~ g3 ~ g3 ~ g3 c4 ~ d4, ~@2 e4@11 ~ d4@6 g3@4 ~@6 c4@4 ~@10 g3@4, ~@10 c4@7 ~ e4@13 ~@3 e4@14, ~@22 d4@12 ~@4 d4@7 ~@3]/3",
  Y: "[a#3 ~@3 g3 a#3 ~@6 a#3 g3 a#3 g3, d4@4 a#3@5 ~@5 a#3@5 ~ a#3@4 ~@8, ~@2 g3@6 ~@4 g3@5 ~ g3@7 ~@7, ~@6 d4@8 ~@2 d4@5 ~ d4@10]/2",
  Z: "[a3 ~@4 e3!2 ~ e3 ~ e3 ~ e3 ~ e3!2, ~ e3@2 e3@2 ~@2 c#4@3 ~ e4@5, ~@4 a3@4 a3@9 ~ a3@14, ~@13 c#4@3]/2",
  AA: "a3 [a3,d4] ~@5 d4, ~@2 d4@3 d4@2 ~, ~ a3 a3@2, ~@3 f#4@3 f#4@2", // D5
  AB: "[[c3,c4]@2 [b2,b3]@2 [c3,c4]@2 a3@4 d4@3 ~@3 d3@2 d3@2 c3@2 d3@22 ~@4, ~@6 a2@7 ~ a3@30 ~@4, ~@5 d4@6 ~]/3", // C B C
})).s("gm_acoustic_guitar_steel").gain(0.38).pan(1)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  A B C D E B C F G H I J K L M H N O P L Q R Q D S B T D G H I J K L M H N O P L T R U D Q V Q F W@3 X Y Z AA G AB N AC
  K L M H N AD AE L AF@2
>`.pickRestart({
  A: "d2@2 d2@2 c2@2 d2@3 ~ c2@2 d2@2 ~@2", B: "c2@2 b1@2 a1@2 f1@4 g1@3 ~@3", C: "d2!2 c2 d2@2 c2 d2 ~",
  D: "c2@2 b1@2 a1@2 f1@9 ~", E: "d2@2 d2@2 c2@2 d2@3 ~ c2@2 d2@3 ~", F: "c2@2 b1@2 a1@2 f1@7 ~@3",
  G: "d2 ~ d2@4 d2@2 a1 ~ a1@4 d2@2", H: "a1 ~ a1@4 e2@2 a2 ~ a2@3 ~ e2@2", I: "c2 ~ c2@4 g2@2 c3 ~ c3@3 ~ g2@2",
  J: "g2 ~ g2@4 d2@2 g2 ~ g2@4 d2@2", K: "f1@2 g1@2 a1@2 c2@2 d2@2 ~@2 d2@3 ~", L: "c2@2 a1@2 c2@2 a1@7 ~ c2@2",
  M: "d2 ~ d2@4 c2@2 a1 ~ a1@3 ~ d2@2", N: "c2 ~ c2@4 g2@2 c3 ~ c3@4 g2@2", O: "g2 ~ g2@4 d2@2 g2 ~ g2@3 ~ f2@2",
  P: "f1@2 g1@2 a1@2 c2@2 d2 ~@3 d2@4", Q: "d2 ~ d2@2 c2@2 d2@4 c2@2 d2@2 ~@2", R: "c2 b1 a1 f1@2 g1@2 ~",
  S: "d2 ~ d2@2 c2@2 d2@3 ~ c2@2 d2@3 ~", T: "d2 ~ d2@2 c2@2 d2@4 c2@2 d2@3 ~", U: "d2 ~ d2@2 c2@2 d2@4 c2@2 d2 ~@3",
  V: "c2 ~ b1@2 a1@2 f1@4 g1@3 ~@3",
  W: "[c2@5 ~ a1@2 a1@3 ~ a1@2 c2@7 ~ a1@2 a1@3 ~ a1@2 c2@7 ~ a1@2 a1@3 ~ c2@2 d2@2]/3",
  X: "g2@5 ~ g2@3 ~ d2@2 d2@2 f2@2", Y: "g2 g2@2 f2@2 d2!3", Z: "a1@5 ~ e2@2 e2@2 e2@3 ~ g2@2",
  AA: "a2 a2@2 g2@2 e2 g2 e2", AB: "a1 ~ a1@3 ~ e2@2 a2 ~ a2@3 ~ e2@2", AC: "g1 ~ g1@4 d2@2 g2 ~ g2@3 ~ d2@2",
  AD: "g1 ~ g1@4 d2@2 g2 ~ g2@4 d2@2", AE: "f1@2 g1@2 a1@2 c2@2 d2 ~@3 d2@3 ~", AF: "[d2!2 c2 d2@11 ~@2]/2",
})).s("gm_electric_bass_finger").gain(0.49)

// other · flute
const flute = note("<~@8 A B C D E F G H C I J ~@9 G K C I E F G H C I E ~@9 L@4 M@3 ~@14>".pickRestart({
  A: "~ d4@7", B: "c4 b3 c4 a3@3 ~@2", C: "c4", D: "b3@6 a3 g3", E: "a3@2 d3@11 ~@3", F: "~@7 a3", G: "d4",
  H: "c4 b3 c4 a3@3 ~ b3", I: "b3@5 a3@2 g3", J: "a3 d3@5 ~@2", K: "c4@2 b3@2 c4@2 a3@5 ~@3 b3@2",
  L: "[[c4,c5]@3 [b3,b4] [c4,c5]@2 [b3,b4] [c4,c5]@2 [b3,b4] [c4,c5] [b3,b4] [c4,c5] [b3,b4] [a3,a4] [c4,c5]@2 [b3,b4] [c4,c5] [b3,b4] [c4,c5]@2 [e4,e5] [f4,a4,d5]@8 [c#4,e5]]/4", // C B C B C B C B …
  M: "[[d4,f5] [c#4,e5] [d4,f5] [c#4,e5] [d4,f5]@3 ~@8 [c#4,c#5]@8 ~, ~@7 [a3,e4,e5,g5]@16 ~, ~@11 a4@12 ~]/3", // Dm C#m Dm C#m Dm C# A7
})).s("gm_flute").gain(0.32)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note(`<
  A ~ B ~ B ~ C ~ D E F G H I J K L M H N A ~ B ~ B ~ C ~ O P@2 Q H R O S T U H V A ~ B ~ B ~ B ~ W@2 X Y Z AA AB AC AD
  AE Q H R J AF AG U H N AH@2
>`.pickRestart({
  A: "[g3,c4,e4,g4] [a3,d4,f#4,a4]!2 [a3,d4,f#4,a4]@3 [a3,d4,f#4,a4] ~", // C D
  B: "[c3,g3,e4,g4]@2 [d3,a3,f#4,a4]@2 [d3,a3,f#4,a4]@2 [d3,a3,f#4,a4]@6 [d3,a3,f#4,a4] ~@3", // C D
  C: "[c3,g3,e4,g4]@2 [d3,a3,f#4,a4]@2 ~ f#4 [d3,a3,f#4,a4]@6 [d3,a3,f#4,a4] ~@3, ~@2 [d3,a3,f#4,a4] ~@5", // C D
  D: "d3@5 ~ d3@6 d3@4", E: "c3@5 ~@7 d3@4, ~@6 c3@9 ~", F: "c3 ~@2 d3, ~@4 d3@5 ~@7, ~@3 c3@5",
  G: "b2@4 ~@8 a2@2 g2 ~, ~@4 d3@4 ~@2 d3@5 ~, ~@3 b2@3 ~@2", H: "f2 g2 a2 c3 d3 ~ d3@2",
  I: "c3 b2 c3 ~@3 d3@2, ~@3 a2@5", J: "d3@5 ~ d3@10", K: "c3 ~@2 d3, ~@6 c3@9 ~",
  L: "c3 ~@2 d3, ~@2 d3@3 ~@3, ~@3 c3@4 ~", M: "b2@2 ~@4 a2 g2, ~@4 d3@5 ~ d3@6, ~@3 b2@3 ~@2",
  N: "c3@2 a2@2 c3@2 a2@9 ~", O: "d3", P: "[c3@5 ~@5 d3@2 ~@4 c3@5 ~ c3@10, ~@3 c3@4 d3@3 ~@6]/2",
  Q: "b2@5 ~ b2@6 a2@2 g2 ~", R: "c3 a2 c3 a2@5", S: "c3@4 ~@8 d3@3 ~, ~@6 c3@9 ~", T: "c3@5 ~@7 d3@4, ~@3 c3@4 ~",
  U: "b2@5 ~ b2@6 a2@2 g2@2", V: "c3@2 b2@2 c3@2 a2@9 ~", W: "[c3,g3]@2 ~ [c3,g3]@3 ~@2",
  X: "[c3,g3]@4 ~@2 [c3,g3]@7 ~@3", Y: "[g2,d3]@2 ~ [g2,d3]@3 ~@2", Z: "[g2,d3]@4 ~@2 [g2,d3]@9 ~",
  AA: "[a2,e3]@2 ~ [a2,e3]@5", AB: "[a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3] ~ [a2,e3]@2 [a2,e3] ~",
  AC: "~@3 d3@5", AD: "c3@5 ~ c3@9 ~", AE: "c3@5 ~ c3@10", AF: "c3@4 ~@2 c3@9 ~", AG: "c3@5 ~ c3@8 d3@2",
  AH: "[[g3,c4,e4,g4] [a3,d4,f#4,a4]!2 [a3,d4,f#4,a4]@11 ~@2]/2", // C D
})).s("gm_overdriven_guitar").gain(0.38)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar_2 = note("<A B C D E F E G ~@12 C F C H C I C J ~@12 A B C D E F E G ~@19 K@2>".pickRestart({
  A: "d3@2 d3@2 c3@2 d3@4 c3@2 d3@3 ~", B: "[c3,g3]@2 [b2,g3]@2 a2@2 [f2,c3]@4 [g2,d3]@3 ~@3",
  C: "d3!2 c3 d3@2 c3 d3 ~", D: "[c3,g3]@2 [b2,g3]@2 [a2,g3]@2 f2@9 ~", E: "d3@2 d3@2 c3@2 d3@4 c3@2 d3 ~@3",
  F: "c3@2 b2@2 a2@2 f2@4 g2@3 ~@3", G: "[c3,g3]@2 [b2,g3]@2 [a2,g3]@2 [f2,c3]@7 ~@3", H: "c3@2 b2@2 a2@2 f2@9 ~",
  I: "c3 b2 a2 f2@2 g2@2 ~", J: "c3@2 b2@2 a2@2 f2@7 ~@3", K: "[d3!2 c3 d3@11 ~@2]/2",
})).s("gm_overdriven_guitar").gain(0.38).pan(0.4)

// other · overdriven guitar · "OVERDRIVE" · soft notes
const overdriven_guitar_soft = note("<~ A ~ B ~ C ~@35 A ~ B ~ C ~@23>".pickRestart({
  A: "~@2 g3 ~@5", B: "~@6 c3@9 ~", C: "g3@2 g3@2 g3@2 c3@4 d3@3 ~@3",
})).s("gm_overdriven_guitar").gain(0.22).pan(0.4)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~@54 A B@3 C D E@2 B C F@2 G H@2>".pickRestart({
  A: "~@5 d4!3", B: "d4!8", C: "d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4@2 d4 ~", D: "d4 a3 d4 ~ d4 ~ d4@2, ~@3 a3@2 ~@3",
  E: "[c4 b3 c4 ~@2 d4@2 a3@2 d4!7, ~@6 a3@7 ~@19]/2", F: "[d4!7 d4@2 a3 d4 a3 d4 ~ d4@2]/2", G: "c4 b3 c4 a3@5",
  H: "[d4!2 c4 d4@11 ~@2]/2",
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  A@8 B C B D B E C@3 D B C F@8 C D C D B@2 C@3 G C@2 F@6 A F B@6 H C@10 B@2 I ~
>`.pickRestart({
  A: "x ~@4 x ~@2", B: "x ~@3 x!2 ~@2", C: "x!2 ~@2 x!2 ~@2", D: "x!2 ~@3 x ~@2", E: "~ x ~@2 x!2 ~@2",
  F: "~ x ~ x ~ x ~@2", G: "x!2 ~@2 x ~ x ~", H: "~ x ~ x ~@4", I: "x!2 ~ x ~@4",
})).gain(0.49)

// drums · clap
const clap = s("cp").struct("<A@7 B ~@12 A@8 ~@12 A@7 C ~@8 A@5 D@3 A@3 ~@2>".pickRestart({
  A: "x!4", B: "x!3 ~", C: "x", D: "x!2",
})).gain(0.38)

// drums · snare
const snare = s("sd").struct(`<
  A@9 B A C D A@3 E A@3 F@7 G A@5 C A@3 H A@2 F@7 G A B A@4 I A@2 B C A@5 B A@2 J ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~@2 x", C: "~@2 x ~@3 x!2", D: "~@4 x ~@2 x ~@4 x ~@3", E: "x!2 ~ x", F: "x!4",
  G: "x ~@3 x ~@3 x ~@3 x ~@2 x", H: "~@4 x ~@5 x ~@2 x!3", I: "x ~@3 x ~@3 x ~ x!6", J: "~ x ~@2",
})).gain(0.49)

// drums · hihat
const hihat = s("hh").struct("<A@8 B C B D B C@5 B C A@4 E A@2 D F C@2 D B C B C@3 B C A@7 G ~@21>".pickRestart({
  A: "x!5 ~ x ~", B: "~ x!7", C: "x!8", D: "x!7 ~", E: "x ~ x!3 ~ x ~", F: "~@3 x!5", G: "x!5 ~ x!2",
})).gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<[~@5 x ~@2]!8 ~@12 [~@5 x ~@2]!7 ~@13 [~@5 x ~@2]!8 ~@21>").gain(0.44)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~ A ~ A ~@5 A ~@9 B ~@3 A ~ A ~@3 A ~@9 A ~@2 A ~@3 A ~@3 A ~@5 A ~ C ~
>`.pickRestart({
  A: "x", B: "x!2 ~@2", C: "~ x!3 ~@4",
})).gain(0.38)

// drums · ride
const ride = s("rd").struct("<~@48 A B@2 A B@3 C B@3 C B@5 C B D ~>".pickRestart({
  A: "~@2 x!6", B: "x!8", C: "~ x!7", D: "x",
})).gain(0.44)

stack(
  acoustic_guitar_steel, bass, flute, overdriven_guitar, overdriven_guitar_2, overdriven_guitar_soft,
  electric_guitar_jazz, kick, clap, snare, hihat, open_hat, crash, ride
)

More by Neil Young