@aaronventure Thanks!
This is great! What a useful feature.

Posts
-
RE: Is there a way to search all included .js files?
-
Is there a way to search all included .js files?
I seem to be using a lot of .js files and so I'm just checking to see if there is a way to search terms in all of them at once, rather than switching tabs and performing the same search on each one.
-
RE: Is there a guide for the SVG to path converter?
@d-healey Thanks, I think the
ScriptPanel.setMouseCursor(var pathIcon, var colour, var hitPoint)
only accepts paths though.
That is the only reason I am converting the SVG glyphs to paths.
-
RE: How can I efficiently remove a key from an object?
So this works but it's just a little clunky:
var testObject = {"testKey1": "testValue1", "testKey2": "testValue2"}; // removes a key from an object, but just be aware that it does not edit the object in place // you must use the new object made here to replace the original inline function objectRemoveKey(obj, keyToRemove) { local newObj = {}; for (key in obj) { if (key != keyToRemove) { newObj[key] = obj[key]; } } return newObj; } var testRemove = objectRemoveKey(testObject, "testKey1"); Console.print(trace(testRemove));
-
RE: Is there a guide for the SVG to path converter?
@d-healey Oop! Sorry I forgot to add this image:
Under the question "What are these different path options?".
They are the path options for the SVG to path converter. -
How can I efficiently remove a key from an object?
"delete" does not work as expected:
There are some methods to iterate over the keys in the object and remove one and return a copy of the original, but that seems a little excessive and painful for that task at hand. Is there something simple like "delete"?
-
Is there a guide for the SVG to path converter?
I can't seem to find much info in the documentation.
I did find this on David Healey's Youtube but it using a method with JUCE instead of the one in HISE: https://www.youtube.com/watch?v=OHqAijNUabU&t=65s
I am pretty sure there is a newer video, but I don't find it when searching either "svg" or "path" when searching the channel.
Anyway, I am looking to convert a lot of glyphs in SVG format to path as I need to use some of them for the
ScriptPanel.setMouseCursor(var pathIcon, var colour, var hitPoint)
What are these different path options?
Should I be using "HiseScript Path number array" format if I am just using the paths in HISE? -
RE: How do I send 'noteOff' messages from UI Button?
@Chazrox use timeStampSamples = 0
There is also another method depending on how you need to handle noteOn and noteOff.
If you use
Synth.addNoteOn(int channel, int noteNumber, int velocity, int timeStampSamples)
to add your notes I believe it returns the eventId.
With that you can use
Synth.noteOffByEventId(int eventId)
to match notes you made with the first method.
So for example:
local eventId = Synth.addNoteOn(1, 60, 127,0);
Then you can supply that eventId to make the matching noteOff.
-
RE: Adding JSON properties to a component via script?
@ericchesek What is it you are trying to achieve? When you are creating the sliders in a loop, are you appending the index number to each in the name?
Here are some examples of indexing for the ID:// a loop to create sliders inline function createSliders(stringName, numOfSliders) { local sliders = []; for (i = 0; i < numOfSliders; i++) { // this appends the index to the slider name: "stringName + i" local slider = Content.addKnob(stringName + i, 50 + i * 125, 50); // this stores the component object inside an array sliders[i] = slider; slider.set("style", "vertical"); } return sliders; } // call the function to create the sliders const mySliders = createSliders("MySlider", 4); // a separate array for the names ("Id") const mySlidersIdArray = mySliders.map(function(element){return element.getId();}); Console.print("mySlidersIdArray: " + trace(mySlidersIdArray));
So there are multiple ways to use an index as ID to associate with a component.
-
RE: How do I send 'noteOff' messages from UI Button?
@Chazrox said in How do I send 'noteOff' messages from UI Button?:
found this...see if it works...
Synth.noteOffFromUI(int channel, int noteNumber)
I haven't use that one, but this is the one I use and it works for me:
Synth.addNoteOff(int channel, int noteNumber, int timeStampSamples)
-
RE: Just wondering about how this logic condition evaluates
@d-healey said in Just wondering about how this logic condition evaluates:
@VirtualVirgin said in Just wondering about how this logic condition evaluates:
Yes! That is the solution :)
You can probably also get rid of the ternary operator at the end -
? true : false
because the statement itself should return true or false.Yes, that makes sense. It is just evaluating to that anyway, so no need to make it redundant.
-
RE: Just wondering about how this logic condition evaluates
@d-healey said in Just wondering about how this logic condition evaluates:
@VirtualVirgin you need a set of parentheses around the two parts that belong to the && I think
Yes! That is the solution :)
-
Just wondering about how this logic condition evaluates
I was expecting this statement to return "false" as soon as it detects that the "selected" variable is not an array. Instead it moves on to checking if the non-existent array contains a value.
Shouldn't it just return "false" instead of throwing an error?
-
RE: Any particular reason that eval() does not work here?
@d-healey Thank you!
That is going on my list.
I'm keeping a list of methods that are not found in the docs. -
RE: Any particular reason that eval() does not work here?
@d-healey Yes, just trying to turn the string "1.5" into the number 1.5.
-
RE: Any particular reason that eval() does not work here?
@d-healey I was using "getIntValue()" here, but I decided I wanted to accept decimals as numerator to get beat values such as "1.5/4" as opposed having to use "3/8" when representing dotted note values. It would be more human-readable I think,
-
Any particular reason that eval() does not work here?
eval() is not returning a value here.
Does in not work in an inline function or loop?
It works fine in the main code space:
-
RE: I wasted 3 hours on deepseek trying to create Autotune, Reverb and Delay in Hise
@aaronventure said in I wasted 3 hours on deepseek trying to create Autotune, Reverb and Delay in Hise:
@d-healey That's why you should ask Claude with the Context7 MCP installed
Your results are much better than mine!
I have tried Claude with Context7 MCP for HISE and did not get anything significant yet.
Maybe I am doing something wrong.I have been able to improve Gemini output by adding instructions under:
Settings & help -> Saved infoThis way it can remember some things about HISE instead of having to prime every other prompt with rules about inline functions etc.
-
RE: Midi-Out Messages?
@Chazrox You would need to place the your piano roll script in a container on the next level down from your chord generator. Any MIDI that you generate will not be "seen" on that onNoteOn or onNoteOff callback, so you need a new container level to receive it as MIDI input.
-
Out of curiosity, why are external .js files not allowed inside a namespace?
I don't have any namespaces inside the .js file. Logically, why would I not be able to include it?
If I can't, I'll just have to copy its contents into the namespace, which seems to counteract the tidiness of "include" files.