HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. HISEnberg
    3. Posts
    • Profile
    • Following 0
    • Followers 6
    • Topics 80
    • Posts 930
    • Groups 1

    Posts

    Recent Best Controversial
    • RE: Issue creating a c++ script fx node with multiples .h files

      @Papours Nice glad you solved this!

      posted in Scripting
      HISEnbergH
      HISEnberg
    • RE: Issue creating a c++ script fx node with multiples .h files

      @Papours Hmm maybe try running the HISE project directly in VS.

      So go through this whole procedure, but instead of compiling the Standalone in HISE, go to Project Name/Binaries/Builds/VisualSudio2022 and launch the project directly from there.

      You can get a lot more useful information from the compiler that way.

      posted in Scripting
      HISEnbergH
      HISEnberg
    • RE: Issue creating a c++ script fx node with multiples .h files

      @Papours Sorry I missed your reply.

      Have you tried using an absolute instead of a relative path here:

      #include "src/test_filter.h"

      I've noticed that VS can be kind of finicky about paths sometimes. So in this case for windows it will look like:

      ("C:\\path\\to\\file\\src\test_filter.h")

      This isn't an ideal solution but it might help solving if the compiler is failing to find the file or not....

      posted in Scripting
      HISEnbergH
      HISEnberg
    • Preset Display Bar - Display your preset, Previous & Next Buttons, etc.

      Dug up this old script which I am going to modify for my own uses but I thought it might be helpful for some beginners or at the very least a time saver for others.

      It's a very simple preset display bar (a lot of this looks like it was taken from David's videos, which is a good place to start). The script includes:

      • Preset Name Display: Display the preset name in a panel
      • Open/Close Preset Browser
      • Previous and Next Buttons
      • A few LAFs and Paint Routines some may find valuable.

      It's not much to look at but hopefully useful for someone!

      ScreenRecording2025-11-15at8.45.48AM-ezgif.com-video-to-gif-converter.gif

      Snippet
      HiseSnippet 3016.3ocyZrsaabbcorW2R0jlDz7PebCQPAUBixRRQa4ZXTck1BURlUT1wAFBFC2cH4TsbGhcWJa0DCz+fluf9Ozel9bepO225iomyL6kYuPxkLN.cW.ItyYNWmybNm4ROOtE02m6oUYyKucJUqxGn2+V2fwGNlvb0N4HsJ+J8ddTeZvADOsCtcJw2mZqUoxcdB1gJUuql34+7GNf3PbsnIMoo8BNyhdJaBKHo0d68GYNNcI1zKYST58N6chE28PtCeFHL2Q2TaJw5ZxH54Draanq8Th+XsJeg982cf4Cd3vcG1hRGLv5gDayNTp08ICF7.SRyV1Co6Z2ocasJ26XaV.2qe.If5CD8.t8s8GyeiqjAuf4yF3PwOZp0G3rrYsCGybr6EYY70zpb2dI1o6HsSep9YLaVb6I1qOV.vHACUiVkMVjH0bEDoJJhzckhzmn22xiMMHAhb76D2.p2PBL1nJJx9pswe+yzOjC8vMX6Ijqoc8fOhwn9NllMLZaZt0i1bSX7wOv3Fhmgkavqi8JLdrQDAFQCNjOYJ2E9ndsT8pFPgBIfG+M9zRQDYOqkVTFD3FB+b5aClKYR2szBSBL3u2TBRfcKMIl55DB6Hl+TGxsykJ45YZBcs6fPvBWDjFdbm4Rsh6dFSzojggc50GLKH.ZWgdVdT.wS4VDmS47q220tKk5TGofKLyyGlERMhGE2761r5W+0FOt3GEXFce94Gd4IO679F4fU.dLWGlK0X3LWq.F20HfOZjCUxVTRgIWTu5L+mMk5t0lUAov.dX9wvP.fVI6wijfy45r8PHrSh0S14FFCCCFsUHd4Fh11iNE3R.ZUp9tMEpRzHygDGmAPjJ+MERTF8f6l1wKDq5VQBQCXDxYFcKA1em3uB5LrtR63S0icGAjdaGNwFozyA8QR25CIN9nvicCjtkIGn266G4.oDiOye9xR07BRwtrEHIQixNnuog0LOO.pDSXjNTLvoCRHIBAlwndzfIanQ8L39XiZ01RBMjEEOpi5Ss.LbQizrOh1uS9OJnxuGIWob+NwkEvHNr+BUwCrZZmssCm7.l2n9TeNNjHkS6grLjU7hPjKdTsXhTbewHNnls+zoN2Zb59cKRcxEmJershUkxgnP.B+byp46BLRLh4C4F6F5OWulsG4MWJhVI6CL3F4rWeTCC9f+bhmrHyG2CBWcAwlMCCCuCxTDFv39ybuFhhgVoQd7Yt1Idv.Y11FpRHua6HT6dhGPOvepKTZU8WY91tca0AeE7eaBDh+UlWo7QyqZjPgBdPJz1DemOEL9xjuZeEFEElFbUASMhU.9MTuRq.M2Ee+on.sZiuuGTfxJxlCw2eJhbSB99STjGs8PPjt.cfn1WPsBHtf2Y8HDajxEbKE+uSbwvi9iIfmVDoF.N7tmRtEx9F3MKNEYgVf6aJeVGKf4aMWJ1f1uaVcdNJ6qTnAfVyrzQsgVWY7UFsZnZYwFtJsgBZpYBSGQl46yHtG3Lyqdqj1ot1Rikpc8INPQ2FzgCAwaI1ULBwHr6OkxFMFyyoJUegg416rnQfVc5JdVyQfkhMX4Tjt0arnUVJ1J6XwNMT4R9wgVyYbn4RFG12CJCzvO3VnjjQoishglL99u2XIwYkKOsNNU8nCw2RGsPAy86dXqCeXBlwx2QPpDCBJj9J4Kn3ZwdopmfYp3.fI6qMZ8nrX7spXjMxQFLD7rOVKgRBoHSCyVTwT1U+TfZhoBOEJJqdjL+kITtQrh7U4a7aKrwFFM2tSjYZNb3qJhCeYgDKhUofpvgEODt9bds0sRa8Jkt8tnxad7BdTW.Wu8O47KMt3YO+xSN+3xrJNYGD83EDOFYfCE7iSVF527zSt7XvCSjpT77HUvO6h8O+IQvO7A3K.GJ3Jd8Y.rVBjvFY9OEmzRAuSYXn31ytlvPnBAqGVGsADhJ.5fuwuy3LX4KoJgN0lVfybEnDhQ8jR6RWU2.LnGVOWvXlOtnDQ8lGHZstoZz8L0+sqR7oChK7yXTXf8EDqGpPqC91Hj4hX0g+bww4SpynHLAmnvemuBi4DgW1+4WXw4bFXjwk9LyitzJKH11BDpqLArFwY5XRseOj.zrihtUaB2kaM1iOgDvr.3HoTg6CCCztDq.tm.6G1IbFwRxUTTsPELHzItnkUcPvbgXhknb+xleMl.xjopDo0hq4LrqQYciG2wOKNuarA5R9TiwP9YGLG8BrPsMiJpX0sPKBSP4VKCTyLV4xaf.S6NEWTXxLXNrDvIkxtrTsScvX2EYmZ1orT58f8RUpZuR1tVK014YS87ULYJ0L0wDeSjaLYYoBC0PspcUZ1Nb92Rn46OeGUKWQ1hPIUlmtvcOpTYhHqQRncTAs56yVY1.iLokW48wPtTDwJXRs6DIsiE+ThMhHttgUdmHxJBQ6uvpHBq5VIjkmQItKKOmyL7B1D.kLeP6f2JNarnIN6VxINIK8NYM2IK1lrrIBueV87ptr4z1ayBZe8VBbxZeSVz6Oyq1UZ2hSEYf6CeQim6DlHpjpP6XUncrJ.IhalWvaWbf2l432B8e5jxMGHamX11zrP9l0A5R7bAs.16M2vQ3R+WVfgetW6OeJtwCxEvkYo4uT3IaJMBRUuS1ku+sh9jXnV3J7qlYImgbI0hKks0Hh5xYsxeKbeUVdYNJEgc5EjphsJUkTJ1TDl5AWtPhBfesuGEyt8J0IoQQT5HCobkpKWWNdDoCg+VCJ+vbkOQHoZsOL8wkZidQ0qcDcHYlCRuHApgQMb02feSsxuSBpzLknrL5tfpCDqjM9TVhKOfdCPEkiLETdQSaa4vrttHu8hO60OKaFbkMuPTug5gToXERX33h2+e0ExiAyKIcKz5VzlBrLhglz2soxATdNOf9L25agm0M.wHKngCKDV3wX4fggK.LtAFdKBw5tylLf5Ee7mgcTqxcSekQtW4txHVxy2WoibW7PCwwN42c4N13UAA+c9KXhV3ED.upIgRHz0.wEM4WGdQS56vfhDzX.Q9s5EepdZBsQ8RAo87SNhDPhnqv0mOk5EvPsqxQzaXVT4EZop9QT+qC3SANGer8fEPJEeXz0cg3RcDBwGomZ2azdqJeuU8i2vrCFqUQuxOTQSarHyK9UW.TJVsYZEVdDeBd8w5oOcREl8ulsmBy978hYVKMUlge4StgdhqjJ3kxYJAiEnH.YUIl+Y7I.DhGvhJaLQLoelm3Z.8o583fyMyczSIt1gspsxZCt+tpltO++S0lpyyM32nmK.op9b9bzmZUxpOPvT9ah2aPzJcHFzD22PQbFskpfXzbXFrduVoD8ew7E8bWZk44E+W+S6MGu3+M.8lnnBUtCNOKlyePP3sWSx4tNbBZhujA8UNERsol4XtdkEL8AYbNSRQpT3De4r7OROMvAihtEfUuGPv+KxPV.cRRq+ie7G9wzs1JryhGQ3kM9mani2ikZXDv9fiY3wyGsEggPN9sSIt9PfX+8g7aNylf8Pj5HtKh3jdEiNlPvOGMg30gWX.UPIMCoP.8EfAUvFgz911EyhKn38vpXXGQcnAyAVeJwyZLdy6T.zkbC2CLa3csLVJRDBUvoPaliSORv3H39oLRg55IfczlJ2FmTvOe1DooEQqsnI42eC5FcA3swA.uRbmgL2tclmFqX6PyWI3woLeQkTw5YHGZTz+hwRJYWveSOhsMLMnr3Eatk62BhlDvYbuvQnrPR7JyBIxNmC5luKUbj6s54imWNwK2aBIA1d+s8Thfnk+tl9w5mwsm4PBRe0WwKEbH.XNUp6aJdmRAOjfaUuzvqv8g0bg2G1xJhehdOVf03hkwMJPFgBB94PFCuEwen9whM1HQ.uqd2WttWY3kvd4VGN5LRfGCFp0g4k8gXmVTf6tPFHeLF9FXoexuMiB22m5ZK93GgmPfMwuqDBrYDPsIDKO9qsjNa38T9WJZAjIWw83tp9Y32FMyWX3DlM60VVoIUNDastH1dcQbm0EwNqKh2ecQ7AqKh6tbDwa099yBDmzFLsQS6rdGKxzVoxwt3g8J7V09ecu4xY.
      
      Code
      Content.makeFrontInterface(400, 300);
      
      const var cnt_PresetBar = Content.getComponent("cnt_PresetBar");
      const var cnt_PresetBrowser = Content.getComponent("cnt_PresetBrowser");
      
      const var btn_PresetNext = Content.getComponent("btn_PresetNext");
      const var btn_PresetPrev = Content.getComponent("btn_PresetPrev");
      const var pnl_PresetDisplay = Content.getComponent("pnl_PresetDisplay");
      const var knb_PresetStateControl = Content.getComponent("knb_PresetStateControl");
      
      const var Laf_Preset_Buttons = Content.createLocalLookAndFeel();
      
      namespace PresetBar
      {
      	// =======================
      	// ====== FUNCTIONS ======
      	// =======================
      	inline function togglePresetContainer(isOpen)
      	{
      	    isContainerOpen = isOpen;
      	    cnt_PresetBrowser.fadeComponent(isOpen, fadeTime);
      	    pnl_PresetDisplay.repaint();
      	}
      
      	// Control Callbacks
          inline function onbtn_PresetNextControl(component, value)
          {
              if(value)
              	Engine.loadNextUserPreset(false);
          }
      
          inline function onbtn_PresetPrevControl(component, value)
          {
              if(value)
              	Engine.loadPreviousUserPreset(false);
          }
      
      	inline function onknb_PresetStateControl(component, value)
      	{
      	    local currentPreset = Engine.getCurrentUserPresetName();
      	    if (currentPreset == "")
      	    {
      	        pnl_PresetDisplay.set("text", currentPreset);
      	    }
      	    else
      	    {
      	        pnl_PresetDisplay.set("text", currentPreset);
      	    }
      	    pnl_PresetDisplay.repaint();
      	}
      
      	// Initialize Callbacks
      	btn_PresetNext.setControlCallback(onbtn_PresetNextControl);
      	btn_PresetPrev.setControlCallback(onbtn_PresetPrevControl);
      	knb_PresetStateControl.setControlCallback(onknb_PresetStateControl);
      
      	// Apply LAF
      	btn_PresetNext.setLocalLookAndFeel(Laf_Preset_Buttons);
      	btn_PresetPrev.setLocalLookAndFeel(Laf_Preset_Buttons);
      
      	// Buttons
      	Laf_Preset_Buttons.registerFunction("drawToggleButton", function(g, obj)
      	{
      	    var cornerRadius = 4;
      
      	    // Sunken background
      	    if (obj.down)
      	    {
      	        g.setGradientFill([0xFF252525, obj.area[0], obj.area[1],
      	                           0xFF303030, obj.area[0], obj.area[1] + obj.area[3], false]);
      	    }
      	    else if (obj.over)
      	    {
      	        g.setGradientFill([0xFF181818, obj.area[0], obj.area[1],
      	                           0xFF232323, obj.area[0], obj.area[1] + obj.area[3], false]);
      	    }
      	    else
      	    {
      	        g.setGradientFill([0xFF0f0f0f, obj.area[0], obj.area[1],
      	                           0xFF1a1a1a, obj.area[0], obj.area[1] + obj.area[3], false]);
      	    }
      	    g.fillRoundedRectangle(obj.area, cornerRadius);
      
      	    // Inset shadow
      	    g.beginLayer(true);
      	    g.setGradientFill([0x60000000, obj.area[0], obj.area[1],
      	                       0x00000000, obj.area[0], obj.area[1] + 8, false]);
      	    g.fillRoundedRectangle([obj.area[0] + 1, obj.area[1] + 1, obj.area[2] - 2, obj.area[3] - 2], cornerRadius - 1);
      	    g.gaussianBlur(2);
      	    g.endLayer();
      
      	    // Glass effect
      	    g.beginLayer(true);
      	    var glassHeight = obj.area[3] * 0.4;
      	    g.setGradientFill([0x25FFFFFF, obj.area[0], obj.area[1],
      	                       0x05FFFFFF, obj.area[0], obj.area[1] + glassHeight, false]);
      	    g.fillRoundedRectangle([obj.area[0] + 2, obj.area[1] + 2, obj.area[2] - 4, glassHeight], cornerRadius - 2);
      	    g.gaussianBlur(1);
      	    g.endLayer();
      
      	    // Arrow styling
      	    if (obj.over || obj.down)
      	    {
      	        g.setColour(0xFFDCDCDC);
      	    }
      	    else
      	    {
      	        g.setColour(0xFFAFC2C9);
      	    }
      
      	    // Draw arrows
      	    var centerX = obj.area[0] + obj.area[2] / 2;
      	    var centerY = obj.area[1] + obj.area[3] / 2;
      	    var arrowSize = 4;
      
      	    if (obj.id == "btn_PresetPrev")
      	    {
      	        g.drawLine(centerX + arrowSize, centerX - arrowSize, centerY - arrowSize, centerY, 1.5);
      	        g.drawLine(centerX - arrowSize, centerX + arrowSize, centerY, centerY + arrowSize, 1.5);
      	    }
      	    else
      	    {
      	        g.drawLine(centerX - arrowSize, centerX + arrowSize, centerY - arrowSize, centerY, 1.5);
      	        g.drawLine(centerX + arrowSize, centerX - arrowSize, centerY, centerY + arrowSize, 1.5);
      	    }
      	});
      
      	// ============================
      	// ====== PAINT ROUTINES ======
      	// ============================
      
      	// Variables
      	const var WHITE = 0xFF000000;
      	const var ORANGE = 0xFFC7C7C7;
      	reg fadeTime = 200;
      	reg isHovered = false;
      	reg isContainerOpen = false;
      
      	// Paint Routines & Mouse Callbacks
      	cnt_PresetBar.setPaintRoutine(function(g)
      	{
      	    var bounds = this.getLocalBounds(0);
      	    var cornerRadius = 8;
      
      	    // Background gradient
      	    g.setGradientFill([0xFF353535, bounds[0], bounds[1],
      	                       0xFF1a1a1a, bounds[0], bounds[1] + bounds[3], false]);
      	    g.fillRoundedRectangle(bounds, cornerRadius);
      
      	    // Noise texture
      	    g.beginLayer(true);
      	    g.addNoise({
      	        "alpha": 0.05,
      	        "monochromatic": true,
      	        "scaleFactor": 0.95
      	    });
      	    g.endLayer();
      
      	    // Inset shadow
      	    g.setGradientFill([0x50000000, bounds[0], bounds[1],
      	                       0x00000000, bounds[0], bounds[1] + 16, false]);
      	    g.fillRoundedRectangle([bounds[0] + 2, bounds[1] + 2,
      	                           bounds[2] - 4, bounds[3] - 4], cornerRadius - 2);
      
      	    // Top highlight
      	    g.setGradientFill([0x30FFFFFF, bounds[0], bounds[1],
      	                       0x00FFFFFF, bounds[0], bounds[1] + 6, false]);
      	    g.fillRoundedRectangle([bounds[0] + 1, bounds[1] + 1,
      	                           bounds[2] - 2, 4], cornerRadius - 1);
      
      	    // Bottom highlight
      	    g.setGradientFill([0x00FFFFFF, bounds[0], bounds[1] + bounds[3] - 8,
      	                       0x15FFFFFF, bounds[0], bounds[1] + bounds[3], false]);
      	    g.fillRoundedRectangle([bounds[0] + 1, bounds[1] + bounds[3] - 3,
      	                           bounds[2] - 2, 2], cornerRadius - 1);
      
      	    // Borders
      	    g.setColour(0xFF505050);
      	    g.drawRoundedRectangle(bounds, cornerRadius, 1);
      	    g.setColour(0x30000000);
      	    g.drawRoundedRectangle([bounds[0] + 1, bounds[1] + 1,
      	                           bounds[2] - 2, bounds[3] - 2], cornerRadius - 1, 1);
      	});
      
      	pnl_PresetDisplay.setPaintRoutine(function(g)
      	{
      	    var a = this.getLocalBounds(0);
      	    var cornerRadius = 4;
      	    var currentPreset = Engine.getCurrentUserPresetName();
      
      	    // Sunken background
      	    if (isContainerOpen)
      	    {
      	        g.setGradientFill([0xFF252525, a[0], a[1], 0xFF303030, a[0], a[1] + a[3], false]);
      	    }
      	    else if (isHovered)
      	    {
      	        g.setGradientFill([0xFF181818, a[0], a[1], 0xFF232323, a[0], a[1] + a[3], false]);
      	    }
      	    else
      	    {
      	        g.setGradientFill([0xFF0f0f0f, a[0], a[1], 0xFF1a1a1a, a[0], a[1] + a[3], false]);
      	    }
      	    g.fillRoundedRectangle(a, cornerRadius);
      
      
      	    // Inner border
      	    g.setColour(0x80000000);
      	    g.drawRoundedRectangle([a[0] + 1, a[1] + 1, a[2] - 2, a[3] - 2], cornerRadius - 1, 1);
      
      	    // Glass effect
      	    g.beginLayer(true);
      	    var glassHeight = a[3] * 0.4;
      	    g.setGradientFill([0x25FFFFFF, a[0], a[1], 0x05FFFFFF, a[0], a[1] + glassHeight, false]);
      	    g.fillRoundedRectangle([a[0] + 2, a[1] + 2, a[2] - 4, glassHeight], cornerRadius - 2);
      	    g.gaussianBlur(1);
      	    g.endLayer();
      
      	    // Glass highlight line
      	    g.setColour(0x40FFFFFF);
      	    g.fillRoundedRectangle([a[0] + 3, a[1] + 3, a[2] - 6, 1], cornerRadius - 3);
      	    g.setColour(0x10FFFFFF);
      	    g.drawRoundedRectangle([a[0] + 5, a[1] + a[3] - 5, a[2] - 10, 1], cornerRadius - 1, 1);
      
      	    // Text color
      	    if (isContainerOpen || isHovered)
      	    {
      	        g.setColour(0xFFDCDCDC);
      	    }
      	    else
      	    {
      	        g.setColour(0xFFAFC2C9);
      	    }
      
      	    // Dropdown arrow
      	    var arrowX = a[0] + a[2] - 15;
      	    var arrowY = a[1] + a[3] / 2;
      	    var arrowSize = 4;
      	    g.drawLine(arrowX - arrowSize, arrowX, arrowY - 2, arrowY + 2, 1.5);
      	    g.drawLine(arrowX, arrowX + arrowSize, arrowY + 2, arrowY - 2, 1.5);
      
      	    // Preset text
      	    var textArea = [a[0], a[1], a[2] - 25, a[3]];
      	    g.setFont("font", 20);
      	    if (currentPreset == "")
      	    {
      	        g.drawAlignedText("Default", textArea, "centred");
      	    }
      	    else
      	    {
      	        g.drawAlignedText(currentPreset, textArea, "centred");
      	    }
      	});
      
      	pnl_PresetDisplay.setMouseCallback(function(event)
      	{
      	    if (event.clicked)
      	    {
      	        togglePresetContainer(!isContainerOpen);
      	        this.repaint();
      	    }
      	    if (event.hover)
      	    {
      	        isHovered = true;
      	        this.repaint();
      	    }
      	    else
      	    {
      	        isHovered = false;
      	        this.repaint();
      	    }
      	});
      }
      
      posted in Snippet Waiting Room preset browser preset button
      HISEnbergH
      HISEnberg
    • RE: Dynamic reassignment of effect slots

      😲

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Stock Table Upgrade?

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

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Stock Table Upgrade?

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

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Dynamic reassignment of effect slots

      @ustk Also I don't need to worry about being kicked off the forum, I know David will protect me.

      Frame_214-removebg-preview.png

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Dynamic reassignment of effect slots

      @ustk Those are the kinds of biceps you can only get by writing enough Hisescript...

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Dynamic reassignment of effect slots

      @ustk 😆

      Just trying to get his attention so we can finally have another HISE Meetup.

      If it's too audacious of me @Christoph-Hart I can remove the photo, just gave me a good laugh....

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Dynamic reassignment of effect slots

      @ustk Nice ya I shouldn't have used AI for that it was actually simple enough. I think it's time I get a new T-Shirt :)

      Frame_214-removebg-preview.png

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Dynamic reassignment of effect slots

      I'm bumping up against an issue I can't solve in this snippet. How do you filter the list of effects so only certain ones can be rearranged?

      In my case I may have certain effects like Routing Matrices, or Input and Output Gains that I want in fixed places (beginning and end of chain).

      **Edit I did resolve this with some back and forth with AI. I think someone can come up with a cleaner solution since it should hypothetically be fairly simple to filter the list of effects.

      What A(I) did was make edits to the make() and onChange() functions.

      On make() I manually created the Fx List and added a startIndex and endIndex. Then in onChange I you just need to offset the indices (add startIndex) so setEffectChainOrder() get's the right positions.

      I'll spare the forum some AI slop but here is a sloppy HISE snippet in case anyone needs it and no better solutions present themselves!

      HiseSnippet 3356.3oc4ZrzbabadokXhIyilzISaNhvoMyJKZZR4GwItJRzRhxrUxVURwwcT03AbWPxsd4hs6BpGoUyzi8VOma8uQukC8XNzYx0dno8T6o9On86C.6tXIWIqH6jFmROdnvGvG9d+..bqHtCKNlGYUp5tGGxrJ8pk243.wvUFR8Br5tJ.u7pQzA6xhEV283PZbLy0pToYVGmuTkYsje92KcWpOMvgkAxx5gbOG1Fdi7DYP2Z4elmueGpKaWuQFq9FK20gGrB2mOF3kYJ2zJj57D5.18o3xtTYq6QiGZU5Jku0s6078d+92t+BLVudNuO0s4MYLmaQ6068ZRasfae1scu40utUoWZMWOAOZGAUvhsJM6c4tGuyP9gAJB7PuXud9LbPKqc.Jq.2g66hhHB0Zkgd9taknjhsrJUdqLU1LJU1aUdSOWuT3Ypt2PNAICCSEXoKkm8lIG60xj8ZZvdEvRkLXoYUrzaVdGmHuPQ1LH+7Jk6FHXQ8ofcxjUTq05RW5sKuBGVQfnwH5SXchfAoXXeilMqSZ0r4b2oZ0pAfYIFLQLRmGg9GCXQU+MUqTsJXEiEjCnQjMau85cuOYQxBMuiA3U2t85OdmsVasUgoZ1n4MMmr8Facu1OtS6U18AaCS2pQtYe3Zaua2UZuALSepeLCYDu.eu.Fo+3.GgGOfvC1BT+B6Ayg7yfFwLgxqxt4Qc5rf7CHAvL8AGwsYNBawPu3FCXhM3NT+6xGG3Fa2bNbQUq3ivHdAtriXw.cSV6Co9iY1y0vwmG.earVZDiBKD2YZv.eVgauR2HogBqXuOgkr8tTAswArHgGNyRozzt1Pl2fghZyQ9.CfG54JFVyjE5wOZG09YK22qRry1XeuXQCeVv.wv4aMG4JZ6zbjqQJbQ422tnl.MbRvR0aGvKwt1FTAuF3ebiFMUp2LEu5q3FGNzSvT7I9u97HaO2i.kah9ctpU.allXB1QhbZDjm1CPXeXGN68uR1lz6zTpnYpQDaD+.zOezt7PasZCzt.9IelXcav5KRWXNRE6kiTwGRCCYtcUR1cRWVjStk4n38T4Ry13hxIVZR4021KdUVevk2ErsyAZLoJSiWHG8Q2jJF1HdDmKFFKXgF1dZf2HJFlTGi7.qkxXkfN0ObHUFUdSx7psg1KtH7AWJXQJbSvRt9P9g1R.0yEKi4LpHY+LenEAU1dM2GEAkLjngPmhES7I1CVTq82WgeEQu8JzZ1BhHZtOY9EkpfqPRLQnXnbukrZwtMdhgsQVVlg3VxO0U5h4znUruXThQqRknbFrzMbZ6rDmjcWgqhBmxF3jesJ+4dfCo6XGvEnkwdbRwZ3VmGMbyyqF9puHpge1TtndE+OCp3P.8qAMcgp0j28cMX6gPdhnT0ehoHKNsXZbhJ5t5SS8E4fAtsTJMcELrfBy0nbSu5jqqiqM2sHGMH2H5gmFV0IKnQcZ1QXtAs88F.4f1ELa1nsqNA2gZNPuCfnUSqQS+PRSsQ+pjQNozTZBYxojQN0ETki7cJNI4zrdsODpYQyy4DsAQp.RrfyOOHQmT8jhZ3.Z3KX.y1gOJDZFH.zEGfcGHa.IOyHgqqqNmtZWJZnpV0VQFnrhwing1Izz9f5pf2TIKhIFGoqiJcnTtHJvRNuZkqcMHFH.U3jHlOjF+.Fh.zidLQvAsPL2erHEVZ+LZ3OHxkEA1t8v.Rn1Mw1S1G.wi7SHlBF.Y940BWNjaDNNdnRGrmGjrlLgbFKnQBU7hjkA8OvvvFvZDFg8zUa6D9li62GPpAahhz+JtWfMXKqIE7IPqchnYfVdNKO5UqLAmEA0R67Hz.sV+9PLirEeIl1xFQqi9L6cphS8IkTVfpwf8kHliU.5WfSF1MgcHMf4WmftC0I88hvuhYP6wtRWMs4BLJxbmxEreZCl8RfqvXeUacF.f4o2QCRgK.oG.QR1hZpAcFjE8GAJu77ScU2.inGMwD6meCyZnPdVf7S5Hiqbw7EQiYoyI0q3oGiraIaAQANhEJa7uXEHOXS93XlM6.vHXntz8ca+Lz38bPyPKj1GcpBW0KVwarjKZbLrap+5HbORvWlzPAWVMQGJUbMFRHMJlAGRyFo20TxyUJtSdYJgSYajlqHYdrhVAT1odwa5UaoCVwximImd0VIQ0ST.cQsVvw2y4If892pGCIqGHcSS0G5ULkFA2l6lc3jhXf7xdlqk9fjJFKkPHo0TAfUn.8NlzwjAlnm7Cl9TixhixPZbBnbQ8SYqpWnnnal9qr3ehTJSkwQX.wGEVjXpUOYcsfynApY+yRWpoj1Pe1AlBLPdEpueOpySrkQlEcdCny9rKNHwonnE9gKJOUyjdHSk4B6+QVTN0wHVvCUoUzdzEK.XYTnCDnZBkHy7Pv9y.kNiL.JMEP5tJIntbLjwS.XBkMAXoC55RnAv+koiI79vjw3WHFLY4kXxw7wjCoABrvLx50knjLK.DZggGwZLk5Du2F6f5lTSUwvHmWnraX087L.auSWaxNPU7KDKzYWCrI7CSrLwXww199jL.IKNMiftBycRANc3urKj0YBnua+TwwKHu1JsTluemi55JqyTaUnz+wHSrCE5ogJ3Q3fUFxiFK4ssAm5nd3eg2LYM4wY.Z0A5lQt6xbanZFCsGP64mprSHW5Dc0MEY1qSefQPFUoJMtlB0QoRX0FxNvdPe45kAJd8Ixa43cPMf7jXSRGUaQvZR65Acwn9Ni8QuLY4Nk4G9eeniWo7jIFSzuFTLtqjmljNvg7RKNAElOqEkzfm51YlbMZ4OkPo8.nfTmnkkJoTIsY.EjzUbhgGTV6R.BpcJySJogIbJ0lNOoko+W+i1P4AdNLY8wsQdK2n6upitILXocr2Wc1s7jQYw5OkHnOBpNNP1xNPpOL2QOuGT.HYLbdi5D6iZLjBa2bjeLYgl2313EwI+NW7kpCTS9VdOvxQ1FA64hfioG.1rshXvHHx.6hJ2ll1QxhoWspI5fQ.vRdbvDHzipoRmXzRgdVY+Uq.hEOxtl7Jg8BFbOvuUACvK2EZUmrWy5M22XCj2aKbvTAHI15qwMk1X9pHteZghjSckt.E4ylVNNc1cyUkIWMGEGnO.UHlh+Dyawdq12eM7BmSula4UiaWaKL0eKLeSxyi.+8dOkrS6mb6mF8kdeNz4efpxGPZxjS0uegyoUH9X4pBlVWH6zQzNX7ndrHyyphKzpzr4eVhxm9yRX9pINp5IFKjGzMvS7fPVvo8VJV5hP3SXn4JXoB4CX7ZIOfApls7bsJc4xJUtkjgsJ88J+S24A2eO7VLqSVXeKqOp6pfScxlA6KPqPzCGEiRqxN.xcodcjJkWkE+Dnbubs5pe.3mJoOx7AqN1bf7r.o.9cGrb9pmH6lq5oEDJAJ2Ry.qVc3hLj+4KaF3hqpj7oyl5UddixaxcwpD4ezIr.ndBvjm6kdvWyIH1Sbr4S28b6knNur3aVdKOgyvh4wKU.OBF0uN3Q8628ZkMNUujAmsbmG80zi0Y99guhh9ubYYyMRJm72lDWBACnwq5JSo71KmNw14bfrdqk6vXtnelAFKe8q+EKk.2DAxu7O72WZC9gaADrSD6WmtO+9uX464METqUWdSuiL8e1kAgPPkHmbNUybt0XsNaClpjv.nGhHjtku+3Q6.0QbXXE.HrDSRU5RX5D03l3XjI1A5ZPN3+.ezS1JIbBmrUxjlNEurxn7JkSSkqe6zrw4d6TETzIVI8+wO8S+xk9XlnMb9p.goJAhmy+p4fyHOVLIrmaZthdX3BiG+gkyjBxyRliYOegEm8Sr++HC9kKqJWK0HoCLUAaCBoV5+rO+y+qK8w4x4CpijnqLX+skTgyeWHvnhRO85k2waTnOS0RiVaoGjSaw4ivGHJKr3etzpzQg.GmkQ5efQJa.H6m.6K+j+7RqFcrIrOa8u7ekSYK2KHoD6SXf2pAE9Su3pcub5O+Fo1c8jXyWRVN+L9o2.Ijy6hYYMgi4uX4B9w4zU9R.aw8oQSVp84V9mYO28Cfhz2Bx7bN42uupH8KRLrzk3EGF9MvNt++uRQudZuGvYfkmsWpM9AxwjOFNU.YcFbNeTY05LxI7WNu+b7BO2+b7dfi.H+tQzf3PdbtMdG1HucgyPEaB7ihYXaiailOS3qvwGrnfofxmfPVHNYcmLYSUSmsZ1yW1pmxuxuY+V2uxuW.N9Wt9Mqjvip5YqAka7giiml+rOcruHAZde4M4A7vg7.OGSC81LHFDu.FSduPApsPjqIr2Z4sY9LpoS6OZ4M.mMZjQ6CeU0EOm589sKqXWBF.Rdw8X6y7c6isaZNKqne0x6HXQLNPSj3updHoyix6NCUxL6Eaply9l2m6Yu55E2N9MQE0uInwHpSD+wNpqsDU9WVBAj6.4uX8Jk2DGSRuuxrfhQP4hG63jeqlBwEtnHd8KJh23hh3MunHdqKJhu2EEwa+zQDql2drfqdPYXAat0ZxaVtTo0BvmASFlX8eAjtAwbG
      
      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: How to Open CSS Debugger?

      @d-healey Ya I saw that too, what does he mean "reset workspace"? Rebuild HISE, close and open the project? Still not showing up for me...

      Nevermind I see it: Top bar go to View > Reset Workspace. Always so many hidden features inside of HISE!

      Thanks David!

      posted in General Questions
      HISEnbergH
      HISEnberg
    • How to Open CSS Debugger?

      The docs say this:

      In order to check the value of each property for individual components, you can right click on any UI component in the Interface designer that has assigned a CSS LookAndFeel and then choose Show CSS debugger in the context menu.

      https://docs.hise.dev/scripting/scripting-api/scriptlookandfeel/index.html#setstylesheet

      But I am not seeing this as an option. Is there some flag you need set in HISE to use it?

      Example from the Mod Matrix Tutorial:
      Screenshot 2025-11-13 at 11.21.16 AM.png

      posted in General Questions css
      HISEnbergH
      HISEnberg
    • RE: Stock Table Upgrade?

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

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Stock Table Upgrade?

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

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Stock Table Upgrade?

      @griffinboy Is it your own custom floating tile or is this something you achieved in HISEscript?

      posted in General Questions
      HISEnbergH
      HISEnberg
    • RE: Issue creating a c++ script fx node with multiples .h files

      @Papours If I am following you correctly, the Binaries folder is the wrong place to store any of your external C++ code. The binary gets rewritten often (each time you compile the FX within HISE), so this is going to lead to issues down the line.

      So let's say you have a dependency file filters.cpp that is included in your C++ node header (let's call it filters.h). You can either create a a new folder or location for the filters.cpp, or even simpler is to place it in: ProjectName\DspNetworks\ThirdParty\src.

      After you do that delete the Binaries folder and recompile your FX nodes.

      posted in Scripting
      HISEnbergH
      HISEnberg
    • RE: Convolution Reverb doesn't work after export in DAW.

      @Yannrog You may need to add Engine.loadAudioFilesIntoPool() if you haven't done this already (this makes sure the audio files are included in the plugin).

      https://docs.hise.dev/scripting/scripting-api/engine/index.html#loadaudiofilesintopool

      What issue are you experiencing precisely?

      posted in Newbie League
      HISEnbergH
      HISEnberg
    • RE: A way to have a non-transparent click-through panel?

      @DanH I believe the setZLevel is what you need here.

      posted in General Questions
      HISEnbergH
      HISEnberg