What Is This "Restructuralization" That Has Been Mentioned Recently?

Official support for: meldaproduction.com
Post Reply New Topic
RELATED
PRODUCTS

Post

Subject line says it all. I've seen this mentioned several time in one or two of my threads.

What will you be doing for this? Any idea what your timeframe will be?

Post

Well, it's internal stuff, nothing "visible" from the user's point of view. It's just something that I wanted to do many times, but never got courage. It could save some memory and loading/unloading times, but mainly it should make the mixing revolution and MYYY quite easier to do... That's all I can say :D. How long it will take? No idea whatsoever, could be a few days, but more like a month is my guess. During that period no updates will be possible. So now just an update to MDrummer and then this ;).
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

Here’s something you might consider if you’re making significant modifications to the architecture. It’s something I think is probably best explained with a use case. This will probably seem convoluted upon first encounter, but hopefully the whole thing will make sense after a little consideration. Here’s the use case …

You have a function with all the controls on a tab. The tab is titled “Do Stuff” and it has a title-enabled switch. There are two modules that consume sufficient resources when operating that you’d like to have them bypassed when the tab is disabled.

This first module’s bypassed state is always in sync with the title-enabled state – trivial to make that one work. However, on the tab you have a button “Do More Stuff”. When it’s on, module 2 is in operation. When it’s off, module 2 is bypassed even if the “Do Stuff” tab is enabled.

So, what is the approach? You could have the title-enabled switch set both modules to bypassed when the tab is set to disabled and to not bypassed when set to enabled. However, the state of the “Do More” button will easily get out of sync with the module it controls and it won’t work as expected in any case.

Alternately, you could have the title-enabled switch control the “Do More” button and let it pass the bypass/not-bypass control through to the second module. Set Do More to Off when the title-enabled switch is set to disabled and to On when set to enabled. This approach is better than the first alternative because the UI always reflects the actual state of operation. However, the approach automatically resets the state of the “Do More” button. A user sets something up in the “Do Stuff” tab, temporarily disables that tab, and its settings are different when later enabled.

With me so far? This is not abstract. I have recently encountered just this problem. Maybe there’s already a solution I’m overlooking, and if so … never mind.

If there’s not an existing workaround, here’s a possible remedy. Include a mechanism for an MP to broadcast an “Assert” command to another. By “Assert” I mean: have the MP receiving the Assert command execute whatever code is executed after a value change. We would need a way to have the assert command conditional, since we don’t have a way to tell an MP to send this message under some conditions but not under others. Just a simple binary value (On/Off) as we have with a switch currently is all that is needed. Assert-true says: execute your value-changed code; Assert-false is a no-op.

Maybe rather than “Assert”, use the term “Signal Value Changed”. There is probably something even better … the name is hardly the important point here.

In my use case example, when the state of the title-enabled switch changes (for both set enabled and set disabled), it would broadcast a set-to-bypassed to module 2. It would then send an Assert-true to “Do More” upon being set enabled, and Assert-false upon being disabled. In other words, when title-enabled is set to disabled, we turn off module 2 unconditionally. When set to enabled, we tell the “Do More” button to handle setting the module 2 bypassed state as appropriate to its own state.

The above assumes that the “Do Stuff” enabled switch broadcasts its commands in the order declared. This is likely to already be the case. If not, the order does become important.

Actually, I cannot think of a case that would break things if the following were implemented: when a titled-enabled button is set to enabled you simply did an auto-assert of all the controls on the tab. I’m not suggesting that this be done, but I’m wondering if that would actually be a good thing all around.

Post

OK, You have taken a long time to write this. For the most part I kind of understand what your asking. But if I'm honest I did get a bit lost. I think I have a solution for you. But I'm not completely sure of what your saying.

I really do want to help, so please could you send me a rough preset showing the layout of what you mean, with the tabs and buttons etc.
I will then open the preset and try to add my work around to it for you, then send it back with an explanation of what i did.
If I cant fix it then at least I will fully understand what you are asking and I can help you in your request.

Use MXXX if possible.
Jason @ Melda Production

