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: 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 H A B C D E F A G A I E J E K L M L M A E N O N L M L M E N E P L Q R
S T U V W E L Q A B C D E F A G A B C D E F A G A H X Y Z AA AB AC A AD AE AF A AG A AH AI AJ AK AL E AM AN AO L AP T
AQ AR AS AT AU AV AW AX AY AZ BA@2 ~@2 AY BB BC BD BE BF BC BG BC BF BH BI AY BD BJ BI BK BD ~ BL BM BN BO AO T BP BQ
BG BO BR BS BR AW AS BT BU ~@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: "a2 ~ a2@3 ~ e3 ~ a2@5 ~@3", I: "a2 ~ a2@4 e3 ~ a2@5 ~ e3 ~", J: "d3 ~ d3@4 a3@2 d3@5 ~ a3@2",
K: "d3 ~ d3@4 a3 ~ d3@5 ~ a3@2", L: "g2@5 ~ d3 ~ g2@5 ~ d3 ~", M: "g2 ~ g2@4 d3 ~ g2@5 ~ d3 ~",
N: "d3 ~ d3@4 a3 ~ d3@5 ~ a3 ~", O: "d3@5 ~@3 d3@5 ~@3", P: "d3 ~ d3@4 ~@2 d3@5 ~ a3 ~, ~@2 a3 ~@13",
Q: "g2 ~ g2@4 ~@2 g2@5 ~@3", R: "g2@5 ~@3 g2@5 ~ d3@2", S: "g2 ~ g2@4 ~@2 g2@5 ~ d3 ~", T: "c3@5 ~ g3 ~ c3@5 ~ g3 ~",
U: "c3 ~ c3@4 g3 ~ c3@5 ~ g3 ~", V: "c3@5 ~@3 c3@5 ~@3", W: "c3 ~ c3@4 g3 ~ c3@5 ~@3", X: "a2@5 ~ e3 ~@7 e3 ~",
Y: "~ a2 ~@6", Z: "b3 ~@3 b3 ~@3 b3 ~@3 g#3@4", AA: "~@4 f#3@6 ~@2 e3 ~@3", AB: "~@8 b2@5 ~@3",
AC: "b2@5 ~@3 b2@5 ~@3", AD: "a2 ~ a2@2 ~@2 e3 ~ a2@4 ~@2 e3 ~", AE: "~@6 e3 ~@7 e3 ~",
AF: "a2 ~ a2 ~@3 e3 ~ a2@5 ~ e3 ~", AG: "a2 ~ a2@2 ~@2 e3 ~ a2@5 ~ e3 ~", AH: "a2 ~ a2@2 ~@2 e3 ~ a2@5 ~@3",
AI: "a2@4 ~@4 a2@4 ~@2 e3 ~", AJ: "a2 ~ a2@2 ~@2 e3@2 a2@5 ~ e3 ~", AK: "a2@5 ~@3 a2@5 ~ e3 ~",
AL: "a2 ~ a2@2 ~@2 e3 ~ a2@5 ~ e3@2", AM: "d3 ~ d3 ~@3 a3 ~ d3@5 ~ a3 ~", AN: "g2@5 ~ d3 ~ g2@4 ~@2 d3 ~",
AO: "g2 ~ g2@2 ~@2 d3 ~ g2@5 ~ d3 ~", AP: "g2 ~ g2@2 ~@2 d3 ~ g2@5 ~ d3@2", AQ: "c3 ~ c3@3 ~ g3 ~ c3@5 ~ g3 ~",
AR: "~@8 c3@5 ~ g3 ~", AS: "c3 ~ c3@3 ~ g3@2 c3@5 ~ g3 ~", AT: "d3@5 ~ a3@2 d3@5 ~ a3@2", AU: "~@8 g2@5 ~ d3 ~",
AV: "g2 ~ g2@2 ~@2 d3 ~@7 d3 ~", AW: "~@6 g3@2 c3@5 ~ g3 ~", AX: "c3 ~ c3@3 ~ g3 ~@9", AY: "~@6 g3 ~ c3@5 ~ g3 ~",
AZ: "c3 ~ c3@2 ~@2 g3@2 ~@8", BA: "[d4 ~@3 d4 ~@3 d4 ~@3 b3@7 ~@5 g3@5 ~@3]/2", BB: "c3 ~ c3@2 ~@2 g3 ~ c3@5 ~ g3@2",
BC: "c3@5 ~ g3@2 c3@5 ~ g3 ~", BD: "c3 ~ c3@3 ~ g3@2 ~@6 g3@2", BE: "c3@5 ~ g3@2 c3@5 ~ g3@2",
BF: "c3 ~ c3@3 ~ g3 ~@7 g3@2", BG: "c3 ~ c3@3 ~ g3 ~ c3@5 ~ g3@2", BH: "~@6 g3 ~@7 g3@2",
BI: "~@2 c3@3 ~ g3@2 ~@6 g3@2", BJ: "c3@5 ~ g3@2 ~@6 g3 ~", BK: "~@6 g3 ~ c3@5 ~ g3@2",
BL: "c3 ~ c3@3 ~ g3 ~@5 b2 ~@3", BM: "g2@5 ~ d3@2 ~@6 d3 ~", BN: "g2 ~ g2@3 ~@11", BO: "g2@5 ~ d3@2 g2@5 ~ d3 ~",
BP: "c3 ~ c3@2 ~@2 g3 ~@7 g3 ~", BQ: "~@6 g3 ~@7 g3 ~", BR: "g2 ~ g2@3 ~ d3@2 ~@6 d3@2", BS: "g2@5 ~@9 d3 ~",
BT: "c3@6 g3@2 c3@5 ~ g3 ~", BU: "c3 ~ c3@3 ~ g3@2 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 AB AC ~@3 T X ~@2 Q AD Q R ~@3
AE@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: "~@4 g2@3 ~", AC: "~@6 d3 ~ g2@4 ~@4", AD: "~@6 d3@2 g2@5 ~@3", AE: "[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 E@2 F@2 G@2 H@2 I@2 J F@4 K@4 F@4 K@4 L@2 M@2 N O@2 ~@16 E@4 P@2 Q@2 R@2 E@8 S@2
T@2 K@4 L@4 N K@2 L@4 U@2 V@2 L@20 K@2 ~@14 W@2
>`.pickRestart({
A: "[[c#4,e4,a4] ~@3 [c#4,e4,a4]@24 ~@4]/2", B: "[[d4,f#4,a4] ~@3 [d4,f#4,a4]@24 ~@4]/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: "[[c#4,e4,a4] ~@3 [c#4,e4,a4]@25 ~@3]/2", F: "[[d4,f#4,a4] ~@3 [d4,f#4,a4]@25 ~@3]/2",
G: "[[d4,f#4,a4] ~@3 [d4,f#4,a4]@26 ~@2]/2", H: "[[b3,d4,g4] ~@3 [b3,d4,g4]@24 ~@4]/2",
I: "[[b3,d4,g4] ~@3 [b3,d4,g4]@22 ~@6]/2", J: "[c#4,e4,a4] ~@3 [c#4,e4,a4]@9 ~@3",
K: "[[b3,d4,g4] ~@3 [b3,d4,g4]@25 ~@3]/2", L: "[[c4,e4,g4] ~@3 [c4,e4,g4]@25 ~@3]/2",
M: "[[c4,e4,g4] ~@3 [c4,e4,g4]@24 ~@4]/2", N: "[d4,f#4,a4] ~@3 [d4,f#4,a4]@9 ~@3",
O: "[[b3,d4,g4] ~@3 [b3,d4,g4]@26 ~@2]/2", P: "[[e4,g#4,b4] ~@3 [e4,g#4,b4]@21 ~@7]/2",
Q: "[[b3,b4] ~@3 [b3,b4]@25 ~@3]/2", R: "[a4 ~@3 [c#4,a4]@25 ~@3]/2",
S: "[[c#4,e4,a4] ~@23 g4@5 ~@3, ~@2 [c#4,e4,a4]@13 ~]/2", T: "[[d4,f#4] ~@3 [d4,f#4,a4]@25 ~@3]/2",
U: "[[d4,g4,b4] ~@3 [d4,g4,b4]@25 ~@3]/2", V: "[[d4,g4,a4] ~@3 [d4,f#4,a4]@25 ~@3]/2", W: "[[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 U 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", U: "[e4,a4] ~@3 [e4,a4] ~@3 [d4,g4] ~ e4@2 d4 ~ e4@2",
})).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 G ~@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 ~", G: "~@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.