* 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>
* 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
* 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>
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>
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.