Forum
    • Categories
    • Register
    • Login
    1. Home
    2. Orvillain
    3. Posts
    • Profile
    • Following 1
    • Followers 0
    • Topics 92
    • Posts 714
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: Browsable Snippet: [Clocksynced Arpeggiator]

      @HISEnberg said in Browsable Snippet: [Clocksynced Arpeggiator]:

      Just curious do you have an example of a using a panel to control an arpeggiator?

      I'll have to put one together, because the one I have is the clients.

      But basically I did a piano roll kind of interface, where I can specify pitch and length, in a grid. Then an extra velocity lane below. I draw a grid according to the steps count, centre lane across the middle, +12 and -12 range below. So it's a load of squares in a grid. Each cell can be clicked on and off, and when you click it off, you can drag the right-most edge to change the size of the note.

      It's all pretty straight forward graphics context drawing to be honest; tied in with Christoph's arp snippet.

      posted in Presets / Scripts / Ideas
      OrvillainO
      Orvillain
    • RE: Browsable Snippet: [Clocksynced Arpeggiator]

      @DanH said in Browsable Snippet: [Clocksynced Arpeggiator]:

      @Orvillain I couldn't get this working nicely - the sliderpacks would never recall the settings properly. Does it work ok your end?

      I'm not using slider packs. I'm using custom drawn script panels, and I save the step data into the panel value field for preset store/recall.

      I don't really like slider packs, and I try to avoid them at all costs. Coz they're ugly and mean.

      posted in Presets / Scripts / Ideas
      OrvillainO
      Orvillain
    • RE: Browsable Snippet: [Clocksynced Arpeggiator]

      Heya!

      I modified the clocksynced arpeggiator example slightly for my own needs.

      But I am wondering - what advantage does it have over just using the Arpeggiator midi processor???

      posted in Presets / Scripts / Ideas
      OrvillainO
      Orvillain
    • RE: Custom browser - custom preset file format???

      @Christoph-Hart I'm looking at this again. Before I begin, is there a decent snippet anywhere that demonstrates how to do this for a simple plugin?

      Also, what are the gotcha's to watch out for? You mentioned killing voices, loading on the background thread, etc...

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Colours added/removed in UI XML

      @Christoph-Hart Interesting, I did not know that! Looking forward to the designers whining at me about Figma pixel-perfect accuracy! 🤣

      It might be worth performing this rounding/clamping in the UI fields too, for consistency sake. I totally get it is a JUCE baseline thing, so I'm not going to whinge about sub-pixel accuracy or anything like that.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Colours added/removed in UI XML

      @dannytaurus said in Colours added/removed in UI XML:

      @Orvillain Yeah, I made a PR that casts all x, y, width and height values to int before saving the XML.

      PR here: https://github.com/christophhart/HISE/pull/831

      But I can't pin down why the colours are added and removed.

      I don't think that is a good solution. The UI layout system supports floats for those fields. All values should be floats IMHO - even if they're button states.

      It is quite important to have floating-point positions when converting Figma designs over to a HISE layout (ask me how I know!)

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Colours added/removed in UI XML

      Probably some tinyXML serialization type thing. I notice a lot of floating point values often change to ints and back again, from commit to commit. Tis a bit annoying.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: Issue macro taking the priority

      That is a very weird one. Your snippet doesn't even have the matrix modulator that I can see. Removing the gain knobs matrixTargetId breaks the connection, but that is obviously not the fix.

      posted in Bug Reports
      OrvillainO
      Orvillain
    • RE: Building a replication of a piece of gear I have (.NAM)

      @iamlamprey said in Building a replication of a piece of gear I have (.NAM):

      @cemeterychips Altar has working NAM:

      https://github.com/nytemairqt/altar

      Check the DspNetworks/ThirdParty/amp.h file, it's using RTNeural & RTNeural-NAM

      Edit: Sorry didn't realize you were new to HISE, this is definitely a bit more advanced of an implementation, I had to go this route because I couldn't get the NAM node working

      Sorry, this might be a derail. But what were the fixes to HISE you made? Any reason they can't just be merged into develop?

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How to detect and fix out-of-phase signals?

      @resonant said in How to detect and fix out-of-phase signals?:

      @ustk @Orvillain ok I see.

      Another one, is possible to detect pitch with fft in Hise without c++? I think this should be doable with Hise tools.

      You'd be far better off getting something off the shelf and getting it into the scriptnode network. I'm not sure what is out there to be honest.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How to detect and fix out-of-phase signals?

      I'd approach this by using MIR principles to extract audio features across frequency bands, and then find alignment points within the feature matrix.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How do I flush the UI parameters on first run??

      God I hate my stupid brain sometimes.

      So yes... that is exactly what it was....

      In my c++ I run these smoothers for some parameters. To avoid discontinuities when turning a parameter. You generally don't want to flush 1000's of parameter updates on things like delay times, so you smooth it out over time. Maybe only 10ms, but it helps to make it sound better and brings down CPU too. Cool.

      And that was all well and good. Worked fine.

      But in my setParameter callbacks, I was only setting the target. I wasn't setting the initial value. Which now I read it, is literally the dumbest stupidest mistake that I could've made.

      Time for more Guinness.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How do I flush the UI parameters on first run??

      @David-Healey said in How do I flush the UI parameters on first run??:

      @Orvillain said in How do I flush the UI parameters on first run??:

      So now I'm thinking, maybe this is a custom C++ code or script node problem.

      Could be...

      ooooo... looks like it might be any of my effects that uses my ExpSmoothedFloat class to smooth the incoming parameter changes!

      I've genuinely been slamming my head against this for the past 4 hours.... and it was nothing to do with the UI side after all... at least it seems like.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How do I flush the UI parameters on first run??

      hmmm... no that didn't seem to work either.

      Now, I might've been being dumb all along... but on a hunch, I tried a different effect.... and it seems like at least some of those parameters DO flush on init correctly... and some of them don't.

      So now I'm thinking, maybe this is a custom C++ code or script node problem.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How do I flush the UI parameters on first run??

      @David-Healey said in How do I flush the UI parameters on first run??:

      Ok, what about using a timer that is started at the end of the callback, and in the timer you call .changed()

      I'll give it a go!

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How do I flush the UI parameters on first run??

      @David-Healey said in How do I flush the UI parameters on first run??:

      @Orvillain Are you calling .changed() from the menu's callback?

      Yeah I am, there's no other callback to use right now.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How do I flush the UI parameters on first run??

      @David-Healey said in How do I flush the UI parameters on first run??:

      What happens if after this stage you call .changed for each of those components?

      I get this in the Console:

      Interface: Skipping changed() callback during onInit for grf_FXEngine1_FX1_Graph1
      Interface: Skipping changed() callback during onInit for btn_FXEngine1_FX1_Sw1
      Interface: Skipping changed() callback during onInit for menu_FXEngine1_FX1_Menu1
      Interface: Skipping changed() callback during onInit for btn_FXEngine1_FX1_Sw2
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param1
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param2
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param3
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param4
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param5
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param6
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param7
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param8
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param9
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param10
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param11
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param12
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param13
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param14
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param15
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param16
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param1
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param2
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param3
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param4
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param5
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param6
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param7
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param8
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param9
      Interface: Skipping changed() callback during onInit for knb_FXEngine1_FX1_Param10
      
      
      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How do I flush the UI parameters on first run??

      @David-Healey said in How do I flush the UI parameters on first run??:

      @Orvillain said in How do I flush the UI parameters on first run??:

      run script init / callbacks

      This is the important part. The last thing to run are the callbacks, in the order that the components appear in the module list.

      So if you have a callback that sets the active effect, and then other callbacks that set the effect's parameter values, you might get what you want by changing their order.

      oooooooo... I've just realised something .....

      My generic UI parameters themselves do not have a callback assigned to them. IE: I never call uiParam.setControlCallback(blahblahblah)

      I currently rely entirely on my effect load menu to do the following, and in this order:

      1. Get the menus component id.
      2. Derive the effect slot id string from the menu id.
      3. Read the menu item text - force it to lower case.
      4. Get the slotFX processor for the slot we want to address.
      5. Look up the hardcoded effect name for the chosen effect; using a map that takes in the lowercase menu item, and returns the name of the hardcoded effect to load.
      6. call setEffect(effectToLoad) on the slotFX instance.

      At this point, my effect is loaded.

      1. If the effect we loaded was the "empty" one, then just hide all of the parameters, and reset all of their attributes to blank slates.

      If it wasn't "empty"... then do this:
      8. Fetch the UI layout+binding spec for the effect.
      9. Bind the generic UI controls to that effects parameters.

      9.1 - build the UI prefix for the slot.
      9.2 - collect the UI components.
      9.3 - clear existing bindings.
      9.4 - set processorId to the correct effect slot name.
      9.5 - set the parameterId to the correct effect parameter name.

      At this point, the knob does control the DSP.

      10 - setup the other binding parameters (min, max, stepSize, colours, etc)
      11 - Hide any UI widgets that were not used.

      ... so in effect.... my actual UI parameters within each of my effect slots, do not have callbacks themselves. I rely entirely on the menu... which thinking about it... feels a bit stupid.

      Effectively, I'm relying entirely on HISE's attachment of processorId and parameterId - and I don't really know when that happens in relation to the callback.

      As I say; my UI parameters always look correct. They sound correct when I load a preset. They do not sound correct when I load a DAW project.

      posted in General Questions
      OrvillainO
      Orvillain
    • RE: How do I flush the UI parameters on first run??

      @David-Healey said in How do I flush the UI parameters on first run??:

      @Orvillain said in How do I flush the UI parameters on first run??:

      I would guess that what is happening is, the parameters push through their values before the processorId or parameterId has been assigned.

      Can you change the order that this happens? If it's all triggered by control callback then the order is based on the component list.

      I'm not sure, but is that actually under my control? I imagine the order of operations that HISE uses is something like:
      construct UI components
      restore UI component values
      restore processor graph / SlotFX state
      run script init / callbacks

      ???

      posted in General Questions
      OrvillainO
      Orvillain
    • How do I flush the UI parameters on first run??

      In my synth project, I have hardcoded effect slots. I have menus to load effects into them. I have a set of 16 generic knobs in the UI. These get bound to the DSP parameters when I load an effect - this is all triggered in my menu callback.

      It all works. I open my menu, I load an effect. The UI parameters get assigned to the correct processorId and parameterId. Then I can control the effect on screen.

      But, I save the project and reload it.... and my effect recalls correctly, and the UI positions of the knobs recall correctly, but the underlying DSP parameters are at their default values.

      This only happens when saving the .xml project, or saving the host project in a DAW. If I save and recall a preset, then it all seems to work fine. Any ideas on what to look into???

      The essential problem: I think I need a way to flush the positions of all parameters in the plugin, on first launch.

      I would guess that what is happening is, the parameters push through their values before the processorId or parameterId has been assigned.

      posted in General Questions
      OrvillainO
      Orvillain