Post

jmg8 wrote:OK, You have taken a long time to write this. For the most part I kind of understand what your asking. But if I'm honest I did get a bit lost. I think I have a solution for you. But I'm not completely sure of what your saying.

I really do want to help, so please could you send me a rough preset showing the layout of what you mean, with the tabs and buttons etc.
I will then open the preset and try to add my work around to it for you, then send it back with an explanation of what i did.
If I cant fix it then at least I will fully understand what you are asking and I can help you in your request.

Use MXXX if possible.
Thanks, jmg8. I was actually about to put together an MXXX minimal preset that sets up the problem (simpler even than my use case, since that had two modules, one of which was not part of the problem). I will be very interested to see if you have a way around my problem. Will post the example shortly.

Post

OK, here's a minimal example of the challenge.

We have one tab and two MPs. The first MP is a title-enabled switch. The second is a button: "Make Noise".

We have a single module, a noise module. You will want to display the meters when testing this in non-edit mode so you can see when the noise module is bypassed.

The goal is twofold:
1. to have the preset making noise when the tab is enabled and the button is on; otherwise the noise module is bypassed.
2. to retain the state of the Make Noise button when the tab is disabled and then enabled.

I can easily do one or the other but I cannot find a way to accomplish both parts of the goal.

Here's the preset:

Code: Select all

$eNq9V91TIjkQf9+-IjXPp-MJYhW4BSguVY5Swon3GJkAKYdkKpNR2b9+u5MZDYi7nlV3PGQ6v-RH0p10N93vL5ucPDFVcil6XngceISJhcy4WPW8Si+POt73s2-d9P7+vmRaA1ySocxzWpQsG1CRXWRcSwWi3ht+y1drPaGC5T0vQFxoBWtg5ULQh5xlFlayLCXYvmJPLL+jecV28VRmgERJNvDlQjsLs20BC31Bc7nyyLnazpnuL5dsocuxKCp9SbkwO0IiMEqvuHi0xO20yLnWTE35TxYCW9CJ9uGo58UxoCl9uRrdDHK5eEQYUAQHOxZvKu2aTKtc8wlVdMNAWfnqE2McfGK2c9Z9PQueYvuTKdIQwzUV4Dl7+JS-eOTVaWFDz9dM-OBZxoRRO5WVWuDuPDLnIpPP1kE-QBGYmii25DlsBoIHzqLP8LXacSMTyYUmo5yuygFYSMDGC16EOAiD6PT0tNVue-5HbMk+m+8aQ9NyweCcKtg5xIjnuSFma74wYfEd3hAvEl6pIOgPg2A0cjwAh70BpymesZrpIy1RowV1fFlL7GrpD7+oJXG1tPr-TstUCrmC60T6ebGmziXIagYjVloTeLvqn2eRsEE6DRJZZDTCfRgkRmQ0sl4ySNLzcG4QDOu76wo54QFef0CmLIdXwLJJXq3wCQR-xXCr7KPYibrfoOFBNDqIxgfR5CDa2kPtjsqGOPCM0vH52CQME4ZRlefX8Gx73rXkJSMrJpiikNwICIzPa-iSCZih0Fhk7AUcfhTWwFQzmtt0k9LycVwnBEOatdelGzQJa445o9cepFEMzPdm-AefdnOOaZOGiybJQDoybK8Avu4LUW163nzNNSMCDTjrcDEf6AOHfIeCx6GzBHkNoagVdk5PTk5P4lZo37Wx-UqAV30Tf7gHkCFLH75OmsfptdRsD9rLjWd7QEDO2ZIC9FYLLpWsCkiDWzKjDzD9e2zrjc1fM65zBvUKY0keKq2lsDzO44LpFNTfymfrfSM4feZ6sW7832ifFqwWsuszvrG7eNuPoayOwZYsuSr1m+8wRA1tbtMtFSvgTDDx13htcdcR5MgykAioevOOVcgBa1qwz+TuDzM1jNv6XfhGG4ay2QDQe5HYD034h0hcS7Wh+ZecTx8ZubYX9E8BCHcCMGFQ9IQuf+N2qN9vsduLATYvJASHv3vtgA22BS1Lx-D-H4PwHVLCE+ovNH9iUGWhGyPuxOZhqZyGA-McxMhuf0g1W0m1HWu2GYulJP1Kr7HcAFNKeY4E4vidz+fw8d+EphoIOFalClkyWBiLUqtqA+6HCXYbyLyGjUIpUECbo5vCsathWCkFQnXsvf-Agl+bAMp1D7pOFeQWeKClBMMp1Yq-nJ10zvvtuB2EHSjMcSc4GQ6DpAOFb3jSggoYBkF4HsM0CiEaVqR7s9D0ie0p6IMINEMRCCQhdAqm5vYHteiOSPeOQUcJyXdXRTJMglHYaXcC7FguTmvRPebuFRMrvf6U6A5r18n6n5J+zw8uVQXm8Tp9hykEIMIhxiHBoYVDOzURxHEKjU1qazR+5jyDHWFXgy0rcdvFup3xGxZbDJ9xNmsaKGxabJtyx0sOeaYWMvXX4WonH3I9QyCWkK5mTUMVHLfchuljcTzKYg2NvmMoCNrJbzg-Y+ywCnv6nYPbju0Q22fMHJafMPoYzjAwtQozQTRy0ahBYxeNGzRx0aRBWy7aatC2i5qJnzbZzXf-Z559+wUlH6Nh
I will be on the road for the next week, so if you need corrections, I'm afraid I won't have access to my DAW. I should be able to get to this forum in case you have questions, however. Happy designing! :)

