Your new system allows you to do things like
[A, C, E,].collect( _.4.e)
or [A, C, E].collect{|i| i.(4.rrand(6))}
Which is interesting.
I find this:
a lttlle hard to read though - my eye goes to the capital letters before the salient part which here is the method. But maybe that’s ok.
If I were building this I would keep my eye on Lilypond export - so for example in Lilypond you can send a dynamic marking above the staff by adding ^
so \^ff
- a nice thing about having Intensity objects is that you can add properties like \above and \below to them later as opposed to your initial idea.
I would perhaps use the more conventional term Dynamic
though perhaps?