Strudelify

Remember (Walkin' in the Sand)

The Shangri-Las

KeyD minorTempo66 bpm
0:00/0:00
// Remember (Walkin' in the Sand) — The Shangri-Las
// 66 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 41 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(66/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 2"
const piano = note("<A B C D E F G H I J G K L M N O P Q P R@2 S T U V W X Y Z K AA AB AC@5 AD AE@3>".pickRestart({
  A: "~@2 f2 e2",
  B: "[f3,a3,d4] ~ a3 ~ [f3,a3,d4] ~ [f3,a3,d4] ~ a3 ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~, d2@18 c2@5 ~", // Dm
  C: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~, bb1@8 ~ a1@3", // Bb Dm
  D: "[g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ bb3 ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~, g1@23 ~", // Gm
  E: "[e3,a3,db4] ~@3 [e3,a3] ~ [e3,a3,db4] ~ [e3,a3] ~ [e3,a3,db4] ~ [f3,a3,db4] ~ [f3,a3,db4] ~ [f3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~, a1@11 ~ f2@6 e2@6", // A A5 A A5 A Faug A
  F: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ a3 ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~, d2@17 ~ c2@6", // Dm F Dm
  G: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~, bb1@17 ~ a1@6", // Bb Dm
  H: "[g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~, g1@23 ~", // Gm
  I: "[e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [f3,a3,db4] ~ [f3,a3,db4] ~ [f3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3] ~, a1@2 f2 e2", // A Faug A A5
  J: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~, d2@3 c2", // Dm F Dm
  K: "[g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~, g1", // Gm
  L: "[e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [f3,a3,db4] ~ [f3,a3,db4] ~ [f3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~, a1@2 f2 e2", // A Faug A
  M: "d2 ~@3 d2 ~@3, d3 ~@11 d3 ~@11", N: "bb1@2 ~@21 [a1,a2], bb2 ~@23", O: "[d2,d3]@2 ~@21 [a1,a2]",
  P: "d2@2 ~@21 [a1,a2], d3 ~@23", Q: "[d2,d3] ~@22 [a1,b1,a2]", R: "[d2,d3] ~@22 [a1,a2]", S: "[d2,d3] ~@23",
  T: "a1 ~ [a1,a3,e4] ~ [a1,e4] ~ a1 ~ [a1,a3,db4,e4] ~ [a1,a3,db4,e4] ~ a1 ~ [a1,a3,db4,e4] ~ [a1,a3,e4] ~ [a1,a3,db4,e4] ~ [a1,db4,e4] ~ [a1,a3,db4,e4] ~", // A5 A A5 A
  U: "[f3,a3,d4] ~ [f3,a3] ~ [a3,d4] ~ [f3,a3,d4] ~ a3 ~ [f3,a3,d4] ~ [f3,a3,d4] ~ a3 ~@3 [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~, d2@3 c2", // Dm F D5 Dm
  V: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ bb3 ~ [f3,bb3,d4] ~ [f3,bb3] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,a3,d4] ~ a3 ~ [f3,a3] ~, bb1@3 a1", // Bb Bb5 Bb Dm F
  W: "[g3,bb3,d4] ~ [g3,bb3,d4] ~ bb3 ~ [g3,bb3,d4] ~ [bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ bb3 ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~ [g3,bb3,d4] ~, g1", // Gm Bb Gm
  X: "[e3,a3,db4] ~@3 [e3,a3] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [f3,a3,db4] ~ [f3,a3,db4] ~ [f3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3,db4] ~ [e3,a3] ~, a1@11 ~ f2@6 e2@6", // A A5 A Faug A A5
  Y: "[f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ a3 ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~, d2@3 c2", // Dm
  Z: "[f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~ [f3,a3,d4] ~, bb1@3 a1", // Bb Dm
  AA: "[e3,a3,db4]@12 ~@11 a2, a1@19 ~@5", AB: "d3@2 ~@21 a2", AC: "d3 ~@22 a2", AD: "d3 ~@23",
  AE: "[[a2,a4]@6 [g2,g4]@6 [f2,f4]@6 [e2,e4]@5 ~@2 d4@26 ~@21, db4@8 [f3,a3]@9 ~@7, e4@12 ~@11 [d2,d3]@28 ~@21]/3", // A G F E F D
})).s("gm_piano").gain(0.33).pan(0.4)