Post

GOT IT!
OK so straight away I came up with the first preset here. It fixes your first problem, but unfortunately didn't fix both.

Code: Select all

$eNrdV91v4jgQf9+-wsrzbfNJAAm6Alp2kZoWFW7pPbrEgNXURo7Tlv3rd8ZOqKH0rrvS3cP1Idg-z5dnxjPT3peXx4I8MVVyKfpeeBZ4hImlzLlY971Krz53vC-nn3rZ3d1dybQGuCQjWRR0W7J8SEV+mXMtFbB6r-gtX2-0lApW9L0AcaEVnIGWS0HvC5ZbWMmylKD7ij2x4jstKnaIZzIHJEryoS+X2jmY77ZwMBC0kGuPXKjdgunBasWWupyIbaW-Ui6MRbgIjNArLh7s4na2LbjWTM34Dxb2vXaaniWdNI2TtBMen0egv9M9a4VxnLbisOuRjL5cjW+GhVw+IEHfiyMAhwdG3FTatSKrCs2nVNFHBmLLvZuMPeAmY+F5b389vNjuB1OkWYw2VIAzrT8y-uKRvR-DZr3YMPGN5zkTRuxMVmqJ1nlkwUUun63PvoEgUDVVbMULMAbiCf6jz-BrpaMhU8mFJuOCrsshaEhAxwvmRhyEQdTtdltp6vnvkSXHZL6rDFXLJYN7quDgEmNeFGYx3-CliZTv0IaYW5hlQTAYBcF47HgALnsDTlM8ZzXRe1KiRgrK+G0psStlMPpNKYkrpTX4NSkzKeQa0okMiu2GOkmQ1wSGrbQqMLvqP88iYYN0GiSyyHiMdhgkRmQ8tl4ySNL3cG8QDOubdIUycQ8FISAzVsArYPm0qNb4BII-Ysgq+ygOou43aHgSjU6i8Uk0OYm2jlBrUdksTjyjbHIxMTXEhGFcFcU1PNu+dy15yciaCaYo1DsCDJOLGv7KBOyQaSJy9gIO-xzWwEwzWtgKlNHyYVIXBLM0Z-ujG1QJZ446I9depBEMxHfm+xc+7eYes6Yyb5siA+XIkO0BfN2Xonrse4sN14wIVOCcQ2Le03sOlQ8Zz0LnCOoaQlEr7HTb7W47boX2XRvd+wV41TfxhzyACln68OtUftxeS82OoKPaeH4EBOSCrShAr+3hq5LVFsrgjszpPWz-nNgWZOvXnOuCQQvDWJL7SmspDM0M5N3KZ+tuQzl75nq5aRzeiJttWf0E7fmc46lxSG1Cs7JShjuy4qrUr+7CqDRrk0C3VKyBMjG94-UeeyJrAPZSEpLP5E2mATbcbWlZOiZADdjQLftI7X63UsN3V78L30jDUDZGvX+JI7vNlkR724L-wjb-KEuO0yb8hyy5luqRFh9LDPrAbEx+PTmmDHqw0OX-JSWO3B6+QUp40YOl5k8Mmj7Mi8Td2LYglTP-YNmFsNTzD9VsLdVuotnjRKwkGVR6g90PiDLKC1wgjr+LxQJ+-FemmYYFXKtSW1kyOJiIUqvqEdwPGxx+kHgDhkJnUrA2Vzd97FDCqFIKmOroe-+CBr9WASvXPeg6tSW3QANDJyjOqFb85bzduRikcRqEHZgT4k7QHo2CpAN9eNRuQUMOgyC8iGEbhRANy9K7WWr6xI4EDIAFZrMIGJIQBhczAgyGNesBS+87gwEXesGhiGSUBOOwk3YCHKAuuzXrEXHviom13nyI9YC05zShD3G-pQeXqi22lbqbhBkEIMJPjJ8EPy38pJmJIH5nMGdldmTAnwXPwSIcsnCCJu70Wk9XfkNie-Mz7ubNPIczlJ2avvOSQxeqmcw44FClybtUzxCIFVSoeTPfBWctd357nx2vstzA-x2OoiBIk7+h-Iiy0yLs7Q8ubgfIU2QfUXOaf8roQzjHwNQizAbRyEWjBo1dNG7QxEWTBm25aKtBUxc1Gz9rqpvv-id8-uknkfzTIA==

