Strudelify
Right Place Wrong Time cover art

1973 · In The Right Place

Right Place Wrong Time

Dr. John

KeyE♭ minorTempo104 bpm
0:00/0:00
// Right Place Wrong Time — Dr. John
// 104 bpm, 4/4, key Eb minor. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 9 "GTHARMONIC" guitar harmonics (copy of ch 8 "OVERDRIVE" overdriven guitar)
// note: Full arrangement: all 84 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.

// bass · clavinet
const bass = note(`<
  A B A B C@4 D E F G D E F G D E F G D E F G H I J K H I H L M@2 N O@2 N O P ~@2 Q@2 R S D E F G D E F G H I J K H I H
  L M@2 N O@2 N O P M@2 N O@2 N O P A B C@2 ~@2
>`.pickRestart({
  A: "eb2!2 ~ eb2!2 ~ eb2!2 ~ eb2!2 ~ gb2 g2 gb2 g2", B: "eb2!2 ~ eb2!2 ~ eb2!2 ~ eb2!2 ~ db2 bb1 db2 d2",
  C: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~", D: "eb2!2 ~ eb2!2 ~ eb2!2 ~ eb2!2 ~ eb2!4",
  E: "eb2!2 ~ eb2!5 ~ eb2!2 ~ eb2!2 ~ eb2", F: "eb2!2 ~ eb2!5 ~ eb2!2 ~ eb2!4", G: "eb2 ~@2 eb2!5 ~ eb2!2 ~ eb2!2 ~@2",
  H: "eb2 ~@3 eb2 ~@3 eb2 ~@3 eb2 ~@3", I: "eb2 ~@3 eb2 ~@11", J: "eb2 ~@3 eb2 ~@3 eb2 ~ eb2!3 ~@3",
  K: "bb1 db2 eb2 gb2 eb2 ~ bb1 db2 eb2 gb2 eb2 ~ db2@2 eb2 ~", L: "~ eb3!2 ~ eb3 ~@2 eb3 ~@2 eb3 ~@3 eb3!2",
  M: "eb2 bb1 db2!2 ~ bb1 db2 eb2 ~ bb1 db2 bb1 db2 bb1 db2 bb1",
  N: "eb2 bb1 db2!2 ~ bb1 db2 eb2 ~ bb1 db2 bb1 eb2 bb1 db2 bb1",
  O: "eb2 bb1 db2!2 ~ bb1 eb2!2 ~ bb1 db2 bb1 eb2 bb1 db2 bb1",
  P: "eb2 bb1 db2!2 ~ bb1 eb2!2 ~ bb1 db2 bb1 eb2 bb1 db2 ~", Q: "eb2 ~ eb2!3 ~ eb2!3 eb2@2 ~ eb2 ~ eb2!2",
  R: "f2 ~ f2!3 ~ f2!3 f2@2 ~ f2 ~@3", S: "bb2 ~ bb2!3 ~ bb2!5 ~ bb2 ~@3",
})).s("gm_clavinet").gain(0.27).pan(0.2)

