numPressedKeys and isLegatoInterval with ignoreEvent



  • If there is more than one script in a chain and an earlier script ignores an event then the numPressedKeys() and isLegatoInterval functions cease to be useful in the later scripts.

    
    <Processor Type="SynthChain" ID="Master Chain" Bypassed="0" Gain="1" Balance="0"
               VoiceLimit="64" KillFadeTime="20" IconColour="0" packageName=""
               views="32.rk1bzA..........hJ....QrAZnnB...B....PA...." currentView="-1">
      <EditorStates BodyShown="0" Visible="1" Solo="0" Folded="1"/>
      <ChildProcessors>
        <Processor Type="MidiProcessorChain" ID="Midi Processor" Bypassed="0">
          <EditorStates BodyShown="1" Visible="1" Solo="0" Folded="0"/>
          <ChildProcessors>
            <Processor Type="ScriptProcessor" ID="Script Processor" Bypassed="0" Script="function onNoteOn()&#10;{&#13;&#10;&#9;Console.print(&quot;Script 1: &quot; + Synth.getNumPressedKeys());&#10;&#9;Message.ignoreEvent(true);&#10;}&#10;function onNoteOff()&#10;{&#10;&#9;&#10;}&#10;function onController()&#10;{&#10;&#9;&#10;}&#10;function onTimer()&#10;{&#10;&#9;&#10;}&#10;function onControl(number, value)&#10;{&#10;&#9;&#10;}&#10;">
              <EditorStates BodyShown="1" Visible="1" Solo="0" contentShown="1" onInitOpen="0"
                            onNoteOnOpen="1" onNoteOffOpen="0" onControllerOpen="0" onTimerOpen="0"
                            onControlOpen="0"/>
              <ChildProcessors/>
              <Content/>
            </Processor>
            <Processor Type="ScriptProcessor" ID="Script Processor2" Bypassed="0" Script="function onNoteOn()&#10;{&#10;&#9;Console.print(&quot;Script 2: &quot; + Synth.getNumPressedKeys());&#10;}&#10;function onNoteOff()&#10;{&#10;&#9;&#10;}&#10;function onController()&#10;{&#10;&#9;&#10;}&#10;function onTimer()&#10;{&#10;&#9;&#10;}&#10;function onControl(number, value)&#10;{&#10;&#9;&#10;}&#10;">
              <EditorStates BodyShown="1" Visible="1" Solo="0" contentShown="1" onInitOpen="0"
                            onNoteOnOpen="1" onNoteOffOpen="0" onControllerOpen="0" onTimerOpen="0"
                            onControlOpen="0"/>
              <ChildProcessors/>
              <Content/>
            </Processor>
          </ChildProcessors>
        </Processor>
        <Processor Type="ModulatorChain" ID="GainModulation" Bypassed="0" Intensity="1">
          <EditorStates BodyShown="1" Visible="0" Solo="0" Folded="1"/>
          <ChildProcessors/>
        </Processor>
        <Processor Type="ModulatorChain" ID="PitchModulation" Bypassed="1" Intensity="0">
          <EditorStates BodyShown="1" Visible="0" Solo="0" Folded="1"/>
          <ChildProcessors/>
        </Processor>
        <Processor Type="EffectChain" ID="FX" Bypassed="0">
          <EditorStates BodyShown="1" Visible="0" Solo="0" Folded="1"/>
          <ChildProcessors/>
        </Processor>
      </ChildProcessors>
      <RoutingMatrix NumSourceChannels="2" Channel0="0" Send0="-1" Channel1="1" Send1="-1"/>
      <macro_controls>
        <macro name="Macro 1" value="0" midi_cc="-1"/>
        <macro name="Macro 2" value="0" midi_cc="-1"/>
        <macro name="Macro 3" value="0" midi_cc="-1"/>
        <macro name="Macro 4" value="0" midi_cc="-1"/>
        <macro name="Macro 5" value="0" midi_cc="-1"/>
        <macro name="Macro 6" value="0" midi_cc="-1"/>
        <macro name="Macro 7" value="0" midi_cc="-1"/>
        <macro name="Macro 8" value="0" midi_cc="-1"/>
      </macro_controls>
      <MidiAutomation/>
    </Processor>
    


  • If a message gets ignored, it won't trigger the callbacks of script processors after the one that ignored them, but that has nothing to do with the numPressedKeys() method. Or are you asking that the getNumPressedKeys() method should return the number of unignored notes (so ignoring a note prevents the internal counter to rise?)



  • Aha! I misunderstood what was happening. The current behaviour is fine 🙂


 

3
Online

353
Users

1.1k
Topics

7.5k
Posts