0:00/0:00
// The Beat Goes On — Sonny & Cher
// 125 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 110 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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 · acoustic bass · "Bass"
const bass = note(`<
A B C B A B C B A B C B A B C B D E F G H I J K D E F G H I J K A B C B A B C B A B C B D E F G H I J K D E F G H I J
K A B C B A B C B A B C B D E F G H I J K D E F G H I J K A B C B A B C B A B C B A B C B A B C B ~@2
>`.pickRestart({
A: "f2@5 ~ eb2@5 ~ c2@6 eb2@4 f2 ~", B: "~@4 eb2 ~@5 eb2@2 c2@5 ~ eb2@3 ~ c2 ~", C: "f2@5 ~ eb2@6 c2@6 eb2@4 f2 ~",
D: "f2@3 ~@2 bb1 c2@2 ~ c2@2 ~", E: "f2@6 ~@4 bb1@2 c2@4 ~@2 c2@3 ~@3", F: "f2@6 ~@4 bb1 ~ c2@3 ~@3 c2@4 ~@2",
G: "f2@8 ~@2 bb1@2 c2@3 ~ eb2@2 c2@3 ~ eb2 ~", H: "f2@5 ~@5 bb1@2 c2@2 ~@4 c2@2 ~@4",
I: "f2@6 ~@4 bb1@2 c2@3 ~@3 c2@2 ~@4", J: "f2@5 ~@5 bb1@2 c2@3 ~@3 c2@2 ~@4",
K: "f2@4 ~@6 bb1@2 c2@2 ~@2 eb2@2 c2@3 ~ eb2 ~",
})).s("gm_acoustic_bass").gain(0.3)
// chords · rock organ · "Keyboard"
const rock_organ = note(`<
~@4 A B C D ~@2 E F E F E G H@16 A B C D ~@2 E F E I E G H@16 A B C D ~@2 E F E F E G H@16 A B C D ~@2 E F E F E G A B
C D A B C D ~@2
>`.pickRestart({
A: "~@4 f5 ~ [c6,eb6]@10 f5 ~ d6@3 ~ f5 ~, ~@6 f5 ~@10 bb5@4 ~@3", B: "[c6,eb6]@4 f5 ~ [a5,c6]@3 ~@15",
C: "~@6 [c6,eb6]@10 f5 ~ [bb5,d6]@3 ~ f5 ~, ~@6 f5 ~@17", D: "[c6,eb6]@4 f5 ~ [bb5,d6]@4 ~ e5 [c5,d5] [a4,b4] ~@10",
E: "~@4 g5 ~ [ab5,c6,eb6]@10 ~ g5 [g5,bb5,d6]@3 ~ g5 ~", // Ab Gm
F: "[ab5,c6,eb6]@4 ~@2 [f5,c6]@5 [e5,b5] [c5,d5,g5,a5] [a4,b4] g4 f4 ~@8, ~@3 eb6 ~@8", // Ab F5 E5 Csus2 Asus2
G: "[ab5,c6,eb6]@3 ~@7 c6@2 ~@6 [ab5,c6,eb6]@3 ~@3, ~@9 [ab5,eb6]@2 ~@13", H: "[[a4,c5,f5]@63 ~]/8",
I: "[ab5,c6]@4 ~@2 [f5,c6]@5 [e5,b5] [c5,d5,g5,a5] [a4,b4] g4 f4 ~@8, ~@3 eb6 ~@8", // Ab F5 E5 Csus2 Asus2
})).s("gm_rock_organ").gain(0.15).pan(0.3)
// chords · rock organ · "Keyboard" · soft notes
const rock_organ_soft = note(`<
~@7 A ~@2 B ~ B ~ B ~@20 A ~@2 B ~ B ~ B ~@20 A ~@2 B ~ B ~ B ~@20 A ~@2 B ~ B ~ B ~@4 A ~@3 A ~@2
>`.pickRestart({
A: "~@6 f5 ~@3 f5 ~@3 g4 ~@9", B: "~@22 c6 ~",
})).s("gm_rock_organ").gain(0.09).pan(0.3)
// chords · acoustic guitar steel · "Guitar"
const acoustic_guitar_steel = note(`<
A B C D E F G F A B C D E F G F H I J K L M I N H I J K L M I N E F G F A B C D E F G F H I J K L M I N H I J K L M I
N E F G F A B C D E F G F H I J K L M I N H I J K L M I N E F G F A B C D E F G F E F G F E F G O ~@2
>`.pickRestart({
A: "f3@5 ~ eb3@6 c3@6 eb3@4 f3 ~", B: "~@4 eb3 ~@5 eb3@2 c3@6 eb3@4 c3@2", C: "f3@6 eb3@6 c3@6 eb3@4 f3 ~",
D: "~@3 eb3 ~@6 eb3 ~ c3@5 ~ eb3@4 c3 ~", E: "f3@5 ~ eb3@5 ~ c3@6 eb3@3 ~ f3 ~",
F: "~@4 eb3 ~@5 eb3@2 c3@4 ~@2 eb3@4 c3 ~", G: "f3@5 ~ eb3@6 c3@5 ~ eb3@4 f3 ~",
H: "~@4 f2@2 ~ f4@2 ~@4 f3 ~@2 [f3,a3,c4,f4] ~@5 [f3,a3,c4,f4] ~, ~@2 [f3,c4] ~@5", // F F5
I: "~@4 f2@2 [f3,a3,c4,f4]@3 ~@7 [f3,a3,c4,f4] ~@5 [f3,a3,c4,f4] ~", // F
J: "~@4 f2@2 [a3,c4]@5 ~@2 f3 ~@2 [f3,a3,c4,f4] ~@5 [f3,a3,c4,f4] ~, ~@2 [f3,f4] ~@5", // Am F
K: "~@4 f2@2 [f3,a3,c4,f4] ~@9 [f3,a3,c4,f4] ~@5 [f3,a3,c4,f4] ~", // F
L: "~@4 f2@2 [a3,c4]@5 ~@5 [f3,a3,c4] f4 ~@4 [f3,a3,c4,f4] ~, ~@3 f4 ~@8, ~@6 f3 ~@17", // Am F
M: "~@4 f2@2 [a3,c4,f4]@4 ~@6 [f3,a3,c4,f4] ~@5 [f3,a3,c4,f4] ~, ~@6 f3 ~@17", // F
N: "~@4 f2@2 ~ f4@2 ~@7 [f3,a3,c4] f4 ~ f2 ~@2 [f3,a3,c4,f4] ~, ~@6 a3@5 ~@13, ~@2 [f3,c4] ~@5", // F F5
O: "~@4 eb3 ~@5 eb3@2 c3@4 ~@2 eb3@4 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.7)
// other · trombone
const trombone = note(`<
A B C D A B C D A B C D A B C D E F G@2 H I J@2 I@2 K@2 E I L@2 A B C D A B C D A B C D E F G@2 H I J@2 I@2 K@2 E I
L@2 A B C D A B C D A B C D E F G@2 H I J@2 I@2 K@2 E I L@2 A B C D A B C D A B C D A B C D A B C M ~@2
>`.pickRestart({
A: "f2@5 ~ eb2@5 ~ c2@6 eb2@3 ~ f2 ~", B: "~@4 eb2 ~@5 eb2@2 c2@6 eb2@4 c2 ~", C: "f2@6 eb2@5 ~ c2@5 ~ eb2@4 f2 ~",
D: "~@4 eb2 ~@5 eb2@2 c2@5 ~ eb2@4 c2 ~", E: "~@2 f3 ~@5", F: "~@3 f3@2 ~@7",
G: "[~@6 a3@2 ~@4 g3@3 ~ a3@2 ~@3 bb3@8 ~ a3@2 ~@4 g3@3 ~ a3@4 ~@4]/2", H: "~@2 f3 ~@5, ~@6 g3 ~@17", I: "~@3 f3 ~@8",
J: "[~@6 a3@2 ~@4 g3@3 ~ a3@2 ~@4 g3 ~@7 a3 ~@5 g3@4 a3@3 ~@5, ~@21 bb3@8 ~@19]/2",
K: "[~@6 a3@2 ~@4 g3@3 ~ a3 ~@4 a3 bb3@8 a3@2 ~@4 g3@3 ~ a3@2 ~@6]/2",
L: "[~@6 a3@2 ~@4 g3@3 ~ a3@2 ~@4 a3 ~@7 a3 ~@5 g3@3 ~ a3@2 ~@6, ~@21 bb3@8 ~@19]/2",
M: "~@4 eb2 ~@5 eb2@2 c2@5 ~ eb2@4 ~@2",
})).s("gm_trombone").gain(0.22).pan(0.8)
// other · trumpet
const trumpet = note(`<
~@16 A@2 B@2 A C D@2 A@2 B@2 A C D@2 ~@12 A@2 B@2 A C D@2 A@2 B@2 A C D@2 ~@12 A@2 B@2 A C D@2 A@2 B@2 A C D@2 ~@22
>`.pickRestart({
A: "~@2 [f4,c5,f5] ~@5", // F5
B: "[~@6 [a4,a5]@2 ~@4 [g4,g5]@3 ~ [a4,a5]@2 ~@3 [bb4,bb5]@9 a5@2 ~@4 [g4,g5]@3 ~ [a4,a5]@4 ~@4, ~@30 a4 ~@17]/2", // A G A Bb G A
C: "~@3 [f4,c5,f5] ~@8", // F5
D: "[~@6 [a4,a5]@2 ~@4 [g4,g5]@3 ~ [a4,a5]@2 ~@3 [bb4,bb5]@8 ~ a5@2 ~@4 [g4,g5]@3 ~ a5@4 ~@4, ~@30 a4 ~@9 a4@2 ~@6]/2", // A G A Bb G
})).s("gm_trumpet").gain(0.27).pan(0.7)
// other · alto sax · "Sax"
const alto_sax = note(`<
~@16 A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 ~@12 A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 ~@12 A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 ~@22
>`.pickRestart({
A: "~@3 a4 ~@8", B: "[~@6 f4@2 ~@4 e4@3 f4@2 ~@5 [e4,f4] ~@7 f4@2 ~@4 e4@4 f4@2 ~@6, ~@21 g4@8 ~@19]/2",
C: "[~@6 f4@2 ~@4 e4@3 ~ f4@2 ~@3 g4@8 ~ f4@2 ~@4 e4@4 f4@2 ~@6, ~@21 e4 ~@26]/2",
})).s("gm_alto_sax").gain(0.31).pan(0.4)
// drums · kick
const kick = s("bd").struct(`<
A@16 B@7 C B@7 D A@12 B@7 E B@3 C B@3 F A@12 B@7 D B@3 A B@3 D A@12 B@3 G B H B G ~@2
>`.pickRestart({
A: "x!4", B: "x ~@5 x ~ x ~@2 x", C: "x ~@5 x ~@2 x ~ x", D: "x ~@5 x ~ x!2 ~@2", E: "x ~ x!2",
F: "x ~@4 x ~ x ~ x ~ x", G: "x ~@2 x!2 ~", H: "x ~@5 x ~@3 x!2",
})).gain(0.3)
// drums · snare
const snare = s("sd").struct(`<
A@3 B C A@2 D C A@2 D C E F G H@7 I H@7 I C A@2 D C A@2 D C E J G H@7 I H@3 K H@3 L C A@2 D C A@2 D C E M N H@7 I H@3
O H@3 I C A@2 D C A@2 D C E P G H@3 Q H R H@2 ~@2
>`.pickRestart({
A: "x!4", B: "x ~@5 x ~@3 x!3 ~@11", C: "~ x!3", D: "x!3 ~", E: "x ~@2 x!4 ~ x ~ x ~", F: "x ~ x ~ x ~ x!6",
G: "x!12", H: "~ x ~ x", I: "~ x ~@2", J: "x ~@2 x!9", K: "~@2 x!2 ~@8", L: "~@6 x ~@5 x ~@2 x!2 ~@3 x ~@3", M: "x!6",
N: "x ~@3 x ~@3 x ~@3 x ~@2 x!4 ~@3 x ~", O: "~@2 x ~@3 x ~ x ~ x!2", P: "x ~@2 x!2 ~ x ~ x!3 ~",
Q: "~@3 x ~@3 x ~ x ~ x", R: "~@3 x ~@3 x!3 ~@2",
})).gain(0.25)
// drums · low tom
const low_tom = s("lt").struct(`<
~@3 A B ~@2 A B ~@2 A B ~@10 C ~@7 D B ~@6 A B ~@10 E ~@3 F ~@7 A B ~@2 A B ~@10 D ~@7 D B ~@2 A B ~@2 A B ~ G ~@11
>`.pickRestart({
A: "~@17 x!2 ~@4 x", B: "x", C: "~@6 x!3 ~@3", D: "~@18 x ~@3 x!2", E: "~@22 x!2", F: "~@8 x!2 ~ x", G: "~@11 x",
})).gain(0.25)
// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@3 A ~@3 A ~@3 A ~@27 A ~@23 A ~@3 A ~@23 A ~@3 A ~@14>".pickRestart({
A: "~@8 x ~@2 x",
})).gain(0.15)
// drums · hihat
const hihat = s("hh").struct(`<
A@3 B A@3 B A@3 B A@4 ~@16 A@3 B A@3 B A@4 ~@11 C ~@3 D A@3 B A@3 B A@3 ~@17 A@3 B A@3 B A@4 ~@10
>`.pickRestart({
A: "~ x ~@2 x ~", B: "~ x ~@4", C: "~@2 x!2", D: "~ x",
})).gain(0.2)
// drums · mid tom
const mid_tom = s("mt").struct("<~@31 A ~@3 B C ~@14 D ~@3 E ~@23 A ~@7 A ~@10 F ~@11>".pickRestart({
A: "~@16 x!2 ~@6", B: "~@16 x!3 ~@3 x!2", C: "x", D: "~@10 x!3 ~@3 x!3 ~@5", E: "~@5 x!2 ~@5", F: "~@5 x ~@6",
})).gain(0.25)
// drums · open hat
const open_hat = s("oh").struct(`<
~@14 A B C B@6 D C B@6 E ~@10 A B C B@6 D C B@2 D B@3 D ~@12 C B@6 E C B@3 C B@2 E ~@11 B C B@3 C B C E ~@2
>`.pickRestart({
A: "~@3 x", B: "x!4", C: "~ x!3", D: "x!2 ~@2", E: "x!3 ~",
})).gain(0.3)
// drums · crash
const crash = s("cr").struct("<~@16 A ~@6 B A ~@19 A ~@7 A ~@7 A ~@11 A ~@7 A ~@3 A ~@15 A ~@3 A ~ A ~@3>".pickRestart({
A: "x", B: "~@3 x",
})).gain(0.3)
// drums · ride
const ride = s("rd").struct("<A@14 B ~@17 A@10 B ~@17 C A@11 ~@16 A@11 ~@11>".pickRestart({
A: "x!4", B: "x!3 ~", C: "~ x!3",
})).gain(0.3)
// drums · tambourine
const tambourine = s("tb").struct("<~@16 A@16 ~@12 A@16 ~@12 A@16 ~@12 A@8 ~@2>".pickRestart({
A: "~ x ~ x",
})).gain(0.3)
// drums · cabasa
const cabasa = s("cabasa:4").struct("<[x ~ x!2 ~ x!2 ~ x!2 ~ x]!107 [x ~ x!2 ~ x!2 ~ x!2 ~@2] ~@2>").gain(1.01)
stack(
bass, rock_organ, rock_organ_soft, acoustic_guitar_steel, trombone, trumpet, alto_sax, kick, snare, low_tom,
low_tom_soft, hihat, mid_tom, open_hat, crash, ride, tambourine, cabasa
)
More by Sonny & Cher
Not in the database
That song isn't here.
Nothing in the database matches this link. It may have been renamed, or the address was mistyped. The closest songs to :
Real transcriptions · Editable patterns · Instrumental
Type a song.
Get Strudel code.
Chords, structure, melody, bass and drums compiled from open transcriptions into Strudel live-coding patterns. Play it here, scrub through the bars, then open it in strudel.cc and start hacking.
Smells Like Teen SpiritNirvana
The JokerSteve Miller Band · 1973
Love Me DoThe Beatles · 1964
I Don't MindJames Brown · 1961
- Real transcriptionsMcGill chord charts, Lakh MIDI and quality-filtered PDMX scores. The library includes alternate transcriptions of some songs.
- One bar, one cycleEvery layer follows the same bar timeline, keeping the code, playback and song structure aligned.
- Instrumental by designDetected vocal parts are removed. Guitar riffs, harmonica and other instrumental leads stay.