Inserting or replacing effect bypass on/off (Question)

Kontrolist
Kontrolist Member Posts: 5 Member
edited November 2022 in Scripting Workshop

After I insert or replace an effect using:

on persistence_changed
$asyncID := set_engine_par($ENGINE_PAR_EFFECT_TYPE,$EFFECT_TYPE_RINGMOD,-1,1,$NI_BUS_OFFSET + 0)
  wait(1)

this effect will always be turned on, but I want the effect bypassed immediately after insertion. Turning it off in the 'on async callback' is not a solution, because it will always turn off the effect even when a snapshot is loaded that might have the effect turned on.

Currently none of my snapshots have any of the new effect engine parameters stored. Only by re-saving all the snapshots (hundreds) one by one, will it override the bypass parameter.

Any smarter way of going about this? 🙄

Comments

  • Kontrolist
    Kontrolist Member Posts: 5 Member

    After a good night's sleep I kind of solved the issue. Since I am replacing a distortion effect, the snapshot already has the old distortion bypass value stored. I am using the same variable (name) for the new effect as well. The old $distortion_bypass name does not match the name of the new effect, but a small comment in the script will explain that discrepancy for future reference.

    on async_complete
    if ($asyncID # -1)
          $asyncID := -1
      end if
    set_engine_par($ENGINE_PAR_EFFECT_BYPASS,$distortion_bypass,-1,1,$NI_BUS_OFFSET+0)
    end on
    

    No matter what effect is loaded in this particular slot, it will turn on or off based on the $distortion_bypass variable that is already stored in the snapshot.

    Now this is not exactly what I wanted, since the new effect can be turned on when it is not really supposed to. The snapshots are not programmed with the new effect in mind, so it will sound very different (ringmod instead of distortion). But very few snapshots were programmed with the distortion active, so I am content with this solution. I guess I'm lucky in this regard.

Back To Top