// bass · electric bass finger · "FINGERDBAS"
const bass_2 = note(`<
  ~@3 A B@4 C D C D C D C D C D C D C D C D E F G H E F E H C D C D C D C D I@2 J K L M N@8 E F G H E F E H C D C D C D
  C D C D C D C D C D ~ A B@2 H ~
>`.pickRestart({
  A: "~@14 db3 eb3", B: "eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ eb2 ~ db3 eb3",
  C: "eb2 ~ eb2 bb1 c2 ~ eb2@2 ~ bb1 c2 ~ eb2 bb1 c2 ~", D: "eb2 ~ eb2 ab1 bb1 ~ eb2@2 ~ ab1 bb1 ~ eb2 bb1 c2 ~",
  E: "eb2 ~@3 eb2 ~@3 eb2 ~@3 eb2 ~@3", F: "eb2 ~@3 eb2 ~@11", G: "eb2 ~@3 eb2 ~@3 eb2 ~@3 eb2@2 ~@2", H: "eb2 ~@15",
  I: "eb2 ~@13 db3 eb3", J: "eb2 ~@2 eb2!5 ~ eb2!5 db3 eb3", K: "eb2 ~ eb2!6 ~ eb2 ~ eb2!3 db3 eb3",
  L: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~", M: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~ bb2 ~",
  N: "eb2 ~ eb2 bb1 db2 ~ eb2@3 bb1 db2 ~ eb2 bb1 db2 ~",
})).s("gm_electric_bass_finger").gain(0.49)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon = note(`<
  ~@6 A B C D C D C D C D C D C D C D C D ~@8 C D C D C D C D ~@2 E@2 F G H I J K H I J K ~@8 C D C D C D C D C D C D C
  D C D ~@2 A B ~@2
>`.pickRestart({
  A: "~@4 [bb3,db4,gb4,bb4] ~@4 [bb3,db4,gb4,bb4] [db4,gb4] ~ [bb3,db4,gb4,bb4] ~@3", // Gb Gb5 Gb
  B: "~@3 [db4,gb4] [bb3,db4,gb4,bb4] ~@4 [bb3,db4,gb4,bb4] [db4,gb4] ~ [bb3,db4,gb4,bb4] ~@3", // Gb5 Gb Gb5 Gb
  C: "~@4 [db4,gb4,bb4] ~@4 [db4,gb4,ab4,bb4] ~@2 [db4,gb4,bb4] ~@3", D: "~@6 [c4,eb4,ab4]!3 ~@7",
  E: "~@4 [bb3,db4,gb4,bb4] ~@3 [bb3,db4,gb4,bb4] [bb3,db4,gb4,bb4]@2 ~ [bb3,db4,gb4,bb4] ~@3", F: "[c4,f4,a4]@7 ~",
  G: "[d4,f4,bb4]@13 ~@3", // Bb
  H: "~@2 [bb3,db4,gb4] ~ [bb3,db4,f4] ~ [bb3,gb4]@3 ~ [bb3,db4,f4] ~ [bb3,db4,gb4] [bb3,db4,f4] ~@2, ~@6 db4 ~@9", // Gb Bbm Ebm Bbm Gb Bbm
  I: "[ab3,c4,eb4]!2 ~@4 [ab3,c4,eb4] ~@3 [ab3,c4,eb4,gb4] ~ [ab3,c4,f4] [ab3,c4,eb4] ~@2", // Ab Ab7 Fm Ab
  J: "[bb3,db4,gb4]!2 ~@4 [bb3,db4,gb4]!2 ~@4 [bb3,db4,gb4] ~ [bb3,db4,f4,gb4] ~", // Gb Gbmaj7
  K: "[ab3,c4,eb4]!2 ~@4 [ab3,c4,eb4]!2 ~@2 [ab3,c4,eb4,gb4] ~ [ab3,c4,eb4,f4] [ab3,c4,eb4]@2 ~", // Ab Ab7 Fm7 Ab
})).s("gm_acoustic_guitar_nylon").gain(0.17).pan(0.1)

// chords · rock organ · "ORGAN 3"
const rock_organ = note(`<
  ~@25 A ~@3 A ~@2 B C B D E D B F ~@6 G H I J K L M N ~ A ~@3 A ~@2 B C B D B D B F B C B D B D B F ~@6
>`.pickRestart({
  A: "~@10 [gb5,db6]@5 ~, ~@10 f5 ~@5", B: "[bb4,db5,f5]", C: "[ab4,c5]", D: "[ab4,c5,eb5]", E: "~ f5@15, [bb4,db5]",
  F: "[ab4,c5,eb5]@15 ~", G: "~@2 eb5@4 [bb4,f5] ~ [bb4,gb5]@3 ~ f5@2 ~@2, ~@2 gb5@3 ~@3 eb5 ~@7, ~@2 bb4 ~@13",
  H: "[bb4,eb5] ~@3 eb5 ~ [ab4,c5]@5 ~ ab5@2 [ab4,eb5] ~, gb5@3 ~@3 eb5@8 ~@2, ~@6 f5 ~@9", // Eb5 Ab Ab5
  I: "~@2 [eb5,gb5]@3 ~ [bb4,eb5,f5] ~ [bb4,gb5]@3 ~ [bb4,f5]@2 gb5 ~, ~@2 bb4 ~@5 eb5 ~@7", // Ebm Bbsus4 Ebm Bb5
  J: "[ab4,eb5,gb5]@3 ~ [c5,f5] ~ [ab4,c5,eb5]@5 ~ ab5@2 eb5 ~, c5 ~@15", // Ab7 F5 Ab
  K: "~@2 [eb5,gb5]@3 ~ f5 ~ [bb4,gb5]@3 ~ [bb4,eb5,f5] ~ [bb4,gb5] ~, ~@2 bb4 ~@5 eb5 ~@7", // Ebm Bbsus4 Ebm
  L: "[ab4,eb5,gb5]@3 ~ f5 ~ [ab4,eb5]@4 [ab4,c5,eb5] ~ [c5,eb5]@2 ab4 ~, c5 ~@11 ab4 ~@3", // Ab7 Ab5 Ab Cm
  M: "bb4 ~ [eb5,gb5]@3 ~ [bb4,f5] ~ [bb4,gb5]@3 ~ [bb4,f5]@2 ~@2, ~@2 bb4 ~@5 eb5 ~@3 eb5 ~@3", // Ebm Bb5 Ebm Bb5
  N: "[ab4,c5,eb5,gb5]@3 ~ [ab4,f5] ~ [ab4,c5,eb5]@5 ~ [ab4,eb5] ~ [ab4,c5,eb5] ~, ~@6 f5 ~", // Ab7 Db Ab Ab5 Ab
})).s("gm_rock_organ").gain(0.22).pan(0.3)

