A CLI for configuring a GoXLR on Linux

Overview

GoXLR configuration utility

A tool to configure a GoXLR without requiring a Windows VM.

At this time, full device initialization is not possible on Linux. This utility still requires that you initialize on Windows, but allows you to configure it after the fact from within Linux.

Warning

This utility is currently not 'user ready', it's extremely rough around the edges and has very little interactivity. You're welcome to experiment with this if you're comfortable working with Rust, but please do not request support at this time.

This project is also not supported by, or affiliated in any way with, TC-Helicon. For the official GoXLR software, please refer to their website.

Setting Permissions

Copy 50-goxlr.rules to /etc/udev/rules.d/ and then reload with sudo udevadm control --reload-rules.

You may need to unplug and replug the GoXLR afterwards, to allow the new permissions to take effect.

Building from source

Prerequisites

  • Install Rust
  • Install libusb (ie apt install libusb-dev)
  • Have a GoXLR :)

Building

You can build with cargo build, or install the specific executables with:

  • cargo install --path daemon for the daemon
  • cargo install --path client for the client to interact with the daemon

Tab-complete files for your terminal of choice will be available after building.

Running the daemon

You can start the daemon by executing goxlr-daemon.

Running the daemon as a service will be left as an exercise to the reader (we'll provide a systemd config later probably!).

If the daemon can't connect to your GoXLR device, check your device permissions (see above!).

Interacting with the GoXLR

Once the daemon is running, you can run goxlr-client to configure the GoXLR at will from your terminal.

For an up-to-date list of command line arguments, try goxlr-client --help!

goxlr-client 0.1.0

USAGE:
    goxlr-client [OPTIONS]

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information

Fader controls:
        --fader-a <FADER_A>    Assign fader A [possible values: mic, line-in, console, system, game,
                               chat, sample, music, headphones, mic-monitor, line-out]
        --fader-b <FADER_B>    Assign fader B [possible values: mic, line-in, console, system, game,
                               chat, sample, music, headphones, mic-monitor, line-out]
        --fader-c <FADER_C>    Assign fader C [possible values: mic, line-in, console, system, game,
                               chat, sample, music, headphones, mic-monitor, line-out]
        --fader-d <FADER_D>    Assign fader D [possible values: mic, line-in, console, system, game,
                               chat, sample, music, headphones, mic-monitor, line-out]

Channel volumes:
        --chat-volume <CHAT_VOLUME>                  Set Chat volume (0-255)
        --console-volume <CONSOLE_VOLUME>            Set Console volume (0-255)
        --game-volume <GAME_VOLUME>                  Set Game volume (0-255)
        --headphones-volume <HEADPHONES_VOLUME>      Set Headphones volume (0-255)
        --line-in-volume <LINE_IN_VOLUME>            Set Line-In volume (0-255)
        --line-out-volume <LINE_OUT_VOLUME>          Set Line-Out volume (0-255)
        --mic-monitor-volume <MIC_MONITOR_VOLUME>    Set Mic-Monitor volume (0-255)
        --mic-volume <MIC_VOLUME>                    Set Mic volume (0-255)
        --music-volume <MUSIC_VOLUME>                Set Music volume (0-255)
        --sample-volume <SAMPLE_VOLUME>              Set Sample volume (0-255)
        --system-volume <SYSTEM_VOLUME>              Set System volume (0-255)

Channel states:
        --chat-muted <CHAT_MUTED>                  Set Chat muted status (true/false)
        --console-muted <CONSOLE_MUTED>            Set Console muted status (true/false)
        --game-muted <GAME_MUTED>                  Set Game muted status (true/false)
        --headphones-muted <HEADPHONES_MUTED>      Set Headphones muted status (true/false)
        --line-in-muted <LINE_IN_MUTED>            Set Line-In muted status (true/false)
        --line-out-muted <LINE_OUT_MUTED>          Set Line-Out muted status (true/false)
        --mic-monitor-muted <MIC_MONITOR_MUTED>    Set Mic-Monitor muted status (true/false)
        --mic-muted <MIC_MUTED>                    Set Mic muted status (true/false)
        --music-muted <MUSIC_MUTED>                Set Music muted status (true/false)
        --sample-muted <SAMPLE_MUTED>              Set Sample muted status (true/false)
        --system-muted <SYSTEM_MUTED>              Set System muted status (true/false)
Comments
  • No audio profiles available and thus no outputs available

    No audio profiles available and thus no outputs available

    Distro: Arch Linux, kernel 5.19.10-zen1-1-zen (so keep in mind that this could have nothing to do with the GoXLR daemon as Arch has a tendency of doing interesting things at interesting times) DE: KDE (X11) Full-size GoXLR (USB passthrough) Daemon v. 0.4.0 Audio control via KDE Settings

    Everything worked perfectly until a system update about 3-4 days ago, at which point audio output completely stopped working. I checked KDE Settings and am unable to select any audio profiles (and thus none of the GoXLR outputs register). The daemon works fine in the sense that I can control the device without any issues.

    Troubleshooting steps attempted: Pacman reinstall of pipewire, pipewire-pulse, wireplumber, pipewire-jack, pipewire-alsa, etc. - Didn't work, tried reinstall with -Rsc on second try, also didn't fix the issue Tried pipewire-media-session, didn't work Checked for updates and updated, didn't work Tried to build goxlr-utility from source, didn't fix the issue

    This could be a PipeWire problem since I can control my device just fine. On the other hand, other audio outputs show up and have available profiles.

    opened by RyderForReal 8
  • .goxlrProfile

    .goxlrProfile "Couldn't read profile"

    Profile file: test1.goxlrProfile

    ./goxlr-client profiles device load test1
    Error: Unable to Load Profile
    
    Caused by:
        Couldn't read profile
    

    Here the profile:

    test1.zip

    The issue could be caused by the sampler files in the goxlrProfile file.

    opened by lm41 7
  • Channel and Button States + Routing

    Channel and Button States + Routing

    Previously unknown command, defines the 'state' of a channel. It's very possible the only two states are 'Muted' and 'Unmuted', but figured I'd abstract anyway, just in case something came up later.

    opened by FrostyCoolSlug 5
  • Error while trying to run the daemon

    Error while trying to run the daemon

    Hello! Just found out about this util after using the goxlr script from the other repo for a long time, this is awesome and thanks for the work.

    Now I was able to compile the daemon and actually was able to setup everything, which seemed to be working but today I restarted the PC and when trying to open the daemon to make some changes I get the following message.

    20:15:22 [INFO] Starting 8 workers
    20:15:22 [INFO] Started GoXLR configuration interface at http://127.0.0.1:14564/
    20:15:22 [INFO] Tokio runtime found; starting in existing Tokio runtime
    20:15:24 [INFO] Connected to possible GoXLR device at Bus 001 Device 010: ID 1220:8fe4
    20:15:24 [INFO] Configuring GoXLR Mini, Profile: Go XLR Linux, Mic Profile: Rode Podmic
    thread 'tokio-runtime-worker' panicked at 'insertion index (is 2) should be <= len (is 1)', library/alloc/src/vec/mod.rs:1347:13
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    

    This is the output with the backtrace enabled as suggested

    RUST_BACKTRACE=1 goxlr-daemon                                                                                                                                               ~
    20:17:53 [INFO] Starting 8 workers
    20:17:53 [INFO] Started GoXLR configuration interface at http://127.0.0.1:14564/
    20:17:53 [INFO] Tokio runtime found; starting in existing Tokio runtime
    20:17:54 [INFO] Connected to possible GoXLR device at Bus 001 Device 010: ID 1220:8fe4
    20:17:54 [INFO] Configuring GoXLR Mini, Profile: Go XLR Linux, Mic Profile: Rode Podmic
    thread 'tokio-runtime-worker' panicked at 'insertion index (is 2) should be <= len (is 1)', library/alloc/src/vec/mod.rs:1347:13
    stack backtrace:
       0: rust_begin_unwind
                 at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:584:5
       1: core::panicking::panic_fmt
                 at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/panicking.rs:142:14
       2: alloc::vec::Vec<T,A>::insert::assert_failed
                 at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/alloc/src/vec/mod.rs:1347:13
       3: alloc::vec::Vec<T,A>::insert
       4: goxlr_profile_loader::profile::ProfileSettings::load
       5: goxlr_profile_loader::profile::Profile::load
       6: goxlr_daemon::profile::ProfileAdapter::from_named
       7: goxlr_daemon::profile::ProfileAdapter::from_named_or_default
       8: goxlr_daemon::device::Device<T>::new
       9: goxlr_daemon::primary_worker::handle_changes::{{closure}}
      10: tokio::runtime::task::core::CoreStage<T>::poll
      11: tokio::runtime::task::harness::Harness<T,S>::poll
      12: std::thread::local::LocalKey<T>::with
      13: tokio::runtime::thread_pool::worker::Context::run_task
      14: tokio::runtime::thread_pool::worker::Context::run
      15: tokio::macros::scoped_tls::ScopedKey<T>::set
      16: tokio::runtime::thread_pool::worker::run
      17: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
      18: tokio::runtime::task::harness::Harness<T,S>::poll
      19: tokio::runtime::blocking::pool::Inner::run
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    
    

    Let me know if you also need the backtrace full output, thanks again!

    Edit: Forgot to mention the UI only displays this when trying to connect. image

    opened by jlimas 4
  • Unable to locate GoXLR Audio Script, sampler disabled

    Unable to locate GoXLR Audio Script, sampler disabled

    Hello, first of all, thank you so much! I tried the goxlr-on-linux but no success, and now... it's almost perfect!

    I just got 2 issues to solve:

    1. The title of this issue, when i try to run the daemon i get this message:
    escribano@escribano:/usr/bin$ goxlr-daemon 
    22:21:20 [INFO] Starting 12 workers
    22:21:20 [INFO] Started GoXLR configuration interface at http://127.0.0.1:14564/
    22:21:20 [INFO] Tokio runtime found; starting in existing Tokio runtime
    22:21:20 [INFO] Connected to possible GoXLR device at Bus 003 Device 010: ID 1220:8fe0
    22:21:20 [INFO] Configuring GoXLR, Profile: Default, Mic Profile: Default
    Unhandled Tag: animationTree
    22:21:20 [ERROR] Unable to locate GoXLR Audio Script, Sampler Disabled.
    

    I didn't find any reference to this audio script, I really dunno what this is.

    1. I don't see the audio channels so I can change the OS to properly map the input/output to the desired port. The only port I found in my system is "Multichannel Output - GoXLR" which simply doesn't work at all.

    I'm missing something? Thanks

    opened by joaoescribano 4
  • Unknown output on start/restart of audio stream

    Unknown output on start/restart of audio stream

    As of version 0.5.0 when an audio stream is started or restarted the audio output of the application is set to unknown. Changing it manually allows it to work temporarily until the audio stream is restarted. Issue doesn't exist in 0.4.0 after downgrading Popos 22.04 (latest updates) using alsa

    opened by APN-Faulty 3
  • Colors from the daemon not accurate

    Colors from the daemon not accurate

    Hi ! I was playing around with the daemon and client when I realised that the daemon seems to send in the status-json the wrong html colours:

    For example, i do: goxlr-client lighting faders-all colour 000000 FFF08F No error, the goXlr color changes well, and then goxlr-client --status-json say that the bottom colour of all faders is 00FFF0:

    "faders": {
              "B": {
                "style": "TwoColour",
                "colours": {
                  "colour_one": "000000",
                  "colour_two": "00FFF0"
                }
              },
              "C": {
                "style": "TwoColour",
                "colours": {
                  "colour_one": "000000",
                  "colour_two": "00FFF0"
                }
              },
              "A": {
                "style": "Meter",
                "colours": {
                  "colour_one": "000000",
                  "colour_two": "00FFF0"
                }
              },
              "D": {
                "style": "Meter",
                "colours": {
                  "colour_one": "000000",
                  "colour_two": "00FFF0"
                }
              }
            },
    

    I checked if switching to another colour could change anything, and for example FFFFFF is in the status json 00FFFF. 000000 is still 000000 in the json. Same for top colours. When loading a profile, it seems to show the right colour in the json.

    In the profile file, you get this: FaderMeter0colour1="FFFFB380" (so an RGBA hex).

    I noticed as well that asking the client after loading my profile (so with all bottoms colours to FFFFB380) to set the bottom colour of all the faders to the default FFFFB3 slightly changes the colour. That's normal as it doesn't care about alpha but it may be useful to add support of alpha in the cli (if possible of course)

    opened by Adelenade 3
  • Interact with the IPC/Socket via NodeJS

    Interact with the IPC/Socket via NodeJS

    Very nice project!!

    I have a somewhat unusual request... I would like to build my own desktop app using Electron and Websockets, and I want the server to be able to communicate with the daemon directly and see changes and send changes. Is that possible, and if so, where would I need to start? The preferred language would be Node.JS as I have experience building WebSockets unless there is an easy way to build a WebSocket server in rust (i have zero experience in rust haha).

    Thanks!

    opened by DavidIlie 3
  • GOXLR-Mini does not work

    GOXLR-Mini does not work

    The goxlr-mini isn't working at all, the app won't pick it up and / or the daemon can't initialise it.

    This issue is due to the system agent that initialises as root the goxlr when plugged in. As the agent looks for a device with the device ID of a full GoXlr, it doesn't pick up the mini.

    ・Fix : You can edit the file:

    /Library/LaunchAgents/com.adesky.goxlr.plist

    and change the id as below:

    <key>idProduct</key>
    <integer>36836</integer>
    

    then do in Terminal:

    launchctl unload /Library/LaunchAgents/com.adesky.goxlr.plist
    launchctl load /Library/LaunchAgents/com.adesky.goxlr.plist
    
    opened by GabrielZacarias 2
  • Would it be possible to build this utility on Windows for accessibility purposes?

    Would it be possible to build this utility on Windows for accessibility purposes?

    Hi,

    I realise the whole drive of this project is to avoid Windows, but bear with me for a second while I explain. :)

    I'm researching ways to make GoXLR more usable by some blind streamer friends. These folks use Windows with screen reader software, which speaks in a synthetic voice as they navigate the OS, adjust controls etc. Unfortunately, the official GoXLR app isn't accessible with their screen reader software, and as yet, nobody has managed to get TC Helicon to improve that situation.

    So, I'm wondering about your web UI. Browser-based accessibility tends to be one of the more robust areas in terms of support nowadays, I'm thinking that perhaps if I could build this as a portable app that would run in a Windows environment, maybe your web UI could solve this problem?

    Any advice appreciated.

    opened by ScottChesworth 2
  • Daemon freezing

    Daemon freezing

    GoXLR mini works okay with the regular script but when I try to run the daemon to use the utility, it works for a few seconds then cuts out. If I interrupt and launch the daemon again the faders start to work, but the daemon will report not being able to connect but eventually will. It then repeats the same behaviour, cutting out and becoming unresponsive until I relaunch the daemon.

    I've attached the console output if that helps at all.

    Utility-output.txt

    opened by ItMeCorban 2
