Forum
    • Categories
    • Register
    • Login
    1. Home
    2. Orvillain
    3. Topics
    • Profile
    • Following 1
    • Followers 0
    • Topics 92
    • Posts 719
    • 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
      266 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
      88 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
      160 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
      154 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
      55 Views
      No one has replied
    • OrvillainO

      CSS :nth-child() supported???

      Watching Ignoring Scheduled Pinned Locked Moved Scripting
      9
      0 Votes
      9 Posts
      286 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
      104 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
      88 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
      123 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
      567 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
      387 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
      117 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
      116 Views
      OrvillainO

      @Christoph-Hart Still experiencing this.

    • OrvillainO

      Custom browser - custom preset file format???

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      9
      0 Votes
      9 Posts
      595 Views
      Christoph HartC

      @Orvillain nope, I'm using it in Triaz, but I haven't made a public example yet, but it's a good idea to do so. The problem is that it cannot be encompassed into a nice simple snippet as it requires additional data (preset files) to be useful.

      Just from thinking about it there are a few things to watch out for:

      initialisation order. Usually you can decide what you restore first by rearringing your script function, but be aware that restoring module states for whole HISE modules will always come after this method. the function is being executed synchronously in the loading thread (but it should take a lock to prevent simultaneous execution of scripting tasks in the scripting thread). You can safely assume that there are no voices playing during this function call (because it kills all voices when loading a preset). The XML -> JSON conversion is a bit weird because the data structures are not 100% convertible, so there are a few edge cases to consider here. You'll notice when you run into them :)
    • 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
      347 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
      215 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
      842 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
      304 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
      426 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.