// chords · rock organ · "ORGAN 3" · soft notes
const rock_organ_soft = note(`<
  ~@32 A B A C A C A D ~@6 E F G H I J K L ~@8 A B A C A C A D A B A C A C A D ~@6
>`.pickRestart({
  A: "bb5", B: "[eb5,ab5]", C: "ab5", D: "ab5@15 ~", E: "~@11 eb5 bb4@2 bb4 ~, ~@12 eb5 ~@3",
  F: "~@2 ab4@2 [ab4,c5,f5] ~@7 c5@2 c5 ~, ~ eb5@2 ~@13, ~@2 c5 ~@9 ab4 ~@3", G: "~@5 bb4 ~@6 eb5 ~ eb5 ~",
  H: "~@4 ab4 ~@7 c5@2 [ab4,c5] ~, ~@12 eb5 ~@3", I: "bb4 ~@3 bb4@2 eb5 ~@9", J: "~@4 [ab4,eb5] ~ c5@3 ~@7",
  K: "~@4 bb4 ~ eb5 ~@7 bb4 ~", L: "~@4 c5 ~@7 c5 ~@3",
})).s("gm_rock_organ").gain(0.11).pan(0.3)

// chords · acoustic guitar nylon · "NYLON GTR"
const acoustic_guitar_nylon_2 = note(`<
  ~@8 A B C D A B C D A B C D A B C D E F E ~ E F E ~ A B C D A B C D ~@14 E F E ~ E F E ~ A B C D A B C D A B C D A B C
  D ~@6
>`.pickRestart({
  A: "~@2 [bb3,db4,gb4] ~ [bb3,db4,f4] ~ [bb3,gb4]@3 ~ [bb3,db4,f4] ~ [bb3,db4,gb4] [db4,f4] ~@2, ~@6 db4 ~@9", // Gb Bbm Ebm Bbm Gb Db
  B: "[ab3,c4,eb4] [c4,eb4] ~@4 [ab3,c4,eb4] ~@3 [ab3,c4,eb4,gb4] ~ [ab3,c4,f4] [ab3,c4,eb4] ~@2", // Ab Cm Ab Ab7 Fm Ab
  C: "[bb3,db4,gb4]!2 ~@4 [bb3,db4,gb4]!2 ~@4 [bb3,db4,gb4] ~ [bb3,db4,f4,gb4] ~", // Gb Gbmaj7
  D: "[c4,eb4]!2 ~@4 [ab3,c4,eb4] [c4,eb4] ~@2 [ab3,c4,eb4,gb4] ~ [ab3,c4,f4] [ab3,c4,eb4]@2 ~", // Cm Ab Cm Ab7 Fm Ab
  E: "~@2 [bb3,eb4,gb4] ~@3 [c4,eb4,ab4] ~@3 [db4,eb4,bb4] ~@3 [c4,eb4,ab4] ~", // Ebm Ab Eb7 Ab
  F: "~@2 [bb3,eb4,gb4] ~@3 [c4,eb4,ab4] ~@9", // Ebm Ab
})).s("gm_acoustic_guitar_nylon").gain(0.17).pan(0.8)

