• Coming over from Kontakt? Read this!

    Pinned
    8
    1 Votes
    8 Posts
    6k Views
    LindonL

    @d-healey said in Coming over from Kontakt? Read this!:

    @Lindon They live inside Kontakt's sample map too, it's just that with Kontakt there is only one sample map and it's part of the NKI.

    I think the main different between Kontakt's groups and HISE's is that with Kontakt you can route them individually and apply effects and other processing to them individually which you can't do in HISE (yet...?).

    In HISE the routing and modulation is at the sampler level rather than the group level.

    Absoloutely - valuable stuff to include - I guess I was thinking inside a group you see a mapping of sample audio files, inside a Sample Map you see....so (to start with) same same...as a starting point. But hey no problem.

  • Hardcoded Polyphonic FX - Filters - some observations.

    4
    1 Votes
    4 Posts
    51 Views
    LindonL

    @Lindon heres a snippet to demonstrate:

    HiseSnippet 1866.3oc6X0sSbbCEdF.CAxeMJoMR8p4hdAoJEMyr+qdQf.rATCv1rjetKxLi2rVLq8zY7BYaUk5k8snuIs4QnOB8QnuAsGaO6NdfM.ZCjPhxhDZ74X6ymO+YeNsR3AjzTdhk8B6NHlXYeMT6ALQ2U6hoLqMWyx9pnfn.59BRpv5gChwoojPKa6oejbB1yOik52+9fGhivr.RNIKqmwoAjGS6QE4Tas7OPihZhCI6R6YL6xKuY.msJOh2G.yzHWqXbv93WQ1FKm1THqMvocsr+VT0vN3pg0p35QJUOrluWsJMJWqpqamv5d01q1dkvg3p0bsrmc8PpfmzVfAzaYOyC4gCZ2keHSKfmQSo6EQjC7rZCRVStIOJTdDkTsVsKMJr0PsTpkkMpUtNaZsN6NnsngzQzy0ceghgS9JLUf1SUDdSW.ddlvy0.diAR1FPZFMjtEpcPBMVjyQaK2jIHIcvfcxDJ54ZY+FzpbXBLwR8v6SZl.CFsfEAM78cf+cuuuSeVffxYNb11bAYG1h2ageYg4W3WWv4nr5zYr7jhIgGEQRFKaoqQxIsvEY86sGI49NGfi5SFMQ33WTmhd65TSSdf9TaLQNaSFUrSLg81bDrxTUvWOcy0vBrzPjQClWLIQPkPvdMxAPXf1rLOZMR59BdLDHbLaF3svC6GgEEcgjAZYL.cPA6lz3vRohAlAhma9UmUHdKTKpHn63w3TiAifl5h.iYQiWGsdmNj.QN.mA07EWLgdlh+lERf9nDd+Xkzuil.IklRRbTz8NOxjFelyjtNCCmllaYtiqhSRnjjMYgjWaH7+Zj88XbdJilxYbETVoGuOSXB5LtqQD8YEfdFi1wIDbn4JjnuMAfZnZKSK3CO8Ik51aBScO2ktT2eDjEnvsKY93ygVYi0Z+jrne02NqyNfDAo8J5auEX5i6xYz.SehmPDIzW8JRhIhG6wXEg.dFvp8SNnfS0Zj.7fiQUOYyHAMkGS.nYNwM.+j7weyxpsaDg2jrb69ohBQkRLGQvoEhyVOfClDxDp18NY0N5L5Zbcj9P5nxBb461gaLDeZqvkO.dMjx7eYU+cSTly3kVE3MPYwFWVUgm3CTl9S5GnXOkg7mUK+6h1.mDF.YtBawiFnSOC.PhjuNmmSNSmlunXZ8sIhC4I6KqnX0HZft5vNIjeJSG9a+4eryxIm7c5SdpwYNygNs7bdWtzblylZ+je1wYOPuk+GUnszGUns7k.z9DdeAk8psvvyef2Vi1teu1vqzCH.RYLRjrhU6ojuNWO1UNVBn1DVnZv+A+xX5IGamwzaHSSMBRqQVHqW.Yg3WKa3QCpmBPSSZDTte5ncNqu.+NJuFb3c7w3Dxt7VQ3AKlh6EGQdBnjtuydQ7f8aS+YxwKbOVCpGJmwhAYG1Io99YOmxg7dwTj2gfr7kpmSOJ24b5Vxjm.cknH9gqx6ESybSUGCE07bwYGTvJolwbH2kf+rzKaH5GVel9HrANcWLMRZig2RDCXbGVaXxphLgKar2V8J14ZhC.c6fVXQW4klxth.APjjkBL5FXNby8cj5Xce5L4KsKsvI.csOkD2RIMrzTs9D.dOoRR1hO3hEfuVKofzrRYNGRK+SAdiCNCW5jHVDJ8fNEE50QczAHKIYMNApWzoINowJh75gcMZXT2nOgOxJ+V48ZnDArMZD78VT1yjQHvmHeoavV3WmQXdf.7Cn0dexg5igrdW2k78azvsbkp99kJWuV8JYF1lv028AehAP0Ucv8iDYazUPd58Yk9BdOHtaX9swCjaCRnjq5mmWCe2F9MLP0sQMVpdC4upd0qTx0uVoiiupkq4UqtWsRtUq3UupBeSi9wifKDx6jA0L4fZNz24Uuf5YVjhfbqmUUbs0nsUdVM2GT99nYluKZLbzCPIWOWoJnQi5kaTy0KSA2tGmK5BIcFJpuRtatMz+pUqZ459Up6e1kcYorEjXYN2gXQefTkk9NbfFylNOR2FoPqBS0xnWmE8TKvQ0EA4H3V1oz2BsY5yjbCvQC2QHYUAW8oL8vzGL0aLOe75G4QBVHvmrT4RUKUwy20u5XczTM2kQTWTkZUXHfTYD+lgCi+GgaIIyHqBVAcRF4qjuPidNeNEx3uIxhdQ1bbYo6x9MJeZ2o0z4OHcVP20yOfv6tZ3cUzywGPT8gVgruTMtCOomyiHvUnRbeRMk9uO+aJ8NAB.B6lfYow7Thm4N2lzitKmQRKP8HqverqvuXaBkdGdGmTgYIUEMAUgw7txxCI5aRrElUXyfwE1osnFcL+edfNgotG26jF.JFrJLM2l2peTJ44zPQWOyElS12jrrzbvFVnUpWLcJe1O2o7O2NpOnVQHTx4RsU7tHHj12QYJc9vXKeeTC6mJxnGNHg+x.c6Ejo3thhBnaYpB2lGskbrim0AYujbjAqGjd6kAAE2pisP+IcgklzEVdRWXkIcgUmzEVaRWX8SegxaexpBTF+A2B2Zc0SNssGVwBDJZ8+.4HaLg

    You prob. have to compile the scriptnode, and its less obvious than some filters but move the freq down to 5K or less and there it is...

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

    16
    0 Votes
    16 Posts
    299 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)); } } }; }
  • Channel Amount Mismatch when converting to monolith

    17
    0 Votes
    17 Posts
    357 Views
    David HealeyD

    @elemen8t said in Channel Amount Mismatch when converting to monolith:

    Is there any solution to this problem yet?

    Only what I posted above, I haven't been able to recreate the issue

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

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

  • My First Impression of Microsoft Setup Was Unexpected

    1
    0 Votes
    1 Posts
    21 Views
    No one has replied
  • 0 Votes
    26 Posts
    765 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

    12
    0 Votes
    12 Posts
    56 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 😂

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

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

    24
    0 Votes
    24 Posts
    653 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?

    13
    0 Votes
    13 Posts
    205 Views
    Oli UllmannO

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

  • Stock Table Upgrade?

    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??

    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.

  • Export Setup Wizard Issue

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

  • Best way to structure a multi-mic, multi-output drum library in HISE?

    3
    0 Votes
    3 Posts
    61 Views
    V

    @David-Healey said in Best way to structure a multi-mic, multi-output drum library in HISE?:

    @versusjona

    1 sampler per instrument seems reasonable here.

    You can merge samples with different numbers of channels, but the lengths must match.

    A couple of videos you might find helpful regarding multi-mics.

    https://www.youtube.com/watch?v=sV9aMTphmDE

    https://www.youtube.com/watch?v=tvQUNsCc6Mw

    Thanks a lot for the quick reply, David.
    I’ll check both videos right away!

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

    9
    0 Votes
    9 Posts
    710 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
    720 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
    42 Views
    No one has replied
  • Hardcoded master FX - Knobs with filmstrips not working

    Solved
    5
    0 Votes
    5 Posts
    55 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
    90 Views
    LindonL

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

31

Online

2.2k

Users

13.5k

Topics

117.2k

Posts