1. Bringing more to our online community - our forum is moving soon!
    We're excited to share more about our plans and information about the future of our online community
    Check our latest update in this thread
    Dismiss Notice

A new mode for switches please

Discussion in 'Feature Suggestions' started by Michael O'Hagan, Apr 23, 2021.

  1. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,151
    I just got done setting up a bunch of switches to turn a macro on and off for CPU conservation, the trouble is that 1 switch in the master out of the primary macro will not turn off the entire macro.

    I had to go in and put multiple switches in multiple places to get the macro completely turned off.

    I'd like to see an option in the switches properties where you can enable something of a "Master Switch" setting where it will force turn off the entire macro without the trouble of having to put multiple switches in all these different locations.

    I've got a few core cells and some system info modules as well as some primary stuff that just doesn't turn off with a main switch on the master out of the macro, this is kind of a hassle tracking down and turning off several modules inside of a single macro.

    Switches need a master mode where it will turn off the entire macro with one switch please.

    Thanks.
     
  2. Paule

    Paule NI Product Owner

    Messages:
    7,447
    Michael, if it's only temporary, i.e. when building, use the mute function with the right mouse button.
     
  3. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,151
    No, not temporary, it's a permanent switch that's a part of the instrument.
     
  4. Studiowaves

    Studiowaves NI Product Owner

    Messages:
    633
    Hi Mike, For the time being you can easily accomplish what you are trying to do using IC send and IC receive. First designate the master switch as a send, the click on the other switches on at a time followed by the master each time. If I remember correctly it will automatically attach it to the master. The look at the Master IC send (scroll down a bit) and you'll it is now controlling the receive switch. That's it. upload_2021-4-23_1-33-58.png IC stand fo internal connections.
    Also if you get into core programming the modules can be turned off using the bundle connection. At least version 6.4 does.
    If it gives you trouble its in the manuals.
     
  5. Studiowaves

    Studiowaves NI Product Owner

    Messages:
    633
    Hi Paule, don't want be a thread de railer here. Wanted to say how rude people seem when the downloaded purva.. without leaving a comment.
    IC send and receive might be the answer here.
     
  6. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,151
    I know about the IC method, but I just did a macro where it took like 10 switches in different locations to actually turn the macro completely off.

    I'd like to see this new option to speed up the overall workflow in these situations, finding the right spots in the structure and IC connecting all of the switches took like 15 min, if there were a master switch mode it would have taken 30 seconds.

    This request is all about improving the workflow.
     
  7. Paule

    Paule NI Product Owner

    Messages:
    7,447
    That's the normal way in UL since 15 years.
    Michael, you can use internal connections withour IC-Send/-Receive
     
  8. colB

    colB NI Product Owner

    Messages:
    3,877
    Why do you need this?
    What is the compelling use case where this functionality would make a significant difference to the user experience?
     
  9. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,151
    It's not about the end user experience it's about building efficiency.



     
  10. colB

    colB NI Product Owner

    Messages:
    3,877
    You still haven't explained what it will achieve that is compelling enough to warrant an additional feature.
     
  11. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,151
    That is the explanation, BETTER BUILDING EFFICIENCY, 30 seconds Vs 15 min to power on and off a larger more complex macro is a huge workflow improvement in development.

    I don't see what's not a benefit in that.
     
  12. Studiowaves

    Studiowaves NI Product Owner

    Messages:
    633
    Sometimes practice makes perfect. Once I understood how to connect switches via IC send/receive after I got the hang of it thru practice I can connect 10 switches in under a minute. I don't think you understand their workflow. Like I said, assign the master as a send, once that is done there is a very easy way to connect the receiving switches. Just click master followed by the next switch then the master and it's done. I may be little off on the exact sequence as it's been a while. But it does auto fill the send to as in the above picture.

    Notice it says TO Rtrg several times. That was filled in automatically when I performed the button sequence. Once you get it you down you can do 100 switches in 15 minutes easily.
     
  13. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,151

    It's not about the IC send connection time, it's about the time it takes to figure out which one's need it and which one's don't.

    I have a complex modulation macro that I want to power off when it's not in use, there are well over 100 wires inside the macro, disconnecting the wires one by one and re connecting them to figure out where the switches need to go to fully turn off the macro is far more time consuming than the IC connections part of it.

    A Master switch connection that would force off the entire macro in 1 single switch would be useful in a lot of situations for me.
     
  14. colB

    colB NI Product Owner

    Messages:
    3,877
    I suppose this is why I'm asking for clarification - I've built many many large complex structures in Reaktor. I've used mostly core, mostly primary, and many combinations of the two, and I've never once wanted or needed this functionality.

    So when I ask for an explanation of what is compelling about this feature you want, it's because to me it seems that maybe having a hugely complex tangle of over 100 different wires to manage is the problem here and not the lack of a module level kill switch. And that's a software design issue rather than a Reaktor lacking features issue.
    Not saying for a minute that it's an easy thing to solve, just that maybe there are better alternatives if you look for them. I guess its also just different folk having different approaches to problem solving. For me, if I get to a stage where things are getting unmanageable, I tend to blame my design, and then find a design solution. There are very few exceptions to this, and those are old chestnuts like core iteration, code reuse... things that have no efficient or easily maintainable workaround, and cannot be solved with a bit of code refactoring.

    But whatever, it's no biggie, I'm not against a module level off switch, I just see no significant value in it. I think it's going to be so far down any feature priority list that it will never happen unless it's a natural side effect of some other feature that gets added or changed.

    Actually I changed my mind - I am against it:
    Primary switches in general are problematic and are as close to deprecated as anything in Reaktor ever will be. Afaik, NI don't use them in their content any more. You need to consider data coherence - anything with internal state can't just be frozen, then restarted with some arbitrary input that is unrelated to its previous input e.g. filters, unit delays.. So you need to have some form of initialisation. Which is what we get. Primary level switches generate resets, and all the initialisation glitches that goes with them. Nothing but trouble.
    Adding a new form of reset generating Primary switch would be a terrible move, because less experienced builders might start using them more because they are new so must be good. We need to be telling newbies never to use Primary level switches, not adding more of them!

    The only time I use primary level switches is to test that my code doesn't completely break when a primary level switch causes a reset. Or in contexts where the switch is only activated remotely during initialisation (and these are generally hacks due to the lack of features that would actually be useful ;))
     
  15. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,151
    I get what you're saying about switches and init events, but take a look at this.

    Screen Shot 2021-04-23 at 3.29.05 PM.png

    There is a complex shape based modulator that works great, all the designed parts behave as expected, but it's got layers of complexity to it.

    It's also in a situation where it's one of 2 selectable modulation types.

    When one type is selected the other should shut off completely, but there are hundreds of different wires and parts making this whole thing work.

    Going through all those parts and wires to find the right places to put the switches was very time consuming, I ended up needing 13 switches in different locations to fully deactivate the macro.

    As far as initialization events and what not, I've sort of just accepted the fact that they are inescapable, one way or another there absolutely has to be some kind of initialization in order for the program to work so why not centralize the switching process for faster and easier design and development.

    We're not ever going to get rid of init events, I think that's just a simple fact that has to be lived with, so that doesn't really bother me, but disconnecting and re-connecting all these wires to find the right place to insert the switches is time consuming process that we can get rid of.

    As far as telling newbies to never use switches, I disagree, they are a necessary evil of sorts. Learning early on when to use a switch and when not too is far more realistic of an approach, you don't need them everywhere, but sometimes you do just need to use them in larger more CPU hungry types of builds.
     
  16. colB

    colB NI Product Owner

    Messages:
    3,877
    The problem isn't init events, it's unnecessary resets causing unwanted initialisation. Most common (only?) culprit is Primary level switches. Fortunately, you never _need_ Primary switches.
     
  17. Studiowaves

    Studiowaves NI Product Owner

    Messages:
    633
    1. Mike, it almost seems like your getting burned out, I had 50 chess games going on line at one time, yes I got tired. Looks like your running your own website too. It really looks good. The only recommendation I have is to turn on the cpu diagnostic tool and go for it, also don't forget that switches can be stored in the snaps. So simply make your patch with what's needed and save it. I have hundreds of connections in one of my do dads but it's all done in core. I use integer lookup tables that carry only a 0 or a 1. The patch number indexes the lookup table and if the table outputs a 1 then it makes a connection. 0 shuts down the clock and no clock no cpu. It's done with comparators and routers and you can turn off the clock to nearly any module and shut it down cpu wise. If you are not good with core don't sweat it. But learning it can be a bear depending on your technical background. I picked right up on it but I also engineered electronics for 40 years and nothing was new to me. But ya, I have been burnt out on huge projects many times. Good luck
     
  18. Michael O'Hagan

    Michael O'Hagan NI Product Owner

    Messages:
    1,151

    I'm actually pretty good with core, and I know how to do clock routing, but certain elements of this thing were better off in primary for a whole list of reasons.
     
  19. Studiowaves

    Studiowaves NI Product Owner

    Messages:
    633
    I know Mike, not sure if you remember and I may be wrong but I think you were the person who showed me how to use the bundle input to activate modules. It was an example with choices of different wave forms but it had the core logic showing how to turn the different oscillators on and off using the bundles. I think that was you, it was probably back in December. Anyway here is an fm project the shows how to use lookup tables. The tables are deep down in the algos module. upload_2021-4-24_0-23-57.png
    They don't turn any cpu stuff off but set up the algorithms. So here's my example back at ya. lol Just open the on off module. It's really easy.
     

    Attached Files:

  20. colB

    colB NI Product Owner

    Messages:
    3,877
    Yeah, I know what you mean. Sometimes Primary is the better or even only option. In that case though IMO it's really just an 'accept the damage' situation, still not a reason to resort to Primary switches outside of initialisation.
    Just look at the way factory Blocks GUIs respond to Primary switches - all the displays on all the controls on all the blocks reset. This is easy to 'fix', but there was no point - nothing is broken, because who would ever use a Primary switch?