• 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
FORUM

Navigation

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

    keep actors values in and out synced (data array)

    How To... ?
    6
    14
    1727
    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
      DillTheKraut last edited by

      Hello community,

      I would like to ask you, how you handle this issue.
      In general if you have nested user actors, the inputs of the lowest level never gets updated. Therefor the connected controls does not reflect the true state. How do one keep these in sync with the real status of the connected actor in the deeper user actor levels. One way would be to connect an user output to the input on the deepest level, down to the lowest and connect it to the controller a second time. But I have the feeling, this could create a closed feedback loop in certain situations.

      Then there is one special case regarding the data array actor. If the data is recalled, the inputs stay the same, while the outputs and the loaded data change. If write is hit, all data is overwritten, with the still standing inputs, even if there should be one value changed only.
      What would be the best way to keep the input values in sync with the output values. I used to loop the outputs to the inputs using a user actor with only user inputs and outputs 'piping' the data. Another approach would be maybe to use two different data array actors. One only to read, the other to write and have all the values between them connected. But in both cases I experienced issues, which where difficult to solve. Like wrongly updatet data.

      Does anyone have advices or some kind of best way to go? What would I need to consider here?

      bonemap 1 Reply Last reply Reply Quote 0
      • bonemap
        bonemap Izzy Guru @DillTheKraut last edited by bonemap

        @dillthekraut

        Hi,

        When you imply ‘deeply nested’ how many layers of user actor are there?

        Is it an option to bring the Data Array out of the depths and route the outputs to the deeper layers?

        You say,

        “ If the data is recalled, the inputs stay the same, while the outputs and the loaded data change. If write is hit, all data is overwritten, with the still standing inputs, even if there should be one value changed only.“

        However this sounds like expected behaviour of the Data Array. When we recall a line of the data, the corresponding data set is sent to the outputs. In my experience the recall leave the inputs unchanged, as you suggest. When data is appended through the ‘write’ trigger a corresponding complete line of data is replaced based on the values at the inputs. Therefore, if an input value remains unchanged it is still being overwritten with the same value as represented at the input.

        Best wishes

        Russell

        http://bonemap.com | Australia
        Izzy STD 4.2 | USB 3.6 | + Beta
        MBP 16” 2019 2.4 GHz Intel i9 64GB AMD Radeon Pro 5500 8 GB 4TB SSD | 14.5 Sonoma
        Mac Studio 2023 M2 Ultra 128GB | OSX 15.3 Sequoia
        A range of deployable older Macs

        D Aidan 2 Replies Last reply Reply Quote 0
        • D
          DillTheKraut @bonemap last edited by

          Hello @bonemap,

          thank you for your answers.

          I generaly like to put things into user actors for several reasons. Main one is, to be able to easily update everything, as I often have multiple instances of the same functions (or in a lot of scenes). On the other hand, this issue is not limited to the data array actor. Therefor I would need have every actor I need to change the value, to stay on the main level, contradicting the user actor intention.


          You are right about the data arrays behaviour beeing expected. My question however is, how to work around it in the most save way. In two of my projects I have more then 15 of those actors with 10 or more values each. If I want to change only one value for an index, I need to update all other values, as those might be on a state of a different index.

          In both cases changes of the outputs doesn't reflect to the controllers, connected to the inputs.

          bonemap 1 Reply Last reply Reply Quote 0
          • bonemap
            bonemap Izzy Guru @DillTheKraut last edited by

            @dillthekraut

            Hi,

            I understand, I think, and it does sound annoying to have the Data Array in user actors that update saved changes from one instance to all other instances. It appears then that you need some kind of trigger that will reset the Data Array inputs - and I have had this issue before. I think tried to solve it by having a value loopback system from the Data Array outputs to the data array inputs, but I don't remember the exact patch and there must have been value delays and/or gates to separate updating the inputs from receiving new values.

            Best Wishes

            Russell

            http://bonemap.com | Australia
            Izzy STD 4.2 | USB 3.6 | + Beta
            MBP 16” 2019 2.4 GHz Intel i9 64GB AMD Radeon Pro 5500 8 GB 4TB SSD | 14.5 Sonoma
            Mac Studio 2023 M2 Ultra 128GB | OSX 15.3 Sequoia
            A range of deployable older Macs

            D 1 Reply Last reply Reply Quote 0
            • m_theater
              m_theater last edited by m_theater

              @DillTheKraut , perhaps that helps the screenshot shows a panel for an artist to fine tune position of projector surfaces. It isn't nested but the values are feed through.

              best clemens

              sample_data_array_panel.izz

              avk4.net

              D 1 Reply Last reply Reply Quote 2
              • D
                DillTheKraut @bonemap last edited by

                @bonemap

                Good point, I wasn't realy aware of the fact, them getting updated every time you save changes of 'cloned' user actors. I most times don't use the internal save mode and try to have a function, which reads from txt files as often as needed. But I'll keep that in mind in future.


                @m_theater 

                thank you for your example. I guess this is what I most times go with and what @bonemap meant with value loop.
                This way another issue is solved, which is, that value changes are not directly reflected on the outputs.

                Would it be a feature request worth, that would offer two new options?

                1. keep outputs updated with the inputs. If input is changed, it immidiately gets reflected on the output.
                2. if using the recall value, not only the outputs are recalled, but the input values change to the loaded data. The index value would then still offer an edit of other indexes without changing the input data.

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

                  @dillthekraut said:

                  Would it be a feature request worth, that would offer two new options?
                  1. keep outputs updated with the inputs. If input is changed, it immidiately gets reflected on the output.
                  2. if using the recall value, not only the outputs are recalled, but the input values change to the loaded data. The index value would then still offer an edit of other indexes without changing the input data.

                  #1 I don't think this makes sense, since the output should be providing data read from the Data array text file. When 'replace' is triggered the inputs are reflected in the outputs. This makes sense since now the text file contains these values. Any values entered as inputs are 'temporary values' until a Data Array operation (like replace) adds the values to the document.
                  Since the Inputs and Outputs are separate, it allows you to create feedback controls which show the current recorded values, the current input values, and compare them as required.

                  #2 this would create a special case where Isadora doesn't work this way for any other actors, and I feel it might limit the flexibility of the Data Array in someway. 
                  The demo file is great, it shows how you can logically break apart the inputs and outputs, thanks @m_theater :)
                  It might be a little more work but the separation really allows a lot of possibilities.

                  We are considering some new data types (a table of data is one), this would likely come with Controls designed for viewing this data. The goal is to make it easier to deal with data sets, and to maintain the fastest possible processing of the data. I know Mark has been putting a lot of thought into this, but we can't offer any timeline just yet.

                  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.

                  D 1 Reply Last reply Reply Quote 1
                  • D
                    DillTheKraut @m_theater last edited by

                    @m_theater

                    How did you reconnect the data array outputs to the inputs? Or didn't you?
                    To keep them in sync, I add an user actor which is only 'piping the data, as it is forbidden to reconnect output and input directly. At the same time it can be used for some extra logic to alter the data. You can see the highlighted connections in the first screenshot.
                    It is an example which is a surtitle text editor. There are three data array actor as I wanted to show the next and the previous title simultaniously and needed to see the previous and following title times (It was a timelined show).
                    This was the editor only. The player which played the texts (with up to three lines) had 15 separated surtitle player as there was 15 parallel projections. Therefor 15 seperated data arrays with up to 150 lines.


                    m_theater 1 Reply Last reply Reply Quote 0
                    • D
                      DillTheKraut @DusX last edited by DillTheKraut

                      @dusx

                      Thank you for your opinion on this. I see your points, and saw them before as well, which is why I see these features as an option. Like a switch to choose how it works.
                      As you see in my previous post, the work around quickly at least tripples the editing time and makes it much more complex (I see, that this example is an extreme, anyway). Especialy if you have different data types (string, integer, etc.) you have to adjust all of them manualy. Let alone the naming of the in and outputs.

                      Woland 1 Reply Last reply Reply Quote 0
                      • m_theater
                        m_theater @DillTheKraut last edited by

                        @dillthekraut

                        in the example, the Value I/O connection is based around the control panel.

                        So i utilised the show linked value option in the x/y 2d slider. (and this is the feedback you asked for)


                        Using a "dummy" useractor to pipe through values to the beginning of the chain is something i did as well i other cases.

                        But i am asking myself, if it would be better to filter the message for an change "kind of a feedback killer" attached is a screenshot what i mean.

                        avk4.net

                        1 Reply Last reply Reply Quote 2
                        • Aidan
                          Aidan @bonemap last edited by

                          @bonemap Hi Russell,

                          You indicate that there is a limit to the number of layers of user actors that may be nested and still updated. Have you an official number for this limitation?

                          Thx

                          Aidan

                          MacBookPro15,1, Intel Core i9, 2.3 GHz, Processors: 1, Cores: 8, RAM 16 GB, Radeon Pro 560X 4 GB
                          Intel UHD Graphics 630 1536 MB
                          Isadora 3.08f11

                          bonemap DusX 2 Replies Last reply Reply Quote 0
                          • bonemap
                            bonemap Izzy Guru @Aidan last edited by

                            @aidan

                            Hi Aidan,

                            I don’t know the answer to that. Might need to get an official team member to fill in the blank. 

                            Best wishes

                            Russell

                            http://bonemap.com | Australia
                            Izzy STD 4.2 | USB 3.6 | + Beta
                            MBP 16” 2019 2.4 GHz Intel i9 64GB AMD Radeon Pro 5500 8 GB 4TB SSD | 14.5 Sonoma
                            Mac Studio 2023 M2 Ultra 128GB | OSX 15.3 Sequoia
                            A range of deployable older Macs

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

                              @aidan said:

                              Have you an official number for this limitation?

                               I don't know.. I haven't hit it, but updates/saves can start to become slow once you have many large/deep user actors.
                              It's possible the number is 999 (as this is the limit on a few things internally) but I think @mark is the only person who can give you a definitive answer.

                              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
                              • Woland
                                Woland Tech Staff @DillTheKraut last edited by

                                @dillthekraut said:

                                the work around quickly at least tripples the editing time and makes it much more complex (I see, that this example is an extreme, anyway). Especialy if you have different data types (string, integer, etc.) you have to adjust all of them manualy. Let alone the naming of the in and outputs.

                                Unfortunately, this is kind of the only way I can think of, but you could use JSON Parser and JSON Bundler from the Add-Ons Page to make your life a bit easier (hopefully)

                                https://recordit.co/xRM4ojCDo8

                                Example file: wrapped-data-array.zip

                                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
                                • First post
                                  Last post