@Papours Nice glad you solved this!
Posts
-
RE: Issue creating a c++ script fx node with multiples .h filesposted in Scripting
-
RE: Issue creating a c++ script fx node with multiples .h filesposted in Scripting
@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.
-
RE: Issue creating a c++ script fx node with multiples .h filesposted in Scripting
@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....
-
Preset Display Bar - Display your preset, Previous & Next Buttons, etc.posted in Snippet Waiting Room
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!

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(); } }); } -
RE: Stock Table Upgrade?posted in General Questions
@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. -
RE: Stock Table Upgrade?posted in General Questions
@Christoph-Hart syncStartEnd is missing the boolean in your example!
-
RE: Dynamic reassignment of effect slotsposted in General Questions
@ustk Also I don't need to worry about being kicked off the forum, I know David will protect me.

-
RE: Dynamic reassignment of effect slotsposted in General Questions
@ustk Those are the kinds of biceps you can only get by writing enough Hisescript...
-
RE: Dynamic reassignment of effect slotsposted in General Questions
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....
-
RE: Dynamic reassignment of effect slotsposted in General Questions
@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 :)

-
RE: Dynamic reassignment of effect slotsposted in General Questions
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()andonChange()functions.On
make()I manually created the Fx List and added astartIndexandendIndex. Then in onChange I you just need to offset the indices (addstartIndex) sosetEffectChainOrder()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 -
RE: How to Open CSS Debugger?posted in General Questions
@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!
-
How to Open CSS Debugger?posted in General Questions
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:

-
RE: Stock Table Upgrade?posted in General Questions
@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

-
RE: Stock Table Upgrade?posted in General Questions
@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/
-
RE: Stock Table Upgrade?posted in General Questions
@griffinboy Is it your own custom floating tile or is this something you achieved in HISEscript?
-
RE: Issue creating a c++ script fx node with multiples .h filesposted in Scripting
@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.cppthat is included in your C++ node header (let's call itfilters.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.
-
RE: Convolution Reverb doesn't work after export in DAW.posted in Newbie League
@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?