// chords · acoustic guitar nylon · "NYLON GTR" · soft notes
const acoustic_guitar_nylon_3 = note(`<
  ~@8 A B ~ C A B ~ C A B ~ C A B ~ C ~@8 A B ~ C A B ~ C ~@22 A B ~ C A B ~ C A B ~ C A B ~ C ~@6
>`.pickRestart({
  A: "~@13 bb3 ~@2", B: "~ ab3 ~@14", C: "ab3!2 ~@5 ab3 ~@4 eb4 ~@3",
})).s("gm_acoustic_guitar_nylon").gain(0.1).pan(0.8)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@41 A B C D E F G H I J@2 K L M ~@29>".pickRestart({
  A: "~@4 db4 eb4@2 eb4 gb4@2 ~@6", B: "~@4 eb4 eb4@4 gb3@5 ~@2", C: "~@4 db4 eb4@2 eb4 gb4@3 ~@5",
  D: "~@4 gb4 ab4@3 [a4,f5]@7 ~, ~@8 e5 ~@7", E: "~@2 d4 [f4,d5]@2 ~ d5@3 ~ d5@3 ~@3, ~@3 e4 ~ f4@3 ~ f4@4 ~@3",
  F: "~@3 ab5@7 gb5 ~ ab5 ~ ab5 ~", G: "gb5 eb5 eb5@2 ~ gb5@2 ~@5 d5@2 [eb5,gb5] ~",
  H: "d5!2 bb4 ab4 db5 ~ a4 gb4 ab4 a4 gb4 eb4 ab4 gb4 eb4 db4",
  I: "bb3 a3 ab3 eb4 ab3 f3 ab3 ~ ab3@2 db4 bb3 db4@2 gb4@2",
  J: "[~@2 ab4@4 bb4 c5 ab4@3 gb4 ab4 ~ gb4 eb4@2 ~ db5@4 gb5 ~@3 eb5 db5 eb5 [db5,eb5] bb4 ab4]/2", // Dbsus2
  K: "bb4 ~ d5@2 [db5,eb5] db5@2 eb5 db5@2 [db5,d5,eb5] db5@2 [db5,d5,eb5] db5@2", // Dbsus2
  L: "eb5 db5 eb5 db5 bb4 ab4 db5 bb4 ab4 gb4 eb4 ab4 gb4 eb4 gb4!2", M: "eb4 ~@15",
})).s("gm_overdriven_guitar").gain(0.44)

// other · trombone
const trombone = note(`<
  ~@2 A B ~@3 B ~@3 C ~@12 D E D F D E D F ~@8 G ~@3 H I J ~@7 D E D F D E D F ~@14 K L A B A M N ~
>`.pickRestart({
  A: "bb2", B: "c3 bb2@13 ~@2", C: "~@2 eb4@2 eb4 ~ eb4@6 ~@4", D: "eb2 ~@3 eb2 ~@3 eb2 ~@3 eb2 ~@3",
  E: "eb2 ~@3 eb2 ~@11", F: "eb2 ~@15", G: "gb3 g3 [eb3,gb3] [ab2,bb2,db3] [bb1,db2,eb2,gb2] ab1 ~@10, [bb3,eb4] ~@7",
  H: "~@2 [f3,a4] ~ [f3,a4] ~ [f3,a4] ~ [f3,a4] ~ [f3,a4] ~@5", I: "~@2 f3!3 ~ f3 ~ gb3@2 g3 ~@2 f3 gb3 ~",
  J: "g3 ~@15", K: "gb2 ~@3 f2@2 ~@2 gb2@2 ~@2 f2@2 ~@2", L: "gb2@2 ~@2 gb2@3 ~@9", M: "c3 bb2@15", N: "eb2",
})).s("gm_trombone").gain(0.38).pan(0.6)

// other · french horn · "FR.HORN"
const french_horn = note("<~@2 A B ~@3 B ~@3 C ~@66 A B A B D ~>".pickRestart({
  A: "gb4@15 ~", B: "ab4 gb4@15", C: "~@2 eb4 ~ eb4 ~ eb4@8 ~@2", D: "bb3",
})).s("gm_french_horn").gain(0.22).pan(0.1)

