Releases: ltgcgo/octavia
0.5.2 pre 3: Cute Night
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 @[email protected]
- 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, @[email protected], @[email protected], @[email protected], @belka-sempai, @[email protected]
- Added bitmap display support to Octavia SC-8850.
- Added custom frame time support to Cambiare, allowing rendering in arbitrary frame rates. Suggested by @[email protected]
- 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 @[email protected] 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 @[email protected].
Version credits
@JayB1988, @MJG0117, @SSQMinky, @MasteredRealm, @GFHK-SDGM, @ValleyBell, @[email protected], @[email protected], @[email protected], @[email protected], @belka-sempai, @[email protected]
0.5.2 pre 2: Cute Night
Octavia 0.5.2 pre 2
The Deno Modules version is broken. Do not use it.
Warning! Truth inside!
Cute Night Sky? Polak is cute!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.
Changes
Octavia
- Removed support for KORG KROSS 2
BMT1
RxCh toggle bit as it induces unexpected behaviour. Thanks @JayB1988 drumMsb
is removed entirely, and sections requiring it have all been rewritten.
Fixes
Octavia
- In XG, GS, MT-32, Motif ES and S90 ES mode, only coarse tune and fine tune RPN commits emit pitch change events. Thanks @ValleyBell, @JayB1988
- Drum first write debug messages are now fixed.
Version credits
0.5.2 pre 1: Cute Night
Octavia 0.5.2 pre 1
Also available on Deno Modules!
Warning! Truth inside!
Cute Night Sky? Polak is cute!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
- (medium) The RPN/NRPN data commit state isn't set per-part, but rather globally. #43
Postponed features
- Baseline MIDI routing (postponed to 0.6)
Additions
Octavia
- Reserved slots for PSR ACMP (accompaniment) controls.
- Reserved cc80, cc81 and cc83 for KORG KROSS 2.
- Supported MU1000 Native channel switching, range set and the custom start port set extension. #39
- Added
portrange
andportstart
events. - Dry level (cc128) is now an ACE candidate.
- Added support for KORG KROSS 2 PCG bank file.
- Supported Yamaha S90 ES and Motif ES EFX.
- Added per-port and per-part mode support.
- Supported KORG KROSS 2
BMT1
dump SysEx. Thanks @JayB1988 for reversing theBMT1
registers! - Added GS, SC device/level targets.
- Supported same-mode-only part dump protection.
- Supported Yamaha DOC (Disk Orchestra Collection).
- Added basic support for Yamaha QY10 native and Yamaha QY20 native.
- Channel receive redirections to unused parts now copy part setup data to the unused part.
- Added
drumFirstWrite
to XG for on-demand part setup copying under MU. - Added
banklevel
event for certain SysEx instructions.
Standard visualizers
- Added elements to make Octavia MU look more like a real MU screen.
- Supported channel switch events in Octavia SC, NS5R, PSR and Cambiare.
- Added FPS counter to Cambiare.
- VL monitor in Cambiare now also shows modulation/breath noise.
Changes
Octavia
- Setting cc0 to 56 now also triggers X5 (05R/W and X5D) detection.
- The GS mode got split into GS and SC modes. The SC mode is an alias of GS, but with channel conquering (automatic channel allocation) enabled, an isolated detection target and an isolated subMsb/subLsb.
- XG part type and part setup data copy now emits
voice
events. - Removed the global
subMsb
andsubLsb
, and added the mode-specificsubDb
.
Standard visualizers
- Repositioned the MSB/LSB bank status in Octavia MU.
- Adjusted the dash length of the held line-styled notes in Octavia Cambiare.
- SVG elements in Octavia Cambiare are now all direct canvas draw calls.
- Note style in Cambiare now defaults to "comb".
- The demo waving effect in Octavia MU got sped up.
- Octavia NS5R now can display voice names with at most 12 characters.
- Right-clicking on part number in Octavia Cambiare now toggles its visibility.
- Changing XG (MU), GS and SC device targets/levels now also forces a refresh.
Fixes
Octavia
- Fixed bank selection issues with KORG KROSS 2.
- Drum type channels now gets announced whenever possible.
- Pitch bend events now gets (more) properly announced (than before).
- Pitch bend sensitivity, fine tune and coarse tune RPN commits now also trigger pitch events.
- Fixed a loading bug in MT-32 device timbre write.
- Revised unused S90 ES/Motif ES part detection.
- GS display page
-1
now disables bitmap. Thanks @JOELwindows7 for spotting the bug!
Standard visualizers
- Extended displays in Cambiare now gets refreshed correctly.
- PC and DR in Octavia MU now shows the correct bitmaps.
- Removed an unnecessary meta event scrolling call in Cambiare.
- Corrected position of CC send and panning in Cambiare.
- Disabling GS bitmap display no longer causes Octavia QY to flicker.
Version credits
@JayB1988, @GFHK-SDGM, @JOELwindows7, @now-its-dark, @ValleyBell, @MJG0117, VideoJames
0.5.1: Update Pulsewave
Octavia 0.5.1
Also available on Deno Modules!
Warning! Truth inside!
Polak is cute!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)
Additions
Octavia
- NS5R part setup now correctly sets part types.
- Two more valid fields in bank TSV files:
ELC
(element count) andDRM
(drum set settings). WhenELC
equals to16
, the voice is considered a drum kit. - PLG presets are now defined in the bank section.
- MSB 128 is now used as the non-fallbeck MSB 0.
- Added effect dump section in NS5R multi dump.
- Supported the dump SysEx of an unknown DX7+ synth.
- Added support for channel reset of an unknown DX7+ synth.
- Added support for channel dump of an unknown DX7+ synth.
- Supported a global handler of immediate notes.
- Added support for GM2 EFX (reverb, chorus).
- Added support for SD EFX (reverb, chorus)
- Added support for SD MFX.
- Added customizable KORG X5 detection target. Defaults to X5D(R).
- A new internal CC range (
129~157
), occupied by PLG-VL and PLG-DX. - Supported VL part control source.
- Supported VL part and system breath modes.
- Supported DX part carrier and modulator level writes.
- Breath (cc2), some internal VL and internal DX CCs are now valid ACE candidates.
- Three part info extensions:
EXT_NONE
(default),EXT_VL
(Yamaha VL/PVL virtual acoustic synthesis), andEXT_DX
(Yamaha DX FM). - XG plug-in part assign can now enable part info extensions for VL and DX.
- cc0 messages can now change part info extensions.
- Two utility methods for KORG dump SysEx processing:
korgPack(Uint8Array)
andkorgUnpack(Uint8Array)
. - ACE slots can now be released one by one via
releaseAce(cc)
, or entirely wiped viaresetAce()
. - Supportedpart carrier and modulator level writes of the unknown DX7+ synth.
Emulated screens
- PSR rhythm display with lyrics. (@GFHK-SDGM)
Cambiare
- Added a dedicated canvas for extension displays for voices.
- A new extension display: primitive VL monitor.
- A new extension display: DX FM level monitor.
Changes
Octavia
- Debug messages for XG plug-in part assigns are now slightly more concise.
- MSB 80, 81, 82 and 83 no longer causes channel types to revert to melodic in NS5R mode.
- Infinite loops during voice fetches are no longer possible.
Unloaded
will be returned when a voice cannot be returned. - Disabled AI2 EFX logging.
- Default reverb and chorus types now changed to "GM Hall Large" and "GM Chorus 3" under auto and GM2 mode.
- Default reverb and chorus types now changed to "SD SRV Hall" and "SD Chorus" under SD mode.
Emulated screens
- NS5R param descriptions now repaints on mode changes.
- PSR no longer notifies mode resets.
Cambiare
- Cambiare now uses the global handler of immediate notes instead, reducing code complexity.
- Current bar delimiter is now hidden in live mode.
Fixes
Octavia
- MSB values of Yamaha PLG-DR and PLG-PC are no longer considered melodic.
- MT-32 timbre writes now has voice names properly written.
- NS5R part setups now write fallback cc0 to
128
, ensuring proper compatibility with bank Y. - KORG X5 detection now follows the custom X5 detection target.
Emulated screens
- Most elements in the emulated NS5R screen no longer gets affected by the "true mode" toggle.
- MU now shows LSB in Yamaha PLG preset banks.
- PSR now renders immediate notes properly.
Development related
- Added a standalone version of Babel v7.
- Windows XP transpilation is now handled automatically via
shx babel
using Babel v7.
Version credits
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.
0.5 RC 4
Octavia 0.5 Release Candidate 4
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 version is the fourth release candidate of version 0.5. Previous version.
If without further problems, this release is expected to be the version 0.5 release.
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_
.
Known defects
- (low) Cambiare does not provide legacy support in this version.
- (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)
Additions
- Added cc14, cc15, cc20 and cc21 to ACE candidates because of PLG-150VL.
Changes
- Pitch bend transition time in Cambiare has been shortened from 50ms to 25ms.
Fixes
- Text elements of Cambiare in regular font weight now can get rendered properly on macOS, once the correct pixel correction profile is chosen. #26 (reported by @JayB1988)
- LSB in XG PLG preset section now works correctly.
- Voices under the XG PLG preset section now return the right two-letter category.
Version credits
0.5 RC 3
Octavia 0.5 Release Candidate 3
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 version is the third release candidate of version 0.5. Previous version.
If without further problems, this version will become the final Octavia 0.5 release.
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_
.
Known defects
- (low) Cambiare does not provide legacy support in this version.
- (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)
Fixes
- Mode resets should now also reset channel mono/poly states. (reported by @JayB1988)
Version credits
0.5 RC 2
Octavia 0.5 Release Candidate 2
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 version is the second release candidate of version 0.5. Previous version.
If without further problems, this version will become the final Octavia 0.5 release.
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_
.
Known defects
- (low) Cambiare does not provide legacy support in this version.
- (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)
Fixes
- The receive tree building process will now prevent OOB access.
0.5 RC 1
Octavia 0.5 Release Candidate 1
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 version is the first release candidate of version 0.5. Previous version.
If without further problems, this version will become the final Octavia 0.5 release.
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_
.
Known defects
- (low) Cambiare does not provide legacy support in this version.
- (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)
Additions
- RPN registers are now tracked for write states.
- The
line
note style in Cambiare. (thanks @ask-compu)
Changes
- If the
0x0000
RPN register (pitch bend range/sensitivity) hasn't been written yet, it will return12
in MT-32 mode. (reported by @ValleyBell) - Smooth sliding in Cambiare is disabled when the note style is set to line.
Fixes
- Immediate notes in Cambiare now show up in their correct ports.
- When GS Part Setup is set to
0x10
, the respective part will be disabled. (reported by @ValleyBell) - In Cambiare, Firefox-specific pixel correction is applied to the notes in line style.
Version credits
If you have contributed to this release but didn't get credited here, please let us know to get credited properly!
0.5 pre-release 3
Octavia 0.5 pre-release 3
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 version is the third pre-release of version 0.5. Previous version.
If without further problems, Octavia will begin publishing release candidates.
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_
.
Known defects
- (high) Pitch bend range for MT-32 defaults to 12, instead of 2. #23
- (moderate) When setting GS receive channel to
0x10
, receiving for that channel should be disabled. #21 - (moderate) Line mode for Cambiare note displays isn't added yet.
- (low) Cambiare does not provide legacy support in this version.
Postponed features
- Baseline MIDI routing (postponed to 0.6)
Additions
- Several new features in Cambiare.
- Octavia SC now uses a new patched text renderer for lengthy letter displays. (reported by: MJG0117)
Changes
initOnReset
is now re-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 custom show durations.- Octavia SC no longer attempts to centre every letter display. (reported by: MJG0117)
- Cambiare now accepts the runtime/system as a time source when receiving real-time events. (e.g. line in, line out)
- Demos in Cambiare are now mutually exclusive with line in.
Fixes
- Octavia now correctly handles drum MSB resets when fed with real-time resets.
- GS Frame Draw SysEx frame addresses are now corrected. (reported by: MJG0117)
Development related
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!
- @GFHK-SDGM, MJG0117 and @ValleyBell for suggestions, software testing and bug reporting.
- @JayB1988 for suggestions.