* Option "MIDIThrough=from,to" in minidexed.ini to enable
* This forwards MIDI events from the device "from" to "to"
* from/to can be:
* umidiN (USB MIDI keyboard, N = 1..4)
* ttyS1 (serial interface)
* ukbd1 (PC keyboard)
* See src/minidexed.ini for an example
* dexedadapter: Protect setSustain() with spin-lock too
* Initial support for multiple Dexed instances
* Currently 2 similar instances, which work with the same parameters
* Only 1 instance with max. 8 notes polyphony on RPi 1
* Chunk size needs to be increased on RPi 1
* Support 8 Dexed instances (TGs) with multi-core
* Core 1 kicks core 2 and 3 and processes two TGs then
* Cores 2 and 3 wait for a kick and process three TGs each then
* When all cores are ready, the output will be summed up
* All 8 TGs generate the same sound at the moment
* The maximum chunk size is limited to 4096 now
* Maintain voice bank number per TG
* Support TG select in UI
* Active TG number is shown on LCD display
* Next TG is selected by double click
* MIDI receive and PC keyboard are still in omni mode
* pckeyboard: Fake MIDI events
* on MIDI cable 0, channel 0
* instead of calling key[down|up]()
* derive from class CMIDIDevice
* ui: Precede screen messages with TG number
* Configure MIDI mapping from UI
* ui: New menu item "MIDI" for configures assigned MIDI channel
* ui: Holding switch for at least one second returns to menu home
* ui: Do not show TG instance, if there is only one
* By default TG1 is in omni mode, all other TGs are not assigned
* config: Default chunk size is 1024 without multi-core
* Cleanup Makefile
* Update submodule circle-stdlib to v15.12
* System options can be defined cleaner using the "-o" option
* Include KY-040 driver from Circle (removed from MiniDexed)
* Render sound on secondary CPU core 1
* Enable multi-core support on Raspberry Pi 2-4
* Does still work on the Raspberry Pi 1 with restrictions
* Use CSoundBaseDevice::Write() instead overriding GetChunk()
* CMiniDexed is not derived from the sound device classes any more
* Add option SCREEN_DMA_BURST_LENGTH=1 to relieve bus congestion
* Add volume control to MIDI CC and UI
* Add CPU full speed support
Normally the CPU runs at a reduced speed in bare metal applications.
With this update and the setting "fast=true" in the file cmdline.txt, it
runs at the full speed.
Co-authored-by: probonopd <probonopd@users.noreply.github.com>
* 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>