HISE Logo Forum
    • Categories
    • Register
    • Login

    Stock Table Upgrade?

    Scheduled Pinned Locked Moved General Questions
    37 Posts 8 Posters 140 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Oli UllmannO
      Oli Ullmann
      last edited by Oli Ullmann

      @DanH
      @griffinboy
      @HISEnberg
      @ustk
      Please do not change the mouse behavior of the current table (left click, right click, double click, etc.). That would not only break my project but certainly many others as well.

      It would be better to create a new one, a Flex Table, like @Christoph-Hart did with the Flex Envelope. :-)

      DanHD griffinboyG 2 Replies Last reply Reply Quote 3
      • DanHD
        DanH @Oli Ullmann
        last edited by

        @Oli-Ullmann yes backwards compatibility is the main issue here. The table is everywhere in Hise. Perhaps the existing table can have a switch to choose between types of table, 0 for the stock Hise table, 1 for the new 'flex' table or whatever...

        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
        https://dhplugins.com/ | https://dcbreaks.com/
        London, UK

        1 Reply Last reply Reply Quote 0
        • griffinboyG
          griffinboy @Oli Ullmann
          last edited by

          @Oli-Ullmann

          Indeed, that's my thinking. It would be nice for table 2.0!

          Although, I'm likely to do it custom no matter what, as is my preference for high control!

          1 Reply Last reply Reply Quote 0
          • ustkU
            ustk @dannytaurus
            last edited by

            @dannytaurus said in Stock Table Upgrade?:

            I expect we all want slightly different sets of interactions with tables

            Yes that's why I went for panel, if you need more behaviour like smoothing or different cubic/quadratic splines.

            Hise made me an F5 dude, browser just suffers...

            1 Reply Last reply Reply Quote 1
            • HISEnbergH
              HISEnberg @ustk
              last edited by

              @ustk Are you controlling the table with a panel in your case? I didn't know that was possible. If you are then it sounds like the simplest solution for a Table 2.0 just exists in HISEscript + a bit of math.

              This article peaked my interest however!

              https://signalsmith-audio.co.uk/writing/2021/monotonic-smooth-interpolation/

              Sonic Architect && Software Mercenary

              ustkU 2 Replies Last reply Reply Quote 2
              • ustkU
                ustk @HISEnberg
                last edited by

                @HISEnberg You could, but there's no point interfacing a table when your panel addresses everything already. I just send the data to C++ node.
                That being said, the panel is quite a beast...

                Hise made me an F5 dude, browser just suffers...

                griffinboyG 1 Reply Last reply Reply Quote 0
                • griffinboyG
                  griffinboy @ustk
                  last edited by griffinboy

                  @ustk

                  Idk if you have used a different strategy, but the way I'm doing it, is sending only the control points and tensions into c++
                  Since the GUI code only contructs the graph at the resolution it needs to for each segment, there is no point calculating a high resolution graph on the hise side of things.

                  The c++ then constructs the actual modulation shape in high resolution to be used for audio processing.

                  ustkU 1 Reply Last reply Reply Quote 1
                  • ustkU
                    ustk @HISEnberg
                    last edited by

                    @HISEnberg Yep this article is nice. In the end it all depends on the interaction you want with the curve, because there would be as many spline constructions as desired interactions... I needed mine with curve passing through the points, and no possible overshoot on the y axis (when 2 points have same x, it's forbidden for the curve to pass those points (like in standard table) which isn't possible with standard cubic unless all control points are permanently resizing to follow their neighbours

                    Hise made me an F5 dude, browser just suffers...

                    1 Reply Last reply Reply Quote 1
                    • ustkU
                      ustk @griffinboy
                      last edited by ustk

                      @griffinboy Yeah same here 👍
                      I just send the nodes and tension information (called smoothing here) to C++ and build the curve in there...
                      We should have worked together on this lol 😆

                      Hise made me an F5 dude, browser just suffers...

                      griffinboyG 1 Reply Last reply Reply Quote 1
                      • griffinboyG
                        griffinboy @ustk
                        last edited by

                        @ustk

                        haha indeed, we have the same system.

                        HISEnbergH 1 Reply Last reply Reply Quote 0
                        • HISEnbergH
                          HISEnberg @griffinboy
                          last edited by

                          @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 😁

                          Sonic Architect && Software Mercenary

                          ustkU 1 Reply Last reply Reply Quote 2
                          • ustkU
                            ustk @HISEnberg
                            last edited by

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

                            Hise made me an F5 dude, browser just suffers...

                            griffinboyG 1 Reply Last reply Reply Quote 1
                            • griffinboyG
                              griffinboy @ustk
                              last edited by griffinboy

                              @ustk @HISEnberg

                              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

                              1 Reply Last reply Reply Quote 2
                              • ustkU ustk referenced this topic
                              • Oli UllmannO
                                Oli Ullmann
                                last edited by

                                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
                                }
                                

                                i returns 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.

                                Christoph HartC 1 Reply Last reply Reply Quote 0
                                • Christoph HartC
                                  Christoph Hart @Oli Ullmann
                                  last edited by

                                  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?

                                  DanHD 1 Reply Last reply Reply Quote 0
                                  • DanHD
                                    DanH @Christoph Hart
                                    last edited by

                                    @Christoph-Hart https://forum.hise.audio/topic/13439/mouse-cb-drag-resolution?_=1763023869984

                                    DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                    https://dhplugins.com/ | https://dcbreaks.com/
                                    London, UK

                                    Christoph HartC 1 Reply Last reply Reply Quote 0
                                    • Christoph HartC
                                      Christoph Hart @DanH
                                      last edited by

                                      @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.

                                      DanHD 1 Reply Last reply Reply Quote 0
                                      • DanHD
                                        DanH @Christoph Hart
                                        last edited by

                                        @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?

                                        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                        https://dhplugins.com/ | https://dcbreaks.com/
                                        London, UK

                                        Christoph HartC 1 Reply Last reply Reply Quote 1
                                        • Christoph HartC
                                          Christoph Hart @DanH
                                          last edited by Christoph Hart

                                          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

                                          5a142fb0-b8cc-4497-be1e-e313c1dbb748-image.png

                                          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 useMouseWheelForCurve property replaces the compile time constant HISE_USE_MOUSE_WHEEL_FOR_TABLE_CURVE but 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.

                                          HISEnbergH DanHD d.healeyD 3 Replies Last reply Reply Quote 5
                                          • HISEnbergH
                                            HISEnberg @Christoph Hart
                                            last edited by

                                            @Christoph-Hart syncStartEnd is missing the boolean in your example!

                                            Sonic Architect && Software Mercenary

                                            Christoph HartC 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            14

                                            Online

                                            2.0k

                                            Users

                                            12.8k

                                            Topics

                                            111.4k

                                            Posts