• Correct setup for scriptnode synth?

    ScriptNode
    2
    0 Votes
    2 Posts
    36 Views
    D

    So no one is making synths with Scriptnode?

  • 0 Votes
    4 Posts
    21 Views
    OrvillainO

    @dannytaurus Hilariously.... they don't sound the same!! The WAV file sounds markedly different to the HWT file here!

  • 0 Votes
    5 Posts
    357 Views
    OrvillainO

    For me it crashes whenever I try to load a 44.1kHz sample into it.

  • 0 Votes
    26 Posts
    751 Views
    OrvillainO

    @Christoph-Hart

    It's like this ..... I have an external arppegiator triggering my synth... I click my left/right arrows to change preset.... and because I use a custom data model, I have to tap into the pre/post callbacks.... so here's what I get:

    synth notes triggering.... click the arrow....
    Interface: preLoadCallback triggered - no synth notes triggering when this is running
    Interface: onPresetLoad triggered - no synth notes triggering when this is running
    Once the onPresetLoad method is finished, a midi note does sneak through into the synth....

    Then this callback fires:
    Interface: postLoadCallback triggered
    This kills the previous notes, and triggers the new ones.....

    Here is my full loadGlobalPreset method:

    inline function loadGlobalPreset(obj) { local samplemaps = obj.samplemaps; local wavetables = obj.wavetables; local params = obj.parameters; local fxSelections = obj.fxSelections; local fxChainOrder = obj.fxChainOrder; lastLoadParams = params; // Restore samplemaps UISoundSelector.syncSamplerMenu(1, samplemaps[0]); UISoundSelector.syncSamplerMenu(2, samplemaps[1]); UISoundSelector.syncSamplerMenu(3, samplemaps[2]); // Restore wavetables UISoundSelector.syncSynthMenu(1, wavetables[0]); UISoundSelector.syncSynthMenu(2, wavetables[1]); UISoundSelector.syncSynthMenu(3, wavetables[2]); // Update all UI parameters - except the ones that are not tagged as saveInPreset UserPresetHandler.updateSaveInPresetComponents(params); // TODO: Restore custom samples // Fix-up FX menus by stable id, but only when they differ if (isDefined(fxSelections)) { for (i = 0; i < fxSelections.length; i++) { local sel = fxSelections[i]; if (!isDefined(sel) || !isDefined(sel.id)) continue; local targetId = (isDefined(sel.idName) && sel.idName != "") ? sel.idName : "empty"; local menu = Content.getComponent(sel.id); if (!isDefined(menu)) continue; // what saveInPreset restored (by index) local currentId = UIEffectDropDownMenu.getIdForIndex(menu.getValue()); if (currentId == undefined) currentId = "empty"; // only fire callback if mismatch if (currentId != targetId) UIEffectDropDownMenu.setMenuToId(sel.id, targetId, true); } } // Restore FX chain ordering (pageKey -> [4 slots]) if (isDefined(fxChainOrder)) { for (k in fxOrderKeys) { local key = fxOrderKeys[k]; local saved = fxChainOrder[key]; // expect an array of length 4 with unique 0..3 if (!isDefined(saved) || saved.length != 4) continue; UIEffectReordering.pageOrder[key] = saved; // update UI state UIEffectReordering.applyVisualOrder(key); // move panels PluginEffectReorder.apply(key, saved); // set DSP chain } } // Update all UI parameters - except the ones that are not tagged as saveInPreset //UserPresetHandler.updateSaveInPresetComponents(params); }

    It is doing quite a lot... and ultimately what happens is when I switch a preset, I get one voice that sounds one way... and then another voice that sounds completely different... like a voice is being allowed to be triggered before the preset is fully loaded.

    It seems to be something related to my effect menus and/or effect re-ordering.

    It is hard to explain. Might have to make a video. But any immediate thoughts??

  • Builder InterfaceTypes

    General Questions
    12
    0 Votes
    12 Posts
    37 Views
    dannytaurusD

    @Lindon said in Builder InterfaceTypes:

    According to Claude:

    "SynthGroup" = Synthesiser Group
    "SynthChain" = Container

    Remember that names can change magically for no reason between source code, docs and HISEscript 😂

  • Load DLL from some else's Scriptnode export?

    ScriptNode
    7
    1 Votes
    7 Posts
    96 Views
    A

    @David-Healey Thank you! Thats very helpful

  • Linking a pre-compiled static library with ThirdParty C++ nodes

    Unsolved C++ Development
    4
    0 Votes
    4 Posts
    62 Views
    HISEnbergH

    @Christoph-Hart You are the best. I'll give this a try later on! Thank you as always.

  • 0 Votes
    1 Posts
    14 Views
    No one has replied
  • HISE Sampler VSTs Crash? Across multiple brands (FL Win)

    Bug Reports
    29
    0 Votes
    29 Posts
    891 Views
    StraticahS

    @Christoph-Hart Thanks for taking a look! 🙏

    Any news on this? I plan to push some other webview feature updates end of March.

  • 0 Votes
    1 Posts
    14 Views
    No one has replied
  • 0 Votes
    13 Posts
    265 Views
    B

    @OstinTheKr0t

    okok, tehre you go:

    here is a short explaination -

    It combines Sample Rate Reduction (Sample & Hold) and Bit Depth Quantization in a single SNEX node.How it works:The node processes audio in two distinct stages to achieve that classic "crushed" digital sound.

    1. Sample Rate Reduction (Temporal Distortion)Instead of processing every incoming sample, the node "freezes" the amplitude for a set number of samples using a counter and a buffer.The Logic:

    A holdCounter tracks the "steps." When it hits zero, it grabs a new "snapshot" of the input signal and stores it in holdLeft/Right.The Result: This creates a "staircase" waveform. In the frequency domain, this introduces Aliasing, giving it that metallic, ringing Lo-Fi character.

    2. Bit Depth Reduction (Amplitude Quantization)This stage reduces the dynamic resolution of the signal, simulating older AD/DA converters (like 8-bit or 12-bit systems).

    The Math:

    We calculate the available "steps" based on the bit depth
    2. We scale the signal up, round it to the nearest integer, and scale it back down

    The Result: This introduces Quantization Noise and "fuzziness," especially audible on tails and quiet signals.

    template <typename T> void processFrame(T& data) { // --- Sample Rate Reduction (Sample & Hold) --- int divider = jmax(1, (int)srDivider); if (holdCounter <= 0) { holdLeft = data[0]; holdRight = data[1]; holdCounter = divider; } holdCounter--; float outL = holdLeft; float outR = holdRight; // --- Bit Crusher --- float steps = std::pow(2.0f, bitDepth) - 1.0f; // calculate steps steps = jmax(1.0f, steps); outL = std::round(outL * steps) / steps; outR = std::round(outR * steps) / steps; data[0] = outL; data[1] = outR; } int handleModulation(double& ) { return 0; } void setExternalData(const ExternalData& , int ) {} // ------------------------------------------------------------------------- // Parameters: 0 = BitDepth | 1 = SampleRateReduction // ------------------------------------------------------------------------- template <int P> void setParameter(double v) { if constexpr (P == 0) // Bit Depth (1 – 16) bitDepth = (float)jlimit(1.0, 16.0, v); if constexpr (P == 1) // SR Divider (1 – 32) srDivider = (float)jlimit(1.0, 32.0, v); }

    Play around with the settings, and you will get the classic NES - Sound :)

    I can gice you the .h files if you send me a dm

    Cheers Ben

  • past months work

    Newbie League
    3
    3 Votes
    3 Posts
    70 Views
    S

    Ok so a couple of things;

    when you sell you need to cover sales tax. This is hard to set up on your own so the fastest way is to find a MoR (merchant of record) to handle the sales tax. Gumroad is pretty cool and is a MoR nowadays. It's also a good place to look for and find more then experimental plugins. So signing up there is a no regret for you. Unless you want to skip taxes and just do a couple of sales, in that case setting up a small website yourself is the way to go and just do some kind of PayPal transaction Licenses. Keep in mind that Juce requires a license when business exceeds 20k and Hise requires a license if you don't release open source copy protection / license activation. 2 good options are Hise activate or moonbase. The latter is also a MoR but it's still difficult to set up under the current Juice version. It will take some work integrating either. installers: I think this is a bit of a hassle with code signing. David is preparing a course on this I think.

    Mind you this is just my research from the last couple of weeks. I didn't go to market yet. So I might be missing some stuff or getting it wrong.

    Btw for your more experimental plugins, probably the best way is indeed gumroad, and maybe just skip copy protection. Consider publishing open source as well. Unless you want to start a big ad campaign, publish on Plugin Alliance and take a more commercial approach. 🤷🏻

    Good luck!

  • Looping DAW Misreads Last Grid Change

    Unsolved Scripting
    1
    0 Votes
    1 Posts
    19 Views
    No one has replied
  • HISE Transformation to the new age

    AI discussion
    68
    2 Votes
    68 Posts
    2k Views
    David HealeyD

    Someone just sent me a link to this free AI course from Anthropic https://anthropic.skilljar.com/

  • VS 2026

    General Questions
    24
    0 Votes
    24 Posts
    630 Views
    GabG

    @dannytaurus weird then, I'm not sure why it happens. I'll leave my setup, I added MSVC V143 in the list compared to the default settings.

    VS2026Setup.png

  • Where are we with Hise currently?

    General Questions
    13
    0 Votes
    13 Posts
    199 Views
    Oli UllmannO

    @Lindon
    I agree with you! I think the bug I mentioned is also a regression.

  • Stock Table Upgrade?

    General Questions
    45
    1 Votes
    45 Posts
    3k Views
    ustkU

    @Christoph-Hart Considering my post right above about the issues and limitation of the scriptnode table, could the upgraded UI table be ported to scriptnode with at least a default behaviour if a customisable one isn't convenient to add?

    Linking a UI table for each one we want in scriptnode is not really an option so much it is cumbersome during development...

  • Sample Map XML recovery??

    General Questions
    5
    0 Votes
    5 Posts
    63 Views
    dannytaurusD

    @l4ch If you're on Mac, try opening the XML in TextEdit then go to File > Revert To... > Browse all versions.

    It might have some version history saved by macOS that you can restore from.

  • writeAudioFile help

    Scripting
    3
    0 Votes
    3 Posts
    36 Views
    ustkU

    @pcs800 Or an array of buffers for stero/multichannel

  • Export Setup Wizard Issue

    General Questions
    26
    0 Votes
    26 Posts
    117 Views
    D

    I’m so absent-minded 😰 The issue was that I forgot you need to enable compilation in the main container. Thank you for your help, guys! @David-Healey @Christoph-Hart @dannytaurus