HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. marcrex
    3. Topics
    M
    • Profile
    • Following 0
    • Followers 0
    • Topics 12
    • Posts 23
    • Groups 0

    Topics

    • M

      Exploring GPT Integration for Parameter Control in HISE?

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      7
      0 Votes
      7 Posts
      168 Views
      A

      @marcrex Ship ollama or a similar layer with your plugin, and a model of your choice. For this you probably want a good tool calling model, like Devstral. You will need the super light version. Unsloth has a super small quant https://huggingface.co/unsloth/Devstral-Small-2505-GGUF/blob/main/Devstral-Small-2505-UD-IQ1_S.gguf but I have no idea how well it runs. Check Gemma 1b as well.

      Your system prompt needs to contain the functions that it has available for use and what each of them does.

      Define these functions in HISE.

      You'll run it by mounting the model, if not mounted, on plugin start, using BackgroundTask. These small models should be fast to mount anyway, so best to have it unload itself automatically after an hour of not using it.

      The user can then write an instruction and the model is fed system prompt + instruction via BackgroundTask. The system prompt details what it can do, the instruction tells it what to do. You want to explicitly tell it to return a "function call" in a clearly specified format (for example doThis(arg1, arg2)) and for that to be the only return, no other text.

      You should then validate the return of the BackgroundTask call, by checking that it contains a function by using string operations, and if it validates, you would call eval(return). eval() will attempt to execute the string within the code. In this case it's a function that you already defined, so it will run.

      In the end, the brunt of the work is you designing the tools (functions) that the model can call.

      This is a very simple example, if you want to chain tool calls, you'll need to feed the output of the function back into the model along with the previous prompt so that it can continue doing the work if needed.

      If you want an example of how to use eval(), I did a cool experiment here https://forum.hise.audio/topic/9086/hise-s-best-kept-secret-dynamic-plugins

      These are the limits of my current knowledge on the subject, some of these workflows may already be outdated, but hopefully I gave you a good starting point to go and explore.

      Before you download ollama and start fiddling with local inference, you can try it out instantly via OpenRouter. https://openrouter.ai/mistralai/devstral-small:free

      This free endpoint will of course use any data you send for training, but you're not gonna be sending any sensitive info, just your system prompt any whatever the user types in. For a simpler implementation (though obviously not as rock-solid) you can offer the user to enter their OpenRouter API and use the free endpoint that way, or provide your own via cloud functions, at which point it becomes a service. However, this way everyone can run the proper 24B model; on macBooks with 32+ GB of RAM it runs fine, but on Windows, VRAM isn't super easy to come by.

    • M

      Add Expansion Sample Maps to ComboBox

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      6
      0 Votes
      6 Posts
      165 Views
      d.healeyD

      @marcrex Looks like you're just hardcoding everything currently. You need to instead use the expansion handler to give you a list of installed expansions, loop over those and grab the bits of data you need in order to populate the combo box.

    • M

      Value Popup Above Each Eq Band

      Watching Ignoring Scheduled Pinned Locked Moved Unsolved General Questions
      2
      0 Votes
      2 Posts
      110 Views
      orangeO

      @marcrex You can do this with LAF

    • M

      Working on a granular effect: how to make it polyphonic?

      Watching Ignoring Scheduled Pinned Locked Moved Unsolved General Questions
      2
      0 Votes
      2 Posts
      148 Views
      modularsamplesM

      The granulator is a sound generator, it has no effect on incoming signals. For that kind of thing, best look to FAUST.

      To get the Scriptnode Granulator playing polyphonically, you have two options.

      Increasing the density and reducing grain size will allow you to play chords, keep in mind though, anything after the granulator will still be monophonic.

      For true polyphony, implement multiple granulators in different groups, one for each voice of polyphony. Then use a round robin script to handle the voice allocation.

    • M

      Consistent Size and High Resolution on Any Kind of Screen?

      Watching Ignoring Scheduled Pinned Locked Moved Unsolved General Questions
      7
      0 Votes
      7 Posts
      273 Views
      C

      @d-healey Ohh ok. If you have a youtube video tutorial about it I'll track that down then.

    • M

      Loss of Image Definition?

      Watching Ignoring Scheduled Pinned Locked Moved Unsolved General Questions
      12
      0 Votes
      12 Posts
      1k Views
      Oli UllmannO

      @dannytaurus
      No problem! :-) Thanks for the clarification! :-)

    • M

      "How to make only image shape clickable on a button in HISE?"

      Watching Ignoring Scheduled Pinned Locked Moved Solved General Questions
      7
      0 Votes
      7 Posts
      237 Views
      LindonL

      @marcrex definitely do-able

      Link Preview Image Elitist Loop | Modern Vocal Hook Generator | Music Software Instruments | Sound Effects | Professional Audio | Ava Music Group

      Elitist Loop is a modern vocal engine that features 480+ unique vocal chops. Choose from over 250 premade loops. Change rhythm and pitch in just one click. With highly customizable features and endless combinations to choose from, ELITIST gives you vocals you won’t hear on anyone else’s track.

      favicon

      AVA MUSIC GROUP (avamusicgroup.com)

    • M

      Multiple Arpeggiator?

      Watching Ignoring Scheduled Pinned Locked Moved Unsolved General Questions
      7
      0 Votes
      7 Posts
      385 Views
      HISEnbergH

      @marcrex This is the pitch shifter@DanH is referring to, but its delay based so the "no decent" assessment is quite accurate. You could easily put this in between the feedback routing of delay network inside Scriptnode.

      I would recommend taking Lindon's recommendation though. Do some research on Routing in HISE.

    • M

      Connect Knob to Macro

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      1
      0 Votes
      1 Posts
      84 Views
      No one has replied
    • M

      Random Macro Assign

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      1
      0 Votes
      1 Posts
      83 Views
      No one has replied
    • M

      SliderPack popup LAF

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      3
      0 Votes
      3 Posts
      187 Views
      M

      @DabDab
      Great! Thanks so much

    • M

      Randomize Button

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      3
      0 Votes
      3 Posts
      215 Views
      M

      @d-healey Thanks a lot! :)