Stock Table Upgrade?
-
haha indeed, we have the same system.
-
@griffinboy @ustk Thanks for sharing! I think I am going to build my own system now and we can see who has the smoothest curves

-
@HISEnberg sick! a contest! You have to know mine is as smooth as baby skin...

-
jokingly
If we make this a contest, I'll just be putting my table through my super strong antialiasing resampler. Can't beat antialised tables...That said, we could probably pump out a hell of a table, if we pooled our resources lol
-
U ustk referenced this topic
-
Here's some info for you that I noticed recently:
If you use the content callback of a table as follows:Table.setContentCallback(tableCallback); inline function tableCallback(i) { // Your code }ireturns the index of the point that you control from outside, for example from a panel or a slider.
This was very useful for my use case. -
Another issue is only being able to move points by a pixel at a time. This came up a few weeks ago and is apparently a Juce issue but it's a very poor resolution by modern standards so would love to investigate further.
What's that?
-
-
@DanH ah that looks very fringe, how is that a real problem? I never felt the urge of having a sub-pixel mouse position and while JUCE theoretically has float resolution, it's only used on macOS because the Windows API only returns the pixel position as integer.
-
@Christoph-Hart well accuracy, but really it's about the feel of it. We've been spoilt by much smoother resolutions in other plugins. I also find my ruler line moves in pixels as well?
-
Alright, I've played around with the table component a bit. There was already a function that allowed you to customize the drag behaviour to a certain extend, but I thought it would be super funny to not add any documentation to that thing whatsoever.
https://docs.hise.audio/scripting/scripting-api/scripttable/index.html#setmousehandlingproperties

This can be extended to allow pretty detailed customizations, so any input for more stuff is welcome. Here are the currently supported properties (I'll hold off with the docs for this method until we included all popular requests):
Table1.setMouseHandlingProperties({ margin: 10, // adds a margin around the table so that points at the edges are not cut off fixLeftEdge: 0.5, // sets a normalized fixed y-position for the left edge fixRightEdge: 0.5, // sets a normalized fixed y-position for the right edge syncStartEnd: false, // if true, then the start and end y value will always be in sync endPointSize: 12, // changes the size of the points at the edges dragPointSize: 18, // changes the size of the draggable points midPointSize: 12, // changes the size of the curve node points (default = 0) allowSwap: true, // if true, then points can swap their position when dragged numSteps: 12, // this will enable a grid for snapping to the x-axis snapWidth: 10, // if numSteps > 0 is on, this will define the tolerance for the snapping in pixels useMouseWheelForCurve: false, // if true, it will use the mouse wheel for setting the curve. closePath: false, // if false, it will not create a boxed and filled version of the path (like above) });I've also made a few minor changes (remove that nasty green outline, why???) Note that the
useMouseWheelForCurveproperty replaces the compile time constantHISE_USE_MOUSE_WHEEL_FOR_TABLE_CURVEbut it's not a breaking change because the default value for this property will be picked up by the constant.Any ideas for more customizations are welcome now. Let's do this once right and then not think about that component for another 5 years...
Oh and it's not pushed yet, so you can't try it out yourself yet.
-
@Christoph-Hart syncStartEnd is missing the boolean in your example!
-
@HISEnberg true.
-
@Christoph-Hart are those curve nodes in the example image?
-
@DanH the circle ones, yes, just like with the flex envelope. You can enable them by setting the
midPointSizeproperty to anything > 0. -
@Christoph-Hart ah cool, sorry I missed that on my phone!
-
@Christoph-Hart is there a way to reset a curve to exactly 0.5?
-
@Christoph-Hart any extra dragging resolution?!

And can the ruler move more smoothly too?
-
@Christoph-Hart My only comment is regarding beat/grid-syncing. It seems rather common that you can adjust and create a (wave)shape based on a fixed grid/timeline.
I imagine Shaper Box by Cableguys is the best example of this but there are plenty of plugins that have a similar feature.
Half of this can be done in HiseScript I am sure, but I am picturing the best system for sending the data in this scenario (multiple Tables with a menu of fixed shapes or just one table with fixed shapes to select from)?
Personally I would need to brush up on the Table API because I've always hated it (except that disgusting green box) and haven't used it in ages. Last I remember is it saves the coordinates in a huge array (presumably JSON) and recalls that?
... As I wrote this I realize I am an idiot since you already included a
numSteps and snapWidth, features which should cover the basics of this. The rest about "stored shapes" can be handled on the HISE side. -
This post is deleted!