Forum
    • Categories
    • Register
    • Login

    HELP! I modeled a Roland D-50 in HISE/Faust, but...

    Scheduled Pinned Locked Moved General Questions
    5 Posts 3 Posters 43 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.
    • MorphoiceM
      Morphoice
      last edited by Morphoice

      Ahoi!

      This has been a couple of hard all-nighters, and it finally somewhat works
      https://www.youtube.com/watch?v=rT4RH9pRJxQ

      BUT:

      Every time changes the preset in HISE, the Hardcoded Master FX reverb drops out and is somehow reset although nothing writes to it, at least not in any of my scripts. What I've traced so far in the HISE source:

      UserPresetHandler.cpp: alls allNotesOff(false), then killAndCallOnLoadingThread meaning all voices are killed before the preset loads.
      With no voices left, EffectProcessorChain::killMasterEffects() soft-bypasses the master effects

      Is there a supported way to keep a master FX's internal state across a user preset load?
      Does moving the effect out of the synth's FX chain (into the plugin-level master chain) avoid the voice-kill path, or does the same reset apply there?
      Ideally I'd like the reverb to ring out across a patch change, which is what the hardware I'm modelling does.

      https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

      ustkU griffinboyG 2 Replies Last reply Reply Quote 0
      • ustkU
        ustk @Morphoice
        last edited by

        @Morphoice I think you'll need to store the base64 state of the module in question in the preLoadCallback and restore it in the post CB.

        But I'm afraid continuous sounding reverb isn't possible, because the audio engine cuts during preset change. And I remember @Christoph-Hart saying it's not possible to change this because it would cause too many race condition issues during the switch phase...

        Unless...

        You run your own preset system which would only perform parameter value changes... Like undo/redo, AB comparison, or random buttons generally do...

        Hise made me an F5 dude, any other app just suffers...

        1 Reply Last reply Reply Quote 0
        • griffinboyG
          griffinboy @Morphoice
          last edited by griffinboy

          @Morphoice

          Hise calls reset() during those changes, so i'm afraid it's Hise actually telling the dsp to clear the buffers! Reverb can't be continuous unless you do some really hacky stuff, like leaving the reset() function empty and using prepare() to cut off tails instead (lots of Daws call prepare() before audio rendering and so that can be used as the reset function) but it just dawned on me that Hise might also might be calling prepare() too when you change presets... not sure.

          But If I were you, I wouldn't use any hacky methods like that, because not all Daws will work the same. This seems like a tricky situation! I'm not sure if there is a Hise feature that makes sense, that could be proposed? The fix would have to be in the Hise engine, but it's a bit of an odd feature. So I'm not sure if Christoph would be enthusiastic about it. Maybe worth asking him about this scenario.

          I'd probably investigate @ustk 's suggestion first, to make a custom preset system.

          Custom C++ DSP (for commission)

          MorphoiceM 1 Reply Last reply Reply Quote 0
          • MorphoiceM
            Morphoice @griffinboy
            last edited by

            basically though, a preset change is just changing all the Faust nodes knobs... so there wouldn't really be a reason to reset anything... so maybe a custom preset loader might work

            https://instagram.com/morphoice - 80s inspired Synthwave Music, Arcade & Gameboy homebrew!

            griffinboyG 1 Reply Last reply Reply Quote 0
            • griffinboyG
              griffinboy @Morphoice
              last edited by griffinboy

              @Morphoice
              Ah, no but that is a reason to reset everything!
              Under many conditions, changing parameter values all at once can produce monstruous audio. Like, if the DSP effect has feedback, if you don't clear all the buffers, the audio from before the switch, could blow up under the new parameters. There are scenarios that can sound really horrible or blow out your speakers. I mean, let's say the new preset has different reverb parameters, you'll get all the reverb knobs yanked while it's still playing, and get all that washy doppler... Of course that's not a horrible situation, but you can imagine that certain DSP would produce really loud nightmares. Which is why it's quite sane for Hise to send reset() on a preset change, to clear out all the buffers and start from silence. It's the safest thing to do.

              But I agree that creatively, there are situations where this is not what you want. But you can understand why Hise went with the blanket solution.

              Custom C++ DSP (for commission)

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              21

              Online

              2.5k

              Users

              13.9k

              Topics

              121.2k

              Posts