0:00/0:00
// Maybe Tomorrow — UB40
// 188 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 162 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(188/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, A@4 for four bars: edit a riff to change every repeat.
// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
~ A B C D E F A G A B C D E F A G A B C D E F A G A B C D E F A G A B E H E H I J I J A E H K H I J I J E H E L I M N
O P Q R S E I M A B C D E F A G A B C D E F A G A G T U V W X Y A Z AA Z A B A AB AC Z AD AE E AF I AG I AH P Q AI Q E
AJ AK AL AM AL AM AN@2 ~@2 AL Q P AO P AO P Q P AO AP AQ AL AO AR AQ AL AO ~ AS AT AU AV AG P AW AX Q AV AY AZ AY AL Q
P BA ~@2
>`.pickRestart({
A: "a2@5 ~ e3 ~ a2@5 ~ e3 ~", B: "a2 ~ a2@3 ~ e3 ~ a2@5 ~ e3 ~", C: "d3@5 ~ a3 ~ d3@5 ~@3", D: "d3 ~ d3@4 ~@8 a3 ~",
E: "d3@5 ~ a3 ~ d3@5 ~ a3 ~", F: "d3 ~ d3@4 a3 ~@7 a3 ~", G: "a2 ~ a2@4 e3 ~ a2@5 ~@3",
H: "d3 ~ d3@4 a3 ~ d3@5 ~ a3 ~", I: "g2@5 ~ d3 ~ g2@5 ~ d3 ~", J: "g2 ~ g2@4 d3 ~ g2@5 ~ d3 ~",
K: "d3@5 ~@3 d3@5 ~@3", L: "d3 ~ d3@4 ~@2 d3@5 ~ a3 ~, ~@2 a3 ~@13", M: "g2 ~ g2@4 ~@2 g2@5 ~@3",
N: "g2@5 ~@3 g2@5 ~ d3@2", O: "g2 ~ g2@4 ~@2 g2@5 ~ d3 ~", P: "c3@5 ~ g3 ~ c3@5 ~ g3 ~",
Q: "c3 ~ c3@3 ~ g3@2 c3@5 ~ g3 ~", R: "c3@5 ~@3 c3@5 ~@3", S: "c3 ~ c3@4 g3 ~ c3@5 ~@3", T: "a2@5 ~ e3 ~@7 e3 ~",
U: "~ a2 ~@6", V: "b3 ~@3 b3 ~@3 b3 ~@3 g#3@4", W: "~@4 f#3@6 ~@2 e3 ~@3", X: "~@8 b2@5 ~@3", Y: "b2@5 ~@3 b2@5 ~@3",
Z: "a2 ~ a2@2 ~@2 e3 ~ a2@4 ~@2 e3 ~", AA: "~@6 e3 ~@7 e3 ~", AB: "a2 ~ a2@2 ~@2 e3 ~ a2@5 ~@3",
AC: "a2@4 ~@4 a2@4 ~@2 e3 ~", AD: "a2@5 ~@3 a2@5 ~ e3 ~", AE: "a2 ~ a2 ~@3 e3 ~ a2@5 ~ e3 ~",
AF: "d3 ~ d3 ~@3 a3 ~ d3@5 ~ a3 ~", AG: "g2 ~ g2@2 ~@2 d3 ~ g2@5 ~ d3 ~", AH: "g2 ~ g2@2 ~@2 d3 ~ g2@5 ~ d3@2",
AI: "~@8 c3@5 ~ g3 ~", AJ: "~@8 g2@5 ~ d3 ~", AK: "g2 ~ g2@2 ~@2 d3 ~@7 d3 ~", AL: "~@6 g3 ~ c3@5 ~ g3 ~",
AM: "c3 ~ c3@3 ~ g3 ~@9", AN: "[d4 ~@3 d4 ~@3 d4 ~@3 b3@7 ~@5 g3@5 ~@3]/2", AO: "c3 ~ c3@3 ~ g3@2 ~@6 g3@2",
AP: "~@6 g3 ~@7 g3@2", AQ: "~@2 c3@3 ~ g3@2 ~@6 g3@2", AR: "c3@5 ~ g3@2 ~@6 g3 ~", AS: "c3 ~ c3@3 ~ g3 ~@5 b2 ~@3",
AT: "g2@5 ~ d3@2 ~@6 d3 ~", AU: "g2 ~ g2@3 ~@11", AV: "g2@5 ~ d3@2 g2@5 ~ d3 ~", AW: "c3 ~ c3@2 ~@2 g3 ~@7 g3 ~",
AX: "~@6 g3 ~@7 g3 ~", AY: "g2 ~ g2@3 ~ d3@2 ~@6 d3@2", AZ: "g2@5 ~@9 d3 ~", BA: "c3 ~ c3@3 ~ g3 ~ c3@5 ~ g3@2",
})).s("gm_acoustic_bass").gain(0.74)
// bass · acoustic bass · "ACOU BASS" · soft notes
const bass_soft = note(`<
~@3 A B ~ C ~@4 A B ~ C ~@4 A B ~ C ~@4 A B ~ C ~@15 D ~@10 E F@2 ~@2 G H ~@2 F ~@2 A B ~ C ~@4 A B ~ C ~@4 I J ~@2 K
~@3 L ~@4 M N ~ N ~@9 O ~@2 P Q R S R T ~ U V W R ~@2 T ~ T ~@3 T X Y R T@2 Y R T Z AA Q AB ~@3 T X ~@2 Q AB Q R ~@3
AC@2
>`.pickRestart({
A: "~@14 a3 ~", B: "~@6 a3 ~ d3@5 ~@3", C: "~@8 d3@5 ~@3", D: "~@6 a3 ~@7 a3 ~", E: "~@6 d3 ~@7 d3 ~",
F: "~@6 d3 ~@9", G: "~@6 g3 ~@7 g3 ~", H: "~@14 g3 ~", I: "~@2 a2 ~", J: "a2 ~@5 e3 ~ a2@6 ~@2", K: "f#3@7 ~@9",
L: "a2@4 ~@4 a2@5 ~@3", M: "~@14 e3 ~", N: "~@6 e3 ~@9", O: "c3@5 ~ g3 ~@9", P: "g2@5 ~ d3 ~@9", Q: "~@8 g2@5 ~@3",
R: "c3@5 ~@11", S: "~@8 c3@5 ~ g3 ~", T: "~@8 c3@5 ~@3", U: "~@4 a3 ~@11", V: "a3@7 ~ d3@4 ~@4",
W: "d3@5 ~@3 d3@5 ~@3", X: "c3@5 ~@3 c3@5 ~@3", Y: "c3 ~@7 c3@5 ~@3", Z: "c3@5 ~ g3@2 c3@5 ~ g3@2", AA: "~@8 d3 ~@7",
AB: "~@6 d3 ~ g2@4 ~@4", AC: "[g2@11 ~@5]/2",
})).s("gm_acoustic_bass").gain(0.07)
// chords · drawbar organ · "ORGAN 1"
const drawbar_organ = note(`<
~@17 A@2 B@2 C@2 D@2 A@2 B@2 C@2 D@2 A@2 B@4 E@2 F@2 G B@4 E@4 B@4 E@4 H@4 I E@2 ~@16 A@4 J@2 K@2 L@2 A@8 M@2 N@2 E@4
H@4 I E@2 H@4 O@2 P@2 H@20 E@2 ~@14 Q@2
>`.pickRestart({
A: "[[c#4,e4,a4] ~@3 [c#4,e4,a4]@25 ~@3]/2", B: "[[d4,f#4,a4] ~@3 [d4,f#4,a4]@25 ~@3]/2",
C: "[[d4,f#4,a4] ~@3 [d4,f#4,a4]@20 ~@8]/2", D: "[[c#4,e4,a4] ~@3 [c#4,e4,a4]@20 ~@8]/2",
E: "[[b3,d4,g4] ~@3 [b3,d4,g4]@25 ~@3]/2", F: "[[b3,d4,g4] ~@3 [b3,d4,g4]@22 ~@6]/2",
G: "[c#4,e4,a4] ~@3 [c#4,e4,a4]@9 ~@3", H: "[[c4,e4,g4] ~@3 [c4,e4,g4]@25 ~@3]/2",
I: "[d4,f#4,a4] ~@3 [d4,f#4,a4]@9 ~@3", J: "[[e4,g#4,b4] ~@3 [e4,g#4,b4]@21 ~@7]/2",
K: "[[b3,b4] ~@3 [b3,b4]@25 ~@3]/2", L: "[a4 ~@3 [c#4,a4]@25 ~@3]/2",
M: "[[c#4,e4,a4] ~@23 g4@5 ~@3, ~@4 [c#4,e4,a4]@25 ~@3]/2", N: "[[d4,f#4] ~@3 [d4,f#4,a4]@25 ~@3]/2",
O: "[[d4,g4,b4] ~@3 [d4,g4,b4]@25 ~@3]/2", P: "[[d4,g4,a4] ~@3 [d4,f#4,a4]@25 ~@3]/2", Q: "[[b3,d4,g4]@21 ~@11]/2",
})).s("gm_drawbar_organ").gain(0.48)
// chords · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
~ A@2 B@4 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 C@4 A B@4 C@4 B@4 C@4 D@4 B C@2 A@2 B@4 A@4 B@4 A@6 E@2 F@2 A@11 G B@2 C@4
D@4 B C@2 D@4 H@2 I@2 D@14 J D@5 C@4 D@4 C@4 D@4 K@2
>`.pickRestart({
A: "~@2 [c#4,e4,a4] ~@3 [c#4,e4,a4] ~", B: "~@2 [d4,f#4,a4] ~@3 [d4,f#4,a4] ~", C: "~@2 [b3,d4,g4] ~@3 [b3,d4,g4] ~",
D: "~@2 [c4,e4,g4] ~@3 [c4,e4,g4] ~", E: "~@2 [b3,e4,g#4,b4] ~@3 [b3,e4,g#4,b4] ~",
F: "~@2 [b3,e4,f#4,b4] ~@3 [b3,d#4,f#4,b4] ~", G: "~@2 [c#4,e4,a4] ~@3 [c#4,e4,g4,a4] ~",
H: "~@2 [d4,g4,b4] ~@3 [d4,g4,b4] ~", I: "~@2 [d4,g4,a4] ~@3 [d4,f#4,a4] ~", J: "~@2 [c4,f4,g4] ~@3 [c4,e4,g4] ~",
K: "[[d3,g3,b3]@5 ~@3]/2", // G
})).s("gm_electric_guitar_muted").gain(0.48)
// chords · trumpet
const trumpet = note(`<
A B C D@2 E F G A B C D@2 E F G ~@50 A B C D@2 E F G A B C D@2 E F G ~@5 H@2 I@2 ~@29 J@2 K@2 ~@19 L M@2 N O P@2 Q R S
T N O P@2 Q R S ~
>`.pickRestart({
A: "~@12 [e4,a4] ~ [f#4,b4]@2", B: "[a4,c#5] ~@3 [a4,c#5] ~@7 a4 ~ [f#4,b4]@2",
C: "[a4,c#5] ~@3 [a4,c#5] ~@3 [f#4,b4]@2 [a4,c#5]@2 [f#4,b4]@2 [e4,a4]@2", // A B5 A B5 A5
D: "[[d4,f#4]@26 ~@2 [d4,f#4] ~ [e4,a4]@2]/2", E: "[f#4,b4] ~@3 [f#4,b4] ~@7 f#4 ~ [e4,a4]@2",
F: "[f#4,b4] ~@3 [f#4,b4] ~@3 [e4,a4] ~ f#4@2 e4 ~ f#4@2", G: "[e4,a4]",
H: "[[b4,b5] ~@3 [b4,b5] ~@3 [b4,b5] ~@3 [g#4,g#5]@7 ~ f#5@2 ~@2 [e4,e5] ~ g#4@2 [f#4,f#5] ~ [e4,e5]@2, ~@26 g#5 ~@5]/2", // B G# E F# E
I: "[f#4@29 ~@3]/2", J: "[d5 ~@3 d5 ~@3 d5 ~@3 b4@7 ~ a4@3 ~ g4 ~ b4@2 ~@2 g4@2]/2", K: "[a4@7 ~]/2",
L: "~@8 a4 ~@3 a4@2 ~@2", M: "[g4@25 ~@3 [d4,g4] ~ [e4,a4]@2]/2", N: "[g4,b4]@2 ~@2 [g4,b4] ~@7 g4 ~ [e4,a4]@2",
O: "[g4,b4] ~@3 [g4,b4] ~@3 [e4,a4]@2 [g4,b4]@2 [e4,a4]@2 [d4,g4]@2", P: "[[c4,e4]@26 ~@2 [c4,e4] ~ [d4,g4]@2]/2",
Q: "[e4,a4] ~@3 [e4,a4] ~@7 e4 ~ [d4,g4]@2", R: "[e4,a4] ~@3 [e4,a4] ~@3 [d4,g4] ~ e4@2 d4 e4@2 ~", S: "[d4,g4]",
T: "~@12 [d4,g4] ~ [e4,a4]@2", // G5 A5
})).s("gm_trumpet").gain(0.55)
// chords · trumpet · soft notes
const trumpet_soft = note("<~@5 A B ~@6 A B ~@56 A B ~@6 A B ~@40 C ~@21 D ~@6 E F ~@6 E F ~@2>".pickRestart({
A: "~@12 d4 ~@3", B: "~@10 b4@2 a4 ~ c#4@2", C: "~@12 a4 ~@3", D: "~@10 b4@2 ~ e4@2 ~", E: "~@12 c4 ~@3",
F: "~@10 a4@2 g4 b3@2 ~",
})).s("gm_trumpet").gain(0.28)
// drums · kick
const kick = s("bd").struct(`<
A ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B C ~ B D C ~ B D B D B D B D
B D B D B D ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B@2 D B ~ B ~ B
D B D B D B D B D B D B D B D B ~ B ~ B D B D B D B D B D B D B D B D B ~ B ~ B D B ~@2
>`.pickRestart({
A: "~@3 x!2 ~@3", B: "x!2 ~@6", C: "~ x ~@6", D: "x",
})).gain(0.7)
// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@2 ~@2 A@2 ~@14 A B A ~ A ~
A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@4 A ~ A ~@17 A ~ A ~@17 A ~ A ~@5
>`.pickRestart({
A: "x", B: "~ x",
})).gain(0.08)
// drums · snare
const snare = s("sd").struct("<~ [~ x]!159 ~@2>").gain(0.08)
// drums · hihat
const hihat = s("hh").struct(`<
~ A@82 B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
B C B C B C B C B C B C B C B C B C B C B ~@2
>`.pickRestart({
A: "~ x ~ x", B: "x!4", C: "~ x!3",
})).gain(0.7)
// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
~@84 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3
>`.pickRestart({
A: "x",
})).gain(0.39)
// drums · open hat
const open_hat = s("oh").struct(`<
~@2 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A
~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~
>`.pickRestart({
A: "~@7 x", B: "x",
})).gain(0.7)
// drums · crash
const crash = s("cr").struct("<[~ x] ~@65 [~ x] ~@95>").gain(0.78)
// drums · lt
const lt = s("lt").struct("<~ [~ x]!159 ~@2>").gain(0.08)
stack(
bass, bass_soft, drawbar_organ, electric_guitar_muted, trumpet, trumpet_soft, kick, kick_soft, snare, hihat,
hihat_soft, open_hat, crash, lt
)
More by UB40
Red Red Wine1984 · D♭ major · 92 bpmThe Way You Do The Things You Do1990 · A♭ major · 159 bpm(I Can't Help) Falling In Love With YouC major · 88 bpmHigher GroundD major · 101 bpmKingston TownA♭ major · 102 bpmHomely GirlG major · 82 bpmI'll Be Your Baby TonightD major · 88 bpmGroovin'A♭ major · 99 bpm
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.