Releases: ltgcgo/octavia
0.5.2 RC 2: Cute Night
Octavia 0.5.2 RC 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 RC 1: Cute Night
Octavia 0.5.2 RC 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.
0.5 pre-release 1
Octavia 0.5 pre-release 1
Originally released at 20:40 on 1st May 2023 (UTC +0).
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_
.
This version is released as the last version before the complete MIDI I/O rewrite for archival purposes. Documentation is slowly being done.
Special thanks to JayB, GFHK-SDGM, ValleyBell, now_its_dark, AWE_asikwus and MJG0117!
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
). - 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.
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).
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)
Development related
snowy
is now a dependency for legacy builds related to MIDI I/O.
Version credits
If you have contributed to this release but didn't get credited here, please let us know to get credited properly!
- JayB for providing references and critical software, while also testing Octavia.
- ValleyBell and now_its_dark for providing references and testing Octavia.
- GFHK-SDGM, dj.tuBIG/MaliceX, AWE_asikwus and MJG0117 for extensive software testing and bug reporting.
redactedfor freeing part of Octavia's development out of a certain Discord server under toxic moderation.