Firmware and plugin are released together and carry the same number. They talk to each other with a version byte, and a mismatched version is refused rather than partly applied, so use a pair from the same release.
4.000
First release with the Fourays plugin, and a new major number because the way the plugin configures the device changed.
A v4 plugin talks to v4 firmware. It still sends the configuration as SysEx as well, so a v3 device will take it if your DAW is not filtering SysEx, but only v4 firmware understands the control-change route that made it reliable. The documentation keeps the v2 and v3 pages for devices running those.
Plugin
- New VST3 plugin presenting the four chips, the twelve voices and the twelve gate outputs on one panel, and sending the MIDI to drive them.
- Windows installer, which also installs five factory presets and the demo songs.
- Five demo songs, each a MIDI file with a matching preset.
- Device configuration slots can be loaded and saved from the panel.
- The configuration is sent as ordinary control changes rather than as SysEx. Cubase filters SysEx by default, which meant the notes and the knobs worked while the channel map silently never arrived - and that is what made the demo songs sound wrong, since each of them asks for a different voice-to-channel arrangement.
- Changing a voice's channel, a channel's poly mode or any gate setting now sends the map straight away. Those live only in the configuration, so until now they did nothing until SEND ALL was pressed.
- SEND ALL says when it will not send, rather than silently doing nothing.
Firmware
- Gate outputs gain a Note mode: a gate can be fired by one MIDI note on one channel, which lets the twelve outputs drive other equipment. A minimum velocity turns a second gate on the same note into an accent output.
- Gate Voice mode now drives the gate you configured. It used to drive the gate belonging to the AY voice it pointed at, so setting gate 1A to voice 5 drove 2B and left 1A dead.
- New MIDI activity screen, showing which channels are arriving, which voices are sounding, which gate outputs are firing, and whether the last configuration was understood.
- Chip control channels default to 13-16 rather than 2-5, clear of the twelve note channels.
- Fixed a voice leak across a DAW loop. A loop point does not release the notes held across it, so those voices were never freed and the part lost polyphony on each pass. Voices are released on all-notes-off, and the oldest is stolen when a channel runs out.
- Fixed a register flush which rewrote every register that had ever changed, on every note, CC and MIDI clock tick. Playing one demo song cost 349,568 bus writes where 2,334 were needed, which was enough to stall dense MIDI.
- Fixed the MIDI read loop, which took roughly one byte per millisecond - slower than a DIN cable. A burst of key switches took an eighth of a second to read in, with the notes queued behind it, which is what stalled the music at section boundaries.
- Nothing on the MIDI path allocates memory any more. A signal emission copied
every handler it called, and the voice allocator inserted into three hash maps
per note, so every note and every key switch called
mallocon a device whose heap fragments. - Fixed key switches restarting the envelope. Any write to the shape register restarts it, and the register was written whether or not its value had changed, so restating switches retriggered every envelope on all four chips.
- Fixed Reset All Controllers turning the gate outputs into inputs. The reset cleared the I/O port direction bits along with everything else, so the gate pins stopped driving and floated - which meant loading a preset left the gates stuck and a power cycle appeared to fix them.
- The configuration can arrive as control changes as well as SysEx.
3.100
- Fix egregious off-by-one error with note pitches
3.000
- Restructure configuration into pages; support screen offsets; added splash screen.
2.200
- Implement standard MIDI CCs 7, 120, 121. Add manufacturer ID to sysex output. Fix gate clock divider config setting.
2.100
- Implement configurable gate outputs
2.000
- Update UI layouts
1.200
- Implemented gate outputs
1.166
- Initial release