• Anyone doing this to declare components?

    Scripting
    11
    0 Votes
    11 Posts
    317 Views
    David HealeyD

    @dannytaurus said in Anyone doing this to declare components?:

    Do you mean like this?

    Kind of.

    I split my scripts into lots of separate files, preferably one file per part of the project - what constitutes a part could be functionality, or it could be UI, I often have one namespace per main UI panel.

    For example, I'll have a file called Presets.js which contains the Presets namespace and this contains everything related to preset handling, including the UI.

    I'll have another file for handling expansions.

    I'll have another one that handles a drop down menu in my plugin's header. This will have items for opening the Settings page, the About page, etc. This is an interesting one because the menu itself shouldn't know anything about the Settings or About pages, it doesn't need to.

    But the Settings and About pages are aware of the menu's existence. So using broadcasters those namespaces can watch the menu and if the Settings option is selected the Settings namespace will show the correct panel, if the About option is selected then the About namespace will handle it. Everything is very self contained and links between namespaces/parts of the project are minimised as much as possible.

    Here is what the on init section looks like for my current project. Nice and clean 😀

    f0136148-47c7-4818-82cf-fc6d90abf1d0-image.png

  • Midi Player disabled for Midi FX plugins

    General Questions
    8
    0 Votes
    8 Posts
    236 Views
    ulrikU

    @Bart 👍

  • How to invert Global Envelope Modulator?

    General Questions
    2
    0 Votes
    2 Posts
    89 Views
    D

    Managed to make it work using table inversion.

    HiseSnippet 2293.3oc6ZstbabaEdoj1XK5K4Rcah6jNyFO4GzcRsIorbcRqFSYcerkEsojSxu7.tKnHFgEX6hckMcFOS+Ql1+2GjN8IHIOB8QHsOA4MH4.f8BVwKhhQRVJSnzvg6AGbv24JvAjMC4tXgfGZUp718BvVktrcqdrntK0EQXVarrUoqaSX6iCEDNyg2wIB0lhENa8v4rdPu.jPf8rJUZ50jrWZ1YrTu9g6+.DEwbw4jrrdFm3heDwmDkSsYiGRnzUQd3sI9FbemFa3xYKwo7X.ZSaW0J.4tGZW7iQR1lx1ZcjnqUo+nc85cbuW0p2at4luJBMmGBcmZ349Tbm61wc9peZUu1yWE96tVkdqU7HQ7vVQnHrvpzLOf60qUW9KX5E3YDAATM4C0rZAqrl7pbpmTEkTsVpKg50L0lIr.g1L2BNs1BdM6MIdjL54Vx2QMfS9LLMfklpH7lt.7pYBupFva.PpjAjlQCo20tkaHIHJeDIdtj8FrHbXGD3mLghlWqo95KYuDG3fEcKezd3UCgGxlQk6Vs5m3.ucy+R4x291NKrvBNqRBEQNOjwa6bamM4dwTDnQxgJCdSXn8QgN6wZ+7khC2G6rfSp32EGsD2OfyfGpbiLNtAH67ItFk2FQWABFo7.bl3qAxQExJkRF0J2PytSJ+43o1nD61xvaSIpHjY2NLwJsDMkIKBodIkOQIvNfYHKMprbYoHAXLAJQvpwhoT8j2IvC7+NchYtQxLN4D6nLq6Al0xDFkvLFNVw9.TgJ2r7WU1AdQ4t.bkS9YHZrT0xLuR0SQrBf7bdIonJeR+Ump.7jr.PbKFsmSHtcLD3oKG3P5jNK2tH1tXOEu.0JIj+nELT3apFUCO4qA.+aEhE3nJpfqT1znyUh7TUo5sl2fA458QDikn3xj.+GyC8QzOyQDg.fQ4uv4++O9WNXlmSWxtcKv8f.lHMjfSfXUHEP9+sReKGcIlzijnpA+KkRsgJpWm8ILUfGtRpMzXuT0TpZY5InyStZV63SMqNB0L2qalmnctZ9dcV.4hzWf5IRxE.dfTOAIpW49ATdxpDUajxYkMQPxNpsnRVH+MAz7ZUFopbFD4QaC6.0WBHmkkNIKlExoUbSqj8IP9uTTIYhiHWUtV4okBY0PkrVJYYqz+xjTrYCFIhfnjWgSREQQZWdbP4QtfkypZ2BCEC8Nrx1xgqMzR1pQOPcUXaOXUA4MrBzYLLvId3UhKL+QU4Un0PoycnUgqenkgMjxvpCaf7QT.VYrljhuCqfZ89pnZ.jyHkRMQzjVCcjx3MUwywRwpcLnXGwxk0mr5kYIUGeUHUw6iY0wBYPxEPmrLvRhlxs+xgIoqCqp3AVHC39XdDdKlJ+cV..NGbnNcF3XI.ghCG3vx9aBG0Dqvh8aiCMLKJFgyvWrw.6g2XfYeKt55zFLxYRqyVAX1v5lwJo3NzDwTInBXMR0BwUSZgnEk3gCsHdx9Gx1TxRAZyt8rFCAbAakKb.SdmMVFEgjMyj.I.lAPnLQZAJsLdenURcqMyZuLVrWDO.LTYaHAhdrP8KyVz+9dM5ki.RCQTOppa304gjWAX.Qs7Iddx7RHg.7bl30uPyueqkAPt7gp8CADeW3QDDvFeAsfHeIsu5Z+609eu5qu+A.lO5klMoKh6zg7RU6zcHTeQDfvM7gtrsJ8d16HvNd3NnXJj6rGHGHsdOr21bE+lpnsVEuRhJ9HTaLUogWzV84gphVdMhvuLRxHr9PikGIwVeXhsQPhXssQ9AVV82OLzId54PLaOWVTHY.os0rm3rJgl1uisd1GWH9t1MIQtcGLFmZ.XTlIeBfwja53J1qzoC1MJGfyXu5WbxbsFlK+E0K+u2Ve11bCkLEA17Qe8F+gjgMNRaFC0FwkW8eG2KuJXru7pRSOp6dp1Dd2Sybl6tmF233eSetFwoX1VgaH6czv7B1Kt9xsdZRVl5yY2wSwfkM4LdPWNi3ZFe7TLT7b2cgPOyKAkDvonvgpQKFEAmjQuUjgrVF6h50GUMylQeZJOBCnzjw0gnl9DWFgm+eZzJVDUHh+K+tmhoXjnPL7Jtbv6fmPOPsQ6ArGy.kqXqURGUF1QNDYlwKDYz4YiaP8USwp1ib1FrW1VEVbdvt911IArmKLrW0NIW57focjmmX5eYedhmxiiHrcgFaCkmA19ww9sfMrcwvpyXXprUqRSIajQ+bU4yRKPKLyS8vOBuRFrl74RICVKcPSU7sK70qsVHONPogWSS.KHBbnihdsiiuYsw+vIqvjMAu5llRbITXHAGtAyCa1wv2lEC02H6vHBXmQETVzmGyhLAcxnKiihYEfdx.sBBwHOyYHQu9lIUhTTHm4D43TW3j53Tmpoz+76h4HaMG3N7SYf2YSwaKhe.EmdtpjRPKqaxLi5DdXqQbBqbJWqQemz4ia7Hni.T3I2gcJMlttOv7vNNmPtvIKhK4GGv0sGx2mRxYJxu8vC0K9C2e.dQKqAtmyNB82agtIW8kyJkqhn5hhjWIAzbGC6puUj+zn586yN3w6O1b0mh66dr6heCrGbgLijhDumcSNsmNZYU8kBIAwr15GF0diVVqFh+awXlapk66ex27Oa7DyfthY4ePimDinGvRmz01O2S+bHEElYLCU9c1YJkyaj6lpfSZrpC7g1C+GIwuVWXz0EjQzmsJ8OJ7dc6jjEGYP54GbeU6mb9ArxV0kGa14.aqN0YQnpOH+YDn99ZndI6OGsOV0lkBk+V0yc3g9NqggD+9KLchegva4FAPX6PDSDvExRM4RtE1mrMmgEEndfYTefyndw68SF0TqeRE3RZJVELEF7cwFoDqaRrIhUPXvyEjzlDiFB+96qaqT2B2VBWvvn1fvv+2LlJveNwKpaMyIlSttI40QgdfOrPi.mLMB9V+ZifmKuJpyPGI9T1SCodme1O68sgxA0cTtam2796Si6A7WJqgOxMj+bW8urCYoxKpn.1Vl52k+r1aJe1Y.+jN7gxjO20snn5ah0mzIN2jNw6LoSb9Ich2cRm3edRm38N7IJ2Eaw3HtuNWD1Mu4J5NnJo2HWkVZ8SjbvuUA
  • Module tree container UI/UX

    Feature Requests
    22
    6 Votes
    22 Posts
    377 Views
    dannytaurusD

    @DanH If you can make a minimal snippet that shows the issue on your machine, I'll try it on mine to see if it's the same.

  • 0 Votes
    7 Posts
    185 Views
    dannytaurusD

    @DanH Yeah, I use Cursor code editor every day in my normal work (Ruby on Rails).

    I have a separate Cursor project open with the HISE source.

    Clause is very good at finding code points when it has the full codebase.

  • change tag size

    General Questions
    5
    0 Votes
    5 Posts
    202 Views
    dannytaurusD

    @David-Healey said in change tag size:

    They work, they just have a terrible UI/UX

    Ah, gotcha! I must investigate sometime 😀

  • plugin works fine, until hardcoded master is created

    General Questions
    8
    0 Votes
    8 Posts
    360 Views
    C

    @David-Healey said in plugin works fine, until hardcoded master is created:

    @cemeterychips said in plugin works fine, until hardcoded master is created:

    im still getting this error when trying to make a simple reverb in script fx when i send the batchcompileOSX.sh to the terminal: ❌ error: unable to attach DB: error: accessing build database "/Users/waveygreta/Documents/HISE Projects/hello/DspNetworks/Binaries/Builds/MacOSX/build/XCBuildData/build.db": database is locked Possibly there are two concurrent builds running in the same filesystem location.

    I think the reason you're seeing this is because when you did the initial export from HISE that froze, it didn't freeze but was still going in the background - how long did you wait?

    @cemeterychips said in plugin works fine, until hardcoded master is created:

    How ever it does not crash the DAW and works as intended. is it possible that the nam file ive embedded is too big or something? I've read that can cause issues.

    That's entirely possible. I know nothing about NAM though so can't help with any specifics here.

    @David-Healey . It’s an SIGABRT abort trap

    edit i figured out the issue and it may not be capable to run nam as a hard coded fx unless anyone else here knows otherwise.

    I'm mixing 2 incompatible approaches

    In HISE Script Processor: successfully load NAMModelData.js with JavaScript code
    But then: i export as HardcodedMasterFX which compiles to C++
    The crash: The JavaScript code CANNOT be compiled to C++ - it fails and crashes

    THE FUNDAMENTAL ISSUE:
    When I export HardcodedMasterFX, HISE tries to compile my scriptnode network (the script_fx1.xml that says Model="test22") into C++ code. But:

    my scriptnode is looking for a model called "test22"
    There's NO .nam file called "test22" in your /AudioFiles/ folder
    The NAMModelData.js file is JavaScript and CANNOT be compiled into the C++ dylib
    Result: Crash
    :( boohoo

  • Detect if Stereo or Multi-Output?

    General Questions
    6
    0 Votes
    6 Posts
    165 Views
    D

    @Chazrox yes, I've added an UI toggle, so when it's on it'll route it to multiple outputs, otherwise to stereo

  • 0 Votes
    4 Posts
    147 Views
    N

    It worked guys i figured it out. i changed the routing method(used smoothed_parameter node instead of using direct routing from the random value gen)
    so Happy 😊👍

  • 0 Votes
    2 Posts
    84 Views
    David HealeyD

    Each time you add a new entry the indexes will shift. Do a search of the forum and you'll find some solutions.

    One of the simplest is to use the item's text instead of the combobox value, but that isn't always suitable, it depends on how you have things setup.

  • Hise with Gumroad licensing system

    Scripting
    2
    0 Votes
    2 Posts
    124 Views
    bendursoB

    @Avián You should use Server.callWithPOST
    https://docs.hise.audio/scripting/scripting-api/server/index.html#callwithpost

    something like this based on what I read from the docs of gumroad (i'm not using gumroad, so I don't know if it works)

    Server.setBaseURL("https://api.gumroad.com"); const var params = { "product_id": "1234", "license_key": "your_license_key", "increment_uses_count": "true" }; Server.callWithPOST("v2/licenses/verify", params, function(status, response) { if(status == Server.StatusOK) { if(response.success) { Console.print("License valid"); Console.print("Uses: " + response.uses); Console.print("Product: " + response.purchase.product_name); } else { Console.print("License invalid"); } } else { Console.print("HTTP error: " + status); } });
  • Modulation is deleted when loading a DAW project!

    Solved Bug Reports
    5
    0 Votes
    5 Posts
    158 Views
    Oli UllmannO

    Okay, this is not a bug, and the solution is super simple! @Christoph-Hart has done all the hard work for us! :-) You just need to add the GlobalModulatorContainer to the preset system!

    Engine.addModuleStateToUserPreset("GlobalModulatorContainer");
  • Enable Multi Output in Logic

    Solved General Questions
    13
    0 Votes
    13 Posts
    281 Views
    D

    EDIT: actually, maybe not. I think for a multi-output enabled plugin it will always return the max outputs, even if the plugin is loaded as a stereo version.

    You're right, @dannytaurus, it always returns the max outputs. I think the UI toggle will be the only viable way.

    Thanks a lot for the help!

  • Export Setup Wizard

    Bug Reports
    7
    0 Votes
    7 Posts
    104 Views
    dannytaurusD

    @David-Healey said in Export Setup Wizard:

    @Avián You can still get the community edition here: https://www.techspot.com/downloads/7493-visual-studio-2022.html

    Nice! Bookmarking that for later when the Windows exporting fun begins! 😜

  • 0 Votes
    3 Posts
    68 Views
    M

    @David-Healey Thank you 🙌 It worked!! And also big thank you for all the other help and detailed tutorials on Youtube.

    Happy New Year to you, your family, and everyone here in the HISE community! Here is to a great 2026. 🥳🎆

  • Protection for my plugins

    General Questions
    13
    0 Votes
    13 Posts
    122 Views
    H

    @David-Healey Perfect, i'll search everything

    thanks for helping me 🙂

  • Two Samplers One Filter

    General Questions
    13
    0 Votes
    13 Posts
    159 Views
    D

    @Lindon Thanks for confirming! That's exactly what I'm going to implement. Now I'm confident there isn't a better way.

  • Font not changing on comboBox. What am I doing wrong?

    General Questions
    20
    0 Votes
    20 Posts
    726 Views
    David HealeyD

    @dannytaurus Ah yeah that would make sense. I wonder where HISE stores the actual selection from the property editor.

  • Notes off by half step when using Arpeggiator

    General Questions
    3
    0 Votes
    3 Posts
    80 Views
    P

    So I decided to revisit my problem. I first created a very simple arpeggiator and it worked fine without using the Step Sequencer mode on the Notes Number slider pack. So I decided to revisit the same synth arp that didn't work and removed the Step Sequencer mode on the NN SP and it worked. The notes come out as expected, eg. C is a C and not a C#. I am not sure why it didn't the first time, but I am happy now.

  • LLM and Faust MCP

    Faust Development
    4
    4 Votes
    4 Posts
    160 Views
    S

    Code to be tested here.

    import("stdfaust.lib"); declare name "brightOrgan"; declare author "Claude AI"; // Organ parameters freq = hslider("h:Main/freq [style:knob][midi:ctrl 1]", 220, 55, 880, 0.1); gate = button("h:Main/gate [midi:ctrl 64]"); volume = hslider("h:Main/volume [style:knob][midi:ctrl 7]", 0.5, 0, 1, 0.01); // Organ stops foundation8 = hslider("h:Stops/Foundation 8' [style:knob][midi:ctrl 14]", 0.8, 0, 1, 0.01); principal4 = hslider("h:Stops/Principal 4' [style:knob][midi:ctrl 15]", 0.5, 0, 1, 0.01); fifteenth2 = hslider("h:Stops/Fifteenth 2' [style:knob][midi:ctrl 16]", 0.3, 0, 1, 0.01); flute8 = hslider("h:Stops/Flute 8' [style:knob][midi:ctrl 17]", 0.4, 0, 1, 0.01); nasard = hslider("h:Stops/Nasard 2 2/3' [style:knob][midi:ctrl 18]", 0.2, 0, 1, 0.01); tierce = hslider("h:Stops/Tierce 1 3/5' [style:knob][midi:ctrl 19]", 0.15, 0, 1, 0.01); // Reverb parameters reverbAmount = hslider("h:Reverb/Amount [style:knob][midi:ctrl 91]", 0.3, 0, 1, 0.01); reverbDamp = hslider("h:Reverb/Damp [style:knob][midi:ctrl 92]", 0.5, 0, 1, 0.01); reverbSize = hslider("h:Reverb/Size [style:knob][midi:ctrl 93]", 0.6, 0, 1, 0.01); // Organ pipe generator (filtered square wave + breath noise) organ_pipe(f, brightness) = pipe with { // Square wave with odd harmonics square = os.square(f); // Low-pass filter to soften the sound cutoff = f * (2 + brightness * 8); filtered = square : fi.lowpass(2, min(cutoff, 10000)); // Characteristic organ breath noise breath = no.noise * 0.015 : fi.resonlp(f, 1, 1); pipe = filtered + breath; }; // Flute pipe (more sinusoidal) flute_pipe(f) = pipe with { // Dominant sinusoidal fundamental fundamental = os.osc(f); // Some harmonics h2 = os.osc(f * 2) * 0.25; h3 = os.osc(f * 3) * 0.08; // Flute breath noise breath = no.noise * 0.02 : fi.resonlp(f * 1.5, 2, 1); pipe = fundamental + h2 + h3 + breath; }; // Combined stops organ = ( // Foundation 8' (fundamental) organ_pipe(freq, 0.3) * foundation8 + // Principal 4' (upper octave) organ_pipe(freq * 2, 0.4) * principal4 + // Fifteenth 2' (two octaves) organ_pipe(freq * 4, 0.5) * fifteenth2 + // Flute 8' flute_pipe(freq) * flute8 + // Nasard 2 2/3' (perfect fifth) flute_pipe(freq * 3) * nasard * 0.7 + // Tierce 1 3/5' (major third) flute_pipe(freq * 5) * tierce * 0.5 ) / 4; // Organ envelope (characteristic slow attack) env = en.asr(0.1, 1, 0.2, gate); // Dry signal dry = organ * env * volume; // Smaller reverb with adjustable parameters reverb(x) = x : re.mono_freeverb(reverbSize, reverbDamp, 0.3, 6000); // Dry/wet mix output = dry * (1 - reverbAmount * 0.5) + reverb(dry) * reverbAmount; // Stereo output process = output <: _,_;