Closed lossius closed 2 years ago
I have looked into this further. What is currently indicated in the plugin GUIs is neither |rV| nor |rE| but rather degree of directedness (normalsed to [0, 1]
), calculated according to how it is done in the Direct transform:
Directedness = 1 - 2 / PI * asin( ( 2 * W^2 - X^2 - Y^2 - Z^2 ) / ( 2 * W~2 + X^2 + Y^2 + Z^2 ) )
The calculations behind this can be found in our 2014 ATK SMC/ICMC paper (see equation 3).
I have a working prototype of the Direct transform plugin using |rV|. The difference between the two is subtle (the new prototype can be seen to the left in the below screenshot, the previous version to the right), but as you can see, with |rV| the points are no longer fully aligned with the blue interaction circle, but instead move somewhat faster towards the centre as the transformation angle increase. That is probably to be expected.
If I am to implement |rV| and |rE|, it might make sense to keep Directness as well?
Apart from that I also wonder if there is a small typo in the formula given here. Is it instead of
active_admittance_vector = (pow(2, 1./2)) * [X, Y, Z] / W
meant to be:
active_admittance_vector = (1 / pow(2, 1./2)) * [X, Y, Z] / W
? I had to adjust to that to have this work within a [0, 1] range.
Some further development and testing today. Trying to visualise Directedness, rE and rV differently in order to make it more apparent to the user what mode of display is currently used (without having to always double-check the last (new) slider.
Here is a screenshot showing Focus and Push using all three display modes. Any thoughts on this, @joslloand ?
And the Direct plugin
Nice to see some more details added to the displays!
If you'd like to see a few other ideas, I implemented a number of extra features in the atk-sc3
utility FoaXformDisplay (docs), which was in fact inspired by your original plugin design ;):
Some of these features were more useful in the context of chaining transforms (you can play with this by pressing the "Chain >>" button), where the aggregate effect of multiple transforms can become unwieldy and hard to track the orientation, so they may not be as useful in the plugin context, but maybe this gets some ideas flowing for you :)
Note that the radius is the rE vector, although I call it "directivity" in the introspection window. It's a useful term and well motivated but admittedly a bit vague and in the literature "directivity" has multiple uses.
Thanks, @mtmccrea .
The SuperCollider GUI looks awesome. I have given this some thought and will go a slightly different route, responding to your points above:
I have additionally decided to only implement the additional |ırE| and |rV| views where they actually are of importance; in the Direct, DirectO and FocusPressPushZoom plugins, as they are the only transforms that alter the degree of directedness.
@lossius
meant to be:
active_admittance_vector = (1 / pow(2, 1./2)) * [X, Y, Z] / W
? I had to adjust to that to have this work within a [0, 1] range.
Yep, this is correct! Sorry for the typo!! Fixed in reference: https://github.com/ambisonictoolkit/atk-reaper/issues/24#issuecomment-1048166349
Update the indication of perceived localization focus from |rV| to |rE|.
Mapping to |rE| offers a stronger sense of how localized an encoded planewave will appear after transform.
This change will require an update to the figures presented in the documentation for atk-sc3.
To implement will require a brief conversation with @lossius as to details.
This is further discussed in Issue 24. Even though that issue is closed (moved here), the information in the discussion remains valid, and should be referred to when implementing this.