HISE Logo Forum
    • Categories
    • Register
    • Login

    Synth.getAttribute() not recognised

    Scheduled Pinned Locked Moved Bug Reports
    2 Posts 2 Posters 651 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.
    • d.healeyD
      d.healey
      last edited by

      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>
      

      Libre Wave - Freedom respecting instruments and effects
      My Patreon - HISE tutorials
      YouTube Channel - Public HISE tutorials

      1 Reply Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart
        last edited by Christoph Hart

        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...

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

        49

        Online

        1.7k

        Users

        11.7k

        Topics

        101.9k

        Posts