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

    Topics

    • OrvillainO

      47f54ba6f - remove Content.setColour & ScriptComponent.setColour - why ????

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

      mousewheel scrolling in a custom script panel - possible?

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

      @David-Healey Thanks! That might work.... will have to try it out.

    • OrvillainO

      Loading wavetables by drag-and-drop takes a long time??

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      8
      0 Votes
      8 Posts
      178 Views
      OrvillainO

      @dannytaurus said in Loading wavetables by drag-and-drop takes a long time??:

      @Orvillain Weird. I'll try it out here again and see if I get the same result.

      Is yours a standard mono, 'power of 2' file?

      Yeppers.

    • OrvillainO

      Hamburger menu - custom panel or combobox with custom LAF/paint routine?

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      3
      0 Votes
      3 Posts
      97 Views
      OrvillainO

      @David-Healey Thought so, cheers Dave!

    • 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
      451 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
      146 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
      237 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
      191 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
      66 Views
      No one has replied
    • OrvillainO

      CSS :nth-child() supported???

      Watching Ignoring Scheduled Pinned Locked Moved Scripting
      9
      0 Votes
      9 Posts
      391 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
      137 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
      113 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
      166 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
      751 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
      446 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
      134 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
      140 Views
      OrvillainO

      @Christoph-Hart Still experiencing this.

    • OrvillainO

      Custom browser - custom preset file format???

      Watching Ignoring Scheduled Pinned Locked Moved General Questions
      29
      0 Votes
      29 Posts
      1k Views
      OrvillainO

      @Christoph-Hart

      Can I sanity check this:

      namespace PluginUserPresetHandling { const UserPresetHandler = Engine.createUserPresetHandler(); inline function onPresetSave() { Console.print("onPresetSave triggered"); } inline function onPresetLoad(obj) { Console.print("onPresetLoad triggered"); } inline function preLoadCallback() { Console.print("preLoadCallback triggered"); } inline function postLoadCallback() { Console.print("postLoadCallback triggered"); } inline function postSaveCallback() { Console.print("postSaveCallback triggered"); } inline function init() { UserPresetHandler.setUseCustomUserPresetModel(onPresetLoad, onPresetSave, false); UserPresetHandler.setPreCallback(preLoadCallback); UserPresetHandler.setPostCallback(postLoadCallback); UserPresetHandler.setPostSaveCallback(postSaveCallback); } }

      In what order are these called, and which ones are synchronous versus asynchronous??

    • 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
      438 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.