* Initial commit for configuration TGs and polyphony across RPI1-5.
* Ensure unused TGs in a performance are MIDI disabled. Set polyphony to higher defaults on Pi 4 and 5.
* Actually, can just default to MIDI "disabled" directly in performance config if not present.
* Fix issue with choosing max polyphony
Implements #580
* Initial update in performance file handling. This change makes the 6-digit number in the filename indicate a performance "voice number" in MiniDexed. The external filename numbers will now match any Program Change messages using the common MIDI concept of user selecting 1..128 whilst internally they are treated as 0..127. Note: in the case of performances, performance 1 (index 0) is the Default "performance.ini" file for backwards compatibility.
Also note that in this version, new performances, when saved, cannot occupy free slots between other performances - they are added to the end.
Even though the filename standard gives 6 digit numbers, the actual number of performances is still limited to 256.
* Start of subdirectory implementation for performance banks.
* Initial version with performance banks, selectable over MIDI only.
* Initial implementation of performance bank switching in the UI menu.
* Remove debug information, fix few bugs, including PgmUpDown handling and performance numbers out of range.
* Bugfixes for legacy cases when no performance directory exists plus some extra checks for saving and deleting performances.
* Remove verbose debug options (doh!)
* Fix a minor off-by-one error found in review.
* Bugfix - removed redundant legacy check that results in out of order performance files being skipped on load.
* Fix bug in MIDI button handling commands.
* Fix for issue where wrong performance is selected [L] on new save.
* Suggested update to UI to show bank/performance numbers.
* Make performance bank select asynchronous to MIDI and UI to stop corruptions on loading performances.
* Fix an assert that should be a run-time test.
* Ensure bank selection works when PCCH is not enabled, and that UI remains consistent when changing banks.
---------
Co-authored-by: Kevin <68612569+diyelectromusic@users.noreply.github.com>
* Initial implementation of Program Up/Down and Tone Generator Up/Down selection and short cuts as buttons and MIDI buttons.
* Add configuration option for Program Change to act on Voices within a TG or Performances.
* Added PC option to Performance menu. Various bug fixes. Allow menu updating if on Performance/Load display. Swapped TG1 and TG3 in Performance 000008 so that TG1 is set to MIDI CH 1 in all Performances.
* Minor fixups in formatting and so on after review.
* Formatting fixups
* Changed config setting to match description in original manuals: Performance Select Channel. Also now accepts 1-16 or Omni as values.
* Additional fix to ensure GPIO buttons are working correctly on Voices or Performances.
* Changed initialisation order for PerformanceSelectChannel to avoid asset problem on a Pi 4 and updated menu text to fit nicely on a HD44780 display.
* Fix for bank numbering to ensure voice/bank wrap around works as expected for first and last banks from the UI.
* Also as part of #491 fixes bank selection menu when selecting between skipped bank numbers up or down.
* Skip empty voices while scrolling
* Added more cases where the voice is empty
* Filter out "EMPTY "
To be used together with a curated collection of banks that use the name `EMPTY ` instead of `INIT VOICE`
---------
Co-authored-by: probonopd <probonopd@users.noreply.github.com>
* Fix for Issue #457 - changed m_nNumLoadedBanks to be m_nNumHighestBank and updated functionality in menus accordingly.
* Fix for Issue #460 implements MIDI Bank Select MSB/LSB based on PR #395 submitted by @abscisys
* Fix for Issue #458 to not show blank banks in the menus. Also handles MIDI bank select messages and won't change banks if the final selected bank isn't loaded.
* Firm up bank validity handling slightly.
* Signal chain is now float32_t with much more support of CMSIS5.
* Fixes for float signal path.
* Several fixes for float signal path.
* Manual merge of changes from upstream.
* Fixes for wrong panning calculation.
Co-authored-by: Holger Wirtz <wirtz@parasitstudio.de>
* Saves the performance config to performance.ini
* Comments in an existing file will be overwritten
* Function displays "Completed" and returns to "Save" menu
When a parameter is edited in the UI, the current TG can be changed
by pressing the switch and turning the knob left or right. The
selected TG remains active, when the parameter editor is left. The
menu home position is entered by triple click now, reboot after
holding the switch for ten seconds.
* Support hierarchic menus
This introduces a new menu engine implemented in the class CUIMenu,
which can be configured with C-tables. This should make it easier to
extend the menus, without modifying the code too much. The UI provides
a main menu, which selects the TG to be edited and a TG sub-menu, which
presents the already known TG parameters (voice bank, voice, volume,
pan, detune and channel). A sub-menu is entered with single click and
left with double click. There are arrows displayed on the LCD, which
show the direction(s), to which the knob can be moved. All TG related
parameters are maintained in the class CMiniDexed now.
* uimenu: Make the tables const
* uimenu: Add sub-menu "Edit Voice"
Menu items can be re-sorted, if necessary.
* uimenu: Add "Reverb" sub-menu
* Map reverb float parameters to range 0 .. 99
* minidexed: Add global (non-TG) parameters
* minidexed: Protect reverb module with spin lock