// chords · piano · "A.PIANO 2" · soft notes
const piano_soft = note("<~ A ~ B C D ~ E F G ~@12 H I J K L M ~@13>".pickRestart({
  A: "~@2 [f3,d4] ~@5 [f3,d4] ~@15", B: "~@14 [g3,d4] ~@9", C: "~@2 [e3,a3,db4] ~ db4 ~@3 db4 ~@15",
  D: "~@8 [f3,d4] ~@5 d4 ~@9", E: "~@8 d4 ~@15", F: "~@22 db4 ~", G: "~@10 d4 ~@13",
  H: "~@2 db4 ~ [a3,db4] ~@11 db4 ~@3 a3 ~@3", I: "~@2 d4 ~ f3 ~@3 [f3,d4] ~@5 [f3,d4] ~ [f3,a3,d4] ~@7",
  J: "~@4 [f3,d4] ~@3 d4 ~@11 [f3,d4] ~ d4 ~", K: "~@4 [g3,d4] ~@3 g3 ~@5 [g3,d4] ~@9",
  L: "~@2 [e3,a3,db4] ~ db4 ~@17 db4 ~", M: "~@8 [f3,d4] ~@15",
})).s("gm_piano").gain(0.22).pan(0.4)

// bass · acoustic bass · "ACOU BASS"
const bass = note("<A B C D E B C D F G H I J K L M@6 N O B C D F G H I P M@6 N Q R@2>".pickRestart({
  A: "~@2 f2 e2", B: "d2@3 ~@2 a1 d2@3 c2@3", C: "bb1@3 ~@2 f1 bb1@3 a1@3", D: "g1@6 ~@4 d2@2 g1@5 ~ g1@6",
  E: "a1@3 ~ f2@2 e2@2", F: "a1@7 ~@5 f2@6 e2@6", G: "d2@7 ~@3 a1@2 d2@6 c2@6", H: "bb1@7 ~@3 f1@2 bb1@6 a1@6",
  I: "g1@7 ~@3 d2@2 g1@5 ~ g1@6", J: "a1@2 f2 e2", K: "d2 ~@3 d2 ~@3", L: "bb1@2 ~@21 a1",
  M: "d2@2 ~@7 a1@3 d2@2 ~@9 a1", N: "d2@2 ~@7 a1@3 d2@2 ~@10", O: "a1@5 ~ a1@5 ~ a1@5 ~ a1@5 ~", P: "a1@12 ~@11 a1",
  Q: "a2 g2 f2 e2", R: "[d2@9 ~@7]/2",
})).s("gm_acoustic_bass").gain(0.44)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note("<~ A B C D E F G H I J K L M N ~@7 O P Q R S T U V W ~@8 X@2>".pickRestart({
  A: "~@2 [d5,f5,a5] [f5,a5] [d5,f5,a5] [a4,a5] [d5,f5,a5] ~@7 [a4,d5,f5,a5] [f5,a5] [a4,d5,f5,a5] a5 [a4,d5,f5,a5] ~@5", // Dm F Dm A Dm F Dm
  B: "~@2 [d5,f5,bb5]!3 [f5,bb5] [d5,f5,bb5] ~@7 [bb4,d5,f5,bb5] [f5,bb5] [d5,f5,bb5] [f5,bb5] [d5,f5,bb5] ~@5, ~@2 bb4@5 ~@8 bb4@3 ~@6", // Bb Bb5 Bb Bb5 Bb Bb5 Bb
  C: "~@2 [d5,g5,bb5] [g5,bb5] [d5,g5,bb5] [g5,bb5] [d5,g5] ~@7 [d5,g5,bb5] [g5,bb5] [bb4,d5,g5,bb5] [bb4,g5,bb5] [d5,g5] ~@5, ~ bb4 ~@6", // Gm G5 Gm Eb G5
  D: "~@2 [db5,e5,a5]!2 [a4,e5,a5] [e5,a5] [a4,db5,e5,a5] ~@5 [a4,db5,f5]@2 [db5,f5] f5 [a4,db5,f5] ~ [a4,db5,e5]@2 [db5,e5] [a4,e5] db5 ~", // A A5 A Aaug Db Aaug A Dbm …
  E: "~@2 [d5,f5,a5] [f5,a5] [a4,d5,f5,a5] [f5,a5] [a4,d5,a5] ~@7 [a4,d5,f5,a5] [f5,a5] ~ a5 [a4,d5,f5,a5] ~@5, ~@8 [a4,d5,f5,a5] ~@3", // Dm F Dm F D5 Dm F Dm
  F: "~@2 [d5,f5,bb5] [f5,bb5] [d5,f5,bb5] bb5 [d5,f5,bb5] ~@5 [d5,f5,bb5]@2 [d5,f5,bb5] [f5,bb5] [d5,f5,bb5] [f5,bb5] [d5,f5,bb5] ~ bb4 ~@3, ~@4 bb4@3 ~@5 bb4@7 ~@5", // Bb Bb5 Bb Bb5 Bb Bb5 Bb
  G: "~@2 [bb4,d5,g5] [d5,g5] [bb4,d5,g5] [d5,g5] [bb4,d5,g5] ~@7 [g4,bb4,d5,g5] [d5,g5] [g4,bb4,d5,g5] [d5,g5] [g4,bb4,d5,g5] ~@5, ~@4 g4@3 ~@17", // Gm G5 Gm G5 Gm G5 Gm G5 …
  H: "~@2 [db5,e5,a5] [e5,a5] [db5,e5,a5] [e5,a5] [a4,db5,e5,a5] ~@5 [db5,f5]@3 f5 [db5,f5] ~ [a4,db5] ~ [a4,db5,e5] ~ a4 ~, ~@2 a4@4 ~@6 a4@5 ~@7", // A A5 A A5 A Db A
  I: "~@2 [d5,f5,a5] [f5,a5] ~ [f5,a5] [a4,d5,f5,a5] ~@7 [f5,a5]!2 [d5,f5,a5] [f5,a5] [a4,d5,f5,a5] ~@5, ~@2 [a4,d5,f5,a5] ~@4 a4@2 ~@3, ~@7 d5 ~@4", // Dm F Dm F Dm F Dm
  J: "~@2 [f5,bb5] bb5 [d5,f5,bb5] [f5,bb5] [bb4,d5,f5,bb5] ~@7 [bb4,d5,f5,bb5] [d5,f5,bb5] [bb4,f5,bb5] [f5,bb5] [bb4,d5,f5,bb5] ~@5, ~ bb4@2 ~@9, ~ d5 ~@10", // Bb5 Bb Bb5 Bb Bb5 Bb
  K: "~@2 [d5,g5,bb5] g5 [g5,bb5] bb5 [d5,g5,bb5] ~@7 [d5,g5,bb5] [g5,bb5] [d5,g5,bb5] [g5,bb5] [bb4,d5,g5] ~@5, ~@4 [bb4,d5]@3 ~@7 bb4@4 ~@6", // Gm Bb
  L: "[db5,e5,a5] ~ [e5,a5]!2 [db5,e5,a5]!2 ~@8 [db5,f5,a5] [f5,a5] [db5,f5,a5] [f5,a5] [db5,e5,a5] ~@5, ~@2 a4@5 ~@17, ~ db5 ~@10", // A A5 A Dbaug F Dbaug F A
  M: "d4 ~@11 d4 ~@11", N: "bb3 ~@11",
  O: "~@10 db4@2 [db4,e4]@2 [db4,e4]@2 [a3,db4,e4,a4]@2 [a3,db4,e4,a4]@2 [a3,db4,e4,a4]@2 [a3,db4,e4,a4] ~, ~@5 a3@3 ~@4", // Dbm A
  P: "a3@2 ~@2 f4@2 ~@4 d4@2 ~@8 f4@2 d4 ~, ~ d4@3 f4@3 d4@4 ~, ~@6 a4@12 a4@5 ~, ~@12 a3@11 ~, ~@4 f4 ~",
  Q: "~@10 d4@2 ~@2 d4@2 ~@4 d4@2 f4 ~, bb3@12 bb3@5 ~ a3@5 ~, ~@2 d4@7 ~@15, ~@4 f4@4 f4@7 ~ f4@5 ~@3, ~@3 bb4@8 ~",
  R: "~@10 bb3@2 ~@4 d4@2 ~@2 d4@3 ~, g3@12 g3@11 ~, ~@2 bb3@8 ~@4 bb3@7 ~@3, ~@4 d4@4 d4@7 ~@9, ~@6 g4@12 g4@5 ~",
  S: "d3 ~@3 e4@2 ~@4 db4@2 ~@2 db4@2 f4@2 ~@2 db4@2 a3 ~, a3@4 a3@3 ~, ~@2 db4@6 e4@4 ~@6 e4@5 ~, ~ a4 ~@2",
  T: "~@4 f4@2 ~@4 d4@2 ~@4 f4@2 ~@2 f4@2 d4 ~, a3@11 ~ a3@10 ~@2, ~@2 d4@6 f4@6 d4@7 ~@3, ~@3 a4@6 a4@2 ~",
  U: "~@4 f4@2 ~@4 d4@2 ~@2 d4@2 ~@4 d4@2 f4 ~, bb3@12 bb3@5 ~ a3@5 ~, ~ d4@3 f4@3 ~ f4@2 ~@2, ~@3 bb4@8 ~",
  V: "~@4 d4@2 ~@4 bb3@2 ~@4 d4@2 ~@2 d4@3 ~, g3@12 g3@11 ~, ~@2 bb3@6 d4@6 bb3@7 ~@3, ~@6 g4@12 g4@5 ~",
  W: "~ a4@8 ~@3, [a3,db4,e4]@7 ~", X: "[~ d6@26 ~@21, d5@9 ~@7]/2",
})).s("gm_electric_guitar_jazz").gain(0.33).pan(0.6)

