HISE Logo Forum
    • Categories
    • Register
    • Login
    1. HISE
    2. Orvillain
    3. Posts
    • Profile
    • Following 1
    • Followers 0
    • Topics 81
    • Posts 625
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: Matrix Modulation Feedback

      @DanH said in Matrix Modulation Feedback:

      @Orvillain Yes that's more or les it as I understand it, although you can set the block size.

      I find that I need to restart Hise in order to cement the connections, same for you?

      Hmmm, no don't think so. Just recompile.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Matrix Modulation Feedback

      @DanH Yep, combined is what I use too!

      Also worth pointing out, once you do this, it is worth setting the effect instance parameter to maximum value, and controlling the actual value from the matrix.

      Also - you don't need to have a matrix modulator attached to everything if you don't want. In fact, some parameters you can't right... coz they don't have module entry points, for example in a case where HC effect doesn't have the parameter external modulation enabled.

      In those cases if you set the UI knob processorId and then parameterId, and then give the UI knob's "matrixTargetId" field some kind of entry... then that UI parameter will work with the modulation system. But I think the difference is the rate of the modulation will be locked to blocks, rather than being properly audio rate - which for CPU reasons might be better in some cases than others.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Matrix Modulation Feedback

      @DanH said in Matrix Modulation Feedback:

      Is Modulation working with Hardcoded FX via the Matrix Modulator

      Yes it is. I'm doing it in a project. Make sure you've activated "ExternalModulation" for each scriptnode parameter and then add your matrix to that parameter index once you add your hardcoded effect.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Free-running, or randomised phase, for Waveform Generator oscillators?

      @dannytaurus said in Free-running, or randomised phase, for Waveform Generator oscillators?:

      @Christoph-Hart Diving in to ScriptNode now. Fun stuff.

      Quick question - if I want several random-phase oscillators, would I do this with multiple simple Scriptnode Sythns (like your snippet) in the Module Tree? Or would I create the whole multi-oscillator thing in one Scriptnode Synth?

      I'm guessing both are valid approaches, but is there a benefit of one over the other?

      Definitely recommend digging into Scriptnode and just playing around with it. Your best friends in this case are going to be the various container types. So if you wanted multiple random-phase oscillators, you could reproduce Christoph's example a couple of times over, using the split chain.

      posted in General Questions
      OrvillainO
      Orvillain
    • Extend range of the spectral analyser

      66f2e0d1-c80b-4797-9c9a-0076bcae589e-image.png

      Could we get this extended to cover 20hz-24kHz ??? Unless I'm missing something, there doesn't seem to be a way to do it. I've been writing some custom Butterworth filters and evaluating them and diagnosing issues with cascading has proven a bit tricky in a few instances.

      posted in Feature Requests
      OrvillainO
      Orvillain
    • Custom envelopes or LFO's locking up when set to monophonic mode???

      Has anyone run into this??

      I have a project with some compiled networks. One of them is an LFO I built in scriptnode. It has a lot of functionality, but the basics are that I choose a sync mode either by switching between a source sawtooth generator, or a clock_ramp object that syncs to the host.

      After that, I process the output to get the various shapes I want.

      As a compiled modulator it works fine in polyphonic mode. But when I set it to monophonic mode, after a certain time it locks up and stops producing output.

      I cannot confirm this with the non-compiled version (just loading in the scriptnode network)

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Dynamic reassignment of effect slots

      @Christoph-Hart said in Dynamic reassignment of effect slots:

      Just a small heads up that we have this now:

      https://docs.hise.dev/tutorials/ui/index.html#draggable-fx-chain

      As it turns out, that was reasonably easy to add.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Free-running, or randomised phase, for Waveform Generator oscillators?

      I did a really crappy version of random phase, by writing a polyphonic c++ node that adds small amounts of delay to a voice every time a note is pressed. I'm not proud of it, but it might be something to consider.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Custom browser - custom preset file format???

      Right so it looks like there's quite a few ways to potentially address this. But probably the most flexible is using the UserPresetHandler API:
      https://docs.hise.dev/scripting/scripting-api/userpresethandler/index.html

      This function seems extremely relevant:

      UserPresetHandler.setUseCustomUserPresetModel(var loadCallback, var saveCallback, bool usePersistentObject)
      

      It takes two functions - onPresetLoad and onPresetSave.

      So in theory, I write a custom namespace for handling my custom preset format. It needs to be able to this kind of stuff:

      • Gather all loaded samplemap names and any relevant identifiers
      • Gather all parameters and their values
      • Construct a sensible JSON array of all of the above
      • Save it to a file on disk, using the FileSystem API coupled with the UserPresetHandler API.
      • Use the onPresetLoad() method to reconstruct a selected preset in full.
      • It also needs to be able to flag when sample content cannot be found.
      • It needs to be able to also save and restore modulator states
      • Any internal values for midi processors also need to be stored
      • Arpeggiator patterns also
      • Any routing matrix changes
      • Maybe sample map details beyond names - root notes, velocity splits, etc?
      • Add a version number to the file for future use
      • UI states for selected tabs
      • Provide some kind of sample relink method in situations where a samplemap or individual sample cannot be found
      • For saving a preset, I should plan to allow custom meta-data to be added to a preset; things like author, style, type, etc...

      Need to do some heavy thinking about this. Because the clients requirements are definitely quite a bit more expanded in scope than I initially thought.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Custom browser - custom preset file format???

      @d-healey said in Custom browser - custom preset file format???:

      @Orvillain said in Custom browser - custom preset file format???:

      Any thoughts on this kind of thing

      Sounds like a lot of work.

      Yep it is! But they're paying for it....

      @Orvillain said in Custom browser - custom preset file format???:

      bundle the custom loaded .wav file, or the samplemap, with the preset.

      What do you mean by bundle?

      I'd probably settle for a preset file and accompanying .samples folder that sits next to it, with the preset file being updated to no longer include hard-paths, but relative ones instead. The enforcement being that the .samples folder HAS to live next to the preset file on disk.

      posted in General Questions
      OrvillainO
      Orvillain
    • Custom browser - custom preset file format???

      I'm being asked about building a custom browser. They want to show a ton of meta-data for a preset or a sound (any individual samplemap). They want a ton of search functionality too.

      They also want to be able to export a preset, and include any sample content with the preset - ie; bundle the custom loaded .wav file, or the samplemap, with the preset. For personal sharing purposes.

      So RE: Browser. My first initial thought was to build a custom browser, with custom panels that paints columns and labels, and various visual widgets. These would all get populated from data parsed from JSON. Every samplemap would have an associated JSON file with the relevant meta-data next to it. On plugin load, this data is injested and stored in the main local database. Meaning when they add samplemaps down the line, the database can grow.

      This would allow me to parse JSON according to their filter selections, and update panels, labels, paint routines. It's a good chunk of work, but I don't think it is particularly difficult.

      The other requirement, of exporting a preset with its associated samples.... that feels likre I'm going to need a custom preset file format, to be able to store the actual names and guid's of sample-content. Which can later on be used to rebuild a sample map.

      Any thoughts on this kind of thing?? I've only really just started thinking about the requirements here.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: What are you using to build UI for your plugin? What's your preferred way and why?

      @d-healey said in What are you using to build UI for your plugin? What's your preferred way and why?:

      Then I'll take that design and reconstruct it in HISE using look and feel.

      Hey Dave. I'm in a similar situation right now, and the designers are soon going to be delivering Figma designs. Do you have any resources on how to best optimize this conversion process?

      @Christoph-Hart said in What are you using to build UI for your plugin? What's your preferred way and why?:

      In the long run I can imagine that the CSS renderer will be used more often for the UI elements that are suited towards this (!= sliders & knobs) as the declarative nature of CSS makes it faster to develop UIs.

      I'm also interested in how far we can push the CSS renderer across the entire state of the plugin. Because in theory Figma spits out CSS code that we could use, which would speed up the UI development a lot.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Is there a way to pickup host transport messages directly within a custom node??

      @HISEnberg If in doubt, stalk @griffinboy 🤣

      So following Chris's comment in that thread, it sounds like the node needs to inherit from:

      public hise::TempoListener
      

      And then you write a custom callback. Something like:

      void tempoChanged(double newTempo) override
          {
              
              // yo bro, do a thing here innit fam bruv dudemeister
              for (auto& t : data)
      	{
      		t.bpm = newTempo;
      		t.refresh();
      	}
           }
      

      But I haven't tried it yet.

      posted in C++ Development
      OrvillainO
      Orvillain
    • RE: Is there a way to pickup host transport messages directly within a custom node??

      @HISEnberg https://forum.hise.audio/topic/11486/c-transport-handler/4

      I just came across this too, which seems relevant.

      posted in C++ Development
      OrvillainO
      Orvillain
    • Is there a way to pickup host transport messages directly within a custom node??

      I'd like to be able to poll transport start/stop and tempo changes from within a node. Is that possible, or do I have to use a data cable to feed messages from the top Hise layer?

      posted in C++ Development
      OrvillainO
      Orvillain
    • RE: Why isn't this set parameter for a DSPNetwork node working?

      @ustk Yeah you're right. That's fine for my purposes right now, as I'm just blasting out a quick prototype for my delay plugin to send to a mate.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Why isn't this set parameter for a DSPNetwork node working?

      I figured this out, only a year and a half late 🤣 🖖🏻

      reg network = Engine.getDspNetworkReference(PROCESSOR_ID, "network_name");
      network.setParameterDataFromJSON({"PARAMETER_NAME_STR": new_value});
      

      Or for an example:

      reg network = Engine.getDspNetworkReference("Script FX1", "dspnetwork");
      network.setParameterDataFromJSON({"GainVolume": 0.9});
      

      I'm using it in the callback of a combo box in order to set a parameter value, and it is working here.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Setting UI values from a combobox - doesn't fall through to linked processorId+parameterId ??

      Oh for n00b sake... I just call .changed() it would seem.

      posted in General Questions
      OrvillainO
      Orvillain
    • Setting UI values from a combobox - doesn't fall through to linked processorId+parameterId ??

      At a high level, I have a combo box... whenever I make a selection it iterates over a bunch of UI parameters and calls .setValue(xyz) on each one of them.

      I do see the UI updating with the new value, but the new value does not seem to fall through to the scriptnote network that it is assigned to.

      If I turn the control manually, then it does fall through. So I know the processorId and parameterId are correct, connected, and it is fundamentally working.

      Any ideas? Do I need to do some kind of defferal or asynchronous call?

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: I think I've figured out a better way to create parameters for a node

      Interestingly, that last solution works for the node. But when I try to compile the network, the network won't compile. Not sure why yet. Need to look into it.

      posted in C++ Development
      OrvillainO
      Orvillain