-
Notifications
You must be signed in to change notification settings - Fork 81
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement banks for performances #533
Comments
Just to be clear, the number of performances supported is set by: MiniDexed/src/performanceconfig.h Line 31 in 375900b
Kevin |
I am interested in MIDI Control Change (CC) Program Change messages for setting LSB and MSB. |
My thoughts on this topic as a suggestion: In the basic version, the miniDexed is operated with an encoder. In my opinion you should limit the number of Performances in a bank to 64, with 128 Performances you quickly to get dizzy. Overall, I think the limit to 256 performance makes sense. This results in 4 banks of 64 Performances. Whereby once the structure for the program is in place, 8 banks would certainly not be a problem. How could you manage the performances on the SD card? In the Performance folder are all the Performances in ascending order from 1-256 (512) and the rest is done by the software. That's just my thoughts on the discussion. |
Personally, I don't like artificial limits. Unlike with real hardware synths from the 90s where bytes were precious, we have gigabytes of them on the SD card. So if someone wants to have 127 banks with 127 performances each, why not let them enjoy their 16,129 performances ;-) For the same reason I think we should not be loading everything at boot time, but read the files only when the data is needed. E.g., if someone requests bank 127, performance 127, the file 16128 should be read into memory. (The same goes for voices.) |
I thought again about the handling of performances. For discussion: What should be considered: The performance bank must be selectable. When saving a performance, the storage location must first be selected in Performance.syx. |
One of the reasons I think we need to rethink this is because at present performance data also includes bank/voice numbers and MIDI channels, which make no sense as part of a "performance voice" - see #454 (reply in thread) Fundamentally, I think performances need rethinking from the bottom up. But maybe a performance.syx would be a way to do that, leaving the old performance.ini setup for legacy reasons... But a key decision is: should voices be part of the performance, or should the performance specific the bank/voice number to be used? I know it is nice for it to be "self contained" but it also means that the voices used as part of the performance aren't available independently either unless already one of the existing ROM sets which is a shame. In my ideal world, performance.ini should specific some basic parameters about the setup (inc bank/voice/MIDI ch), but performance data representing an "eight-TG voice" should be a different format - the performance.syx. Also in my ideal world, loading, editing and saving voices would work in essentially the same way as loading, editing and saving performances so the "mental model" required is the same. But we don't allow editing AND saving of voices at the moment, other than part of a performance, which needs sorting out too... Kevin |
I corrected the image in my last post, I had forgotten the parameters for the effects
bank/voice number is unnecessary, I agree with you, but the MIDI channel must remain adjustable for each TG.
If the performance only points to the bank/voice and does not contain its own voice data, it is imperative that everyone who uses a performance also has the same Voice.syx in the same order on their SD card. I see big problems there.
My worldview looks different :-). |
First, do not use that SysEx header, please. All the voice editing software out there will go nuts. Having the voice data out of the performance will do some damage on portability of the performances files. Take at least 20 bytes as reserve, for future parameters. There are things that are very easy to implement, like velocity layers - here you need 2 parameters per TG. btw. I did prepare the whole specification long time a go, but nobody was interested. In the fact, I've already had it implemented in MiniDexed Control Center. |
I have implemented your @BobanSpasic objections accordingly and edited them above. Is NoteShift only 1 byte long?
You were probably way ahead of our time, 🤷♂️🕵️ |
F0 43 2n - about that 2n: About the MIDI channel - we need some kind of Master MIDI channel for the whole device. The device should receive the performance SysEx over MIDI just if this Master MIDI channel is the same as the one from the dump. About the NoteShift parameter, we could translate it as 0-48 in SysEx for the -24 to 24 in the INI file. This is also how the Yamaha does it. This way it remains one byte. |
@Banana71 isn't Voice Data 155 bytes long? |
We have the variable PerformanceSelectChannel=x in minidexed.ini. In my opinion you could equate it with the MidiMasterChannel. Or do we need an independent variable?
The length of the VoiceData of 156 bytes was taken from the Wiki. When editing, switching off individual operators could be helpful. |
We have now reached a point where the next step is groundbreaking and should be carefully considered. I assume that the implementation is difficult and time-consuming. At the moment the problem and the solution are being discussed together. Wouldn't it be better to first describe exactly what we want to achieve (set goals) and then look for the solution. What would a keyboard player expect from the miniDexed when dealing with Voices, Banks and Performances?
Limits and rules: what exactly and how much of everything?
*) On miniDexed or in an editor see also #571 here Each MiniDexed is built individually and the requirements and expectations are probably just as different. You definitely won't do justice to everyone. I'm happy with how it works now, but there's still a lot of potential. |
I don't see any data compatibility from Performance.syx to other devices. With the performance banks, as @BobanSpasic already said, we should take the TX-802 as a example, additionally with the voice data and effects parameters. |
@Banana71 - if I understood your previous post correctly, you want to have more than one performance in one SysEx file? About TX802 performance files - these are also huge, some 11kB because these are not real binary files, but an ASCII text describing binary data. They are just like our voice data inside the performance. ini files. |
This is really a very dark corner :-)
|
...and the elephant in the room: We want something to edit and play performances on a host PC (i.e., a Dexed derivative that can handle our performances) and can send them back and forth to the device. |
I think this can probably be closed now due to #581 Kevin |
Can we close this one now? |
With #500, "only" 127 performances can be handled (note that the TX802 could handle even fewer!).
In order to be able to have more than 127 performances, we need banks, like we have for voices.
Reference:
The text was updated successfully, but these errors were encountered: