• My First Impression of Microsoft Setup Was Unexpected

    General Questions
    1
    0 Votes
    1 Posts
    9 Views
    No one has replied
  • past months work

    Newbie League
    10
    3 Votes
    10 Posts
    112 Views
    N

    @David-Healey ill search that tysm🫡😊

  • 0 Votes
    6 Posts
    45 Views
    OrvillainO

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

    @Orvillain To be clear, I was dropping a prepared wavetable WAV into the Wavetable Synth.

    I'm not sure about the Wavetable Creator.

    Are you dropping a wavetable WAV or just a plain WAV and hoping to make it into an interesting wavetable?

    I have no idea how the Wavetable Creator works, or what it's for! 😂

    A wavetable wav. It sounds different when it is saved as a HWT. Very odd.

  • Correct setup for scriptnode synth?

    ScriptNode
    5
    0 Votes
    5 Posts
    65 Views
    Christoph HartC

    That's about as clean as a transient as you can get:

    HiseSnippet 1555.3oc4X8taaaCDWxIJqwsqXsXXX6aB4StCAA14eMcCCswNIsFqN0nJ0a.EEAzRz1DghTPjxNdE4cbOD6AnuAaGIkrkRbSb75Z+vbBRLOdGue2e3cmT6XtOVH3wV1kOYbD1x9dNdiYxAMFfHLqlGXYeemVHgDG6ZHUebDRHvAV11K8bEA6UW1R+4COsNhhX93ojrr5vI93WRBIxoTa+rekPoGgBvmPByw81OqoOm0fS4I.dVxopUDx+LTe7wHEakbrdARLvx9Gc1Yqc1cqpA81DErm+da4u219a+3tatc2MCvOo5tceBNXa+cCpYYuxgADIO1ShjXAbn04Ai8FvGwLJnCQP5RwpE0r7.MaHa0X.gFzNy4HrrrcZO0UsjwU8sNsHAjIzm5x9F8FtSkHuSytz0AoZ2BHYmCRKafzCb77iIQxo6nvyccZxfHXODDaxCECuVk9qkb.GuP5NDE61gfGEwik0b+E2FbPNlbCTPPF4JqMgg0V2sJ76i94xkmPaCAVdBBveKd.tx6cW607Qu.S5OPt1O4t41tW.beUlgXdRHST4skcgOfTMO.XeMUbGTxZ+FIPN.HTamptWrdQd12WRFp4R4ATTpmHkbVd41qpZad+9TECx3Dr6EkemB2w39tREBdIuOXuu8c.MBiRXX2dIL3n4LWNSiwCGBdhJX0eeT42qAQljaDkHFX1ZCEJfS9hY5TZfnztPNck7m4r8efe6.jDk4RL9Bv5ZJwgt6qrtTK2XPYtkh7Uu.e8PTAN0vgHqfSwa.ofxInZBJ.otLjgSxXzS7yMnDEYCwX9nlr.74vFUSI4qCp4ijF5CQzD0Aby1T4K9DAUOLEqCly.t0VL3NSWKf2boMGyk3WwpnxVVs7Ekcu7V85My8TW5h4TJNdlaqpYFecBVgkD1EGutqF4SXDpQTrvyJyWgGeSMfbLxYMYD4qhvoqOhSCTETTe+pkorRKhnJXkhPfUotb0CSKWgmTdwhDnpWMI7ZoMh7cTrdSS0EiriCNYPaQ3XIQYT1GfGBcbLUCW04.r3LIOBZdzfGFwYJbX6XT98SUtodgVw2yoMEMNkv4.m1JENN6KBzPbSV6XLjwkQyJ2AuxbaUW8rSDPaRg9XUqIPNFXNemi4tQYSNm4eMfVnWoxOzygGjPQxhMhTsnS2.RRJT8W0SfIHxw4ageK5NU8Z6NMuP7ANsIR+AyFiklAFg.++EXLsm9W6bXudPsho.bYmi98EsA97q9UyTuI0QOClV8+PJEFzO0USFKHBbbsqYRr+bdmDKZtmDKcTA60ctMUbtzzWKOeUbJlyli+YLCzJeAFK6SSh+Wv6lElbb0LL5QBifQRXCwTndpFiODJf1CkPkYTKl00hy3QC3Lhe9DsWikwj98ww4w9LMn8kRnccQYoXjnPd6KggwPwpwIWPewseJ5YFu9dGCbcUWUb+2D2Vd9ha2Pa0OE0WW5+M0WuNWzcbN7bYLp1M044KP2wTns4mSn8Zdhjv52BAWiUyobbRnGzGvGCvhwvTgZFkRpIeLqqlMBiGlEnW72vmzMqkMPiZyZYaNclPqiwxQ73yz2DS+NX1lNehIc9NUjuy29TJejZtKRZJMj0no0lSGmUPxLxGglA68C4I5o+zXe58g5Tt+Ydj+.mYFu.INAQnpSvKQ.S4F7JlGbN59o1K0AGKz57qbptA7Cbc4XcwoUNB4CAfwsQPqa3dmZvYHNhi2veR77iaS4uAXdeGebdU5Kq4rAyfoFpGAsjCDWyMPro9lZEjsTRAg64zTzQsqOhZ0wLcM3RTmoIHXLFEqNNvC9aUvrJ6DB+W8BAlAhM7eCnqTdzY0FEChJwokhyVAJpEg04xy92Bc9kn8gm5IwQlv2T97NCOx.6B8fNPEzLGvI3ykmv0eGxEGB3Qoz657F3oB6AAs..Y8MuzIujtOOlmDoWbE0m1f7JPsfkYUmyOKDoSyWnme4yxkxPjeL+TeyLcp3wczTfDJlN7tpSK0Z2Y7PYgvfUm56W7nthfatnBt0hJ31Kpf6rnBt6hJ3iWTA26lETM269IRdnobIbQp8g5jPa6CYpWch9Rr0+.TuzDR. ``´
  • 0 Votes
    5 Posts
    365 Views
    OrvillainO

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

  • 0 Votes
    26 Posts
    759 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
    51 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
    104 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
    66 Views
    HISEnbergH

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

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

    Bug Reports
    29
    0 Votes
    29 Posts
    898 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
    20 Views
    No one has replied
  • 0 Votes
    13 Posts
    277 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

  • Looping DAW Misreads Last Grid Change

    Unsolved Scripting
    1
    0 Votes
    1 Posts
    20 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
    647 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
    203 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
    65 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