So then I spent an hour really trying until I realised how to do it. Here it is, both problems fixed.

Code: Select all

$eNrVWN1v4jgQf9+-IsrzbbGT8CVBV0DLLlJpUeGW3qNLDFhNbeQ4bdm--mbsBMxH77qrO+mOh2T883hmPGPPTOh8eXvOgheuc6FkN6QXJAy4XKhUyFU3LMzycyv8cvmpM354eMi5MQDnwUBlGdvkPO0zmV6nwigNS8M9fi9WazNhkmfdkCAujYY50HIt2WPGUwdrlecKdN-wF559Z1nBD-GxSgGJkrRfUwvjTcy2G5joSZapVRhc6e2cm95yyRcmH8lNYb4yIa1FSBAr9EbIJ0fcTzeZMIbrqfjBaTds1pOLOqGkSRqN5Hg+6oYxoRdJu9WO2nHcCIMxe7sZ3vUztXhCBpiPAOwfGHFXGN+KcZEZMWGaPXMQm+-cZO0BN1kLLzu77eHGtj+4DipisGYSnOn8MRZvYbDzI63o+ZrLbyJNubRip6rQC7QuDOZCpurV+ewbCAJVE82XIgNjIJ7gP-YKbycdDZkoIU0wzNgq74OGBHS84dkAT5Co3W7XG42w9h5bcsxW85WharXgsE9NDjYxFFlmidlaLGykah4vxbOFp4yQ3oCQ4dDzAGz2DpymRcpLpvekRJUUlPHLUmJfSm-wi1ISX0q993NSpkqqFRynoJdt1sw7BGnJYJflTgWervIXOoRWSKtCIocMh2iHRWJEhkPnJYsk3RDHFsGwnhxXSBOPkBBIMOUZ3AKeTrJihVeA-BbDqXKX4iDqtQqlZ9HoLBqfRZOzaP0IdRblFXHmGo1HVyObQ2wYhkWW3cK1hVun0iJjOgDG0dVuCAPkHcmUv4GfP1MfoB4wNZxlLhPtx9SOxyx-GpWJwpJ2bjd1h6bA3IEZcEDs-irF5AAoFT9Y-A-MAdWGp1UKPw0R-d+H6FaJnAcrLrlmUJKqUFn4K5fvxcoLzU+FYi-3JBY7z9NTz2+qOgAVw7LtAEzA17J47obztTA8kKjAm4fc8cgeBRQnXHhBvSkoPQhFddpqN5vtZlynLvVa3Tsi31GVOed57DWG6wyFLq-B2yvgOLxVhh9BRyXu8gggwRVfMoD2Vf6rVsUGDvQ2mLFHGP4+cp2EK0MzYTIOnQjGO3gsjFHS8kxB3r16dSGxnNNXYRbr3f0oxU03vMykbn4mcNY6rTShopyU-jZYCp2bvUsxchVtD9k9kyvgTGwLsN-HjskZgC1RQIPPwS5hAH1yMgHrbzcszz1zIK2v2YZ-pBy-W3zhuS3vUc1Kw7BWBgJ9FJXjMNG-icqt0s8s+1gg2BN3+-75YEw4tC7S5P9kCP4D7qYnSA43p7cw4oVDjwTtdeAPXIpW2msXMQVCOMp2kRm+Uno7Mvx5JJcq6BVmjc0CMI2ZyJBAHN-z+Rxetf2iqQECtlXojco5TIxkbnTxDG6HAfaKyLwGQ6FKaKDt1m3ZP5QwKLSGRWXUw39BQ61UAZTvHnSd3gT3wAPfCKB4zIwWb5fN1lWvETcIbUFbFbdIczAgSQvalkGzDv0LJYRexTCMKETDLencLQx74UcCerAEWtkIFiQU+jzbMfX65dKDJZ3vHL4HIC8fikgGCRnSVqNFsN+8bpdLj5g7N1yuzPpDSw9YO15B+NDqU35wqd5g+i6zNh1DACJ8xPhI8FHHR2NsI4jPKbSlY1e+8TUXKViEPSl+cAR+s182o7WKxdXJVxzNqvYXW07XZH4XuYBsXy6ypdnjaiTvcr1CIJaQmWZVO0zge85rd99fjltZrOEzzVNESCP5C86PKDsvwu3+YOOu3z7H9hE159dPOHuiMwxMKcIOEI18NKrQ2EfjCk18NKnQuo-WK7Tho3ZQG1fZreb-cXD56U82xTRZ
Jason @ Melda Production

