Should result in a smaller IRQ latency on CPU core 0 and in a better USB handling.
It still works on the RPi 1 too, but the MIDI dump and profiling has to be disabled there,
otherwise one will hear drops, when the screen scrolls.
https://github.com/probonopd/MiniDexed/issues/39#issuecomment-1062604728
Thanks @rsta2
* Add driver for KY-040 rotary encoder
This driver has been taken from the Circle develop branch and can be
removed here, when the driver made it up into a circle-stdlib release.
* Add initial optional rotary encoder support
* Can change between voice and bank select mode by clicking the switch
* Turn the knob to select the voice or bank according to current mode
* Hold the switch for 3 seconds to reboot the system
* Program change from MIDI is only displayed in voice select mode
* Configuration for KY-040 added to CConfig and minidexed.ini
* Fix: m_I2CMaster has not been initialized in CKernel
* Make synth parameters configurable
* Add class CConfig, which holds the configuration
* Add template config file minidexed.ini
* Register panic handler in CKernel to allow to display assertions
* Fix: Performance timer did not show correct percent value with HDMI
* Add class CDexedAdapter
Some Dexed methods require to be guarded from being interrupted
by other Dexed calls. This is done in the class CDexedAdapter.
* Add class CUserInterface
The user interface should be implemented here. As a start it supports
showing the program number and name on the LCD display. The LCD output
is buffered, so that LCD writes from an IRQ handler are possible.
* Move MIDI handling from CMiniDexed to specific classes
* CMIDIDevice is the generic MIDI handler
* CMIDIKeyboard handles USB audio class MIDI devices
* CSerialMIDIDevice handles the serial MIDI device
* Now all MIDI inputs can work simultaneous
* Program change and bank select work with serial MIDI
* Add headers to all files
* Include voices.c in sysexfileloader.cpp
* Cleanup Makefile
* Support headless operation on Raspberry Pi 4
Some code cleanup for src/kernel.*
* Code cleanup for src/minidexed.*
Move implementation of constructors to minidexed.cpp
Reorder member variables
* Support multiple USB MIDI inputs at once
* Maximum 2 inputs on Raspberry Pi 1-3
* Maximum 4 inputs on Raspberry Pi 4
* Suppress frequent messages in MIDI dump
* Use minidexed.txt
* Document `SoundDevice` in `minidexed.ini`
Co-authored-by: probonopd <probonopd@users.noreply.github.com>
Indexes of voice banks are zero-based now in any case (for the user
and internally). In CSysExFileLoader::Load() do not decrement file
index any more to calculate internal voice bank index. Do not
increment internal index, when generating user messages.
Fixed build errors in initial attempt to port the Circle
miniorgan sample program to circle-stdlib:
Remove members that are provided by the convencience base
class CStdlibAppStdio.
Correct syntax for invoking base class and member constructors.
Added miniorgan.o module to Makefile.