hi
I'm not sure the second can be done with abstraction: could you trust a
[bang~] | [0, 64 1.451247( | [vline~]
you can use [line~ ] instead, which runs on the block grid anyway.
[bang~ ] | [0, 64 'x' ( <-- 0<x<2bsms, bsms -> blocksize duration in milliseconds | [line~ ]
this should be simpler and cheaper too.
In case you run with blocksizes under 64, i think [bang~ ] will refuse to bang faster than that. So a custom [bang~ ] would be needed.
ciao