Post

Looking forward to seeing what you did here. Won't have a chance for at least a week, but can't wait!

Post

MeldaProduction wrote:Well, it's internal stuff, nothing "visible" from the user's point of view. It's just something that I wanted to do many times, but never got courage. It could save some memory and loading/unloading times, but mainly it should make the mixing revolution and MYYY quite easier to do... That's all I can say :D. How long it will take? No idea whatsoever, could be a few days, but more like a month is my guess. During that period no updates will be possible. So now just an update to MDrummer and then this ;).
Please try to keep session / parameter compatibility. Thanks
SOUND!

Post

Certainly! Not that it won't be a challenge :D
Vojtech
MeldaProduction MSoundFactory MDrummer MCompleteBundle The best plugins in the world :D

Post

jmg8 wrote:So then I spent an hour really trying until I realised how to do it. Here it is, both problems fixed.
OK, very impressed! Hiding the work module inside a composite module so that you could have independent control over bypass at two levels is a thoroughly inspired piece of design. I haven't had a chance to check this myself, but I would hope and expect that bypassing the composite module bypasses its internal modules. Do you know if this is so?

Like I said, I am seriously impressed with this innovative solution. I'm pretty certain it would never have occurred to me. I don't know anything about you, jmg8, including what kind of a day job you might have. But unless you're making serious money at whatever that is, you should really consider doing software development for a career, assuming that's not your career already. You are a natural at the kind of abstract thinking that makes for a really first-rate software engineer. After over four and a half decades in that profession, I have every confidence I'm right on this. :)

Post Reply

Return to “MeldaProduction”