GrandOrgue / grandorgue

GrandOrgue software
Other
149 stars 39 forks source link

Divisional Coupler still not working #1787

Closed Psi58 closed 2 months ago

Psi58 commented 5 months ago

Thanks @oleg68 for #1737 which evidently fixed the issue demonstrated by the test organ provided by @larspalo in #1725 (https://github.com/GrandOrgue/grandorgue/discussions/1690#discussioncomment-7613679).

Unfortunately this fix does not seem to have resolved my real-world case, using 3.13.3-1 on W10. This has been tested using 2 ways of making edits to add the DivCoupler - in a text editor and also using GOODF.

With the Divisional Coupler active, divisionals from the originating manual respond as expected, but the coupled divisionals do not respond, and an Unhandled Exception dialog box is shown. Clicking ‘ignore’ clears the error dialogue and allows me to continue; clicking ‘retry’ immediately terminates the program. Nothing is logged in the Event Viewer.

Attached is a comparison of the relevant sections of the ODF from (1) Lars’ test organ, (2) the working organ to which I’m trying to add a Divisional Coupler, and (3) the edited version of (2) adding the Divisional Coupler. I have aimed to make minimal changes to the test organ ODF.

If my ODF contains an error, I’d be grateful if someone could explain it. If not, I suppose this needs to be raised as an issue again. DivCouplerError

larspalo commented 5 months ago

Too little is seen in your odf information to say anything for sure.

However, I've done a test myself. Using the built in setter divisionals together with the divisional couplers will unfortunately crash GO. Using the old style of odf divisionals seems to work in my tests. I attach an archive with two .organ files that demonstrate it. (The .organ file with the "OldStyle" divisionals is also named like that)

FurtherTestingDivisionalCoupler.zip

Psi58 commented 5 months ago

Too little is seen in your odf information to say anything for sure.

However, I've done a test myself. Using the built in setter divisionals together with the divisional couplers will unfortunately crash GO. Using the old style of odf divisionals seems to work in my tests. I attach an archive with two .organ files that demonstrate it. (The .organ file with the "OldStyle" divisionals is also named like that)

FurtherTestingDivisionalCoupler.zip

Many thanks. Your demonstration behaves as described in my environment too. I will attempt to convert my odf to use old style divisionals, and will report back.

Psi58 commented 5 months ago

Hmm. I'm sorry, but I am struggling to understand how to implement old style divisionals. Is there documentation somewhere about how to use them? Or a well-commented sampleset that uses them, that I can study?

If I understand correctly from FurtherTestingDivisionalCouplerOldStyle.organ these are hard-coded into the ODF of the sampleset.

Furthermore, they must be displayed on Panel000 (specified in [Panel000Element999], to allow a piston (or any MIDI device) to then be linked to them.

And a Divisional Coupler will interact with these divisionals, not those defined in the GO Divisionals panel. (I cannot find any way to link these ODF-divisionals to the GO-panel-divisionals).

Is this understanding correct?

In my case I am trying to implement

So maybe I am trying to do the impossible?

Anyway, I can see that using the old style divisionals is deprecated. So perhaps I am getting distracted from the primary issue which is that Divisional Couplers are not currently working with divisionals as defined in the GO panel.

larspalo commented 5 months ago

Anyway, I can see that using the old style divisionals is deprecated.

No, not really. They still have some use cases (mostly for modelling fixed combinations - but they can still be used as normal divisionals that the user can change at will if they are not protected). They are however a bit more restricted/complicated and less capable than the setter versions, but it's fairly easy to create them with GOODF without even learning so much of the mechanics involved. Just make sure to list relevant switches (if you use them) as references in the manual to make them available to the divisionals. In the screencast https://youtu.be/nitHpBEDsFI?list=PLNz9AJhjubTdw0pV2nZC_XfphJhJV5ly3&t=935 I've covered most that one would need to know.

And a Divisional Coupler will interact with these divisionals, not those defined in the GO Divisionals panel. (I cannot find any way to link these ODF-divisionals to the GO-panel-divisionals).

Currently the setter divisionals doesn't work with the divisional couplers, but that bug will eventually be fixed. Unfortunately, as it is right now, if the user tries to use the setter divisionals with a divisional coupler active that should affect them it will crash GO. And no, the odf divisionals cannot be linked with, or used as, the panel divisionals. To make the odf divisionals available to the user you must display them on any (at least one) panel of your choice.

So maybe I am trying to do the impossible?

Until the bug is fixed it's a no go for all your points. The only way to use a divisional coupler at this time is with the old style odf divisionals. But I'd expect things to change.

Psi58 commented 5 months ago

Thank you for explaining. I will be patient (and quiet) now, and hope that the bug fix is not too complex...

oleg68 commented 2 months ago

@Psi58 @larspalo I opened the FurtherTestingDivisionalCoupler.organ but GrandOrgue (3.14.1-1) doesn't crash. Could you give me the steps to reproduce?

Psi58 commented 2 months ago

@Psi58 @larspalo I opened the FurtherTestingDivisionalCoupler.organ but GrandOrgue (3.14.1-1) doesn't crash. Could you give me the steps to reproduce?

Using 3.14.1-1 on Windows10.

  1. Open FurtherTestingDivisionalCoupler.organ
  2. Set divisionals for Gt and Ped
  3. Test Gt and Ped divisionals (they work fine)
  4. Press Ped/Gt Divisional Coupler
  5. Press any Ped divisional, an 'Unhandled Exception' dialogue box appears 6a. Press 'Ignore' and toggle the Ped/Gt coupler off, Ped divisionals now work again 6b. Press 'Abort' and the 'Unhandled Exception' dialogue is regenerated. Press 'Abort' a second time and the following dialogue appears.
    GO_error It seems to be a 'graceful' closedown that doesn't create a crash dump.