Skip to content

0.5.2 pre 3: Cute Night

Pre-release
Pre-release
Compare
Choose a tag to compare
@PoneyClairDeLune PoneyClairDeLune released this 01 Sep 20:23
· 68 commits to main since this release
146e35c

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 with level 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 as gs under certain situations.
  • Fixed bugs surrounding getChBm and getVoxBm 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 as L63 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 to fill 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

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