The same Bank Select might mean something completely different on a percussion channel vs. a non-percussion channel. Our bank editor currently does not support this. Only one program list can be associated with one bank select. We need the ability to specify a program list for a bank select on a percussion channel and a different program list for the same bank select on a non-percussion channel.
The JV-1080 provides an example. From the Roland JV-1080 Owner's Manual pp. 79, 124, and 126:
In addition to supporting the above, I propose a pop-up dialog for atomically setting/editing the MSB:LSB:Percussion key for each program list. This will allow for simpler duplicate bank detection and prevention as well.
Code review of MidiProgramsEditor
is currently underway to support fixing this limitation.
Just pushed some
MidiProgramsEditor
cleanup as [56f02a].Related
Commit: [56f02a]
Rg needs to support "Bank Select + Percussion" as a unique key identifying a bank. Then the bank editor needs to be upgraded to handle this as well.
The workaround now is to have multiple devices with different rgd files associated with the same MIDI port. Rg used to have problems preserving this across save/load, but that was fixed recently [663099] and will be officially in 24.12. For now, use the latest git.
While investigating this I discovered that the bank editor is filling the undo history with micro-garbage. That needs to be addressed as well. See comments in
MidiProgramsEditor::slotNameChanged()
.I did some cleanup in
MidiProgramsEditor
,MidiBank
, andMidiProgram
. My analysis was limited to the bank editor ("Bank and Program details" window). More work needs to be done on MidiDevice and the main window.I'm switching to something else if anyone wants to take over.
Related
Commit: [663099]
Last edit: Ted Felix 2024-07-04
I never used this dialog much - I was always happy with good old GM.
But things are certainly broken here.
At first I thought undo redo was not working properly - open the device manager - click on "New" and then press control-Z. The new device is still there - but not really - close and reopen the dialog and it is gone. So an update of the dialog is missing! And yes that undo for every character typed is not good.
Another problem: Create a new device and add 2 banks. Set the MSB for the first bank to some number. Now just switch back and forth between the two banks and watch that number count down !!!
So things to do:
1. Refresh on undo/redo - it seems like we need
DeviceObserver
class - the DeviceMamager would be an observer and refresh when thing change2. Micro commands - As Ted suggests maybe just issue the command when the word is complete.
3. The MSB/LSB issue - In the codes are some comments about removing the uniqueness code. This seems a good idea. This would address the initial issue.
I have made a start here.
At this stage I have just improved the undo/redo behaviour in the DeviceManagerDialog
Next step - the bank editor
See merge request
Comments welcome
Did some testing on your branch. I'm seeing a use after free. Procedure:
Highlights from the ASAN report:
Let me know if you need to full dump.
That is quite right. The BankEditor still needs a lot of work.
This merge request is not ready for merging.
What should work better now is the DeviceManager - undo redo should work OK. Don't look at the bank editor yet !!
Ok, that makes sense. I think the Bank Editor may have been abandoned to a certain extent since working with xml isn't very difficult. Also there are tools for creating .rgd files, so the bank editor isn't really necessary.
It will be nice to have it working properly for a change. For quick edits it's a lot easier than digging into the xml.
OK - this was more difficult than I thought.
The original concept was to make changes in the gui widgets and use these to update the devices.
I have changed to making direct changes to the device and using a studio/device observer mechanism to update the widgets. That means undo redo works automatically.
Also removed a lot of unnecessary state from the editor classes - the state is in the device.
So all together a lot of changes - still may be some bugs around !
I believe I have addressed the original issues (percussion + micro undo/redo).
I noticed the undo/redo is limited to 50 actions - not a lot if inputting a bank. I tried to look at memory usage of undo/redo and I believe it is not a lot. Suggestion - increase maximum undo/redo to 300 actions ?
Please test and merge.
Re: undo limit, I think the thing to bear in mind is that no one wants to press Ctrl+Z 50 times, let alone 300. It would be best to focus on reducing the number of commands that the bank editor adds to the command history.
Did some testing against [a18c86].
Looks like bank sharing is working fine now. Saves fine. Plays back fine. Looks correct in the MIPP. The main issue appears to be fixed.
Found a bug in the bank editor. Deleting a bank clears all the program names in all the other banks on that device. Procedure:
When I run the above, deleting a bank clears all the program names for all banks on that device.
Thanks for finding that. The fix was quite easy.
See branch
[9d6be2]
Related
Commit: [9d6be2]
Last edit: Ted Felix 2024-09-24
Everything is working great.
Before I merge, I want to give BankEditorDialog and MidiProgramsEditor a serious review. This will mean massive changes as usual to bring these two up to standards. So, avoid making any changes to those two while I'm working on this. This will probably take a week or two.
OK
Just finished
BankEditorDialog
review.MidiProgramsEditor
is next. Maybe one more week and then I'll merge all this to master.Pushing work in progress to the
bug1692-ted
branch:https://sourceforge.net/p/rosegarden/git/ci/bug1692-ted/tree/
Merged as [ef3898]. Please test latest git.
Related
Commit: [ef3898]
Lots of crashes reported on the user list. Need to investigate. Hopefully easy to reproduce. I'll have a look on Monday.
Steps to cause crash: open RG, open MDM (no devices connected), create new device, select new device and banks, import Korg M1, accept default settings, close dialog.
Last edit: Ted Felix 2024-09-23
Ok, I was able to reproduce. Key is you need to do a release build. Everything works fine in a debug build.
Just pushed a fix for the crash, [39a720]. Please test latest git.
Related
Commit: [39a720]
I have been away from my computer for quite a while - I missed all the excitement.
Thanks to Ted for sorting all this out !
I retested MDM in fixed [39a720] git version and was unable to reproduce the crash using similar steps to before. Further fiddling around therein did not uncover any problems. I will have a go at editing the Korg-M1 rgd using MDM when I have time. It is currently missing from the library but needs updating anyway for percussion maps and controls. Thanks for all the effort.
Related
Commit: [39a720]