• Error when compile dsp with Pitch_Shift

    General Questions
    7
    0 Votes
    7 Posts
    153 Views
    DanHD

    @WaterSpoon @HISEnberg where do you change the FFT setting?

  • The Audio Market Over the Next 10 Years

    Blog Entries
    6
    6 Votes
    6 Posts
    226 Views
    ustkU

    Yeah as @d-healey says the audio pro industry is wide and DSP are everywhere from automotive the adaptive sound systems for venues and so on. I also think the plugin world will change in the future in the manner we are interacting with, and more AI/DSP research leads to the necessity of getting more and more specialised with tools that might not be simple to use for the "simple man". Of course the implementation of some tools is made easy sometimes, but then the top notch systems will always be ahead, broader, and more complex. And with complexity arises computation power and compatibility issues. I am happy to see many great tools arriving but afraid at the same time, not being able to catch up compared to specialised folks.
    In fact if I agree the market will grow, it might be for more engineered DAWs and tools integrating tech that I can't compete with for myself (like DAWs doing almost everything in the box, very "intelligent" plugins, automatic mixing tools, and other funky sweeteners...) while I am still struggling with basic DSP theory like I'm stuck in the 90s...
    But I might be off-topic lol

  • LAF KEYBOARD // Show notes playing...

    Unsolved Scripting
    8
    0 Votes
    8 Posts
    73 Views
    d.healeyD

    @Chazrox Show me with my minimal snippet

  • Why are oversample nodes disabled in Poly chains?

    ScriptNode
    2
    0 Votes
    2 Posts
    150 Views
    OrvillainO

    Heya - I'd like to echo this feature request, if possible.

    @Christoph-Hart

    If it is a case of CPU, at least an oversample2x container that can work in poly scripts??

  • Orv's ScriptNode+SNEX Journey

    ScriptNode
    9
    1 Votes
    9 Posts
    1k Views
    OrvillainO

    Been a long time since I put anything in here. I've learned so much in the last year. I've been building custom c++ nodes, but also here's a really naff tanh based snex_shaper node:

    template <int NumVoices> struct snex_shaper2 { SNEX_NODE(snex_shaper2); float drive = 10.5; float mix = 0.8; float outputGain = 0.9; // Implement the Waveshaper here... inline float fastTanh(float x) { if (x < -3.0f) return -1.0f; if (x > 3.0f) return 1.0f; float x2 = x * x; return x * (27.0f + x2) / (27.0f + 9.0f * x2); } float getSample(float input) { float driven = input * drive; float shaped = fastTanh(driven); return mix * shaped + (1.0f - mix) * input; } // These functions are the glue code that call the function above template <typename T> void process(T& data) { for(auto ch: data) { for(auto& s: data.toChannelData(ch)) { s = getSample(s); } } } template <typename T> void processFrame(T& data) { for(auto& s: data) s = getSample(s); } void reset() { } void prepare(PrepareSpecs ps) { } void setExternalData(const ExternalData& d, int index) { } template <int P> void setParameter(double v) { if (P == 0) drive = v; } }; ![3d6ae461-1bbf-42ca-adbd-20612c42104b-image.png](/assets/uploads/files/1751896285077-3d6ae461-1bbf-42ca-adbd-20612c42104b-image.png)
  • NoteEventID's || Overlapping notes fix...

    Solved Scripting
    6
    0 Votes
    6 Posts
    63 Views
    ChazroxC

    @Lindon got it! Thank you sir! 🙏

  • Faust Gate

    Faust Development
    3
    0 Votes
    3 Posts
    63 Views
    resonantR

    @Lindon said in Faust Gate:

    @resonant what error are you getting?

    you might want to try

    process = _,_ : ef.gate_stereo(thresh,att,hold,rel) : _,_;

    it worked thanks

  • Default Oversampling Filter

    General Questions
    11
    1 Votes
    11 Posts
    800 Views
    T

    @Dan-Korneff sweet, thank you! I'm on an older comit apparently.

  • Plugin Audio Engine Not Working

    General Questions
    16
    0 Votes
    16 Posts
    179 Views
    F

    @d-healey sigh Alright, i figured it out. I didn't tick the "IsPluginParameter" box on the buttons and knobs. It works fine now. facepalm

    again, thanks for your patience, i appreciate it. you earned yourself a place in the "credits" screen of the plugin, which i need to figure out how to code so it shows up when a small button is pressed.

    The buttons do show up now as MIDI-controllable, but still no sound is happening (almost like a full bypass), but that i'll figure out in a bit...

  • Syncing/Time stretching via Sampler

    General Questions
    7
    1 Votes
    7 Posts
    364 Views
    d.healeyD

    @goldee Yes, but I've had mixed results with it. Let me know how it goes for you - https://docs.hise.audio/hise-modules/sound-generators/list/streamingsampler.html#timestretching

  • Noise feature

    General Questions
    10
    0 Votes
    10 Posts
    126 Views
    O

    @griffinboy let me fight it. thank you for this

  • Filter envelope - depth - modulation

    General Questions
    6
    0 Votes
    6 Posts
    101 Views
    LindonL

    @Christoph-Hart said in Filter envelope - depth - modulation:

    @Lindon just modulate the attack level of the envelope?

    yeah I thought of that too... the problem then is what Im doing is reducing the output of the modulator at one stage of its transit...so I did it to the sustain level too...but then Im not sure if this is exactly the same as reducing the envelope depth....its beginning to boggle my mind a bit...

  • Waveform how to get playback position?

    Unsolved Scripting
    15
    0 Votes
    15 Posts
    878 Views
    ulrikU

    @d-healey said in Waveform how to get playback position?:

    @ulrik Yes, if I had an audio file, but I have a waveform control linked to a sampler.

    Did you find a solution for this?

  • Global Envelopes - The "filtered" voices problem.

    General Questions
    13
    0 Votes
    13 Posts
    144 Views
    LindonL

    @d-healey said in Global Envelopes - The "filtered" voices problem.:

    @Lindon said in Global Envelopes - The "filtered" voices problem.:

    direct its output to a named destination

    You want to route the output of the envelope to somewhere else? Doesn't it just flow up the chain to the master?

    not a Global modulation Envelope no...
  • 0 Votes
    13 Posts
    115 Views
    CatABCC

    @Orvillain yes,I already understand the design of HISE, it is more free than Kontakt!😻

  • Linking Slider Packs || How do I connect them to an arp?

    Solved Scripting
    9
    0 Votes
    9 Posts
    73 Views
    ChazroxC

    @d-healey Thank You for staying up! 🙏 Greatly appreciated!

  • How do I colour 'SliderPack' sliders by index??

    Solved Scripting
    3
    0 Votes
    3 Posts
    40 Views
    ChazroxC

    @d-healey You done it! I've tried about 20 things. lol Thank You! 🙏

  • 0 Votes
    13 Posts
    761 Views
    OrvillainO

    @Orvillain
    3d59f862-0879-4207-8770-9f6729fd3a8b-image.png

    huh... well I got SOMETHING in there...

    This is just chatGPT chod, but it has given me the above. The issue is... it doesn't update immediately, I have to switch the selected display buffer in the node using the external icon button.

    // ==================================| Third Party Node Template |================================== #pragma once #include <JuceHeader.h> namespace project { using namespace juce; using namespace hise; using namespace scriptnode; // ==========================| The node class with all required callbacks |========================== template <int NV> struct LoadAudio: public data::base, public data::display_buffer_base<true> { // Metadata Definitions ------------------------------------------------------------------------ SNEX_NODE(LoadAudio); struct MetadataClass { SN_NODE_ID("LoadAudio"); }; // set to true if you want this node to have a modulation dragger static constexpr bool isModNode() { return false; }; static constexpr bool isPolyphonic() { return NV > 1; }; // set to true if your node produces a tail static constexpr bool hasTail() { return false; }; // set to true if your doesn't generate sound from silence and can be suspended when the input signal is silent static constexpr bool isSuspendedOnSilence() { return false; }; // Undefine this method if you want a dynamic channel count static constexpr int getFixChannelAmount() { return 2; }; // Define the amount and types of external data slots you want to use static constexpr int NumTables = 0; static constexpr int NumSliderPacks = 0; static constexpr int NumAudioFiles = 1; static constexpr int NumFilters = 0; static constexpr int NumDisplayBuffers = 1; AudioBuffer<float> originalBuffer; int originalSampleRate; int originalNumSamples; bool bufferNeedsUpdate = false; // Scriptnode Callbacks ------------------------------------------------------------------------ void prepare(PrepareSpecs specs) override { display_buffer_base<true>::prepare(specs); if (rb != nullptr) { rb->setActive(true); if (bufferNeedsUpdate && originalBuffer.getNumChannels() > 0) { updateBuffer(originalBuffer.getReadPointer(0), originalNumSamples); bufferNeedsUpdate = false; } } } void reset() { } void handleHiseEvent(HiseEvent& e) { } template <typename T> void process(T& data) { static constexpr int NumChannels = getFixChannelAmount(); // Cast the dynamic channel data to a fixed channel amount auto& fixData = data.template as<ProcessData<NumChannels>>(); // Create a FrameProcessor object auto fd = fixData.toFrameData(); while(fd.next()) { // Forward to frame processing processFrame(fd.toSpan()); } } template <typename T> void processFrame(T& data) { } int handleModulation(double& value) { return 0; } void setExternalData(const ExternalData& data, int index) override { display_buffer_base<true>::setExternalData(data, index); if (data.isNotEmpty()) { originalBuffer = data.toAudioSampleBuffer(); originalSampleRate = data.sampleRate; originalNumSamples = originalBuffer.getNumSamples(); bufferNeedsUpdate = true; // ✅ delay actual update } } // Parameter Functions ------------------------------------------------------------------------- template <int P> void setParameter(double v) { if (P == 0) { // This will be executed for MyParameter (see below) jassertfalse; } } void createParameters(ParameterDataList& data) { { // Create a parameter like this parameter::data p("MyParameter", { 0.0, 1.0 }); // The template parameter (<0>) will be forwarded to setParameter<P>() registerCallback<0>(p); p.setDefaultValue(0.5); data.add(std::move(p)); } } }; }
  • Is there a way to search all included .js files?

    General Questions
    3
    0 Votes
    3 Posts
    55 Views
    VirtualVirginV

    @aaronventure Thanks!
    This is great! What a useful feature.

  • Global Midi Learn(not saved in preset) Possible?

    Unsolved General Questions
    16
    0 Votes
    16 Posts
    515 Views
    LindonL

    @Sawatakashi said in Global Midi Learn(not saved in preset) Possible?:

    @Lindon Hi, pardon me! how could i save and load the midi cc value individually like a preset using this script, and i can replace the default values by right clicking midi assignment on the knob UIs. Thanks, seriously I'm willing to pay for a good solution if you don't mind.

    the solution is right there in the snippet and the follow up post from me....