-
Notifications
You must be signed in to change notification settings - Fork 11
Graphic Enhancements
Add display notification that the plugins currently use FuMa. In the AmbiX milestone, this will be changed to AmbiX.
Use the gfx_ext_retina
flag as documented here: If set to 1.0 on initialization, will be updated to 2.0 if high resolution display is supported, and if so gfx_w/gfx_h/etc will be doubled.
Provide feedback to the user when a track is set up with an insufficient number of channels
In the FuMa version of the plugins, the GUI gets redrawn all the time. This ought to be changed so that they only redraw when needed, saving quite a bit of CPU. Doing so should be part of this milestone.
Here's Justin's example code illustrating how this can be done:
desc: Test Line Draw Aliasing
@init
gfx_clear=-1; // prevent auto clear of each frame (since we only draw when the frame changes)
@gfx 500 500
// Determine geometry
gCenterX = gfx_w * 0.5;
gCenterY = gfx_h * 0.5;
// Update sliders when mouse is pressed
(mouse_cap == 1) ? (
slider1 = (mouse_x - gCenterX) / gCenterX;
slider2 = -(mouse_y - gCenterY) / gCenterY;
slider_automate(slider1);
slider_automate(slider2);
);
// Draw circle
(gfx_w != last_gfx_w || gfx_h != last_gfx_h || slider1 != last_slider1 || slider2 != last_slider2) ? (
gfx_a = 1.;
// manually clear framebuffer. we could also choose a minimal area to update (last circle position if the width/height didn't change, for example)
gfx_r=gfx_b=gfx_b=0;
gfx_rect(0,0,gfx_w,gfx_h);
last_gfx_w = gfx_w;
last_gfx_h = gfx_h;
last_slider1=slider1;
last_slider2=slider2;
gfx_r = 0.8;
gfx_g = 0.2;
gfx_b = 0.2;
gfx_circle((slider1 + 1)*gCenterX, (-slider2+1)*gCenterY, 10, 1, 1);
);
Consider to use different background colours for the different kinds of plugins:
- Encode => Red
- Transform => Green
- Decode => Blue
All variations should be darkish and discrete.
These plugins will be more user-friendly if it is clear from the GUI how the channel assignments are set up.
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.
@lossius in relation to the GUI enhancement #9, (RMS) levels are now displayed for loudspeaker feeds.
Add an indicator to illustrate the average polarity of channel output feeds. This is "easily" calculated. E.g.:
polarityLF = TimeAverage(LF * W)
By monitoring the polarity of polarityLF
we can determine whether the average signal presented at LF
is "in phase" or "out of phase" with W. This is a very useful indicator illustrating decoder performance and sound-field quality.
More details... there are actually three states of interest:
polarity > 0
means "in phase"
polarity = 0
means "in quadrature"
polarity < 0
means "out of phase"
I'm thinking these states could be represented by a colour or shading change of the current metering.
With Reaper 6 it is possible to add JSFX GUIs to Track or Mix panels. This is very attractive with ATK, as the user then can monitor and interact with encoders and transforms from track panels or the mixer. The GUI is pretty small when embedded within these panels. Do we want to implement a way of fine-tuning parameter values in the GUI when it is small?