Signal Value Clarity UI Pass
-
I talk about three issues here.
- Lack of default readable peak metering
- Lack of readable peak and target value metering for modulators
- Lack of ability to accurately set modulation intensity other than through scripting
1. Volume Peak Metering
There's a general lack of clarity for signal values.
There are some ways around this. This involves pulling peaks from different generators, but does not scale: any change you make in the project hierarchy needs to be updated in that script.
It would be great to see peak values for each generator, as well as the master peak. I have no design recommendations for this. Maybe increase the width of the Module Tree and add another column? Maybe it's a separate panel that can be loaded into a popup? Maybe in another tab next to broadcaster map and script watch table? That way metering can be disabled if the tab isn't open.
2. Modulator Value and Target Metering
Next up are the modulators. Modulating a non-linear parameter (like filter frequency, AHDSR values etc) comes down to "eyeballing it". We have no direct info on the skew factors for the knobs and as such cannot precisely specify the targets. I understand that the skew behavior on these cannot be changed without retroactively messing up existing projects (other than maybe making the current skew default and allowing it to be changed).
When it's linear, it's pretty easy to know what the final output is.
It would also be great to have these values displayed somewhere. Perhaps the "current value" bar could display the float of the modulator output.
Ideally, it would also display the value of the parent/target, so if the modular is modulating gain, it would show the current gain reduction along with the current float value of the modulator. If it's modulating the attack of a table envelope, it would show the current attack time.
3. Modulation Intensity Issue
Correct me if I'm wrong here, but the actual modulation intensity slider cannot be accurately set othan than through scripting. There's no value entry on double click or any key modifier combination. And if you ever attempted to use a modulator on a full-spectrum filter frequency knob, you knob how much of a pain in the ass its logarithmic response is.
-
@aaronventure said in Signal Value Clarity UI Pass:
It would be great to see peak values for each generator, as well as the master peak. I have no design recommendations for this.
Good suggestion but why not just put them on the routing matrix popup? It already implements the logic of deactivating the value collection when the editor isn't open so we get that basically for free. I can add a max value + current average
We have no direct info on the skew factors for the knobs and as such cannot precisely specify the targets
If you hover over the plotter it should show you the value which also factors in the input range defined by the slider
Ideally, it would also display the value of the parent/target, so if the modular is modulating gain, it would show the current gain reduction along with the current float value of the modulator. If it's modulating the attack of a table envelope, it would show the current attack time.
There's no value entry on double click or any key modifier combination.
yes, good ideas to both, the processor editors are quite old so they deserve a little bit of love. Displaying the modulator value is a bit more complicated than the peak though because it changes faster and is bidirectional (so for the peak display you can simply use a smoothing algorithm with fast up and slow down times, but that doesn't represent the mod value well).
-
@Christoph-Hart said in Signal Value Clarity UI Pass:
Good suggestion but why not just put them on the routing matrix popup? It already implements the logic of deactivating the value collection when the editor isn't open so we get that basically for free. I can add a max value + current average
Alright, then we can drag it to where we like.
I still think that a peak display tab / panel like the broadcaster map would be very useful for a broader overview.
For the master, it should always be up there in the right corner. Maybe right click to disable? Or a small tiny icon right next to it.
Btw. I wrote the post before I tried what I typed out, and I realized that there's no real way to do true peak metering from my end. Even if I do a timer, the accuracy is too low and I can't check the buffer for the max. So there's the buffer class but I have not fiddled with it yet.
@Christoph-Hart said in Signal Value Clarity UI Pass:
f you hover over the plotter it should show you the value which also factors in the input range defined by the slider
Add a table envelope. Set you attack 50 ms. Then set up a modifier so that its 0 return equals the attack at 5ms.
How are you going to do this? It's not 0.1 of the value, the modulator return scales down the current value of the knob in alpha, not the actual values, which are skewed.
-
@aaronventure said in Signal Value Clarity UI Pass:
How are you going to do this?
Scriptnode is the default answer for all of these questions, but then scriptnode needs to have all the default modulators available as nodes without me having to rebuild them from scratch.
-
@Christoph-Hart said in Signal Value Clarity UI Pass:
Displaying the modulator value is a bit more complicated than the peak though because it changes faster and is bidirectional (so for the peak display you can simply use a smoothing algorithm with fast up and slow down times, but that doesn't represent the mod value well).
Maybe it's a a good idea to have a refresh rate like the script watch table. right click to choose refresh rate from a few offered options.
-
@aaronventure Alright, I've implemented a few of those things:
- the routing matrix does show the peak volume as decibel text. You can right click and toggle "hold" mode, where it displays the maximum peak or the current one.
- The modulator intensity slider has now also a text label that should display the current modulation value. I could reuse the logic for the table popup label, which already tries to convert the mod value to the appropriate domain
- I've added a voice start plotter that somehow resembles what you proposed, although I have no idea how useful it is (the genesis of this was a little bit like taking numbers and C++ keywords and throwing it against the wall until something sticks), so please give me some feedback if you're actually using it.
but then scriptnode needs to have all the default modulators available as nodes without me having to rebuild them from scratch.
Yes, good point. I've spent the last days reproducing the most interesting HISE modules as thoroughly documented scriptnode networks so you can load and modify them to your likings (also I've added lots of QOL nodes along the process, like a
container.branch
that lets you dynamically route the input into a single child node which is super useful ).https://github.com/christophhart/hise_tutorial/tree/master/ScriptnodeHiseModules
In order to increase the accessibility and learning effect, I've included a simple network that implements the core idea and then the full 1:1 representation with the gritty details and hacks.
It currently contains the LFO, the Table Envelope and the Harmonic filter, but let me know what other modules you would see as scriptnode network.