• No Multichannel output

    General Questions
    7
    0 Votes
    7 Posts
    62 Views
    ChazroxC

    @Morphoice Im just explaining how to properly connect a multi-out plugin in DAW. When you drop your plugin on a new track in DAW, you have to also create new audio tracks to receive the audio that you want to route out of your plugin. For each audio track, you should set the input to the outputs of your plugin. Make sure that whatever your daw requires you to click on your tracks to hear live input through your audio track is enabled for each track.

    That's just for good measure. Its seems like you have it set up properly but you did say that all audio is coming out of 1-2, so that def says that it's not routing out properly. How are you scripting your routing changes? Is your plugin meant to load multi-out by default or are you allowing dynamic routing?

    Just a thought...
    Did you uncheck 'Force Stereo Output'?

    Screenshot 2025-12-16 at 8.51.22 AM.png

    Also,

    I just checked my drum plugin, I started my kick chn. with 3/4, I think because 1/2 will always have the full output. I can't remember exactly why I did it this way but that could have been the reason after testing. Here's what I have.

    in this example 1/2 is still playing the full output, when playing in multi-out mode, I disable the audio for the track that the plugin is on because the audio is now coming out of the auxilary tracks.
    Screenshot 2025-12-16 at 8.54.48 AM.png

  • Midi Overlay Panels in Compiled Plugin Crashing DAWS?

    Bug Reports
    39
    0 Votes
    39 Posts
    6k Views
    bendursoB

    @Goodflow said in Midi Overlay Panels in Compiled Plugin Crashing DAWS?:

    Line 40:

    class MidiOverlayFactory: public DeletedAtShutdown

    gets changed to

    class MidiOverlayFactory

    I was having the same crash and was fixed with this. Thanks!
    Seems to work on mac, windows & linux. @Christoph-Hart maybe this could be included in the dev branch?

  • Wavetable creation

    General Questions
    33
    0 Votes
    33 Posts
    227 Views
    LindonL

    @dannytaurus ok great this is part of the solution..

    now lets assume we have 5 wav files and each is a single cycle, how do we combine these into a single wave file that we can load into the player and have some modulation source move through these as we play. Clearly its trivially simple to join these 5 files together - but how does the wavetable player know we are using (say) 2048 samples as our cycle size and not (say) 1024 ???

  • 0 Votes
    2 Posts
    24 Views
    dannytaurusD

    @the-red_1 You could use an array of the values and a stepped knob in the UI.

    const EQ = Synth.getEffect("Script FX1"); const knb = Content.getComponent("knbEQFreq"); const freqSteps = [3000, 5000, 7000, 9000, 11000, 14000, 16000]; inline function onKnbEQFreqControl(component, value) { local index = Math.range(value, 0, freqSteps.length - 1); EQ.setAttribute(EQ.Frequency, freqSteps[index]); } knb.setControlCallback(onKnbEQFreqControl); HiseSnippet 1593.3ocuX0saaaCElxIJMwqqnEaWrKERuwcHyvN+1fhg3jX6Nitj5TmFTfhhLZI5XBKQpIQkD2gc01E8t8XrWi9.zALf9Dr2ftmfsCIksjhcccMRqBfs4OGdNeme93QoY.2lDFxCPF4OtuOAYbSyV8Yht62ESYnFUQF2x7.bnfDXomZu993vPhCxvXtGJmvXo4Qpm2sydXWLyljLEBcBmZS9QpGUjLayJOh55VG6PNl5kZ2qWogMmsO2kGA1yblkP9X6d3yHGhkaKmI5GvgcQFeq48sa6r41N3sZu4ls2prsy1cJUdaLgzdsMt+ZjMr2ztbmMwkPFKTygJ3AsDXAIDNz83N8a0keASqfSngz1tD4fxnVfl0Si1uK00o4.mSHBYLeyDW0bZW0Wad.0gNb9DW1sUKXkHQZmlQtIYRk+HLIiTlz7ZS5NlsrCn9hjUj1yWX1fAQvNXH1j1Tz6Ekaubl6ygcvDE8v8H0CfACknvpkJshE7w8dP97P7ITXcNNvp1QVeukJUo3YDQsNcH1hBKqOQq5Oq7xv1S1cOVaX6CTBHv9bOeNCFTXYXsZGUOf7yKmUCcfoZIH9gfjOesRRqXC0mao9ba0mkKq+Zc8WaBe8B3TnLWJiX0IhYKnblEm8nAZQZDAb2B1CrfU.s4FQtW9eIuE73xswtVTlC4RPwGfA.FfYmQJn10JVfZFZYEcIryDcs9NqxRaWJdsiJFRD6JDAz1QBRAXrTqQDlc+TR9bkBdAH0ulGb.RYhMr8wttsg79BiZy26Ao.zgbA4wrBRydI3Prt5Rc5L10hOJWRvXWVVQFLIAKvh7ZSBR4zTaDx.ylVuvzkVaqSIRsQNqAiJdrOIdbctqiLcU96QKBPw4TxxgXKD1pPULbq3hgVtTGR.h5HqDFlsgT.HMWE5oMphE3AGEbpfl7IABpDPFUImCbY55rkLqRB6I39p8FmHgLtwTo3KSTZ0J8SOvCmZsuoBP652h9R3DMMKWrDxi533RZxCoxXRxNWrBZTp.fDh6D4hEYYljb1wKHOizzAxRdFb18Syo+QPWUZhzUSqIdGylTgc2wai4FiMBwqOE1XLI+WZp41RLv4Mq+rYkQuzGMid93bIPmRkeSyDJ1wwka7JyjhV+.hONfbLuoKtegPrmuK4IfMthUafkqmL0ZzJcesIrmbGEr6hYLha3rPHrv0z8bnmviDT1Y.Ub.EpOLOLxqEzhfMY+XqClyHmjKPOtjbrLunEg4nF7evS7hkkiMhWr7fESnQPGRDWvC5oBGw+FYrn12Gpbxm14xxnccc4WHK8owYoPLPMWStae+tbF0VNkdGCrzc83QRdBs4ljhu2fvw.KGZz4XL0Ulw2JJD3BcdLqEbNptqLl6DRPnRm2vrTQ3OnB3PtCrzMpisAed+lv0VxRII8Jj2RBJZOL+MCLRmBoayJyxxScPCYZKC.jmhqCZGSFMahC.wfdEjTj4LlKEkoNeVNBpVyoUcivSjqBWwhNQy+BtBoVz9aEHVPt0EMCOuyo.aYFDcayNTWoxJFu5n1+PAmrsm0RkKAEGWNf+utVKI+TB.4M1CRXpA47Nv8RJAFjDkxW.nX3H.2GPYmj85l0qb.9xry8p2Vo0PF+D1sV8HWncBwyV4279qcz80Mr0BzwjKEGyUGHjKeN.LohSuilPmz5vVT6GFvi7UCxZBU9iJUIcvQthQlug9PUd5ciDbOrdPNTJfl+J.sxZq81ctBPe8adycmNfht6+92JfNm4QuW.9THrzARwclJ.B2nMV.ByOIb.Oq95QBXnUmRbHOdINVPc866AJxdJrosItSGPf9EFKPj2hMQf.DOi.j2syTAje5qp913LuVdbtnKPKesDXp7Ou72GWfQM+LfmaOl.CfwIDXNPR8bMki8IOzLInrjYMFFtX04yYEilrOEg2Uomt9I.g.VV18ZWBplgcS04Hz8TUZn1aLdrlAZWA49+YkOLqp5cEXDUSQgnLCiuUtgSpKkF5iZ3j8bP6w487vpFOloWD4yRaRdX6.9o15N+jvcQ0L.CMSc46RlGHGaUdz2tBd4E5o11YOpQDb0YUv0lUAWeVEbiYUvMmUA2ZVE79eXAk+GqhuVWl5BLQMqoatwX.eBbwO5+wkAyGk
  • 0 Votes
    2 Posts
    47 Views
    ustkU

    @ScreamingWaves As soon as you want this kind of behaviour you need to switch to scriptnode networks. It'll allow you to do whatever routing you want using split containers for instance in your case
    https://docs.hise.dev/scriptnode/list/container/split.html

  • Midi Files say "Temp" how to fix

    Unsolved General Questions
    8
    0 Votes
    8 Posts
    250 Views
    xxxX

    @xxx id rather have it called midi, or plugin name, or whatever the file is originally named

  • Invalid use of incomplete type vSIMDType

    Bug Reports
    33
  • Romplur vs Maize Sampler still HISE Rocks

    Blog Entries
    22
    2 Votes
    22 Posts
    5k Views
    David HealeyD

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

  • The future of our market

    General Questions
    3
    4 Votes
    3 Posts
    86 Views
    Oli UllmannO

    @hisefilo
    AI is certainly interesting, and there will definitely be a lot coming in terms of mixing/mastering/effects. I'm not so sure about the creative part, though. Most musicians are hobbyists. They make music out of passion. And I don't think they want AI to make music for them.

    I find it more interesting, like Josh, that the production of audio software is becoming increasingly democratized. Among other things, this is due to frameworks such as HISE. This makes it much easier to produce plug-ins. I think this has good sides, but definitely bad sides too, and we'll have to see where it takes the market. It will definitely mean that marketing budgets will have to be bigger in the coming years, which will make it even more difficult for new, small manufacturers.

  • Webview cant find index file.....Help please.

    Solved Scripting
    13
    0 Votes
    13 Posts
    164 Views
    ChazroxC

    @VirtualVirgin whaaa 500mb?? Its take alot for a normal browser window to hit that much ram. What does ur plugin do?

  • 0 Votes
    6 Posts
    279 Views
    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.

  • How do I remove or mask out sections of a path?

    General Questions
    5
    0 Votes
    5 Posts
    31 Views
    dannytaurusD

    @Orvillain You can set up the hierarchy in your script I guess. Then at least you have it all in one place.

  • Look & Feel - ComboBox Background.

    General Questions
    48
    0 Votes
    48 Posts
    1k Views
    David HealeyD

    @dannytaurus said in Look & Feel - ComboBox Background.:

    Weird! Could still be a difference between Ventura and Sequoia?

    Maybe, would be good if someone else can test it

  • I released my first public plugin guys

    General Questions
    4
    6 Votes
    4 Posts
    60 Views
    N

    @dannytaurus its a reverb type plugin 😊

  • Sampler Playback - ping-pong

    Feature Requests
    15
    2 Votes
    15 Posts
    2k Views
    P

    @Kenny-Roads I am not an expert but could you not achieve this by using two RR groups? The first group would have the forward sample and the second would have the backwards sample. With the default behavior in HISE being that it would play them in order, would that be what you want? Just an idea.

  • Remove Global Modulators from Mod Matrix List

    General Questions
    3
    0 Votes
    3 Posts
    30 Views
    DanHD

    @Christoph-Hart will give it a try, thanks!

  • 0 Votes
    5 Posts
    39 Views
    D

    @David-Healey awesome, thanks!

  • Difference between "Compile project" and "Export as..."

    Newbie League
    8
    0 Votes
    8 Posts
    115 Views
    David HealeyD

    @daniloprates said in Difference between "Compile project" and "Export as...":

    HISE to generate the Projucer and Xcode files without compiling them

    Press ctrl/cmd+C to cancel the build in the terminal. Then in the binaries folder open the auto generated juicer file. But I think it's better you figure out the cause of the error. Looks like something to do with arm vs x86

  • 5 Votes
    7 Posts
    140 Views
    David HealeyD

    The Scripting Course Bundle launch offer expires in 2 days.

  • Default button state on load

    General Questions
    12
    0 Votes
    12 Posts
    88 Views
    ustkU

    @David-Healey 😲 far worse than all I imagined 😁