Synth.getAttribute() not recognised



  • I've just noticed that Synth.getAttribute() triggers a function not found error. Here's a little demo project

    
    <Processor Type="SynthChain" ID="Master Chain" Bypassed="0" Gain="1" Balance="0"
               VoiceLimit="64" KillFadeTime="20" IconColour="0" packageName=""
               views="32.rk1bzA..........s2+++COalmvmB...A....vA...." currentView="-1">
      <EditorStates BodyShown="0" Visible="1" Solo="0" Folded="0"/>
      <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="const var MidiMuter = Synth.getMidiProcessor(&quot;MidiMuter&quot;);function onNoteOn()&#10;{&#13;&#10;&#9;if (Message.getNoteNumber() == 24)&#13;&#10;&#9;{&#10;&#9;&#9;if (MidiMuter.getAttribute(0) == 1)&#13;&#10;&#9;&#9;{&#13;&#10;&#9;&#9;&#9;MidiMuter.setAttribute(0, 0);&#10;&#9;&#9;}&#13;&#10;&#9;&#9;else &#13;&#10;&#9;&#9;{&#13;&#10;&#9;&#9;&#9;MidiMuter.setAttribute(0, 1);&#10;&#9;&#9;}&#13;&#10;&#9;}&#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>
        <Processor Type="SineSynth" ID="Sine Wave Generator" Bypassed="0" Gain="0.25"
                   Balance="0" VoiceLimit="128" KillFadeTime="20" IconColour="0"
                   OctaveTranspose="0" SemiTones="0" UseFreqRatio="0" CoarseFreqRatio="1"
                   FineFreqRatio="0" SaturationAmount="0">
          <EditorStates BodyShown="1" Visible="1" Solo="0" GainModulationShown="1"/>
          <ChildProcessors>
            <Processor Type="MidiProcessorChain" ID="Midi Processor" Bypassed="0">
              <EditorStates BodyShown="1" Visible="1" Solo="0" Folded="0"/>
              <ChildProcessors>
                <Processor Type="MidiMuter" ID="MidiMuter" Bypassed="0">
                  <EditorStates BodyShown="1" Visible="1" Solo="0"/>
                  <ChildProcessors/>
                  <Content>
                    <Control type="ScriptButton" id="ignoreButton" value="1"/>
                    <Control type="ScriptButton" id="fixStuckNotes" value="0"/>
                  </Content>
                </Processor>
              </ChildProcessors>
            </Processor>
            <Processor Type="ModulatorChain" ID="GainModulation" Bypassed="0" Intensity="1">
              <EditorStates BodyShown="1" Visible="0" Solo="0"/>
              <ChildProcessors>
                <Processor Type="SimpleEnvelope" ID="DefaultEnvelope" Bypassed="0" Intensity="1"
                           Attack="5" Release="10" LinearMode="1">
                  <EditorStates BodyShown="1" Visible="1" Solo="0"/>
                  <ChildProcessors>
                    <Processor Type="ModulatorChain" ID="Attack Time Modulation" Bypassed="0"
                               Intensity="1">
                      <EditorStates BodyShown="1" Visible="0" Solo="0" Folded="1"/>
                      <ChildProcessors/>
                    </Processor>
                  </ChildProcessors>
                </Processor>
              </ChildProcessors>
            </Processor>
            <Processor Type="ModulatorChain" ID="PitchModulation" Bypassed="0" 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"/>
        </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>
    

  • administrators

    The Synth.getAttribute() method is working, but you need a getAttribute() method for connected modules, which was indeed missing. I added it for all module types.

    BTW, it is a bit more efficient (and more compact) to write toggle behavior like this:

    MidiMuter.setAttribute(0, 1.0 - MidiMuter.getAttribute(0));
    

    because you'll get away without branching...


Log in to reply
 

2
Online

339
Users

1.0k
Topics

7.1k
Posts

Looks like your connection to Forum was lost, please wait while we try to reconnect.