Forum
    • Categories
    • Register
    • Login

    # Bug report draft: compiled network passes audio UNFILTERED inside a HardcodedMasterFX (raw node works)

    Scheduled Pinned Locked Moved Bug Reports
    1 Posts 1 Posters 17 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      Phelan Kane
      last edited by

      Hiya @Christoph-Hart

      Me and my fav Bot (RIP Fable) has identified an issue with audio processing and modulations in HardcodedMasterFX that sit inside a master container (i.e. a top level filter for my device that is obs monophonic due to voicing reasons).

      I hope the below explains everything. Happy to drop a minimal script if needed.

      Thanks

      Phelan

      Adjacent to the resolved "HISE 4.1 Hardcoded Master & Poly FX P1 P2 Modulation" thread (forum topic 13276).


      Environment

      • HISE develop, version 4.9.2 (running commit 8606dea6), macOS, Apple Silicon.
      • A custom C++ SNEX filter node (ZDF filter, 6 params; param 0 = Cutoff/Frequency, 1 = Res/Resonance).

      Context

      After the 4.1 P1/P2 modulation breaking change (params no longer auto-modulated; must opt in per parameter), I'm trying to restore modulation on a global filter that sits in a HardcodedMasterFX.

      What works

      • The RAW C++ node placed directly in the HardcodedMasterFX FILTERS audio correctly. (But its params can no longer be modulated by the P1/P2 slots, as expected after the breaking change - createExternalModulationInfo is not implemented on it.)
      • The SAME node wrapped in a compiled network and used POLYPHONICALLY in a HardcodedPolyphonicFX (per-voice) filters AND modulates correctly. This is my sampler filter and it is fine.

      What doesn't (the bug)

      To get P1/P2 modulation back on the MASTER (mono) filter, I wrapped the node in a compiled network:

      • container.chain -> single C++ filter node
      • AllowCompilation="1", NO AllowPolyphonic (so it's monophonic for the master FX)
      • container params Cutoff/Res have ExternalModulation="Combined" connected to the node's Frequency/Resonance.

      Result in the HardcodedMasterFX:

      • P1/P2 modulation now works (the matrix/extra_mod drives Cutoff/Res).
      • Parameter changes reach the node (verified via scripting: getAttribute(0) returns the set cutoff, e.g. 2401 Hz).
      • The effect is NOT bypassed (isBypassed() == false).
      • BUT the audio passes through UNFILTERED at any cutoff/topology/response. The wrapped node never cooks its coefficients - it behaves as if prepare()/sampleRate never reached the inner node.

      Earlier I also tried the POLYPHONIC network (AllowPolyphonic=1) in the master FX: that produced SILENCE (channel/voice mismatch), which is why I made the monophonic variant.

      Questions

      1. Should a monophonic compiled network prepare/process its inner node inside a HardcodedMasterFX? It currently passes audio through unprocessed (inner node not prepared) while the raw node prepares fine.
      2. What is the recommended way to get a node to BOTH filter audio AND expose P1/P2 modulation inside a HardcodedMasterFX?
      3. For C++ nodes specifically: what is the exact signature/usage of createExternalModulationInfo to declare params 0 and 1 as Combined-modulatable on the raw node (so I can skip the network wrapper entirely)? You mentioned "with C++ nodes you can directly call a method that defines the parameter's modulation connections" - a minimal example would let me do this directly.
      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      13

      Online

      2.4k

      Users

      13.8k

      Topics

      119.9k

      Posts