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

    Topics

    • OrvillainO

      How do I flush the UI parameters on first run??

      Watching Ignoring Scheduled Pinned Locked Moved Solved General Questions
      15
      0 Votes
      15 Posts
      157 Views
      OrvillainO

      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.

    • OrvillainO

      How do I remove or mask out sections of a path?

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      5
      0 Votes
      5 Posts
      56 Views
      dannytaurusD

      @Orvillain You can set up the hierarchy in your script I guess. Then at least you have it all in one place.

    • OrvillainO

      Component search - how does it work?

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      6
      1 Votes
      6 Posts
      120 Views
      dannytaurusD

      @Orvillain Also, to clarify, it only searches the Module Tree structure. It doesn't search the Interface Designer for UI components, nor any script content.

    • OrvillainO

      Plotter with a thin line

      Watching Ignoring Scheduled Pinned Locked Moved Snippet Waiting Room
      3
      0 Votes
      3 Posts
      120 Views
      OrvillainO

      @David-Healey Oh weird. Must've deleted it somehow. Fixed.

    • OrvillainO

      Sampler "Sample Start" modulation doesn't support the MatrixModulator??

      Watching Ignoring Scheduled Pinned Locked Moved Bug Reports
      1
      0 Votes
      1 Posts
      41 Views
      No one has replied
    • OrvillainO

      CSS :nth-child() supported???

      Watching Ignoring Scheduled Pinned Locked Moved Scripting
      9
      0 Votes
      9 Posts
      223 Views
      OrvillainO

      @Christoph-Hart said in CSS :nth-child() supported???:

      I can add an attribute to my parameter dictionary for scale/unipolar/bipolar,

      I've added a method requested by @DanH where you can setup default properties for each new connection (so you can eg. set the base intensity to 75% or whatever floats your boat.

      https://docs.hise.dev/scripting/scripting-api/scriptmodulationmatrix/index.html#setmatrixmodulationproperties

      siiiiiiicccckkkkk!! Nice one Christoph!

    • OrvillainO

      Updating matrixTargetId attribute on a knob - results in modulation not being visible

      Watching Ignoring Scheduled Pinned Locked Moved Bug Reports
      3
      0 Votes
      3 Posts
      82 Views
      OrvillainO

      @Oli-Ullmann Yes I think you're correct. I checked the docs and there is a line about it not meant to be a dynamic state.

    • OrvillainO

      How do I create a matrix modulator for a given slotFX/HardcodedMasterFX instance?

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      3
      1 Votes
      3 Posts
      80 Views
      OrvillainO

      Figured it out. It does support addModulator. This is how you do it:

      d3660d2c-72ae-45d4-8e6d-f5110a221950-image.png

      Content.makeFrontInterface(600, 600); const var builder = Synth.createBuilder(); builder.clear(); const var generator = builder.create(builder.Effects.SlotFX, "generator", 0, builder.ChainIndexes.FX); const var slotfx = Synth.getSlotFX("generator"); slotfx.setEffect("Hardcoded Master FX"); const hardcoded = Synth.getEffect("generator_Hardcoded Master FX"); const numP = 4; for (i = 0; i < numP; i++) { hardcoded.addModulator(i, "MatrixModulator", "P" + (i+1) + " Modulation"); } builder.flush();
    • OrvillainO

      Disabling interpolation in the wavetable synth

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      4
      1 Votes
      4 Posts
      101 Views
      resonantR

      Sorry if this is off-topic.

      In a wavetable synth, even if the notes are played at different times, all sounds modulate with the same timing, right?

    • OrvillainO

      Is there a way to give a custom c++ node parameter modulation support without wrapping in a network??

      Watching Ignoring Scheduled Pinned Locked Moved C++ Development
      12
      0 Votes
      12 Posts
      512 Views
      OrvillainO

      And I assume these are the modulation colour references to use:

      HiseModulationColours::ColourId::ExtraMod HiseModulationColours::ColourId::Midi HiseModulationColours::ColourId::Gain HiseModulationColours::ColourId::Pitch HiseModulationColours::ColourId::FX HiseModulationColours::ColourId::Wavetable HiseModulationColours::ColourId::Samplestart HiseModulationColours::ColourId::GroupFade HiseModulationColours::ColourId::GroupDetune HiseModulationColours::ColourId::GroupSpread

      Is there any limitations around which colour a particular parameter should use? Or is it really just down to how you want it to appear in the module tree??

      And for the ParameterModes, would it be these ????

      modulation::ParameterMode::ScaleAdd modulation::ParameterMode::ScaleOnly modulation::ParameterMode::AddOnly modulation::ParameterMode::Pan modulation::ParameterMode::Disabled
    • OrvillainO

      User presets not showing up in exported plugin

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      7
      0 Votes
      7 Posts
      362 Views
      David HealeyD

      @Orvillain Have you enabled the global app data folder on MacOS in project preferences?

    • OrvillainO

      Extend range of the spectral analyser

      Watching Ignoring Scheduled Pinned Locked Moved Feature Requests
      1
      2 Votes
      1 Posts
      106 Views
      No one has replied
    • OrvillainO

      Custom envelopes or LFO's locking up when set to monophonic mode???

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      2
      0 Votes
      2 Posts
      105 Views
      OrvillainO

      @Christoph-Hart Still experiencing this.

    • OrvillainO

      Custom browser - custom preset file format???

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      7
      0 Votes
      7 Posts
      502 Views
      Christoph HartC

      That's the right direction, but I would also try to stay within the HISE user preset system so you get the intended loading prodecure (kill voices, load the preset on a background thread, then unsuspend the audio processing).

      With the custom data model you can define the layout of the user preset file as you wish. Note that it will be converted from JSON to XML at some point though (which is a bit weird).

      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.

      I would detach this from the user preset system. A preset with sample mapping data and samples should be

      The preset file The JSON (or SFZ or whatever) mapping file The audio samples

      all in one folder.

    • OrvillainO

      Is there a way to pickup host transport messages directly within a custom node??

      Watching Ignoring Scheduled Pinned Locked Moved C++ Development
      6
      0 Votes
      6 Posts
      313 Views
      OrvillainO
      #pragma once #include <JuceHeader.h> namespace project { using namespace juce; using namespace hise; using namespace scriptnode; using namespace snex; /** Smallest possible BPM listener example. Demonstrates: - TempoListener registration - tempoChanged() callback - BPM flowing into the audio graph */ struct MinimalBPMListener : public data::base, public hise::TempoListener { SNEX_NODE(MinimalBPMListener); struct MetadataClass { SN_NODE_ID("MinimalBPMListener"); }; static constexpr bool isModNode() { return true; } static constexpr bool isPolyphonic() { return false; } static constexpr bool hasTail() { return false; } static constexpr bool isSuspendedOnSilence() { return false; } static constexpr int getFixChannelAmount() { return 1; } // --- Tempo sync --- hise::DllBoundaryTempoSyncer* tempoSyncer = nullptr; double bpm = 120.0; // Exposed modulation value double lastOut = 120.0; // --- TempoListener --- void tempoChanged(double newTempo) override { bpm = newTempo; lastOut = bpm; // make it observable } // --- Lifecycle --- void prepare(PrepareSpecs specs) { if (tempoSyncer == nullptr && specs.voiceIndex != nullptr) { tempoSyncer = specs.voiceIndex->getTempoSyncer(); if (tempoSyncer != nullptr) tempoSyncer->registerItem(this); } // Initialize output lastOut = bpm; } void reset() {} ~MinimalBPMListener() override { if (tempoSyncer != nullptr) { tempoSyncer->deregisterItem(this); tempoSyncer = nullptr; } } // --- Processing --- template <typename T> void process(T& data) { static constexpr int NumChannels = getFixChannelAmount(); auto& fixData = data.template as<ProcessData<NumChannels>>(); auto fd = fixData.toFrameData(); while (fd.next()) fd.toSpan()[0] = (float)lastOut; } int handleModulation(double& value) { value = lastOut; return 1; } void setExternalData(const ExternalData&, int) {} }; }

      This is a minimal example of how to get your custom C++ node to listen to the host BPM. Code above doesn't actually DO anything with the BPM information. But it proves the concept.

    • OrvillainO

      Setting UI values from a combobox - doesn't fall through to linked processorId+parameterId ??

      Watching Ignoring Scheduled Pinned Locked Moved Solved General Questions
      3
      0 Votes
      3 Posts
      200 Views
      ChazroxC

      @Orvillain I was gonna suggest to try that but like....nah that cant be it. haha.

    • OrvillainO

      I think I've figured out a better way to create parameters for a node

      Watching Ignoring Scheduled Pinned Locked Moved C++ Development
      10
      2 Votes
      10 Posts
      794 Views
      OrvillainO

      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.

    • OrvillainO

      Dynamic reassignment of effect slots

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      37
      0 Votes
      37 Posts
      2k Views
      OrvillainO

      This thread feels like the future.

    • OrvillainO

      What is the correct approach for making a custom polyphonic c++ node?

      Watching Ignoring Scheduled Pinned Locked Moved C++ Development
      4
      0 Votes
      4 Posts
      269 Views
      griffinboyG

      @Orvillain

      Voices in Hise are managed 'automatically'.
      Take a read of Polydata.

      I don't remember where it can be found. But the Hise source has all the .h and .cpp files which have the implementations for voice handling. You can see what's currently going on, and perhaps there will be some useful api that you're not yet making use of.

      Christoph is the person to ask though!

    • OrvillainO

      Can I update a parameter on my node from inside the C++

      Watching Ignoring Scheduled Pinned Locked Moved C++ Development
      5
      0 Votes
      5 Posts
      401 Views
      Christoph HartC

      Is there a way to update the scriptnode UI with the relevant new parameter

      Not without hacks. The best way of thinking about this is a black box communication of parameters into the node. Now if you want to update a UI state that you display on the plugin interface, global cables (and their data callback) are the way to go, there you can easily pack everything up into a nice JSON and send it back to HISE Script (on a deferred thread!), but I wouldn't recommend going the extra mile of updating the internal scriptnode parameters only so that you can look at them in the network with the right value.