Skip to content

Releases: ltgcgo/octavia

0.5.2 RC 2: Cute Night

25 Apr 21:16
f4399b2
Compare
Choose a tag to compare

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

@JayB1988, @ValleyBell

0.5.2 RC 1: Cute Night

22 Apr 20:34
ab878ae
Compare
Choose a tag to compare
Pre-release

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 and portstart 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 the BMT1 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 and subLsb, and added the mode-specific subDb.

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

15 Feb 17:19
Compare
Choose a tag to compare

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) and DRM (drum set settings). When ELC equals to 16, 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), and EXT_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) and korgUnpack(Uint8Array).
  • ACE slots can now be released one by one via releaseAce(cc), or entirely wiped via resetAce().
  • Supportedpart carrier and modulator level writes of the unknown DX7+ synth.

Emulated screens

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

@GFHK-SDGM, @JayB1988, @ValleyBell, @now-its-dark

0.5: Update Bountiful

29 Oct 14:55
Compare
Choose a tag to compare

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 or 3).
  • 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 return 12 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 returns LetterDisplayDetails.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.
  • redacted for freeing part of Octavia's development out of a certain Discord server under toxic moderation.

0.5 RC 4

28 Oct 17:53
Compare
Choose a tag to compare

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

22 Oct 18:58
Compare
Choose a tag to compare

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

22 Oct 18:52
Compare
Choose a tag to compare
0.5 RC 2 Pre-release
Pre-release

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

21 Oct 13:44
Compare
Choose a tag to compare

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 return 12 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

26 Sep 16:40
Compare
Choose a tag to compare
0.5 pre-release 3 Pre-release
Pre-release

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 returns LetterDisplayDetails.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!

0.5 pre-release 1

26 Sep 16:19
Compare
Choose a tag to compare
0.5 pre-release 1 Pre-release
Pre-release

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 or 3).
  • 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.
  • redacted for freeing part of Octavia's development out of a certain Discord server under toxic moderation.