* Initial implementation of system-level, i.e. all TG, MIDI control maps
* Ensure msg only handled once by the first TG with a matching receiving MIDI channel.
* Optimise system CC handling esp when unrecognised CCs are received.
* Update in optimisation of System CC handling.
* 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
* First implementation of using four PCM5102 I2S sound devices for 8-channel mono sound output on a Raspberry Pi 5. Requires latest develop branch of circle.
* Update to required develop branch of circle
* Adjusted default chunk sizes to correctly support number of channels.
* Update queue size as per Rene's suggestion.
---------
Co-authored-by: probonopd <probonopd@users.noreply.github.com>
* Initial build with basic structure to support st7789device once added to circle.
* Implementation of ST7789 display - requires updated circle with new ST7789 character driver.
* Added more details to minidexed.ini about ST7789 and SPI options.
* Update to develop branch of circle that now supports st7789 character mode display.
* Minor formatting fixes to tidy up.
* Allow setting of more advanced SPI parameters: mode and clock.
* Update to allow for font size as an option.
* Very early initial support for RPi 5 based on dev branch of circle.
* Added parameter to choose UART option on all RPi versions to be GP14/15
* Build for Raspberry Pi 5
* Update README.md for RPi 5
---------
Co-authored-by: probonopd <probonopd@users.noreply.github.com>
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 attempt to include USB Gadget Mode as a configuration option. Note: Also requires a move to the latest release of circle.
* Set "official" (as allocated from pid.codes) USB vendor and device ID for MiniDexed
* 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.
* Added Engines Mark I and OPL
* Added Engine selection
* Update config.cpp
* Added selection for Engine Type
* Added Engine Type selection
* Update build.yml
* Fixes
* Reverting to an old commit (I screwed up)
* Small fix
* Small Fixes
* Fix for error when compiling on 64-bit platforms
* Casting of the engine variable corrected
* Changed the way we parse and set the engine type from the config file following @diyelectromusic suggestions
* Fixed a typo
* Update Synth_Dexed commit
* Moved blocks of code around
* Update Synth_Dexed to 8c67f73
https://github.com/probonopd/MiniDexed/issues/403#issuecomment-1455130745
* Update Synth_Dexed to a908f78
https://github.com/probonopd/MiniDexed/discussions/358#discussioncomment-5358731
* Synth_Dexed deb0905
* Add EngineMsfa.o to Makefile
* Don't add EngineMsfa.o here...
* ...but add EngineMsfa.o here
* Fix missing \
* Update build.yml
* Add Synth_Dexed to the submodules update
* Update Synth_Dexed
* Update Synth_Dexed to c9f5274
https://github.com/probonopd/MiniDexed/issues/526#issuecomment-1670217925
---------
Co-authored-by: probonopd <probonopd@users.noreply.github.com>
* Fix for Issue #470 to introduce bounds checking on loading performance files and when saving a new performance.
* Reduce number of performances to 256 and include some better error handling for when there are no performances free for saving.
* 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.
* 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.
* Fix for Issue #459 Initial support for loading of headerless SysEx voice banks as a configuraton option
* Fix for Issue #459 Added config option for headerless SysEx voice banks.
* Implement option to allow MIDI Program Change messages to select aross four consecutive banks as discussed in Issue #391.
Note: It does not check if consecutive banks are loaded. That is down to the user. The default is "enabled".
* 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 #424 create a build script to check out the correct versions of sub libraries.
* Initial attempt at supporting loading SysEx files from subdirectories which seems to speed up loading significantly.
* Reinstate headerless SysEx file loading after subdirectory change
* Limit nesting of subdirectories to open
* Fix bank number in UI to match the numbers from the bank files.
* Update to fix bank numbers. Bank file numbers now start from 00001 and show as 1-indexed in the UI. But internally and via MIDI are still 0-indexed as per MIDI spec.
* 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.
* Fix for Issue #459 Initial support for loading of headerless SysEx voice banks as a configuraton option
* Fix for Issue #459 Added config option for headerless SysEx voice banks.
* 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.
* Update Circle develop branch
for SSD1306 display rotation support
https://github.com/probonopd/MiniDexed/discussions/412
* Implements rotation and mirroring options for SSD1306 displays (only). (#420)
Requires an update to circle (PR submitted to develop branch)
Co-authored-by: diyelectromusic <68612569+diyelectromusic@users.noreply.github.com>
* circle-stdlib e318f89
Needed to support Circle develop
* Fix for Issue 421 - circle sound drivers have moved to their own subdirectory and library.
* Updated to keep in step with updates from the original in circle-stdlib.
* git checkout circle-newlib 48bf91d
Needed for circle ec09d7e
Co-authored-by: probonopd <probonopd@users.noreply.github.com>
* Ignore clock and active sensing on serial MIDI
Fixes#416
I'm not entirely sure this is the correct way to fix it. But it does
seem to fix the problem I was seeing. I can now completely mash the
keyboard and no notes will get stuck on.
* Handle all system real time messages in serial
* First implementation of NoteOn/NoteOff MIDI UI buttons
* First implementation of NoteOn/NoteOff MIDI UI buttons
Co-authored-by: diyelectromusic <68612569+diyelectromusic@users.noreply.github.com>
* Initial commit for MIDI user interface button support.
Status: first successful build.
* Second try with more functionality plugged in and compiling...
* First "it seems to work for me" version for initial testing of MIDI buttons.
* Fix Off/Omni logic
* Fix order of Prev/Next when initialising the button UI.
Co-authored-by: Kevin <68612569+diyelectromusic@users.noreply.github.com>
* Initial support for SSD1306 128x32 or 128x64 OLED displays
* Update circle
Co-authored-by: Kevin <diyelectromusic@gmail.com>
Co-authored-by: probonopd <probonopd@users.noreply.github.com>
* Default behavior changed: Click to enter menus, long-press to leave menus, double-click to go to the home screen (configurable)
* Buttons can have click, double click and long press events
* Changed default config, added new options and renamed EncoderPinSwitch to ButtonPinShortcut
Co-authored-by: Kevin <diyelectromusic@gmail.com>
Co-authored-by: Stephen Brown <steve@fig14.com>
* Fix for using the right MIDI channel for SYSEX.
Fix for SYSEX MIDI dump output.
* Small fixes for recognizing MIDI channel in SYSEX.
Disabled printing of MIDI data in incoming serial data.
Added some mor debug output.
* Reenabled showing incomfing MIDI data when MIDI-DUmp is enabled.
Fix for using MIDI channel for SYSEX.
* Several fixes for SYSEX handling.
* Code for sending a voice dump via MIDI started.
* Fix for sending SYSEX voice dump to all interfaces.
* Sending voice data via SYSEX when voice is changed.
Adding master volume and changing master volume when SYSEX master volume is triggered.
* Forgot to initialize nMasterVolume - just added it.
* Merge.
* Added a SpinLock around MIDI message processing.
* Added notesOff() when changing algorithm parameter (can be extended later for other parameters).
Co-authored-by: Holger Wirtz <wirtz@parasitstudio.de>