0.5: Update Bountiful
Octavia 0.5
Also available on Deno Modules!
Try Octavia out! Play with demos on a modern machine or on a legacy machine.
Join the development discussion on Telegram!
This release is JS-only, with pre-compressed JS files. Use state.mjs
if you only need the processing core, and basic.mjs
if a basis for building new visualizers is needed. If you need to target legacy browsers, choose the files starting with xp_
.
Documentation is slowly being done.
Known defects
- (low) Cambiare does not provide legacy support in this version, and it may never due to technical difficulties.
- (low) Held notes in the line style in Cambiare don't style properly if with pitch bend applied.
Postponed features
- Baseline MIDI routing (postponed to 0.6)
Cambiare-related changes are not included below due to being newly introducted. Please refer to the changelogs of previous versions.
Additions
- Octavia now officially supports Windows XP. (Firefox 52 ESR, Chrome 49)
- Effect Send/Variation/EFX support for XG, GS, 05R/W, X5D, NS5R and GMega.
- NS5R letter display and bitmap display support.
- Utility for converting bitmaps to SysEx strings.
- Primitive event support (
note
,cc
,voice
,pitch
and more). - Channels/parts now has types (melodic, drums, drum set N) assigned to.
- If in XG, 05R/W, X5D or NS5R mode, channels get automatically changed between melodic and drums upon MSB changes.
- Primitive support for Active Custom Effect allocation for writing visualizers. No de-allocation yet.
- Some SysEx commands, like GS EFX Setup and PLG150-VL Part Setup, will allocate ACE slots.
- Drum NRPN support for XG, GS and NS5R.
- Drum NRPN commits to "melodic" and "drums" parts will receive warnings.
- Drum NRPN commits under modes other than XG, GS and NS5R will receive warnings.
- Optional MSB writes on certain modes can now be disabled.
- Under XG mode, switching between MU100 Native mode and MU Basic mode is now supported.
- Experimental Yamaha S90 ES support, with full voice maps.
- Experimental Yamaha Motif ES support.
- Kawai GMega reverb types are now experimentally supported.
- Direct Korg AG-10 support is removed, as deemed redundant with Korg X5D and Korg 05R/W support.
- Experimental Roland StudioCanvas SD-90 support, with full voice maps.
- Roland GS EFX toggles are now supported.
- Basic support for Yamaha XG, Roland GS and KORG AI2 audio effects.
- Voice IDs can now be mapped to voice names with up to 24 characters.
- TSV-based
.mdat
files can now be loaded for voice ID to name maps. - Full MU1000 and SC-8850 NRPN support.
- XG Drum Setup SysEx strings are now supported.
- GS Drum Setup SysEx strings are now supported.
- NS5R Drum Setup SysEx strings are now supported.
- Roland MT-32 Temporary Rhythm Setup SysEx strings are now supported.
- Roland MT-32 Device Rhythm Setup SysEx strings are now supported.
- Octavia SC now uses a new patched text renderer for lengthy letter displays. (thanks MJG0117)
- RPN registers are now tracked for write states.
Changes
- Letter display SysEx strings now gets processed by the same method (
setLetterDisplay
). - Whether a channel gets considered as a drum channel is no longer solely determined by MSB values.
- Only drum channels with correct source MSB values will get converted to corresponding drum kits upon mode changes.
- Channel conquering are now only enabled if Octavia is in SC-88 or SC-88 Pro mode (GS with default LSB set to
2
or3
). - Dry level now allocates a separate internal CC register (cc128).
- Meta events are now commit-based.
- Anything related to channel voice changes will now emit
voice
events. - Octavia SC and Octavia NS5R now employ a lazy pixel-blurring technique.
initOnReset
is now enabled in preparation for full real-time event support.- Letter display is now exempt from real-time resets.
- Letter display no longer pads input to various lengths.
OctaviaDevice.setLetterDisplay()
now respects custom show durations.- Octavia SC no longer attempts to centre every letter display. (thanks MJG0117)
- If the
0x0000
RPN register (pitch bend range/sensitivity) hasn't been written yet, it will return12
in MT-32 mode. (thanks @ValleyBell)
Fixes
- Invalid ASCII code points in letter display SysEx strings now show up as spaces with warnings. (thanks AWE_asikwus, @ValleyBell and @now-its-dark)
- Drum NRPN now resets to correct default values.
- Octavia now correctly handles drum MSB resets when fed with real-time resets.
- GS Frame Draw SysEx frame addresses are now corrected. (thanks MJG0117)
- When GS Part Setup is set to
0x10
, the respective part will be disabled. (thanks @ValleyBell) - The receive tree building process will now prevent OOB access.
- Mode resets should now also reset channel mono/poly states. (thanks @JayB1988)
- LSB in XG PLG preset section now works correctly.
- Voices under the XG PLG preset section now return the right two-letter category.
Development related
snowy
is now a dependency for legacy builds related to MIDI I/O.- Channel routing maps can now be retrieved via
OctaviaDevice.getChSource()
. OctaviaDevice.getLetter()
now also returnsLetterDisplayDetails.set
, indicating the timestamp of when the current letter display got written.
Version credits
If you have contributed to this release but didn't get credited here, please let us know to get credited properly!
- JayB (@JayB1988) for feature suggestions, bug reporting, providing references and critical software, while also testing Octavia.
- ValleyBell (@ValleyBell) and now_its_dark (@now-its-dark) for providing references, testing and reporting bugs in Octavia.
- GFHK-SDGM (@GFHK-SDGM), dj.tuBIG/MaliceX, AWE_asikwus and MJG0117 for extensive software testing and bug reporting.
- askcompu (@ask-compu) for feature suggestions and bug reporting.
redactedfor freeing part of Octavia's development out of a certain Discord server under toxic moderation.