• Reset All Controls to DEFAULT script?

    Solved
    7
    0 Votes
    7 Posts
    519 Views
    ChazroxC

    @d-healey forehead slap

    Screenshot 2025-03-26 at 8.56.54 AM.png

  • Mouse sensitivity and controlled parameters

    1
    0 Votes
    1 Posts
    164 Views
    No one has replied
  • having trouble triggering each button

    5
    0 Votes
    5 Posts
    442 Views
    D

    @d-healey Thank you so much, this has been a huge help. I’ll keep learning so that I can become someone who helps others someday as well.

  • ComboBox 'restoreState():' - help

    Solved
    4
    0 Votes
    4 Posts
    350 Views
    ChazroxC

    Im marking this as solved but im still not sure what the cause of the problem in the first place even was. Even tho I got it working, im gonna leave this up in case anybody wants to enlighten me.

    Thanks!

  • Connecting broadcasters query

    10
    0 Votes
    10 Posts
    787 Views
    OrvillainO

    @d-healey That's the vid that got me started on broadcasters, and I'm very appreciative of it! So thanks!

  • Easiest Way to Add Shadows?

    Solved
    11
    0 Votes
    11 Posts
    858 Views
    ChazroxC

    @clevername27 No problem! 🙏

  • Store Parametriq eq settings in Combobox.

    Solved
    8
    1 Votes
    8 Posts
    629 Views
    DabDabD

    @Chazrox Excellent. good job bro.

  • Help With SliderPack and CC Control

    26
    0 Votes
    26 Posts
    3k Views
    S

    @d-healey said in Help With SliderPack and CC Control:

    @StephanS said in Help With SliderPack and CC Control:

    how can it work that the slider states stay at the values i selected before and stays in position to each other when i control it via CC.

    This I don't know, because if you are using the current CC value as the starting point, then it's going to be constantly changing.

    I would forget about the sliderpack for now. Just add two knobs to your UI and see if you can get one knob to control the other in the way you want. Once you have that working you can move to the sliderpack version.

    Hi David,

    thank you very much for your help.
    I now have almost everything as it should be. Unfortunately, I can't manage one function. When I move a slider in the pack, the value is passed on to the slider but this must then be saved again. Could you have a look at the snippet?
    And please don't judge me for the horrible code ;)

    HiseSnippet 2650.3oc0Z07baabEGPVHwjsowwMyzdnGPzkRE4Hwkeyp1wThTRkUePVSYm5wiiJHvRwsBDfFXorny3Y7kdN2Zu1Yx8dsG5Eeq+OzSNsoyzdqGZOmtefOVPPBRoXO0hGfDv962a+g26suEXw11wVG55Z6HIm93wCgRxeWkNisv8q2WCYI0rgj7OPoiIx.5zVS+rSpW+jigt3SNGHs83gZttPCIY4arGErbpkkX+922caMSMKcX3kjjdfMRGd.Z.BGd0101GYZtqlA7Xz.AzEp0T21ptso8HhvtgRVogjNW6T3QZTXKoH8y0b6KI+wJ450UOWux4q.pBpVtPU.nXktExlS2nX074Kk2nWtJZkpPH8N6Xfv1NcvZXnqj7xaaaLtSe6mZw6fGfbQcMgzS.RcH8L+x6ZaZPuEoWUpdejoQaeOlqDwJsC8e2f6+9PkCQFnfqG5GuEqA0PFhNP4khJuaDQd.Q4kUPdSQRxBRZYtj9.kN5Nng3vVn546nzzBCc5oQhShRgiUZo8usRcaBBK75CzNCtqC4j.FYJlM6cTKjM6palNMIV4hUOWyQc+i1Fn9yT84cJDW2dvPaKxIYVg13JD7QfmKI34hAOeRvyGCdgjfWHF7hIAuXL3kRBdoXvKmD7xwfWII3UhAuZRvqFCNHahworwIjbfMdjEjXnEDO1BRL3BhGcAIFdAwiufDCvf3QXPhgX.KFqF6WTazgXhGQQeGV9N6Xd1wBriEYGKwNVlcrB6X06viS7+vYC3zAb9.tA.bK.J83HiEoUanR2w1zD5PidrB6zaiCsMFYpQJ2jYEVMIAXQcAGraq.ryxBDLpgfhw+XMRcKQpgylDTOZJFQzI14flM14dyLRval1wzeQBDo2XCU0l8Tw8gp5ZllcI8ppt8.nqZOG6Arqe3VcNlXcaGUKabZZ+gbOrNo25oY5B2jaiNDYQl+QsslEzjX4OYxehx83V2aq81Y15k2tmfoV2SB6eTqs4VNMxxDYAU6MxRGirsTss3X7hTYz8M2cHco4H3po+b1c9FargoM4NU0Qy5TpaO65jDHPtxqmk13gZtjB3pmY0kpt5pOXqCt+NLh9rOrYiljVXmNQFz5tP7VXrCp6HLLyjM1.1SajI9AT03KpMCMM6fmiE6LBxahqUzloS0i3+yfnBdSUj5OkMvYcSn0o39jKr1Zqxv+4AgWNyAHKBEJ1GgdL0MmYExkDGU54MnIfb2NEESjYVkvQ8Sn1HDtuob8A4n9wpGpQxb6YZSRT42WpaPboUHbYsn00MCwHqptZb6n2mFGLxHzD6eddLmhW1lGlmSxMld1COOXkUoRzy+W2KyNyDYIq5k7xJB4CxMnFAj3aP3wBiQ8+2nCSyvljOdFI0ryKezK.aY.uvKPsN6jV8BoPsNO6SUsdeHYDJpmJB+icEGdVea+QnLeVO0LeD0wM8zBLbvvoFwCiBTHOhIkGSPxzbXi9DCxBnnEylIgO5eSkx6Nij1pd2XdzP9Y8bKpq9STWYkMmjLHQxfoPVMjbtDImKYx4Sjb9jIWHQxERlbwDIWLYxkRjbojIWNQxkSlbkDIWIYxUSjb0jICRNECjcNzmSR1bxx.ImlAlSdFH4DMvbxz.ImpAlStFH4jMvzy1R6OZOEqbbZ1TTjhSVr5X9U3Na5EhEJNRJb7buI52Ch4UiG5.cIk93cqaPU0zAkW8qY4lQywQareuQe9BBUxDszmp7w7RRLgoQElG1n0D43We3H29YzDJF5UPiOUjCDOxwxCKSvrG6gnWZQ3ooYMLoGQ3zwJVFJcleJ3wbBmQQcJylveJtjlOIcpzonOmaXOw4DNaE6pagISXQ5TJ1byGKvGa94iMmO1ByGaderEmO1B9XKMerE8wVd9XK4isx7wV1Ga04ishOVP14CtZ.3EHxABBcfEI1ED7.KPzCDD9.KP7CDD.AKPDDDDBAKPLDvChoSkhlTO6m0y+MaldIlHiXXixDFNcjMF1xJCcbCoGRqNYS85M01Beh9o1LcY5bRhXFqQC5BcDF0x.JIubz02RY1quk3xuoycKB.ssZRJ5zZHzZVKJmjmuTRR91dph.EyVIrum2JgwCGRHCI4apveBSIlhCVCxWdRMo.1KyYe6HroEx7r.OR3aAE42mX.CMrlj7iTJUX86c596u1Aic1ubmV+hFOqk8456rlydmUuRc6yexSa8zrZcVqaEqAkQOYusbImipuV4e4V8JONKx3hVeZqhMW627vcOqbGyGd7EsvFGzXs0kjVf6t2QglRF4dqV5e++3tKL2bQ39q6c9Ws3byGg6eXuO5et3bKDgq5u8O+2VbtEip4uv4Rzukhv8Ee3m82Wbtkip4+3e5es3bqDg6qd1+4qWbtUiv8k+2a9WWHtuKK2H6Dh9u7UWBxQyrd0WJ80WBx4tZ2xbx4+1Pdhjq7e4kgbwuMjKMQn5GRRqueyFzZERxxdUtHUyFBcvHZgR4FvyQ5P9B4mRoAz8Lr8PRIofoIHIA7N887Wle5ZTw5yTJdOblzEheJlwhm7TjAtOsnUNxI8gnS6i8OSRnORO+BnB8ApVXe7pQ075C+VeXM+9w+JMqM.YXXBaa6hnSnD1xQ0FncgXUYWLbXGzyfhetIL7BhwVVod8HZ9cWrx1B593ZS22TSVz276HMMzeFmlFzOsSz0uLhJRMqnSZZFQ6sNZmClkDpAmz0gmz08xt05Z6PtutmlAZjqn5QX3.wugV3443WP9VKT.1aNj4lB4eg0mhFcwioytmV4AzDacMSoYEve0cGp4PTjnzBcTQtGRq.JUtb4bjgjSwgO6YzDtS.0R5Novav6jKghyKp3FWGTbAQEez0AEWb9kAdKSwkDU7CuNn3xhJ9ytNn3JBJ9EZWGTbUQerwa4J1+IPEbx8tVHYvrdXm2dkr3zdu3rqERNx7dVWKjr3De0FdsPxhy78hmbsPxhS88Rm++I43a0paoD7V.h67K59iyqAp8E2tUzsTkEoeGK9BMu91NXKInwaw0nB8sU7D1Du2xbE1tNvmLBZoKbQ0ZzMvWyPuVsun1mpcNrmsy.uWa0C4Op1AvSIcjnAOFR7rcFaoKdwNCrsw8QVmFYaARr6A11C2wh90aLDw2tulKcIMcgXwTApYO1lumGpaZSduOANMO0x1AxWlTQR0G4hsG3eCv1rgcHuxYi23Km2kHlCV7XdR4keeV3OHNSSDt7olKuXolIuQJktTJNHI7sDEmNPwQ1SLLEeakI2gUyWv22Ex9BkQRWsNmTrRLsOX8eIF8H1ptGeHTzsUKpl3lzQbQUBsDqi4I6jL+Wa4jKZ.9CTZiv58mdsxklh2RR50VsRo3al22SYmd8f53PAtrxt+p2L6bWo6YOBSp4cnF1AQleSgDT6XOxQGR5cKKnI8ylHuDMtyOOK8bVcNnkA6jug7yqQ.8bYuFA9MJMPS2w9Dcd3lVq3lrqPzjEaqUmR4P54pfI9bHjej4HQmnqG0TwHl6pRL+UkXgqJwhWUhktpDKeUIVY9DokY1ZDYpK9vFIoCauCebrbvLlx2P5+Aomz72A
  • Accessing sampler instance from within midi processor

    Solved
    4
    0 Votes
    4 Posts
    343 Views
    d.healeyD

    @Orvillain said in Accessing midi processor name from within connected script:

    I'm fairly confident this will enable me to have my generic script,

    That's how I do it

  • How to Load Audio File Using Scripting? (External Data)

    Solved
    10
    0 Votes
    10 Posts
    732 Views
    griffinboyG

    @d-healey

    Worked!
    Great, thanks David.

    Answer:

    const var ScriptnodeSynthesiser1 = Synth.getAudioSampleProcessor("Scriptnode Synthesiser1"); inline function onButton1Control(component, value) { if (!value) return; FileSystem.browse(FileSystem.getFolder(FileSystem.Downloads), false, "*.wav", function(file) { if (!isDefined(file) || !file.isFile()) return; ScriptnodeSynthesiser1.setFile(file.toString(file.FullPath)); }); }; Content.getComponent("Button1").setControlCallback(onButton1Control);
  • A snippet to choke off or fade a note

    1
    1 Votes
    1 Posts
    136 Views
    No one has replied
  • Is there a method to rotate a path?

    7
    0 Votes
    7 Posts
    1k Views
    VirtualVirginV

    @d-healey said in Is there a method to rotate a path?:

    @VirtualVirgin Instead of making a function to rotate a path, why not make a function to create a rotated path. You can pass in the data you would have used to create the initial path.

    So based on your suggestion I came up with this and it seems to work:

    inline function createRotatedPath(pathArray, angle, area) { local rad = Math.toRadians(angle); local cosA = Math.cos(rad); local sinA = Math.sin(rad); local path = Content.createPath(); local rotationCenterX = area[0] + (area[2] * 0.5); local rotationCenterY = area[1] + (area[3] * 0.5); for (i = 0; i < pathArray.length; i++) { local x = pathArray[i][0]; local y = pathArray[i][1]; local newX = (x - rotationCenterX) * cosA - (y - rotationCenterY) * sinA + rotationCenterX; local newY = (x - rotationCenterX) * sinA + (y - rotationCenterY) * cosA + rotationCenterY; if (i == 0) path.startNewSubPath(newX, newY); else path.lineTo(newX, newY); } path.closeSubPath(); return path; }

    The pathArray is a 2D array of x,y points
    i.e.
    [[x,y],[x,y] etc..]

  • New Build, All Meters Crashed. How?

    Solved
    32
    0 Votes
    32 Posts
    3k Views
    d.healeyD

    @Chazrox said in New Build, All Meters Crashed. How?:

    this commit works.

    Good, now find the first commit that doesn't work :)

  • Does path.contains() work properly? I am having issues with it.

    3
    0 Votes
    3 Posts
    293 Views
    VirtualVirginV

    @ustk Oh that makes sense! And that method is a lot easier than what I was doing.

  • drawFilterPath itemColour1 and itemColour2 are the wrong way around

    3
    1 Votes
    3 Posts
    298 Views
    d.healeyD

    I also noticed that drawDragHandle's colour properties are all empty. So I've made a modification that passes the filtergraph to the laf function so we can grab its colours. I hope this is the correct way to do this.

    https://github.com/christophhart/HISE/pull/705

  • Dynamically switching processorId of an AudioWaveform Tile.

    9
    0 Votes
    9 Posts
    827 Views
    d.healeyD

    @CyberGen said in Dynamically switching processorId of an AudioWaveform Tile.:

    should I add this to the gitHub issue list?

    Can do

  • HISE CSS Syntax

    Unsolved
    6
    0 Votes
    6 Posts
    456 Views
    C

    @Christoph-Hart cheers, mate.

  • Button default value should be used in broadcaster

    3
    1 Votes
    3 Posts
    350 Views
    d.healeyD

    @Christoph-Hart said in Button default value should be used in broadcaster:

    It's used for AAX plugins

    Aha that's good to know

  • 1 Votes
    2 Posts
    267 Views
    C

    @d-healey Sorry, mate - I haven't used Expansions.

  • Programmatically Assign Macro Connections?

    4
    0 Votes
    4 Posts
    285 Views
    ?

    Okay for anyone else wanting to do programmatic macro assignment for GUI elements:

    // First you need to setup some stuff: const mh = Engine.createMacroHandler(); Engine.setFrontendMacros(["a", "b", "c", "d", "e", "f", "g", "h"]); reg obj; // this will be what we pass to the function as an object // To see the full JSON object: inline function getObject(component, value) { // This button fetches our existing Macro connections object obj = mh.getMacroDataObject(); Console.print(obj); // Insert a breakpoint here and inspect the ScriptWatchTable "obj" element. }; Content.getComponent("Button1").setControlCallback(getObject);

    The object looks like this:

    { "MacroIndex": 0, // zero-based macro index "Processor": "Interface", // the script processor we're working in (usually "Interface") "Attribute": "Knob1", // the name of the UI control "FullStart": 0.0, // the UI control's "min" value "FullEnd": 127.0, // the UI control's "max" value "Inverted": false, // invert the connection "Interval": 0.0, // no idea "Skew": 1.0, // skew "Start": 0.0, // the macro control's "min" "End": 127.0 // the macro control's "max" }

    Finally to assign your own custom macro stuff:

    inline function assignMacro(componentName, index, fMin, fMax, min, max) { local obj = { "MacroIndex" : index, "Processor" : "Interface", "Attribute" : componentName, "FullStart" : fMin, "FullEnd" : fMax, "Start" : min, "End" : max } mh.setMacroDataFromObject(obj); }

    NOTE: This will likely crash and brick your project if you do it INSIDE HISE. Compile it / export it to Rhapsody before trying to use the actual assignment function.

    If you do brick your project, open the Preset.xml file and delete all the data in the Macro section

    Eg:

    <controlled_parameter id="Interface" parameter="155" parameter_name="knbFilterCutoff" min="20.0" max="20000.0" low="20.0" high="20000.0" skew="0.266319563348789" step="0.01" inverted="0" readonly="0" converter="37.nT6K8CBGgC..VEFa0U1Pu4lckIGckIG.ADPXiQWZ1UF.ADf..."/>

36

Online

2.1k

Users

12.9k

Topics

112.2k

Posts