According to https://en.wikipedia.org/wiki/Morse_code
the dot length governs the speed, and the lengths of the dashes, gaps, letter gaps, and word gaps are all multiples of the dot length. which you can use as your Clock interval and the length of a vibration.
If you encode the vibrations and pauses as 1 and 0 respectively, you can queue them all up in a list.
So ABG would code as:
(In Morse: . _ _... _ _ . )
(On the queue:)
1,0,1,1,1,0,0,0,1,1,1,0,1,0,1,0,1,0,0,0,1,1,1,0,1,1,1,0,1,0,0,0,0,0,0,0
Say a dot is a leisurely 500 ms.
Set the Clock to 500 ms, always fires, enabled, and the sound to vibrate for 500 ms per shot, initially quiet.
Clock fires:
If queue is not empty.
set local n = 1st element of queue
remove 1st element of queue
if n > 0 then
start vibration for 500 ms.
else do nothing (silence)
end clock routine
That's the entire service routine to play.
It's all in the coding for how to build up the sound queue from the letters.
I haven't tried this myself yet.
I'm betting three consecutive vibrations will melt into one long vibration.