Releases(v0.9.0)
  • v0.9.0(Jan 4, 2023)

    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

    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.9.0-2.x86_64.rpm(6.04 MB)
    goxlr-utility-setup.exe(8.22 MB)
    goxlr-utility_0.9.0-2_amd64.deb(5.36 MB)
  • v0.8.1(Dec 11, 2022)

    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!

    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.8.1-1.x86_64.rpm(7.25 MB)
    goxlr-utility_0.8.1_amd64.deb(6.76 MB)
  • v0.8.0(Dec 9, 2022)

    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

    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.8.0-1.x86_64.rpm(7.25 MB)
    goxlr-utility_0.8.0_amd64.deb(6.76 MB)
  • v0.7.1(Nov 16, 2022)

  • v0.7.0(Nov 14, 2022)

    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

    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.7.0-1.x86_64.rpm(6.77 MB)
    goxlr-utility_0.7.0_amd64.deb(6.31 MB)
  • v0.6.0(Oct 26, 2022)

    Welcome to 0.6.0!

    This release focuses on getting the Sampler on the full GoXLR device working. All buttons should behave how you would expect them too (from playback to recording to clearing), and all Sampler settings should work as well (fade / loop / position / etc).

    I will say, however, expect bugs. There's unfortunately only a limited amount of testing I can do (as well as this being my first time working with the Linux audio stack), and the UI for the sampler is a little scrappy and slightly incomplete. We'll probably end up with a point release or two as problems get smoothed out.

    Other Bug Fixes:

    • Correctly set mic state on profile load when assigned to fader (Reported by MagicTrevor on Discord)
    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.6.0-1.x86_64.rpm(6.05 MB)
    goxlr-utility_0.6.0_amd64.deb(5.68 MB)
  • v0.5.0(Oct 7, 2022)

    Hello, and welcome to 0.5.0..

    This release is primarily focused on handling lighting on the GoXLR, the daemon and UI have been updated to include full lighting configuration on the GoXLR (both Mini and Full), all options and configurations that you expect to see are there.

    In addition, as a 'Linux Only' feature, it's now possible to load just the lighting configuration from a profile (without modifying anything else), this is accessible via the vertical ellipses in profile section of the UI, or via the CLI as goxlr-client profiles device load-colours <profile>, this was a 'self need' feature, I've personally configured KDE to to load the colours of the 'Sleep' profile when the screen locks, and reloads my normal colours when logging back in. It also allows sharing of colour profiles without having to deal with other parts of the configuration, hopefully you all can use and enjoy!

    As an additional feature, it's possible to modify the time for 'press and hold' to react, it's not exposed cleanly yet, but if you shut down the daemon, and edit ~/.config/goxlr-utility/settings.json you can manually edit 'hold_delay'. I'm hoping to bring cleaner options into 0.6.0.

    In addition, we have some bug fixes:

    • Correctly set mic mute state when loading a profile
    • Correctly set mic mute state when releasing in 'Hold' mode (Thanks @Adelenade)
    • Attempt to better handle command fail states
    • Improved disconnect handling states

    As always, RPMs and DEBs are attached, and AUR will be updated soon.

    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.5.0-1.x86_64.rpm(5.47 MB)
    goxlr-utility_0.5.0_amd64.deb(5.10 MB)
  • v0.4.0(Sep 1, 2022)

    Introducing Effects!

    The objective of this release has been to introduce all the functionality of the 'Effects' panel of the full sized GoXLR, including all configuration options, settings, and preset handling:

    image

    Although this release wont bundle any default presets (this will likely come later), the preset format is the same as is presented under Windows, so you'll be able to create, share, and load presets created in Windows in the Utility, and vice versa.

    In addition, there's been the normal round of bug fixes, the important ones being:

    • Fixed issue when a GoXLR doesn't report a Serial Number (Reported by 'Avid (ebuttonsdude)#2121' on Discord)
    • Fixed issue with colouring the Sampler buttons
    • Fixed errors when attempting to create paths in read-only DISTRIBUTUABLE_ROOT
    • Prevent the daemon from running as root unless forced
    • Fixed 'swapping' faders not saving correctly in profile (#31, reported by @vodkapmp)

    As always, packages for debian and rpm based systems are below, please report any bugs you find :)

    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.4.0-1.x86_64.rpm(5.40 MB)
    goxlr-utility_0.4.0_amd64.deb(5.01 MB)
  • v0.3.1(Aug 11, 2022)

    This is primarily a bug fix release, to resolve a few crash bugs and odd behaviours.

    • Fixed possible crash when loading profiles (#26)
    • Fixed crash related to pitch calculations
    • Fixed dependency generation in RPMs
    • Added version number on startup
    • Migrated profile value validation to profile crate
    • Disabled some warnings regarding missing directories

    As always, deb and rpm files are attached, AUR will be updated shortly.

    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.3.1-1.x86_64.rpm(5.26 MB)
    goxlr-utility_0.3.1_amd64.deb(4.87 MB)
  • v0.3.0(Aug 2, 2022)

    While the amount of general code changes in the Utility is much smaller this time around, the main reason for this release is to introduce both .deb and .rpm release files to allow for install without having to download and build the code yourself.

    They're somewhat experimental, but the deb file has been tested on Ubuntu and Pop!_OS 22.04, and the rpm file tested on Fedora Workstation 36. They may work on other flavours, please let us know!

    Here's a small list of other changes:

    • Fix EQ Finetune values for the GoXLR Mini
    • Fixed profile colour parsing
    • When profile loads fail, send a proper error
    • Solved profile load error when samples have Start / End times
    • Ensure Profile directories exist on startup
    • Profiles stored in /usr/share/goxlr/profiles are usable (Useful for Distribution)
    • Added options for creating RPMs and DEB files

    Special thanks to Louis on Discord for their help with the profile loading / saving issues!

    Source code(tar.gz)
    Source code(zip)
    goxlr-utility-0.3.0-2.x86_64.rpm(5.22 MB)
    goxlr-utility_0.3.0_amd64.deb(4.88 MB)
  • v0.2.0(Jul 26, 2022)

    What's Changed

    The big change for the 0.2.0 release is the introduction of a Web UI for configuring your GoXLR devices. When the daemon is run, it will listen on http://localhost:14564 where you can visit and configure (almost) everything the Daemon supports. It's been designed to duplicate the behaviour of the Windows UI so users should feel at home!

    Smaller Changes and Fixes since 0.1.0

    • Changed Inter-Process Communications to be JSON Based
    • Added Cough Button (Hold / Toggle) Configuration Support
    • Added Bleep Volume configuration support
    • Added DeEss configuration support
    • Fixed crash when using a Mini that was slow to respond
    • Fixed not loading microphone gain on startup
    • Default Log Level changed to 'INFO' and --log-level daemon startup param added
    • Command line option to load different configuration file
    • Ability to create new profiles from defaults
    • Disconnected devices now properly disconnect
    • And More..

    As always, I'd like to thank the contributors, and people who have been testing as this release has moved forward :)

    Source code(tar.gz)
    Source code(zip)
  • 0.1.0-alpha1(Jun 30, 2022)

    With the GoXLR mini functionality 100% complete, this is the first alpha pass of the GoXLR Utility.

    From a functionality perspective, it should be able to fully load Windows profiles for both devices, and the CLI allows full configuration of the mini device. This release is primarily to allow initial testing to find any obvious issues.

    Note that at present, we're not providing binaries, so source code compilation will be required.

    Source code(tar.gz)
    Source code(zip)
Owner
null
CLI utility that screencaptures your Linux desktop and streams it to Kodi via UPNP/DLNA and RTSP

desktopcast Desktopcast is a little CLI application that allows you to cast your Linux desktop to any UPNP/DLNA device capable of the AVTransfer servi

Markus Ebner 25 Apr 16, 2023
A CLI tool to get help with CLI tools 🐙

A CLI tool to get help with CLI tools ?? halp aims to help find the correct arguments for command-line tools by checking the predefined list of common

Orhun Parmaksız 566 Apr 16, 2023
A simple guide for optimizing linux in detail

Optimizing Linux I am writing this guide as to save my progress and let others contribute to increase the performance even further, after all many are

Siddharth Naithani 86 Dec 28, 2022
Pure-Rust rewrite of the Linux fontconfig library (no system dependencies) - using ttf-parser and allsorts

rust-fontconfig Pure-Rust rewrite of the Linux fontconfig library (no system dependencies) - using allsorts as a font parser in order to parse .woff,

Felix Schütt 28 Oct 29, 2022
Check the reproducibility status of your Arch Linux packages (read-only mirror)

arch-repro-status A CLI tool for querying the reproducibility status of the Arch Linux packages using data from a rebuilderd instance such as reproduc

Arch Linux 12 Nov 16, 2022
Basic template for an out-of-tree Linux kernel module written in Rust.

Rust out-of-tree module This is a basic template for an out-of-tree Linux kernel module written in Rust. Please note that: The Rust support is experim

Rust for Linux 118 Dec 26, 2022
🦀️atos for linux by rust - A partial replacement for Apple's atos tool for converting addresses within a binary file to symbols.

atosl-rs ??️ atos for linux by rust - A partial replacement for Apple's atos tool for converting addresses within a binary file to symbols. tested on

everettjf 60 Dec 29, 2022
Shared memory - A Rust wrapper around native shared memory for Linux and Windows

shared_memory A crate that allows you to share memory between processes. This crate provides lightweight wrappers around shared memory APIs in an OS a

elast0ny 274 Dec 29, 2022
Use Git installed in Bash on Windows/Windows Subsystem for Linux (WSL) from Windows and Visual Studio Code (VSCode)

WSLGit This project provides a small executable that forwards all arguments to git running inside Bash on Windows/Windows Subsystem for Linux (WSL). T

A. R. S. 1.1k Jan 3, 2023
Sytéme d'AutoCompletion de texte pour HeficienceOS est autres distributions linux.

AutoCompletion Pour linux Version: 0.1.0-dev.1 - Note : L'application est encore instable, il est donc recommandé d'être indulgent, l'application risq

Heficience 1 Nov 29, 2022
stat-rs is a copy of linux command stat

stat-rs is a copy of linux command stat

2XL 1 Jan 20, 2022
A clone of linux cal command, using rust programming language

CLI Calendar command What the project does This command was inspired by Linux Cal command that shows the current month calendar as output (by default)

Mohamed Djoudi Benarfa 2 Nov 16, 2022
A collection of semi-useful tools made for GNU/Linux

DECTOOLS A collection of semi-useful tools made for GNU/Linux. Some may work on macOS, though functionality isn't a priority. Depenencies: python, bas

Decator 3 Jun 8, 2022
Figma Agent for Linux (a.k.a. Font Helper)

Figma Agent for Linux (a.k.a. Font Helper)

Neetly 32 Dec 25, 2022
A library to capture the Screen on Linux, MacOS and Windows.

Captis - A library for capturing the screen on Linux, MacOS and Windows It's a fairly simple library that performs good enough, the OS level APIs that

CrewNew.com 17 Dec 23, 2022
Binary Ninja plugin written in Rust to automatically apply symbol information from split debug info on Linux.

Load Symbols Binary Ninja plugin written in Rust to automatically apply symbol information from split debug info on Linux. Requirements Last tested wi

null 4 Jul 20, 2022
For something between the likes of a toy bootloader or tiny kernel and Arch Linux.

For something between the likes of a toy bootloader or tiny kernel and Arch Linux.

Aarush Gupta 3 Oct 9, 2022
Capability-based Linux Runtime

r-linux Capability-based Linux Runtime The r-linux project provides direct access to the application programming interfaces of the linux kernel. This

null 81 Nov 12, 2022
Wallrus is a simple wallpaper manager for linux.

wallrus Wallrus is a simple and blazing-fast wallpaper manager for linux. It wraps around feh to provide a simple, fast, feature-rich and user-friendl

Akshay Rajput 9 Oct 10, 2022