Releases: rhargreaves/mega-drive-midi-interface
v1.28
Features
Dump channel parameters from MDMI & new CLI tool
You can now dump current FM channel parameters from the interface to a PC. See docs. The new mdmi-cli
tool can be used to save this dump as DMP or TFI file.
v1.27
Features
Dump preset from MDMI & new CLI tool
You can now dump presets from the interface to a PC. See docs. The new mdmi-cli
tool can be used to save this dump as DMP or TFI file. The tool can also load presets from TFI, DMP and WOPN files.
Full Changelog: v1.26...v1.27
Breaking Changes
- MIDI program numbers in the UI will now be 0-127 rather than 1-128.
v1.26
Features
Support for loading & storing of user FM presets
- Load an FM instrument via SysEx, overwriting a specific MIDI program
- Save a specific MIDI channel's FM parameters to a MIDI program via CC 87
- Ability to retrieve a custom user FM preset via MIDI program change (user presets overwrite built-in presets)
- Clear FM preset via SysEx (restores original MIDI program)
- Clear all FM presets via SysEx
See the docs for more info.
A maximum of 128 custom user presets are supported.
In addition to being stored in-memory, user presets will also persist to SRAM on the Everdrive X7 & PRO. Stored presets are re-loaded into memory from SRAM when the interface is started (or upon a MIDI reset system event). Currently only the Everdrive X7 & PRO models are supported. Support for additional models could be added on request, but I only have those cartridges to hand! SRAM is not supported on the MegaWiFi ROM.
Future Enhancements
- A tool to load in DefleMask, WOPN & TFI instrument files over SysEx will be provided at some point.
- The ability to download and save FM channel parameters/instruments over SysEx to a PC will be added in future.
Note
Breaking change: Note that in order to support the new presets feature, the structure for defining FM presets in code has changed from FmChannel
to FmPreset
. This new structure is specifically designed for instrument definition only, thus does not contain things like freqNum
, octave
and stereo
which confused folks before. The deflemask-preset-viewer tool has been updated accordingly.
Full Changelog: v1.25...v1.26
v1.25
Features
- Pitch Bend Sensitivity can now be set by setting the relevant RPN CCs and setting the data entry MSB and/or LSB via data entry CCs, where the MSB is the number of semitones and LSB is the number of cents. For example, to set the range to be +/- 4 semitones, send the following CC messages:
CC 101 0
CC 100 0
CC 6 4
CC 38 0
See the MIDI specification for more info.
- The ext/modem port can now be used for serial communication when enabled via a compile-time configuration setting.
Fixes
- MegaWiFi: UI now updates during initialisation
- MegaWiFi: LTO is now enabled for this build which should give it reasonable performance improvements inline with the standard ROM
Full Changelog: v1.24...v1.25
v1.24
Features
- Very basic DAC support enabled using CC 78. Route MIDI channel 10 to FM Channel 6 to play the included drum set samples. There is no dynamic/intelligent routing supported with the DAC at present. It's really just a POC at this point. PCM samples are defined in src/pcm_sample.c and res/samples.res. They are downloaded from rhargreaves/mega-drive-pcm-samples automatically as part of the build process.
- Added a set of user preferences (set in src/user_prefs.h) giving the ability to:
- Use a specific mapping mode on startup (e.g. static, dynamic etc)
- Set a sequence of MIDI messages to be automatically applied on startup (e.g. to automatically set some CCs, or route channels as you see fit)
Fixes
- Fixed: An FM channel which formerly played percussion from MIDI channel 10 would sometimes keep the percussion preset when it was re-used to playing normal instruments.
A lot of code refactoring and general housekeeping in this release to try and keep the project manageable!
Full Changelog: v1.23...v1.24
v1.23
Functionality
- Added ability to fine tune individual MIDI channels (CC 85). This can be used to generate unison/chorus effects when notes are mirrored across multiple channels.
- Made maximum portamento time (CC value 127) even longer.
Full Changelog: v1.22...v1.23
v1.22
Functionality
- Display "Mute" instead of blank space when channel panning/stereo is set to neither left nor right speakers.
- Adds portamento which can be used in static/monophonic mode. Enable with CC 65. Set portamento time with CC 5. Functions as a legato-style portamento. Works for FM, PSG and ch 3 special mode channels. (see MIDI CCs & Events)
- PSG envelope shifting is now pitch correct (previously was an estimation which was only really accurate for the middle notes).
Other
- Upgrades SGDK to v2.0.0
Full Changelog: v1.21...v1.22
v1.21
- Fix: Percussion notes incorrectly used the
stereo
value from their presets rather than the pan value of the MIDI channel. The preset value is now ignored and the MIDI channel pan is now respected (thanks @KPY7030P!) - Implemented a proper note priority algorithm. In static/monophonic mode, per channel, the last note played is prioritised. Up to 10 notes are remembered and played in a LIFO order. This allows you to play 'hammer' effects by using multiple keys. FM envelopes are not retriggered as part of playing a falling back to a note. If more than 10 notes are currently "on", additional notes are dropped. The note priority algorithm does not apply in dynamic/polyphonic mode.
- Show UI before waiting for MegaWiFi to initialise. Previously it would just show a blank screen.
- Local builds now use the git commit hash as the version number in the top right corner of the screen.
Full Changelog: v1.20...v1.21
v1.20
- Adds ability to write directly to the registers of the YM2612 chip using SysEx. For example - to write note on to FM channel 0 - (Reg
0x28
, Data0xF0
) - send SysEx00 22 77 08 02 08 0F 00
. Can be used to use YM2612 features not currently mapped to a MIDI CC or other construct. See Configuration & Advanced Operations
The MegaWiFi ROM in this release crashes on startup. Download the v1.20a release instead!
v1.20a
- Fix MegaWiFi ROM crashing on startup.