• Splitting incoming signal

    General Questions
    12
    0 Votes
    12 Posts
    83 Views
    ustkU

    @pcs800 yes, from any script I guess.
    Be careful though, this function takes samples as parameter, not ms, so mind your conversions

  • 0 Votes
    6 Posts
    263 Views
    OrvillainO

    @HISEnberg
    Yes I wrote a custom transient detector in a c++ node, and made sure it utilised an audio file, which I can load in my UI using the audio waveform floating tile.

    I implemented spectral flux extraction:

    Take your audio. Perform an FFT on it. Extract the spectral flux envelope from the FFT. Downsample the spectral flux envelope (optional but can help accuracy) Perform peak picking on the spectral flux envelope.

    I used the stock JUCE FFT processor.

  • How do I specify a CC controller for Knob using code?

    General Questions
    2
    0 Votes
    2 Posts
    27 Views
    d.healeyD

    @CatABC The CC assignment set using MIDI learn is saved in the preset, so when you change presets it will be wiped. You can use the onController callback to direct incoming CCs to knob values, but MIDI learn is usually the best method.

  • Simple copy protection 2025

    General Questions
    16
    0 Votes
    16 Posts
    78 Views
    ILIAMI

    1000054321.jpg

  • HELP! A lot of errors

    General Questions
    2
    0 Votes
    2 Posts
    29 Views
    d.healeyD

    @13murderer how did you trigger the errors?

  • Look and feel drawing help

    Scripting
    1
    0 Votes
    1 Posts
    19 Views
    No one has replied
  • HISE User Interface Unusable

    General Questions
    9
    0 Votes
    9 Posts
    77 Views
    A

    @d-healey Created new project, tweaked Mac display settings, tools & grid now visible on both projects:LAB2.png LAB.png

    Opened HISE on Laptop, pressed left trackpad button to drag app for scaling & it just popped into place. Thanks for pointing me in the right direction.

  • 1 Votes
    3 Posts
    38 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();
  • 0 Votes
    21 Posts
    126 Views
    ustkU

    @Lindon For tables, shapes and consort, they can be saved as array values into the object.
    table data points, paths as string, base64 states...

  • Looking for advice on hosting solutions

    General Questions
    2
    0 Votes
    2 Posts
    33 Views
    d.healeyD

    @Yinxi

    Bunny

    If you're using WooCommerce there is a compatible plugin too - however the downloads from the developer's site aren't working so if you need it let me know and I'll send you it.

  • 0 Votes
    12 Posts
    276 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
  • Mod Matrix with Scriptnode / Hardcoded FX

    Unsolved ScriptNode
    6
    0 Votes
    6 Posts
    65 Views
    OrvillainO

    @Orvillain

    @Christoph-Hart
    https://youtu.be/-XchgrM-yR8

    Things I notice, and I don't think this was happening to me a bunch of branches ago. Sorry, can't be more specific!

    Setting a parameter to use external modulation can reset all of the parameters that are already set to use external modulation, to zero. Right-clicking a parameter will reset any parameters that are already set to use external modulation, to zero. fuzzy glitching when assigned to certain parameters, even though no modulation signal is incoming.

    Any ideas on those??

    (btw, I've not yet tried turning modulation on directly inside the c++ code. Haven't gotten around to testing it)

  • Button Script not working...

    Scripting
    4
    0 Votes
    4 Posts
    48 Views
    ustkU

    @d-healey seeing the number of people legitimately falling in that trap, it's a pity there's still no warning in the console

  • 0 Votes
    7 Posts
    63 Views
    CatABCC

    @CatABC said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

    @ulrik

    @d-healey said in Sampler.setSoundPropertyForSelection(); seems to have a bug.:

    @CatABC Use constants instead of magic numbers

    Sadly, I tried using constants, but the problem persists. Also, if I swap the positions of HIGH_KEY and LOW_KEY, and need to move the smaller value to the larger value, the contradiction still occurs.

    const var ComboBox1 = Content.getComponent("ComboBox1"); const var ROOT = 2; const var LOW_KEY = 3; const var HIGH_KEY = 4; const var C1 = 36; const var D1 = 38; const var E1 = 40; const var B3 = 71; inline function onComboBox1Control(component, value) { Sampler.selectSounds("C3"); if (value == 1) { Sampler.setSoundPropertyForSelection(ROOT, C1); Sampler.setSoundPropertyForSelection(HIGH_KEY, C1); Sampler.setSoundPropertyForSelection(LOW_KEY, C1); } if (value == 2) { Sampler.setSoundPropertyForSelection(ROOT, D1); Sampler.setSoundPropertyForSelection(HIGH_KEY,D1); Sampler.setSoundPropertyForSelection(LOW_KEY, D1); } if (value == 3) { Sampler.setSoundPropertyForSelection(ROOT, E1); Sampler.setSoundPropertyForSelection(HIGH_KEY,E1); Sampler.setSoundPropertyForSelection(LOW_KEY, E1); } if (value == 4) { Sampler.setSoundPropertyForSelection(ROOT, B3); Sampler.setSoundPropertyForSelection(LOW_KEY, B3); Sampler.setSoundPropertyForSelection(HIGH_KEY, B3); } }; Content.getComponent("ComboBox1").setControlCallback(onComboBox1Control);

    Ultimately, I set up two methods to call different methods depending on whether the value in the combobox increases or decreases.😹

  • Accessing embedded MIDI files via FileSystem API

    General Questions
    1
    0 Votes
    1 Posts
    22 Views
    No one has replied
  • 0 Votes
    22 Posts
    92 Views
    d.healeyD

    @DJJD12345 said in xcpretty Not Detected After Install on macOS Tahoe M1: Compiling Fails in HISE Export:

    Downloaded it as you described in your video on how to download Hise

    There is clearly a mismatch between what I show in the video and what you did. So you need to tell me exactly what you did, step by step. And you need to tell me if you removed all previous versions you'd downloaded before you followed the video.

  • Change default HISE sample folder path on macOS

    General Questions
    1
    0 Votes
    1 Posts
    20 Views
    No one has replied
  • Need More 'reg' variables !

    Unsolved Scripting
    4
    0 Votes
    4 Posts
    34 Views
    d.healeyD

    @Chazrox said in Need More 'reg' variables !:

    can you give me a quick tip on which reg's be change to const?

    All component and module references, arrays, and objects.

  • Disabling interpolation in the wavetable synth

    General Questions
    4
    1 Votes
    4 Posts
    58 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?

  • [bug] SlotFX.setBypassed no worky

    Bug Reports
    21
    0 Votes
    21 Posts
    221 Views
    d.healeyD

    @Orvillain said in [bug] SlotFX.setBypassed no worky:

    What is the benefit of using const, in my situation?

    I think the best answer is from Christoph

    it yields a huge performance boost (because it can resolve the function call on compile time).
    There is absolutely no reason to not declare UI widgets, references to modules (via Synth.getModulator() etc.) not as const

    reg is good for accessing script level variables in midi callbacks and anywhere else where you would have had to use a script level var. But the more reg you have (and you only get 32 per namespace) the worse the performance gets. Internally reg is like a predefined array that HISE is keeping track of. So the more values you add the more data it needs to go through each time to you access it.

    Another addition to Javascript: Use reg instead of var when declaring temporary variables which are accessed in the MIDI (or audio) callbacks. It tells the interpreter to store this in a fixed size container with faster access times:
    If you have a script with lots of variables, the interpreter must search the entire array for every variable access (so the 23 - 40 ms are depending on how many other variables are defined in the script while the access time to reg slots stay the same).

    It's also possible since you're storing them in an object rather than as direct references that const gives no performance benefit. But it's still good practice to use a const here. It makes it clear to other developers who might see your code (or your future self) that this variable is not meant to be reassigned, and it also prevents it being reassigned accidentality.