Hi Mohit, Thanks for your response. I've been thinking about your alternative and I found two minor drawbacks:
(1) In the current VexFlow architecture all the symbols that connect multiple notes (e.g. ties, slides, text brackets) are not treated as modifiers. They're rendered from a separate function call, after calling voice.draw. The new vibrato class is closer to these classes in it's inner structure.
(2) In some cases you have a line break in the score and you split a vibrato into two lines. The 2nd vibrato starts from the beginning of the stave and it has no start note, just an ending note. The new vibrato class offers a somewhat cleaner solution for the parametrisation of such cases. It has a start note and a stop note parameter. A null value for the start or stop note indicates that the vibrato is drawn from the beginning or until the end of the stave accordingly.
The new class can add vibrato to a single note as well. Even though, it cannot modify the width of that note as a modifier. What do you think? How about making the existing vibrato class deprecated?