// other · alto sax
const alto_sax = note("<~@2 A B ~@3 B ~@3 C ~@26 D E F ~@3 G H I ~@31 A B A B J ~>".pickRestart({
  A: "db4@15 ~", B: "eb4 db4@14 ~", C: "~@2 bb4@2 bb4 ~ bb4@8 ~@2", D: "bb2 bb2@2 ~ ab2 ab2@2 ~ gb2 gb2@2 ~ f2 f2@2 ~",
  E: "eb2 eb2@2 ~ gb2 gb2@2 ~ f2 f2@2 ~ eb2 eb2@2 ~", F: "eb2 ~@7",
  G: "~@2 [a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4] ~@5", H: "~@2 bb3!3 ~ bb3 ~ bb3 ~ bb3 ~@2 db4 d4 ~",
  I: "eb4@3 ~@13", J: "[gb3,eb4], db4@7 ~",
})).s("gm_alto_sax").gain(0.38).pan(0.2)

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

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@3 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ B ~ A ~ A
  ~ A ~ C ~ A ~ A ~@2
>`.pickRestart({
  A: "~@7 x", B: "~@5 x ~@2", C: "~@3 x ~@4",
})).gain(0.33)

// drums · crash
const crash = s("cr").struct("<~@32 A ~@29 A ~@7 A ~@6 B ~@6>".pickRestart({
  A: "x", B: "~ x ~@3 x ~@2",
})).gain(0.33)

// drums · ride
const ride = s("rd").struct("<~@25 A ~@3 A ~@25 A ~@3 A ~@24>".pickRestart({
  A: "~@5 x ~@2",
})).gain(0.49)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@3 A B C D E F G H ~ I J K L M N O P Q R S T ~@8 I J K L M N O P U@6 V W X Y M Z M C ~@8 I J K L M N O P I J K L M N
  O P ~ A D E ~@2
>`.pickRestart({
  A: "~@12 x!4", B: "~@4 x!2 ~@6 x ~ x ~", C: "~@4 x ~@4 x ~@2 x ~ x!2", D: "~@2 x ~@3 x!2", E: "~@4 x ~@9 x!2",
  F: "~ x ~@2", G: "~@11 x!2 ~ x!2", H: "~@3 x!3 ~@7 x ~@2", I: "~@5 x!3 ~@6 x ~", J: "~@5 x!2 ~@6 x!2 ~",
  K: "~@5 x ~@8 x!2", L: "~ x!3", M: "~ x ~ x", N: "x ~@5 x ~ x ~@3 x ~ x!2", O: "~@4 x ~@6 x ~@2 x ~",
  P: "~@6 x ~@2 x!2 ~ x ~ x!2", Q: "~@13 x!2 ~", R: "~@6 x!2 ~ x ~@2 x ~ x ~", S: "~@4 x ~@7 x!2 ~ x",
  T: "~@3 x ~@2 x ~", U: "x!8 ~ x!7", V: "~@3 x ~ x ~@5 x ~@3 x", W: "~@9 x ~@2 x ~ x!2", X: "~@4 x!2 ~@6 x!2 ~@2",
  Y: "~@4 x ~@7 x ~ x!2", Z: "~@5 x ~@5 x ~@2 x!2",
})).gain(0.87)

// drums · congas
const congas_2 = s("conga:18").struct(`<
  ~@4 A B C D E F G H I J K L M N O P Q R S T ~@8 I J K L M N O P ~@4 U V K W X Y Z AA AB AC ~@8 I J K L M N O P I J K L
  M N O P ~@2 C D ~@2
>`.pickRestart({
  A: "x ~ x!2 ~@2 x!6 ~ x ~ x", B: "x!4 ~ x!3 ~@2 x!2 ~ x ~@2", C: "x!4 ~ x!7 ~ x ~ x", D: "x!4 ~ x!3 ~ x!5 ~@2",
  E: "x ~ x ~@3 x ~ x ~ x!2 ~@4", F: "~@4 x!2 ~@4 x ~@5", G: "x ~ x ~@4 x ~ x ~ x!2 ~@3", H: "~@2 x ~@2 x!2 ~",
  I: "~@2 x ~ x ~@4 x ~@2 x ~@3", J: "x!4", K: "~ x ~ x", L: "x!2 ~ x ~ x ~ x", M: "~ x ~ x ~ x ~ x",
  N: "~@4 x ~@2 x ~@2 x ~@5", O: "x!2 ~ x ~@2 x ~", P: "x!3 ~", Q: "x!3 ~@3 x ~", R: "~@5 x ~@5 x ~@3 x",
// … 22 more lines

More by Dr. John