0.5.2 pre 3: Cute Night
Pre-release
Pre-release
·
68 commits
to main
since this release
Octavia 0.5.2 pre 3
This release is available on GitHub and Codeberg. Also available on Deno Modules and JSR!
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) Held notes in the line style in Cambiare don't style properly if with pitch bend applied. #44
Postponed features
- Baseline MIDI routing (postponed to 0.6)
Additions
Octavia
- Added support to SC display type and SC peak hold type switch SysEx.
- Added mode-specific voice absent error codes. Could be used with voice name maps when too lazy to come up with voice IDs.
- Added cc22 and cc82 to the list of accepted CCs.
- Added support of SC-8850 screen dump SysEx. Thanks @ChuChu_DX7@youtube.com
- Voices now also have support levels, specified with
LVL
in bank files and read withlevel
in code. - Added dedicated kanas to replace combo kanas for PLG-SG lyrics support.
- Added support for voice element count.
- Added fast parallel async loading for voice mappings.
- Added priority support for bank loading, allowing fast async bank loading without concerns on race condition.
- Added support of Bank A/G selection in X5 extended multi setup. Thanks @JayB1988
- Expanded the program buffer and added channel voice primitives.
- Added generation of offset lookup tables on load for optimization.
- Added a unified method for pushing voice primitives.
- Added
subDb
support for part voice primitives. - Added
getChPrimitive
. - Added reserved slots for default unset MSB and default unset LSB.
Standard visualizers
- Supported MU channel switching in Octavia QY.
- Added Octavia SC-8850. Thanks @MJG0117, @SSQMinky, @MasteredRealm, @GFHK-SDGM, @Thorndust@discord.com, @yasuda256@youtube.com, @ChuChu_DX7@youtube.com, @belka-sempai, @silverflash9261@discord.com
- Added bitmap display support to Octavia SC-8850.
- Added custom frame time support to Cambiare, allowing rendering in arbitrary frame rates. Suggested by @DearHoney_1996@youtube.com
- Added support to all 8 SC strength metre display types and all 4 SC peak hold types in Octavia SC.
- Added a keep value pool in Octavia SC for the lingered peak to match the references.
- Added four overridden system reset prompts in Octavia SC for GM, GS, XG and GM2.
- Added strength pixels when bars are set to hidden in Octavia SC.
- Added support for SC display types and SC peak hold types in Octavia SC-8850.
- Added practical boot animations to Octavia SC, Octavia NS5R and Octavia SC-8850.
- Added 6 new styles of dashboard-inspired panpot styles in Octavia Cambiare.
- Added 3 new styles of control knob-inspired panpot styles in Octavia Cambiare. Thanks @JayB1988
- Added experimental support for colour schemes in Cambiare.
- Added a meta event garbage collector in Octavia Cambiare.
- Added letter display in non-GS modes for SC-8850.
- Added a new pixel correction profile for Chromium browsers.
Fixes
Octavia
- Fixed a voice fetch bug introduced with
subDb
. - Fixed bugs not considering
sc
the same asgs
under certain situations. - Fixed bugs surrounding
getChBm
andgetVoxBm
in shared bitmap fetching methods. - Fixed bank 0 overrides with LSB bank selection in shared bitmap fetching methods.
- Fixed a bug in EG NRPN CC redirection caused by incorrect maps.
- Fixed a long-standing KORG drum mapping bug caused by incorrect mapping. Thanks @JayB1988
- Corrected the drum NRPN lookup table.
Standard visualizers
- Fixed a bug in Octavia SC when peak hold type is set to
0
. - Moved EFX and bank indicator in Octavia SC-8850 with hardware references. Thanks @Thorndust@discord.com and @MasteredRealm
- Fixed a bug in peak hold type 3 in Octavia SC.
- Let device resets clear the screen dump state in Octavia SC-8850.
- Fixed a bug where unused parts in QY are unable to get highlighted.
- Fixed a bug in counting maximum polyphony with element count in Cambiare.
- Shifted the lines up one pixel in Cambiare.
- Fixed draw calls in Cambiare to match the line position shifts.
- Fixed mispositioned
clearRect
calls in Cambiare. - Pan value
0
in SC now shows asL63
instead. Thanks @ValleyBell
Changes
Octavia
- Forced KORG KROSS 2 voices to be in KROSS 2 mode.
- The default MSB for KORG Trinity, Yamaha S90 ES and Yamaha Motif ES has been set to 0, referring to regular GM voices. Thanks @JayB1988
- The default MSB for KORG KROSS 2 has been set to 121, referring to regular GM2 voices. Thanks @JayB1988
- XGworks port selection will now be logged under debug mode.
- ACE (active custom effect) now operates on a per-part basis.
- (N)RPN data commit states are now per-part. Fixes #43.
getVel
switched to bitwise operations for optimization.- Bank selection range has been expanded from 7 bits to 8 bits.
- Suppress voice changes until program change, meaning that cc0 and cc32 alone no longer cause voice changes. Thanks @JayB1988
- Commit cc0 and cc32 to program buffer on program primitive change.
- Migrated SysEx voice writes to voice buffers.
- cc0 1~55 now select Bank G in 05R/W and X5D(R) mode.
- Mirrored the VL internal bank to VL preset bank 1.
Standard visualizers
- Octavia SC-8850 will refer to capital voice bitmaps with XG plug-in voices, GS voices and SD voices.
- Aligned elements in SC-8850 according to the reference images in manuals.
- The lingered peak value pool in Octavia SC now uses unsigned 16-bit values instead of unsigned 8-bit values for a higher precision.
- Tweaked pixel blurring and peak value falling parameters in Octavia SC to better match the references.
- Channel indexes in Octavia SC are no longer forced to be 2-digits.
- Octavia SC now uses
±
when key shift is at 0, with spaces for padding. - Revamped the generic bitmap loading flow.
- Switched from
forEach
tofill
for buffer initialization in Octavia MU and Octavia SC. - Switched from the sharp symbol to the normal hash symbol in
PRG#
in Octavia MU, until a similar glyph could be found. - Expanded the Octavia SC-8850 canvas to include some labels without changing the 808 by 328 resolution.
- Changed the label colours in Octavia SC-8850.
- Skipped metre rendering for unused parts in QY.
- Manual optimization done in QY resulting in a 54% performance improvement.
- Optimized Octavia Cambiare by 35% via writing texts raw.
- The separator near C~4 (the middle C) is now highlighted in Cambiare.
- A slightly more optimized area clearing flow in SC-8850.
- Raised the canvas text position by one pixel in the pixel correction profile for macOS.
- Temporarily disabled the VL breath noise indicator in Cambiare.
Development related
- Added
deno.json
for JSR. The file will bork attempts of integrating into the Node.js ecosystem. - Octavia will now also be published to JSR, aside from Deno Modules.
- File names for XG plug-in voices have been collapsed.
- Added an experimental Standard MIDI File disassembler. Will be rewritten from scratch later.
Miscellaneous
- The older middleware has been deprecated. A newer middleware is being designed, with suggestions from @JayB1988 and @DearHoney_1996@youtube.com.
Version credits
@JayB1988, @MJG0117, @SSQMinky, @MasteredRealm, @GFHK-SDGM, @ValleyBell, @Thorndust@discord.com, @yasuda256@youtube.com, @ChuChu_DX7@youtube.com, @DearHoney_1996@youtube.com, @belka-sempai, @silverflash9261@discord.com