Strudelify

For What It's Worth

Buffalo Springfield

KeyE majorTempo100 bpm
0:00/0:00
// For What It's Worth — Buffalo Springfield
// 100 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 70 bars on a 16-step grid, each part at one level. 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 · acoustic guitar steel · "P2-Steel Guitar"
const acoustic_guitar_steel = note("<A@8 B@5 ~@2 C D@2 A@4 B@5 ~@2 C D@2 A@4 B@5 ~@2 C D@2 A@4 B@5 ~@15>".pickRestart({
  A: "[~@4 [a2,b2] ~ e3@5 ~ [a2,b2] ~ a2@6 [a2,b2] ~ e3@5 ~ [a2,b2] ~@7 [a2,b2] ~ e3@6 [a2,b2] ~ a2@6 [a2,b2] ~ e3@5 ~ [a2,b2] ~ e2@2, e2@29 ~ e2@31 ~@3]/4", // Asus2
  B: "[~@4 [a2,b2] ~ e3@5 ~ [a2,b2] ~ a2@6 [a2,b2] ~ e3@5 ~ [a2,b2] ~@7 [a2,b2] ~ e3@6 [a2,b2] ~ a2@6 [a2,b2] ~ e3@5 ~ [a2,b2] ~ e2@9 ~@9, e2@29 ~ e2@31 ~@19]/5", // Asus2
  C: "~@4 [a2,b2] ~ e3@5 ~ [a2,b2] ~ e2@2", // Asus2
  D: "[~@4 [a2,b2] ~ e3@5 ~ [a2,b2] ~ a2@6 [a2,b2] ~ e3@5 ~ [a2,b2] ~ e2@2, e2@29 ~@3]/2", // Asus2
})).s("gm_acoustic_guitar_steel").gain(0.14).pan(0.9)

// other · electric guitar jazz · "P3-DX Jazz Guitar"
const electric_guitar_jazz = note(`<
  A B A B A B A B A B A B ~@2 A B A B A B A B A B A B ~@2 A B A B A B A B A B A B ~@2 A B A B A B A B A B A B A B A B A
  B A B A B A B A B ~@2
>`.pickRestart({
  A: "e5", B: "b5",
})).s("gm_electric_guitar_jazz").gain(0.18).pan(0.1)

// chords · acoustic guitar steel · "P4-Steel Guitar #"
const acoustic_guitar_steel_2 = note(`<
  A@8 B@4 C D E@2 F@2 A@4 B@4 C G E@2 F@2 A@4 B@4 C G E@2 H@6 I@4 C G C G C G C G C G C G C J ~@2
>`.pickRestart({
  A: "[[e2,b2,e3,g#3,b3,e4]@14 [a2,e3,g3,c#4,a4]@16 [e2,b2,e3,g#3,b3,e4]@15 ~ [a2,e3,g3,c#4,a4]@15 ~ [e2,b2,e3,g#3,b3,e4]@2]/4", // E A7 E A7 E
  B: "[[e2,b2,e3,g#3,b3,e4]@14 [a2,e3,g3,c#4,a4]@16 [e2,b2,e3,g#3,b3,e4]@15 ~ [a2,e3,g3,c#4,a4]@15 ~ [b2,e3,g#3,b3]@2]/4", // E A7 E A7 E
  C: "[b2,e3,g#3,b3,e4]@4 [b2,e3,g#3,b3,e4]@3 [d3,f#3,a3,d4] [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2 [d3,f#3,a3,d4]@2, e2 ~", // E D
  D: "[a2,c#3,e3,a3,c#4]@4 [a2,c#3,e3,a3,c#4]@3 [g3,c4] [c#3,g3,a3,c4]@2 [c#3,g3,a3,c4]@2 [a2,c#3,g3,a3,c4]@4, a4@2 a2 ~", // A C5 A7
  E: "[[e2,b2,e3,g#3,b3,e4]@14 [a2,e3,g3,c#4,a4]@15 ~ [e2,b2,e3,g#3,b3,e4]@2]/2", // E A7 E
  F: "[[e2,b2,e3,g#3,b3,e4]@7 [a2,e3,g3,c#4,a4]@8 [e2,b2,e3,g#3,b3,e4]]/2", // E A7 E
  G: "[a2,c#3,e3,a3,c#4]@4 [a2,c#3,e3,a3,c#4]@3 [g3,c4] [a2,c#3,g3,a3,c4]@4 [a2,c#3,g3,a3,c4]@4, a4 ~", // A C5 A7
  H: "[[e2,b2,e3,g#3,b3,e4]@7 [a2,e3,g3,c#4,a4]@8 [e2,b2,e3,g#3,e4] [b2,e3,g#3,e4]@5 [b2,e3,g#3,b3,e4]!2 [a2,e3,g3,c#4]@3 [a2,e3,g3,c#4]@3 [e3,g3,c#4,a4]!2 [b2,e3,g#3,b3,e4]@3 [b2,e3,g#3,b3,e4]@3 [b2,e3,g#3,b3,e4]!2 [a2,e3,g3,c#4]@3 [a2,e3,g3,c#4]@3 [a2,e3,g3,c#4,a4]!2 [e2,b2,e3,g#3,b3,e4], ~@15 b3@6 ~@2 a4@6 ~@10 a4@6 ~@3, ~@32 e2@14 ~@12 a2@4 e2@15 ~@19]/6", // E A7 E A7 E A7 E
  I: "[[b2,e3,g#3,b3]@2 [b2,e3,g#3,b3]@3 [b2,e3,g#3,b3,e4]!2 [a2,e3,g3,c#4,a4]@3 [a2,e3,g3,c#4,a4]@3 [a2,e3,g3,c#4,a4] [a2,b2,e3,g3,c#4,a4] [b2,e3,g#3,b3,e4]@3 [b2,e3,g#3,b3,e4]@3 [b2,e3,g#3,b3,e4]!2 [a2,e3,g3,c#4,a4]@6 [a2,e3,g3,c#4,a4]!2 [b2,e3,g#3,b3,e4], e2@14 ~@16 e2@15 ~@19, e4@5 ~@27]/4", // E A7 E A7 E
  J: "[a2,c#3,e3,a3,c#4] ~@3, a4 ~", // A
})).s("gm_acoustic_guitar_steel").gain(0.05).pan(0.2)

