• Channel Amount Mismatch when converting to monolith

    18
    0 Votes
    18 Posts
    915 Views
    J

    @elemen8t
    i can only get it to work using the method david mentioned:

    Select all the samples, right click in the mapping window, Tools > Merge into multi mic samples

    the samples do have to be ...exactly the same length for each mic position.

    also, doesnt work in juce 8 last time i checked. if you are using juce 8.

  • How can I make authentic chiptune sound via waveform generator?

    16
    0 Votes
    16 Posts
    3k Views
    B

    @OstinTheKr0t

    a no - you need to create a third party c++ node template

    --> 1.) Go to Tools -> create C++ third party node template
    --> 2.) name it EXACTLY: chipTuner
    --> 3.) this will create the chipTuner.h file. Open it with Visual Studio or even Notepad and clear everything
    --> 4.) Copy the code below into the file, save and close it
    --> 5.) back in HISE go to Export-> Compile DSP Networks as DLL
    --> 6.) You can now go into the FX Section and load a Hardcoded Master Effect -> there you can choose the chiptuner effect

    My advise, play with settings like Bit depth = 4 and SR Reduction = 8

    #pragma once #include <JuceHeader.h> namespace project { using namespace juce; using namespace hise; using namespace scriptnode; template <int NV> struct chipTuner : public data::base { SNEX_NODE(chipTuner); struct MetadataClass { SN_NODE_ID("chipTuner"); }; static constexpr bool isModNode() { return false; } static constexpr bool isPolyphonic() { return NV > 1; } static constexpr bool hasTail() { return false; } static constexpr bool isSuspendedOnSilence() { return true; } static constexpr int getFixChannelAmount() { return 2; } static constexpr int NumTables = 0; static constexpr int NumSliderPacks = 0; static constexpr int NumAudioFiles = 0; static constexpr int NumFilters = 0; static constexpr int NumDisplayBuffers = 0; // ------------------------------------------------------------------------- // Parameter State // ------------------------------------------------------------------------- float bitDepth = 8.0f; // 1 – 16 Bit float srDivider = 1.0f; // 1 – 32 (sample rate reduction factor) // Sample-Hold state float holdLeft = 0.0f; float holdRight = 0.0f; int holdCounter = 0; // ------------------------------------------------------------------------- // Callbacks // ------------------------------------------------------------------------- void prepare(PrepareSpecs ) { reset(); } void reset() { holdLeft = 0.0f; holdRight = 0.0f; holdCounter = 0; } void handleHiseEvent(HiseEvent& ) {} 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()) processFrame(fd.toSpan()); } 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; // eg 8 Bit → 255 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& /*value*/) { return 0; } void setExternalData(const ExternalData& /*data*/, int /*index*/) {} 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); } void createParameters(ParameterDataList& data) { // Bit Depth { parameter::data p("Bit Depth", { 1.0, 16.0, 1.0 }); registerCallback<0>(p); p.setDefaultValue(8.0); p.setParameterValueNames({}); data.add(std::move(p)); } // Sample Rate Reduction { parameter::data p("SR Reduction", { 1.0, 32.0, 1.0 }); registerCallback<1>(p); p.setDefaultValue(4.0); data.add(std::move(p)); } } }; }
  • Loading wavetables by drag-and-drop takes a long time??

    8
    0 Votes
    8 Posts
    395 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.

  • 0 Votes
    26 Posts
    2k 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??

  • Change preset browser “Row name“ in the core base of Hise.

    1
    0 Votes
    1 Posts
    74 Views
    No one has replied
  • VS 2026

    24
    0 Votes
    24 Posts
    2k 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

  • Stock Table Upgrade?

    45
    1 Votes
    45 Posts
    5k 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??

    5
    0 Votes
    5 Posts
    228 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.

  • Export Setup Wizard Issue

    26
    0 Votes
    26 Posts
    1k 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

  • I am unable to get an AudioAnalyser to display in a floating tile

    9
    0 Votes
    9 Posts
    1k Views
    D

    @Chazrox Hey everyone, I am currently running into the same issue with this setup. HISE crashes on Index 1 or 2, but works fine on Index 0. Even on a fresh project.
    Did you anyone of you get this running the with other options? Would love to incorporate an oscilloscope into my plugin :)

  • Samplerobot Loop Points

    18
    0 Votes
    18 Posts
    4k Views
    B

    @Christoph-Hart

    Hallo Christoph ;)
    grüße aus Österreich :)

    I was thinking about doing a little python script that creates the loop point meta data Hise needs for user samples. TBH i have never looked that much into your sample engine. Are there any specific metadata that hise needs? Would such a little project help the community ?

    cheers

  • Needing a windows user tester

    1
    0 Votes
    1 Posts
    320 Views
    No one has replied
  • Hardcoded master FX - Knobs with filmstrips not working

    Solved
    5
    0 Votes
    5 Posts
    891 Views
    VorosMusicV

    @David-Healey ahh, no they don't
    this might be the issue (I'll try)

    Okay, it's working now!
    Thank you!

  • Polyphonic Hardcoded FX - filter fx - nasty noises.....

    2
    0 Votes
    2 Posts
    323 Views
    LindonL

    @Lindon ok more investigation..it really doesnt matter what you attach the LFO to its making nasty noises in the audio stream.....

  • This topic is deleted!

    2
    0 Votes
    2 Posts
    11 Views
  • Compile DSP networks as DLL keeps launching Export Setup Wizard

    5
    0 Votes
    5 Posts
    1k Views
    V

    @David-Healey said in Compile DSP networks as DLL keeps launching Export Setup Wizard:

    @versusjona Yeah it's super annoying. We're waiting for @Christoph-Hart to remove it.

    Close HISE Find the HISE app data folder on your system, in there find compilerSettings.xml and open it in a text editor. Add <ExportSetup value="Yes"/> below the <EnableLoris> entry. Save the file Reopen HISE

    Thanks a lot for the quick reply, that did it!

    Cheers,
    Jon

  • Broadcaster Events - Looking for mouse scroll / wheel

    6
    1 Votes
    6 Posts
    386 Views
    DanHD

    @David-Healey @griffinboy @ustk Claude Code has done it :)

    Whether it lives up to Christoph's coding standards we will have to see, but I did have the new Agents.md doc in the repo so hopefully Claude referenced that when making changes....

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    6 Views
    No one has replied
  • HISE pitch shift node introduces 100-200ms delay

    8
    0 Votes
    8 Posts
    582 Views
    HISEnbergH

    @Straticah yup checkout @resonant ’s link, someone already calculated the latency for you. So you just need an if/else statement to set the latency based on the octave amount.

  • Matrix Modulation System - Last Call for bugs fixes & changes!!

    100
    1 Votes
    100 Posts
    9k Views
    ustkU

    @Christoph-Hart So I'm back after being away for a while and it seems a lot of things happened around here!
    Still the issue of selecting another target or "No Connection" from the dropdown is not fixed.
    I did try the branch fix/686-matrix-target-change with no improvement

14

Online

2.4k

Users

13.8k

Topics

120.6k

Posts