Skip to content

Releases: GoXLR-on-Linux/goxlr-utility

0.11.1 - A Big Bugfix Release

05 May 14:12

Choose a tag to compare

Pre-release

Hi all,

Since 0.11.0 was released, there have been quite a few bugs reported, some old bugs that have just cropped up, some new that came with 0.11.0, so this is a patch release to clean up as many of them as possible. Upgrading is recommended!

Changes

  • The built NVDA and SAAPI libraries are now included in the Windows installer (Reported by pitermach)
  • Fixed several areas where a runtime deadlock could occur moving between sync and async code
  • Fixed sporadic startup crash on Windows due to driver race condition (Huge thanks to JulanDeAlb for helping find it!)
  • Fix Mic FX not correctly resetting when a profile is loaded (#63 - Thanks @hllf)
  • Increased TTS playback speed on MacOS (Requested by @hllf)
  • Fixed crash when attempting to remove invalid sample over IPC (Reported by JulanDeAlb)
  • Fixed accessibility issues with the routing table (Thanks to @hllf and Aaron_Stormerr for reporting, and helping solve this!)
  • Added Windows driver command timeouts so problems fail safe.
  • Fixed Mono audio files not being loadable by the Sampler (Reported by Amethyst)

--
Until next time!
@FrostyCoolSlug

0.11.0 - Fixes and Submixes

25 Apr 22:33
c2c876d

Choose a tag to compare

Pre-release

While I was hoping to have a couple of extra things done for this release, due to an accidental PR merged into main, and the need to get out a new release to fix a crash bug happening with the mini, this release is primarily to re-sync everything and get that bug fixed.

As for the 'headline features', this is a pretty pedestrian release, so there are only a couple!

  • Fixed bug which can cause the daemon to crash when using a mini
  • Introduced text-to-speech output when the GoXLR state is changed via button presses (enabled in System -> Settings)
  • Initial support for the GoXLR Submix Firmware Beta
  • The first bug fix triggered by a cat sitting on a GoXLR, thanks Ori!

And we have the full release notes below :)