// bass · acoustic bass · "P5-Acoustic Bass"
const bass = note(`<
  A B A B A B A B A B A B C D E B A B A B A B A B A B C F G B A B A B A B A B A B C F G B A B A B A B A B A B C H C F C
  D C D C D C D C I ~@2
>`.pickRestart({
  A: "e2@7 b1 e2 ~ e2@4 e2@2", B: "a1@7 e2 a1 ~ a1@2 d2@2 d#2@2", C: "e2@3 ~ e2@4 d2@2 g2@2 g#2@2 a2 ~",
  D: "a1@2 c2@2 d2@3 e2 a1@2 c#2@2 d2@2 d#2@2", E: "e2@7 a#1 e2 ~ e2@5 ~", F: "a1@3 ~ a1@3 ~ a1 ~ c2@2 d2@2 d#2@2",
  G: "e2@6 ~ a#1 e2 ~ e2@5 ~", H: "a1@3 ~ a1@3 ~ a1@2 c2@2 d2@2 d#2@2", I: "a1 c2 ~@6",
})).s("gm_acoustic_bass").gain(0.26).pan(0.6)

// chords · flute · "P7-Flute"
const flute = note("<~@12 A B@2 ~@11 A B@2 ~@11 A B@2 ~@11 A C D C E C D C D C D C D F ~@2>".pickRestart({
  A: "[e4,g#4,b4,e5] ~@7 [f#4,a4,d5,e5] ~ [f#4,a4,d5,e5] ~ [f#4,a4,d5,e5]@3 ~", // E D
  B: "[[e4,a4,c#5,e5]!5 ~ [e4,a4,c#5,e5] ~ [e4,a4,c5,e5] ~ [e4,a4,c5,e5] ~ [a4,c5]@2 [g#4,b4]@17 ~, ~@12 e5@19 ~]/2", // A Am G#m
  C: "[e4,a4,c#5,e5]!5 ~ [e4,a4,c#5,e5] ~ [e4,a4,c5,e5] ~ [e4,a4,c5,e5] ~ [a4,c5]@2 [g#4,b4]@2, ~@3 e5", // A Am G#m
  D: "[g#4,b4,e5]@7 ~ [f#4,a4,d5,e5] ~ [f#4,a4,d5,e5] ~ [f#4,a4,d5,e5]@3 ~, e4 ~@15", // E D
  E: "[g#4,b4,e5]@7 ~ [f#4,a4,d5,e5] ~ [f#4,a4,d5,e5] ~ [f#4,a4,d5]@3 ~, e4 ~@11 e5 ~@3", F: "[e4,a4,c#5,e5]!4 ~@12",
})).s("gm_flute").gain(0.1).pan(0.7)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@26 A B C@2 D@2 E ~@7 A F G H I@3 J K L M N O P@2 B A B A B Q R S T U@2 V W ~@2
>`.pickRestart({
  A: "~@2 a#3 ~ g#4@4 f#4@2 e4@2 d4@4, ~@3 b3@4 ~@9", B: "e4@2 d4@2 b3@2 a3@2 b3@2 b3@2 a3@2 g#3 ~",
  C: "[~@2 a#3 ~ g#4@4 a#3 ~ g#4@4 e4@7 ~ e4@2 g4@4 a4@4, ~@3 b3@4 ~@2 b3@5 c#4@10 ~@8]/2",
  D: "[~@2 a#3 ~ g#4@4 a#3 ~ g#4@4 [c#4,e4]@8 f#4@10, ~@3 b3@5 ~ b3@5 ~@18]/2", E: "e4", F: "e4 d4 b3 a3 b3@2 a3 ~",
  G: "~@2 [c4,c#4]@2 e4@2 g4@6 a4@3 ~", H: "~@6 a4@6 a4 g4 e4@2", I: "[g4 e4@9 d4 e4 d4 c#4 d4 b3@8 ~]/3",
  J: "~ a4!11 ~ a4!3", K: "a4!2 ~@14", L: "~@2 e4@3 [d4,e4]@2 d4 e4@3 d4 e4@3 d4, ~@2 d4 ~@13", M: "e4@7 ~",
  N: "~@4 e4@2 g4@2 a4@4 a4 g4 e4@2", O: "g4 e4@7",
  P: "[~@4 d4@2 e4@2 d4@2 c4@2 c#4@2 b3@4 a#3 ~ g#4@4 f#4@2 e4@2 d4@4, ~@19 b3@9 ~@4]/2", Q: "~@2 e4 ~ g4 ~ a4@10",
  R: "g4 e4@3 e4@5 e4@3 g4@2 a4@2", S: "a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 g4 e4 ~", T: "g4 e4@2 ~ e4@6 d4 e4 d4@4",
  U: "[b3@8 ~@4 a4@8 g4 e4@2 ~ e4@4 g4@2 ~@2]/2", V: "~@2 e4 d4 e4@2 g4 ~@2 g4 e4 g4@2 ~ a4!2", W: "~@2 a4 ~ a4 ~@11",
})).s("gm_distortion_guitar").gain(0.15).pan(1)

// drums · rim
const rim = s("rim").struct("<~@11 A ~ B ~@11 A ~ B ~@11 C ~ B ~@11 D ~ B ~ B ~ B ~ B ~ B ~ B ~@4>".pickRestart({
  A: "x ~ x ~ x!4", B: "~@5 x!3", C: "x!8", D: "x ~ x ~@2 x!3",
})).gain(0.29).pan(0.9)

// drums · kick
const kick = s("bd").struct("<[x ~@6 x!2 ~ x ~@3 x ~]!67 x ~@2>").gain(0.25).pan(0.9)

// drums · clap
const clap = s("cp").struct("<~@33 A ~ A ~ A ~ A ~@7 A ~ A ~ A ~ A ~@16>".pickRestart({
  A: "~@5 x!2 ~",
})).gain(0.25).pan(0.9)

// drums · snare
const snare = s("sd").struct("<~@12 A@2 ~@12 A@2 ~@12 A@2 ~@12 A@13 B ~@2>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.25).pan(0.9)

// drums · hihat
const hihat = s("hh").struct("<A@12 B@2 A@12 B@2 A@12 B@2 A@12 B@13 C ~@2>".pickRestart({
  A: "~ x ~ x", B: "x!8", C: "x!3 ~@5",
})).gain(0.29).pan(0.9)

// drums · crash
const crash = s("cr").struct("<~@12 A ~ A ~@11 A ~ A ~@11 A ~ A ~@11 A ~ A ~ A ~ A ~ A ~ A ~ A ~@3>".pickRestart({
  A: "x",
})).gain(0.29).pan(0.9)

stack(
  acoustic_guitar_steel, electric_guitar_jazz, acoustic_guitar_steel_2, bass, flute, distortion_guitar, rim, kick, clap,
  snare, hihat, crash
)

More by Buffalo Springfield