MIDIbox FM V2.1 on STM32F4

By Sauraen in MIDIbox FM,
This is MIDIbox FM V2.1, the STM32F4 version of the Gen 2 MBFM. Please note that this is not an official successor to MIDIbox FM V1.4, nor is it a project that is intended to be easily replicated by members of the community, at least not in the forseeable future. For the thread on MIDIbox FM V2.0, the same synth before I upgraded the processor from the LPC17, see here (some build information, more pictures, etc.):   I have successfully upgraded my MIDIbox FM from the LPC17 core to the STM32F4 core, both hardware and software, and re-christened it MIDIbox FM V2.1. A stable, decently full-featured (but not 100% complete) build is available. I upgraded mainly due to RAM limitations on the LPC17 core, and now the LPC17 core will no longer be supported, in favor of STM32F4.   Working features: MIDIbox NG V1 integration; all synth controls are MBNG parameters, so you can lay out and wire your front panel how you want. Menus are fixed, though, and certain controls (e.g. 18 voice-selection buttons with two-color LEDs, 8 softkeys, 4 mode buttons) are basically mandatory. Other things (e.g. controls for operator parameters) may be done how you like (e.g. MBNG banking). Supports 1 or 2 OPL3s (potentially 4, now that we have more RAM, though performance may become an issue). With 2 OPL3s (as I have), there are no noticeable performance problems, even when playing 30+-voice MIDI files into the synth. Edit all 18 (per OPL3) 2-operator voices independently; set up six pairs (per OPL3) of 2-operator voices independently to be 4-operator voices; set up one set of 3 (per OPL3) 2-operator voices to become a 5-voice percussion system. All OPL3 parameters editable and modulatable (even bit flags and separate audio outputs for two halves of a 4-operator voice). Set voices as polyphonic copies (DUPL) that follow parameters, or LINK them so they play together but have semi-independent parameters. Customize transpose, tuning, portamento, EG retrigger, and delay per voice. Arbitrarily assign two LFOs, one ADLDSR EG, velocity, mod wheel, and CC2 values to modulate voice, operator, or modulator parameters, per voice, up to 16 modulation connections per 2-op voice. Set up a custom temperament system (e.g. just intonation) with independent root note selection and frequency controls. One-touch switch to equal temperament and back. Intelligently assign voices to MIDI channels, the synth does the DUPL work (unless you disable it for custom configurations). Save and load named patch files from SD card in intelligent folder hierarchy and human-readable (editable, hackable) format. About 75% of General MIDI Bank 0 patches are complete. Customize synth's response to incoming MIDI messages: Bank MSB/LSB, Program, Pan, Volume, Expression. Enable/disable automatic patch loading on Program receive. MIDI mixer window with real-time-updating separate Volume and Expression controls per channel. Control MIDI input behavior per port. Not done yet: MIDI output port menu and behavior. The rest of the GM patch bank. There are some bugs with saving/loading 4-op voices, plus some untested (probably broken) corner cases for saving/loading complex LINK-DUPL voice arrays. The "wavetable" modulator (step sequence of pre-programmed values). The drum sequencer. AOUT support (beyond what is offered in MBNG). If anyone would like to build one of these, please let me know! I can send you information personally, or if applicable make a wiki page and/or put up the code somewhere.
  • 62 replies