Categories

  • General questions and announcements about HISE

    8k Topics
    71k Posts
    dannytaurusD

    Just leaving this here in case it helps anyone searching for quarantine issues on macOS.

    Remove the quarantine flag on a VST3/AU plugin so you can move it between Macs while testing:

    xattr -rd com.apple.quarantine "/Library/Audio/Plug-Ins/Components/MyPlugin.component" // or xattr -rd com.apple.quarantine "/Library/Audio/Plug-Ins/VST3/MyPlugin.vst3"

    That's if they're in the standard location. If they're somewhere else, like the User folder, adpapt the file path.

  • Scripting related questions and answers

    2k Topics
    16k Posts
    dannytaurusD

    @resonant There's a phase correlation meter in the HISE master output panel.

    The HISE source might give you some clues.

    CleanShot 2025-12-29 at 10.44.03@2x.png

  • To share HiseSnippets, Interface Elements, GUI, UI/UX, Panel LAF etc..

    195 Topics
    2k Posts
    S

    I never got a chance to try it out as a personal matter has kept me busy.
    I am just commenting to let you know that I will update you when I get a chance, & Thank you again.

  • All about ScriptNode DSP nodes, patches, SNEX and recipes.

    347 Topics
    2k Posts
    F

    @David-Healey thank you soooo muchhh 🙏

  • A subforum for discussing Faust development within HISE

    112 Topics
    892 Posts
    JulesVJ

    I believe this has been reported before a couple of times. I'm using Faust v2.75.7 and the Ambisonics library isn't working. Has this been fixed in later Faust versions or any plans to fix? @sletz

    This is the basic code that I am trying to work. It works on the Faust web IDE.

    import("stdfaust.lib"); import("hoa.lib"); process = ho.fxRingMod(1, 200, 0.5, 12);
  • If you need a certain feature, post it here.
    620 Topics
    5k Posts
    David HealeyD

    @Christoph-Hart I've fixed the PRs.

    https://github.com/christophhart/HISE/pull/821
    https://github.com/christophhart/HISE/pull/822

    Let me know if you have a better idea regarding handling expansions with the same names.

  • Develop better software through collaboration and shared knowledge. Not just about coding —> covering the entire journey, from development to launching and promoting plugins or software.

    131 Topics
    1k Posts
    David HealeyD

    @cemeterychips You need to recompile HISE using the version of the source that you have

  • If you encounter any bug, post it here.
    2k Topics
    12k Posts
    ustkU

    @Christoph-Hart Thanks, for the snippet project I have nothing but the Extra slots:

    Screenshot 2025-12-29 at 15.09.58.png

  • Post your example snippets that you want to add to the official HISE snippet database here. We'll revise it, upload it to the repo and delete the post when finished.

    22 Topics
    135 Posts
  • Everything related to the documentation (corrections, additions etc.) can be posted here
    70 Topics
    475 Posts
    David HealeyD

    @weezycarter make a minimal test plugin with 4 channels. Then we'll have a baseline.

  • Collection of Blog Entries

    81 Topics
    770 Posts
    David HealeyD

    Another one you might be interested in is Floe: https://floe.audio/

  • The nerdy place for discussing the C++ framework
    175 Topics
    1k Posts
    OrvillainO
    #pragma once #include <JuceHeader.h> namespace project { using namespace juce; using namespace hise; using namespace scriptnode; using namespace snex; /** Smallest possible BPM listener example. Demonstrates: - TempoListener registration - tempoChanged() callback - BPM flowing into the audio graph */ struct MinimalBPMListener : public data::base, public hise::TempoListener { SNEX_NODE(MinimalBPMListener); struct MetadataClass { SN_NODE_ID("MinimalBPMListener"); }; static constexpr bool isModNode() { return true; } static constexpr bool isPolyphonic() { return false; } static constexpr bool hasTail() { return false; } static constexpr bool isSuspendedOnSilence() { return false; } static constexpr int getFixChannelAmount() { return 1; } // --- Tempo sync --- hise::DllBoundaryTempoSyncer* tempoSyncer = nullptr; double bpm = 120.0; // Exposed modulation value double lastOut = 120.0; // --- TempoListener --- void tempoChanged(double newTempo) override { bpm = newTempo; lastOut = bpm; // make it observable } // --- Lifecycle --- void prepare(PrepareSpecs specs) { if (tempoSyncer == nullptr && specs.voiceIndex != nullptr) { tempoSyncer = specs.voiceIndex->getTempoSyncer(); if (tempoSyncer != nullptr) tempoSyncer->registerItem(this); } // Initialize output lastOut = bpm; } void reset() {} ~MinimalBPMListener() override { if (tempoSyncer != nullptr) { tempoSyncer->deregisterItem(this); tempoSyncer = nullptr; } } // --- Processing --- 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()) fd.toSpan()[0] = (float)lastOut; } int handleModulation(double& value) { value = lastOut; return 1; } void setExternalData(const ExternalData&, int) {} }; }

    This is a minimal example of how to get your custom C++ node to listen to the host BPM. Code above doesn't actually DO anything with the BPM information. But it proves the concept.

26

Online

2.1k

Users

13.1k

Topics

113.8k

Posts