Daemon Changes

  • Fixed daemon lockup occurring when USB responds are slow / delayed, this was most likely to occur on the Mini (#55)
  • Fixed profile load failure if current_relative_time is set in the profile (Reported by Cob Kurtain)
  • Prevent Sampler glitching out when the 'Clear' button is used while actively recording (Discovered by Ori, Lou's cat!)
  • Stop Sample playback if the button is cleared while playing (Reported by @hllf)
  • Introduced a 'Reverse Latch' for the mechanical faders, to prevent update spam while they're moving themselves
  • Adding support for announcing the result of button presses / dial changes to a TTS service (Enabled via System -> Settings)
    • Note, if you are compiling yourself, this is an optional feature. To include it, run cargo build --features=tts
    • This feature will be included with all prebuilt binaries provided here, and via AUR
  • Added initial support for the GoXLR Submix Beta firmware (settings are available via the UI and API, but not currently the CLI)
  • Prevented the daemon from running if it detects the official GoXLR Beta App

UI Changes

  • Layout: There's a new 'Configuration' tab, which contains configuration for both the fader assignments and cough settings
  • Layout: The mixer tab has been reorganised slightly, separating 'Inputs' and 'Outputs'
  • The Mic EQ panel now correctly colours Bass / Mid / Treble similar to the Windows app
  • The 'Routing' display is now back to closely matching the windows display
  • If using a Screenreader, Range sliders will now report their 'human' value, and not their internal value
  • A submix UI is available if your GoXLR is running the correct firmware
  • Fixed bug on lighting tab if running a mini

Firmware

Some initial code for updating the GoXLR firmware has come with this release. Please don't use it. If you absolutely, super urgently, desperately need to update your firmware, and are unable to do it on a Windows machine, please contact us on discord.


There's very little left to do with the util now, just tidying up and finalising some UI elements, so assuming I don't break the repository again, 0.12.0 will be the last 'pre-release' version with everything tidied up. Until then!

--
@FrostyCoolSlug

0.10.2 - Crash Fix

12 Apr 13:28
6d8b54d

Choose a tag to compare

0.10.2 - Crash Fix Pre-release
Pre-release

This release fixes some critical bugs inside the Sampler that can cause the utility to crash, as well as includes the new UCM naming scheme provided by ALSA. Thanks to Parzival on Discord for reporting these.

  • Prevent attempting to record a sample if the Sampler is not open.
  • Added timeout to sample reader to prevent crash if samples aren't being received
  • Don't attempt to stop a recording if nothing is being recorded
  • Added new ALSA naming for the GoXLR Sample Channels

Due to the crash bug, it's highly recommended you upgrade to this release.

--
@FrostyCoolSlug

0.10.1 - Hotfix

28 Mar 18:16

Choose a tag to compare

0.10.1 - Hotfix Pre-release
Pre-release

This is a hotfix release, primarily to solve some small issues:

  • Remove zstd as a dependency, it wasn't used and is causing compile issues
  • Fixed 'Add Sample' dialog being blank when no samples are present
  • Added 'Open Samples Directory' button to 'Add Sample' dialog

Unless you're specifically affected by one of these issues, there's no need to upgrade.

0.10.0 - Shutdown Tasks and Sampler Improvements

27 Mar 22:21

Choose a tag to compare

It's been a couple of months since the last release, life has been a little busy, so dev time has been limited. With that said, I'm releasing 0.10.0 today, with some new features and improvements on old ones. Headline features include:

  • New 'Shutdown Actions', which will be executed when the GoXLR Utility is shutdown safely
  • Sampler Rewrite to help decrease latency when recording and playing back
  • The sampler can now be configured to save 'X milliseconds' of audio from BEFORE the button is pressed
  • A fully accessible UI for users of Screen Readers

As always, main changes below:

Daemon Changes

  • Allow IPC commands to be executed when the daemon is shut down
  • Delay Sample playback teardown until all samples have reached the Audio Server
  • Keep a permanently open listen to the Sampler channel, to allow immediate reactions to button presses
  • Buffer input audio from the Sampler channel, to allow 'pre-record' behaviours
  • Increased the minimum audio volume required to record a sample (#44 - Thanks @hllf)
  • The Sampler will now resample audio to the correct rate on Windows (Reported by SighlessKombat)
  • Better handle 'Stop and Play' behaviours when pressing a sampler button with a sample playing (#55 - Thanks @hllf)

CLI Changes

  • Fixed issue with saving Profiles via the CLI (Reported by Aaron_Stormerr)
  • Remove redundant validation from the CLI, which will be handled by the daemon (Reported by MagicTrevor)
  • The CLI can now communicate with a utility on a different machine via HTTP (Suggested by MyNameIsNeo7)

UI Changes

  • Loads of new containers and UI improvements courtesy for @donutcrab (PR 12 on the UI)
  • All containers and objects in the UI have been migrated to that new code
  • Migrated some v-shows to v-ifs to improve performance and code simplicity
  • All UI elements are now accessible to screen readers
  • Fixed issue when using 'Enter' key to access an item in a menu that triggers a Modal (Reported by @pitermach)
  • Support added into 'Settings' for Sampler Pre-Record
  • Support added for new 'Shutdown Actions' into the 'System' tab
  • Fixed incorrect reading of the Robot Low Frequency value from the Utility (Reported by JulanDeAlb)
  • Fixed UI crash when pressing 'Play' on the Waveform dialog without a sample selected (Reported by JulanDeAlb)

As always, downloads are below. 0.11.0 will likely be the final 'alpha' before moving towards a 1.0 release, it'll mostly be a 'tidy up' release to finalise a couple of still missing features, especially in the UI (Lighting 'Apply to All', EQ 'Fine Tune', and a small TTS engine to announce changes on button presses), until then though, enjoy!

--
@FrostyCoolSlug

0.9.0 - Desktop Integration

04 Jan 11:41

Choose a tag to compare

Pre-release

Greetings and Welcome to 2023! This release primarily focuses on providing a better desktop experience for the utility, headline features include:

  • App Menu Items for Starting and Configuring the Utility
  • System Tray Icons for quick access to the WebUI
  • Auto-Start on Login (available via System -> Settings)
  • An installer for Windows
  • Better Default Profile Handling

Before we get into the details, I'd like to send a huge shout-out and thank you to Amethyst#1781 on discord and
@pitermach, who have been giving recommendations and doing testing to make the utility's Web UI screen reader
accessible. 0.8.0 was quite accessibility unfriendly, but with their help 0.9.0 is MUCH better. There's still
some work to do, and that's going to be a focus on 0.10.0.

There are two breaking changes with 0.9.0, the details can be found at this wiki link

Now for all the main changes.

Daemon Changes

  • Fixed volume not being correctly restored when changing a fader's channel
  • Correctly apply button states when changing a fader's channel
  • Added API commands to activate / deactivate Mute buttons
  • Added API commands to activate / deactivate Effects Buttons (FX / Megaphone / Robot / Hardtune)
  • Added API commands to activate a Sample Button
  • Fixed issue with bleep button minimum volume (Thanks JuleanDeAlb!)
  • Added SIGTERM support to the Utility for cleaner shutdowns
  • Created icons (and generator) for Windows and Linux
  • Notify and terminate the utility on Windows if the official app is detected as running.
  • Added basic latch detection for the GoXLR Mini to solve UI issues when unlatched
  • Updated all dependency crates to their latest versions
  • Added API command to shut down Daemon
  • Replaced embedded profile with one that doesn't mute the mic by default

UI Changes

  • Large overhaul to screen reader accessibility
  • Moved 'Delete Profile' button to profile submenus
  • Added 'Load Profile' button to profile submenus
  • Introduced submenus to Mic Profiles
  • Fixed naming parity with Windows (Thanks @Ginjah6205)
  • Fixed colour boxes not responding to text input (Thanks @brymon68)
  • Added 'Recover Default' buttons to Settings to restore default profiles
  • Fixed UI crash when changing some text spinners (Thanks Amethyst#1781)
  • Added 'Clear' Button to colour boxes (Thanks @donutcrab)
  • Merged in some Code Tidying / Improvements to Lighting, curtosey of @donutcrab
  • Overhauled the System page with new icons, and new button design

Note: 0.9.0 was re-released due to a missing UI pull.

--
@FrostyCoolSlug

Release 0.8.1

11 Dec 14:51

Choose a tag to compare

Release 0.8.1 Pre-release
Pre-release

This release is primarily a bugfix release, solving several issues reported since the release of 0.8.0. It is recommended that you upgrade.

BugFixes

  • Fixed 'Show Number' scribble setting displaying a letter (Thanks Ginjah!)
  • Fixed rare issue loading microphone profiles generated under the Official App (Thanks JulanDeAlb!)
  • Fixed duplicate profile listing when Distrib profile has been overridden by the user (Thanks Louis!)
  • Fixed json-patch version mismatch between the Daemon and IPC breaking builds (Thanks Thomas Babord)
  • Fixed UI 'Gate' slider values not being updated when loading a new profile.

Grab your builds below, AUR will be updated soon!

Release 0.8.0

09 Dec 13:36

Choose a tag to compare

Release 0.8.0 Pre-release
Pre-release

Greetings all, this is a pretty major release, with many bug fixes and changes, so hang on tight!

New Features

  • You can now adjust the amount of time it takes when holding a mute button to trigger 'Mute to All'
  • Implemented 'Mute Chat to All also mutes Mic to Chat Mic' behavior from Windows (Defaults on 'On')
  • Support UI 'States' from the Mic Profile (sections extended / compressed)
  • Added Utility version reporting to IPC (Thanks Thomas Babord!)
  • Added Button States, Mute States, FX States etc. To the DaemonStatus API/IPC Object
  • Added 'GetHttpState' command to the command-line IPC, to retrieve information about the local websocket
  • Windows support utilizing the official GoXLR Driver
    • DO NOT RUN THE UTILITY AT THE SAME TIME AS THE OFFICIAL APP, THIS WILL CAUSE ISSUES THAT MAY REQUIRE A REBOOT TO FIX! - I cannot stress this enough, both apps will fight for control of the GoXLR, and things may get squirrely. I will eventually add a check to force the utility to abort if the official app is detected, but it's not present yet.
    • This requires that you have Version 5.12 of the Official GoXLR Driver installed
    • Huge thanks to oddbear for the Reverse Engineering work on the Windows API
    • Additional thanks to TC-Helicon / MusicTribe for graciously allowing us to use it under their 3rd Party License
    • Builds and Installers are likely to come during or after version 0.9.0 releases.

Daemon Changes

  • The file manager now utilizes OS level File Notification services, rather than polling, to detect changes
  • Updated DaemonStatus structure to ensure all values are keyed, rather than arrayed.
  • Changed the polling time for button events from 100ms to 20ms to increase responsiveness

WebUI Changes

  • Updated to use the new JSON-Patch method of handling changes, and other API changes
  • Added 'Settings', 'About' and 'License' sections to the 'System' tab
    • Settings allows you to configure 'Time to Mute All' and 'Mute Chat also mutes Mic to Chat'
    • About contains the Daemon version, and your GoXLR details
    • License displays the licenses associated with the GoXLR Utility
  • Support for 'Simple' Compressor mode
  • Better handling of Websocket Disconnections
  • Better handling of Device Removal / Addition

BugFixes

  • Fixed issue enumerating devices when sampler was in CPAL mode
  • Moved Poll Time to somewhere better to prevent 'Device not connected' spam on disconnect
  • Removed unneeded warning about v1 -> v2 Profiles on profile load (thanks Lennart!)
  • Fixed Transient Routing state when moving between Mute to X -> Mute to All -> Unmuted
  • Fixed volume not being correctly restored when going from Mute to All (Press) -> Mute to All (Hold) -> Unmuted
  • Fixed issue causing monitor poll to occur multiple times per trigger
  • Fixed faders unmuting after muting during profile load
  • Fix Mic Fader assignment if profile id doesn't match the fader configuration (Thanks MagicTrevor!)
  • On Mic Mute to All, transiently remove it from the routing table to prevent odd display issues (Thanks Louis!)
  • Correctly Error if a GoXLR response hits a timeout (Thanks Adélaïde Sky!)
  • Don't trigger a new Poll event if another action is in progress

API Changes

All aspects of the GoXLR are now exposed via the DaemonStatus object (including mute states, button press states, etc). When communicating with the GoXLR via the Websocket interface, JSON-Patch messages are sent with incremental and real-time updates to the DaemonStatus structure so when, for example, a button is pressed or a volume is changed, you'll instantly get a notification of the new value which you can apply to the structure without needing to use the previous 'Polling' method. This primarily leads to a much smoother experience in the UI, but also allows for third party applications to interact with the GoXLR.

As a Proof-of-Concept, check out https://github.com/FrostyCoolSlug/goxlr-obs-fader-sync - Which uses the API to sync a faders volume level with an audio source in OBS via obs-websocket (Potentially useful for a 'VOD' track). This could be expanded to also handle mute states, amongst other things. Note that these don't have to be written in Rust, anything that supports websockets and JSON will be sufficient!

In addition, all Websocket commands now require an ID attached to them. This ID is returned in the response, so it's possible to correctly match a Request and Response if they're processed and responded to at different speeds by the daemon.

The API isn't particularly well documented yet, however, you can pull open the WebUI and monitor the Websocket in your browser to get a general feel for it.

That's it!

As always, .rpm and .deb downloads are below, and AUR will be updated shortly. Until Next time!

--
@FrostyCoolSlug

Release 0.7.1 - Hotfix

16 Nov 14:36
4c8d38a

Choose a tag to compare

Pre-release

This is a hotfix release that fixes a daemon crash in the following situations:

Linux: You unplug a USB hub with a GoXLR attached to it
MacOS: You unplug a GoXLR

Thanks to loeken on Discord for reporting the crash!

--
@FrostyCoolSlug

Release 0.7.0 - Icons and Scribbles!

14 Nov 10:11
1dbb196

Choose a tag to compare

Pre-release

Release 0.7.0 is primarily focused on the little displays on the top of a full sized GoXLR, with this version it's now possible to configure and set them with icons and text of your choice, either via the CLI or the Web UI.

Departing slightly from what we've been doing in the past, the method for rendering the icons under Linux is different to what TC-Helicon use under Windows. Under Windows a configurable 'Alpha' level is applied to the image to determine whether a pixel should or should not be lit, which can create some cleaner and more refined edges on some images, but on more complex multi-coloured images can have poorer results. Under Linux we use resizing and dithering to try and accurately represent the original image, which can give better results on more complex images, but on simpler images could lead to a bit of pixel noise, generally the noise isn't visible at distances further than about 8 inches.

We do preserve the settings as best as possible between platforms, so if you set an alpha on Windows, the daemon will remember that, and ensure it's saved back to the profile if you change anything to maintain cross-compatibility as best as possible.

If you plan on making funky scripts to animate the displays, do note that it does take a bit of time to handle the rendering process (on a release build, 10-50ms, on a debug build, MUCH longer), during which time the util will be unresponsive.

Everything Else

  • Fixed samples being saved if there's no audible content in them
  • Replaced actix-plus-static-files with a simpler handler based on include_dir
  • Added missing Sampler configuration to goxlr-client
  • Moved all USB related functionality to the usb crate
  • Changed USB devices to trigger events for inputs and disconnects, rather than forced polling
  • Replaced manual unix socket handling with interprocess crate (also adds support for named pipes on non-unix systems)
  • Fixed performance regressions related to held button timings

Downloads are, as always below, and AUR will be pushed shortly!

--
@FrostyCoolSlug