On 06/09/2019 03:41, J. Liles wrote:
I think if I were trying to do what you're trying to do, what I'd ask for is the ability to convert NOTE ON events in a pattern to CC events, or something similar, so I wouldn't have to do a bunch of more less blind data entry in the event editor.

One thing I've thought about implementing before is ghost/overlay patterns for this kind of thing, so that at least the entry isn't blind (although that would be a bit crazy to carry over into the event editor view).
This discussion is getting quite silly imho. The right question is not why I need it but why did you implement it this way. I really don't get it. I can't even nudge an impefectly played note to a different position! Why is the position editable if it isn't saved and why isn't it saved? I think that if you would ask, no-one would implement it this way.

When one works by oneself one tends to prefer not repeat oneself unnecessarily, which repetition is one of the chief disadvantages of patterns like MVC. FYI, I've never encountered a GUI toolkit which enforced or even suggested the MVC pattern. MVC is more of an enterprise concept for when you have both large teams of developers and a need for them all to appear to be working on the same project simultaneously.

Adding MVC here wouldn't even address the issue you're talking about, which is related to event propagation/signalling, which is something non-sequencer uses libsigc++ for (although I'd like to remove that dependency, since its more heavy-weight than is strictly required). You still have to somehow propagate the information about the model having been updated (and there's always a "model", MVC or not, because you have some bits somewhere representing application state) to the different components which need to know about it. Unless you want to do something really stupid and just redraw the whole GUI at a given frequency (which is how a shockingly large percentage of software really does it, and also why a shockingly large percentage of software is slow as hell).

Flexibility comes with costs and everything is a compromise. This isn't a student project meant to show off some just-learned design patterns. It was built with real-world constraints in mind, and in most cases rebuilt just about every way imaginable and profiled, leaving only the fastest, lightest implementation to be made public.

Because people implement MVC wrong doesn't mean it is wrong. The projects I've worked on were big, think dozens of man-years minimum. Those GUIs were not slow, because we only updated what was needed and certainly did not redraw the whole GUI for a little change. And whether you use MVC, ABC or XYZ, I don't care. There is just a bug in the mute-status of non-sequencer. Plain and simple.

Kind regards, Ruud



Reply via email to