• Products
    • Isadora
    • Get It
    • ADD-ONS
    • IzzyCast
    • Get It
  • Forum
  • Help
  • Werkstatt
  • Newsletter
  • Impressum
  • Dsgvo
  • Press
  • Isadora
  • Get It
  • ADD-ONS
  • IzzyCast
  • Get It
  • Press
  • Dsgvo
  • Impressum

Navigation

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags

    Note On / Off watcher dont receive all pressed notes

    Troubleshooting and Bug Reports
    3
    6
    153
    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.
    • mschwenker
      mschwenker last edited by

      Hy,

      i have to following situation where the Note On and Note Off Watcher does not receive all pressed midi Notes.

      When i play a chord on a Midi Keyboard (Connected via USB) i can see in the monitor that Isadora is correctly receive all pressed notes. E.g. 3 Notes.

      But when i connect a Note On Watcher Actor and e.g. print the pitch values with an javaScript actor i can see that only 2 of the tree notes are printed. The same when i use an other actor like the OSC Transmit actor. I can also see in the monitor window that only 2 of the 3 notes where passed through the actor.

      From time to time or when i play the chord notes fast one by one all midi notes where pass through the actor.

      In the screenshot below you can see in monitor the all 3 Note On events are logged but the javaScript actor, which only print the arguments[0], does not print all pitch values.

      Thanks

      Malte

      Woland DusX 2 Replies Last reply Reply Quote 1
      • Woland
        Woland Tech Staff @mschwenker last edited by

        @mschwenker said:

        In the screenshot below you can see in monitor the all 3 Note On events are logged but the javaScript actor, which only print the arguments[0], does not print all pitch values.

        It's probably because it's designed to listen for one note at a time and you essentially want an entire chord of notes simultaneously. It's outputting as many as it can as fast as it can, but it's only got a single output and so it likely can't output as many as you're wanting all at the same time. You may need to use the 'pitch' input of the Note On and Note Off Watcher actors to watch specific pitches so that you can get simultaneous data from all of them at once.

        I slapped together a User Actor that combines Note On and Off Watchers for up to 8 notes at a time. If you use 16 of these User Actors (as are in this file) you can listen for all MIDI Notes at the same time by listening for them separately. Alternatively you can just have a Note On Watcher and a Note Off Watcher actor for every note you care about.

        8-note-on-and-off-watcher-4.1.3-2025-08-11.izz

        TroikaTronix Technical Support
        New Support Ticket: https://support.troikatronix.com/support/tickets/new
        Support Policy: https://support.troikatronix.com/support/solutions/articles/13000064762
        Add-Ons: https://troikatronix.com/add-ons/ & https://troikatronix.com/add-ons/?u=woland
        Professional Services: https://support.troikatronix.com/support/solutions/articles/13000109444

        | Isadora Version: all of them | Mac Pro (Late 2013), macOS 10.14.6, 3.5GHz 6-core, 1TB SSD, 64GB RAM, Dual AMD FirePro D700s |

        1 Reply Last reply Reply Quote 1
        • DusX
          DusX Tech Staff @mschwenker last edited by

          @mschwenker said:

          does not receive all pressed midi Notes

           When actors are set to ranges like channel 1-16, they can receive multiple values per cycle, and Isadora runs a many cycles per Frame. So what happens in these cases is that the most recent value received during the cycle is output. Depending on your system and patch complexity, you may be running at 300 cycles per frame, and 60 frames per second. With these numbers, Isadora could in theory receive 300 values in the time it takes to process one frame of video (assuming all were times to land within a single cycles time window), however, most values are shared between actors at the Framerate (video only reacts to values at the framerate) so often there is no value to capturing/passing values at the cycle rate, so again it will be the most recent value that is passed.

          @Woland is correct in breaking this down into individual listeners. This ensures the most recent value for each Note on Watcher is passed along to the next actor.

          NOTE: If you have multiple Note on Watchers, sending values to the same input of another actor, each value will overwrite the last during the cycle/frame, and Isadora processes the Scene patch, left to right, and top to bottom. So the Note on Watcher located lowest (and to the right if at equal vertical locations) in your patch will be the actors value that is received during that cycle. This doesn't often come up, but is good to know. This does make a difference often for Video layering when you have multiple Projector actors however.

          Troikatronix Technical Support

          • New Support Ticket Link: https://support.troikatronix.com/support/tickets/new
          • My Add-ons: https://troikatronix.com/add-ons/?u=dusx
          • Profession Services: https://support.troikatronix.com/support/solutions/articles/13000109444-professional-services

          Running: Win 11 64bit, i7, M.2 PCIe SSD's, 32gb DDR4, nVidia GTX 4070 | located in Ontario Canada.

          1 Reply Last reply Reply Quote 1
          • mschwenker
            mschwenker last edited by

            @DusX and @Woland thank you very much for your very detailed feedback and also for create this 8 Notes on and Off Watcher. 

            This helped me a lot to better understand how Izadora works, especially when it comes to data flow and actor execution.

            I was able to use the actor as a basis and adapt it to my needs. I change it from 8 to 12 Notes and reduce it only the pitch and note on / off information which i combined to a On/Off integer because i only need to track the current pressed notes.

            I have one more question about the memory management of the JavaScript actor. What about variables that are created outside the main function? I would assume that these are only available to the actor instance.

            Thank you very much.

            Malte

            Woland DusX 2 Replies Last reply Reply Quote 1
            • Woland
              Woland Tech Staff @mschwenker last edited by Woland

              @mschwenker said:

              I have one more question about the memory management of the JavaScript actor. What about variables that are created outside the main function? I would assume that these are only available to the actor instance.

               @liminal_andy Didn't you have a method for passing global values between JavaScript actors?

              TroikaTronix Technical Support
              New Support Ticket: https://support.troikatronix.com/support/tickets/new
              Support Policy: https://support.troikatronix.com/support/solutions/articles/13000064762
              Add-Ons: https://troikatronix.com/add-ons/ & https://troikatronix.com/add-ons/?u=woland
              Professional Services: https://support.troikatronix.com/support/solutions/articles/13000109444

              | Isadora Version: all of them | Mac Pro (Late 2013), macOS 10.14.6, 3.5GHz 6-core, 1TB SSD, 64GB RAM, Dual AMD FirePro D700s |

              1 Reply Last reply Reply Quote 0
              • DusX
                DusX Tech Staff @mschwenker last edited by

                @mschwenker said:

                variables that are created outside the main function?

                 Yes, these are Globals to the active instance of Javascript. The Javascript actor does not have a built in method of sharing globals between actor instances. 
                You can bridge this by outputting values to a Set Global Values actor, and feeding the value into another Javascript actor via the Get Global Values actor. This works well when you want to share values primarily in one direction.

                Troikatronix Technical Support

                • New Support Ticket Link: https://support.troikatronix.com/support/tickets/new
                • My Add-ons: https://troikatronix.com/add-ons/?u=dusx
                • Profession Services: https://support.troikatronix.com/support/solutions/articles/13000109444-professional-services

                Running: Win 11 64bit, i7, M.2 PCIe SSD's, 32gb DDR4, nVidia GTX 4070 | located in Ontario Canada.

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