// other · cello
const cello = note("<A B C D E B C D F B C D F G H ~@8 B C D F B C D I ~@8 J ~>".pickRestart({
  A: "~@2 f3 e3", B: "d3@3 c3", C: "bb2@3 a2", D: "g2", E: "a2@11 ~ f3@6 e3@6", F: "a2@2 f3 e3", G: "d3@2 ~@10 d3 ~@11",
  H: "bb2 ~@23", I: "a2@19 ~@5", J: "d2 ~@3",
})).s("gm_cello").gain(0.38).pan(0.1)

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

// drums · rim
const rim = s("rim").struct("<~@15 [~ x ~ x ~ x ~ x]!7 ~@9 [~ x ~ x ~ x ~ x]!7 ~@3>").gain(0.44)

// drums · clap
const clap = s("cp").struct("<~@15 [~ x ~@6]!7 ~@9 [~ x ~@6]!7 ~@3>").gain(0.44)

// drums · snare
const snare = s("sd").struct("<~ A@7 B A@4 C D ~@7 E A@3 B A@3 F ~@7 E ~@2>".pickRestart({
  A: "~@6 x!3 ~@9 x!3 ~@3", B: "~@6 x!2 ~@10 x!3 ~@3", C: "x!3 ~@9 x!2 ~@10", D: "x!3 ~@21", E: "x!2 ~ x!9",
  F: "x!2 ~@22",
})).gain(0.22)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~ A@7 B A@4 C D ~@7 E A@3 B A@3 F ~@7 E ~@2>".pickRestart({
  A: "~@3 x ~@3 x", B: "~@8 x!2 ~@11 x ~@2", C: "~@3 x ~@10 x!2 ~@8", D: "~ x ~@6", E: "~ x ~@4", F: "~@2 x!2 ~@20",
})).gain(0.11)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~ A B@3 C B@3 A B@3 D E ~@8 C B@3 A B@2 E ~@10>".pickRestart({
  A: "~ x!11", B: "x!12", C: "~@2 x!10", D: "x!2", E: "x",
})).gain(0.27)

// drums · open hat
const open_hat = s("oh").struct("<~@39 [x!2 ~@22] ~>").gain(0.27)

// drums · crash
const crash = s("cr").struct("<~ A ~@3 A ~@3 A ~@13 A ~@3 A ~@13>".pickRestart({
  A: "x",
})).gain(0.33)

stack(
  piano, piano_soft, bass, electric_guitar_jazz, cello, kick, rim, clap, snare, snare_soft, pedal_hat, open_hat, crash
)

More by The Shangri-Las