Skip to content

Releases

Volco v1.4

Choose a tag to compare

@github-actions github-actions released this 24 Oct 21:48
7ee810a

🎚️ Volco 1.4

The Controls and Hardware pages are now one Controller page. You see what each control does and how it's wired, and you save both together. Sliders whose pots never reach the ends now calibrate themselves and go all the way from 0 to 100 %. New wiring helpers find a control's pin when you move or press it, find the screens on a bus, and try a button's lights. Slider and button feel settings are simpler, and each one lives in one place.

⚠️ Firmware update needed. This release comes with new controller firmware. When the controller connects, Volco shows Firmware update available. Click Update and your setup stays on the controller.

Your settings are converted automatically on first start, and the old file is kept as config.v7.bak. Hold and double-press timings carry over from your first button. If you had a slider reversed, turn on Reverse direction for it again. That setting now lives on the controller and isn't carried over.

📦 What's in the box

File What it is
Volco.exe The app. One self-contained file for Windows 10/11 (x64), with nothing to install. It carries the matching controller firmware inside it.
volco-firmware-esp32-1.4.zip The same firmware on its own, for flashing with your own tools, plus its licence notices and the LGPL relink bundle. Most people won't need it.

✨ New

🎛️ One Controller page

  • The sidebar has two pages: General and Controller. The Controller page draws your controller, with + Add, Controller settings and Test above it.
  • Tiles show what each control does. A wiring problem gets a red outline and a warning mark, on both controls when two of them clash.
  • The panel beside the drawing has two parts: Controls (or Actions), then Hardware. Hardware holds the pins, the light or screen, and Remove. It always starts at the same height, so it doesn't jump when you click from tile to tile.
  • Settings look like Windows Settings: grouped cards, with a ? next to any setting that needs explaining.
  • Hardware changes are a draft. An amber bar across the top of the drawing counts them, and Save sends them to the controller. Removing a control shifts Volco's settings so the controls after it keep what they do.
  • Leaving the page or closing the window with unsaved changes asks first: save, discard, or stay.
  • I2C buses are under Controller settings › Screens, in their own dialog. A screen button links to its bus.
  • There's a Volco PCB preset with the board's pin map, ready to pick in the setup chooser.

🚦 Controller status

  • When all is well, you see one line at the bottom of the sidebar ("Connected"), with the chip and counts under it. Click it for Connection, Reconnect, Disconnect, Check firmware, Reinstall, Load a preset and Start over.
  • When the controller needs you, a banner appears at the top of every page with the one button that fixes it.
  • Firmware installs, updates, checks and saves run in a progress window that tells you not to unplug the controller and ends with what to do next. Exit waits for them to finish.
  • A blank ESP32 is recognised. Check firmware says it doesn't have Volco's firmware yet and offers Install firmware.

📏 Slider calibration

  • Auto-calibrate (on by default) learns each slider's real ends as you use it, so a pot that reads only part of its range still reaches 0 and 100 %.
  • Re-calibrate opens a dialog with a live bar: push the slider all the way both ways and click Done. The slider leaves your volume alone while the dialog is open.
  • A slider's Hardware section shows what it has learned, like "Calibrated: 170–2550".

🔌 Wiring helpers

  • Detect pins. A pin field opens a dialog with every GPIO. Move a slider or press a button and its pin lights up; you still pick it yourself.
  • + Add listens for the new control. Add a slider or button, then move or press it: its pin shows up and is selected. or Choose manually shows the full grid instead.
  • Find screens. Each bus in the I2C buses dialog can scan its pins and say which screens answered, and which buttons they belong to.
  • Try the lights. A button's Hardware section lights its LED or LED pair, even on pins you haven't saved yet.

🎚️ Simpler slider and button feel

  • Smoothing is controller-wide, under Controller settings › Sliders (Low, Normal, High or Custom). Volco no longer smooths a second time on top of the controller, so sliders follow you without lag.
  • Reverse direction is in each slider's Hardware section and is stored on the controller.
  • Hold after and Double press within are controller-wide, under Controller settings › Buttons. Saving only these doesn't restart the controller.
  • Curve and dead zone are gone. Sliders map linearly.

🚧 Known issues

  • Cancelling Re-calibrate and reopening it right away on the same slider can close the new dialog early. Wait a moment before reopening.
  • The Connection dialog has no automatic port choice yet, and doesn't refresh its USB list on its own (#119).
  • An app whose exe is renamed by an update (for example app-1.2.exe → app-1.3.exe) isn't matched to its slider any more. Pick it again (#112).
  • The screen preview is close to the controller's screen, but not pixel-identical (#113).
  • Programs and scripts don't run over Wi-Fi or WebSocket until the controller can be authenticated (#89). Media actions work on every connection.
  • Only the ESP32 (not the S2, S3 or C3) is supported, and the app is Windows only.
  • Windows SmartScreen may warn the first time you run Volco.exe, because it isn't code-signed. Choose More info → Run anyway.

Found something odd? Please open an issue. The log at %APPDATA%\Volco\volco.log helps a lot.

Full changelog: v1.3...v1.4

Volco v1.3

Choose a tag to compare

@github-actions github-actions released this 19 Oct 13:00
f560629

🎚️ Volco 1.3

One Controls page replaces the Sliders and Buttons pages. It draws your controller as Volco last saw it: every slider and button, its live level or light, and what it does. Click one to edit it beside the drawing. Drag one onto another to swap them. Presets are now called modes. Sliders show your apps' real icons and live levels, and a slider can now control a microphone.

✅ No firmware update needed. The controller firmware is the same as in 1.2.1. Your settings are converted automatically on first start: presets become modes, and the old file is kept as config.v6.bak.

📦 What's in the box

File What it is
Volco.exe The app. One self-contained file for Windows 10/11 (x64), with nothing to install. It carries the matching controller firmware inside it.
volco-firmware-esp32-1.3.zip The same firmware on its own, for flashing with your own tools, plus its licence notices and the LGPL relink bundle. Most people won't need it.

✨ New

🎛️ One Controls page

  • A drawing of your controller. Slider tiles show their name, what they control and the live level. Button tiles show their light or screen preview, the main action in bold and the double-press and hold actions below it.
  • The previews match the controller. They're worked out the same way as what the controller shows, including the error flash when a press can't do anything.
  • The drawing follows the hardware. It's built from the controller's last report. A control in your settings that the controller doesn't have is drawn as missing. Large controllers get a denser grid.
  • Pressing a button or moving a slider flashes its tile, so you can see which one is which. Only a click selects it.
  • An inspector beside the drawing edits the selected control.
    • For a slider: its name, what it controls and its response (curve, dead zone, smoothing, reverse).
    • For a button: its three gestures (press, double press, hold), each with Try. Also its light or screen, its timing, and Clear (with Undo).
    • Programs and scripts carry a USB tag, since they only run over the USB cable.
    • A problem with an action shows a warning right on its row.
  • Names are never cut off with "…". Long names wrap onto another line instead.
  • On windows under 1000 px wide, the sidebar shrinks to icons and opens over the page when you point at it.

🔍 New pickers, with search

  • Choosing an action or a slider target opens a dialog with a search box. Type a few letters in order ("sptf" finds Spotify), and the matches are highlighted.
  • Each action's settings come right after you pick it. Done checks them before saving. Escape or a click outside closes the dialog without changes.
  • The slider dialog lists the main output, your devices, your apps and everything else. Running apps show their icon, name and a live level meter. Apps that aren't running are listed as Not running.
  • Sliders can control inputs. Microphones and other capture devices are listed after the outputs.
  • Picking an app for one slider takes it off any other slider.

🔀 Drag to swap

  • Each tile has a grip. Drag it onto another tile of the same kind to swap them, or use the tile's menu: Swap with ▸ Button N / Slider N. Both can be undone.
  • Swapping buttons swaps their actions in the mode you're editing. Their timing stays with the physical button.
  • Swapping sliders swaps what they control and their names. The response settings stay with the physical slider. Each new target jumps to the level the slider is at.

🗂️ Modes (formerly presets)

  • Modes are tabs above the buttons.
    • Click a tab to edit that mode. This doesn't change which mode is live on the controller; Make live does that.
    • Right-click a tab (or press the menu key) to rename it, make it live or copy actions from another mode.
  • Add mode creates an empty mode and opens its menu.
  • The pencil edits the tabs. Drag a tab (or press Alt+←/→) to reorder it, click its name to rename it, and click × to delete it, with Undo. The first mode is the start-up mode and can't be deleted.
  • The Next mode and Go to mode actions are renamed to match.

🏷️ Apps and devices

  • Apps have their real icons on slider tiles, in the inspector and on the volume pop-up. Volco remembers where each app's exe is, so the icon shows even when the app isn't running, and it follows an app that moves to a new folder after an update.
  • Each device row has a ⋯ menu to rename it or change its screen icon. The same menu sits next to every device picker in the action settings, so you no longer have to go to another page.
  • Renaming a device in Windows renames it in Volco straight away, unless you gave it a nickname in Volco. Before, it needed a restart.

🔢 Numbering from 1

  • Sliders and buttons are numbered from 1 everywhere you read them: the Controls and Hardware pages, error messages, the hardware test (including the controller's own test screen) and the log. The Hardware page used to say "Slider 0".
  • For scripts, VOLCO_BUTTON now counts from 1 too, so it matches the button names in the app. ⚠️ If a script of yours checks VOLCO_BUTTON, add 1 to the number it expects.

🚧 Known issues

  • An app whose exe is renamed by an update (for example app-1.2.exe → app-1.3.exe) isn't matched to its slider any more. Pick it again (#112).
  • The screen preview is close to the controller's screen, but not pixel-identical (#113).
  • Programs and scripts don't run over Wi-Fi or WebSocket until the controller can be authenticated (#89). Media actions work on every connection.
  • Only the ESP32 (not the S2, S3 or C3) is supported, and the app is Windows only.
  • Windows SmartScreen may warn the first time you run Volco.exe, because it isn't code-signed. Choose More info → Run anyway.

Found something odd? Please open an issue. The log at %APPDATA%\Volco\volco.log helps a lot.

Full changelog: v1.2.1...v1.3

Volco v1.2.1

Choose a tag to compare

@github-actions github-actions released this 17 Oct 17:10
f5b9772

What's Changed

  • README: screenshots of the Sliders, Buttons and Hardware pages by @ToMeRhh in #106
  • Buttons page: the cards sit inside the edited preset's tab, in its colour by @ToMeRhh in #107

Full Changelog: v1.2...v1.2.1

Volco v1.2

Choose a tag to compare

@github-actions github-actions released this 12 Oct 13:43
369b27b

🎚️ Volco 1.2

A smaller, friendlier Volco. The download shrinks from 52 MB to about 21 MB. Volco can start when you sign in, and opening it again brings the running window to the front instead of starting a second copy. The settings menu has been tidied up, and the screen timers now go down to one second.

⚠️ This release needs new controller firmware. After updating, open Hardware and choose Update firmware. Your controller's setup is kept.

📦 What's in the box

File What it is
Volco.exe The app. One self-contained file for Windows 10/11 (x64), nothing to install, now about 21 MB (was 52 MB). It carries the matching controller firmware inside it.
volco-firmware-esp32-1.2.zip The same firmware on its own, for flashing with your own tools, plus its licence notices and the LGPL relink bundle. Most people won't need it.

✨ New

🚀 Start at sign-in, one Volco at a time

  • "Start Volco when you sign in" in General → Startup. Volco starts quietly in the tray. No admin rights are needed, and it shows up in Task Manager's Startup apps. If you turn it off there, the toggle shows Off.
  • Opening Volco shows its window. Double-clicking Volco.exe or starting it from the Start menu opens the settings window. A start at sign-in stays in the tray.
  • Only one Volco runs. Starting it again brings the existing window to the front instead of adding a second tray icon.

🪶 A much smaller download

  • Volco.exe went from 52 MB to about 21 MB. Unused parts of .NET and the UI toolkit are trimmed away, and only the Windows parts are included.
  • The UI now draws on the CPU instead of through a GPU layer. This is more reliable across graphics drivers and looks the same.

🧭 A tidier settings window

  • New menu order: General, Hardware, Sliders, Buttons. The window opens on General.
  • Devices (nicknames and screen icons) is now a section of General.
  • The Controller page is now called Hardware, and its inner Hardware section is now Layout.
  • Connect / Reconnect / Disconnect sit on the Connection card's header.
  • About moved to the sidebar. The version, a GitHub link and Notices sit at the bottom-left, above the connection state. The third-party notices open in a dialog.
  • General → Troubleshooting shows where your settings file is (config.json), with an Open folder button next to it, under the log file.

🖥️ Screen timers

  • "Dim when idle", "Turn off when idle" and "Pixel shift" now accept 1 s and up (the minimum was 10 s). Needs the new firmware.
  • The rows explain themselves: "Dim when idle after 120 s", "Turn off after …", "Pixel shift every …". Dimmed brightness has its own row.
  • Number boxes take a plain number. Type 30, 30s or 30 s. Before, a box like "120 s" refused a bare number.

🌍 Volco is open source

The repository is now public: github.com/ToMeRhh/volco. It has a new README with photos of the controller, a contributing guide, issue forms and a security policy. If you'd like to support the project, there's a Sponsor button.

🚧 Known issues

  • Programs and scripts don't run over Wi-Fi or WebSocket until the controller can be authenticated (#89). Media actions work on every connection.
  • A script can't yet set its own button's light or screen text (#91).
  • Only the ESP32 (not the S2, S3 or C3) is supported, and the app is Windows only.
  • Windows SmartScreen may warn the first time you run Volco.exe, because it isn't code-signed. Choose More info → Run anyway.

Found something odd? Please open an issue. The log at %APPDATA%\Volco\volco.log helps a lot.

Full changelog: v1.1...v1.2

Volco v1.1

Choose a tag to compare

@github-actions github-actions released this 10 Oct 17:34
bb7a594

🎚️ Volco 1.1

Buttons now do much more. A button can control your music, open a program or run a script, and its screen or light shows you what each press did. Media buttons show a moving equaliser while music plays. The Controller page has also been reworked: connecting, setting up and testing a controller now happen in one place.

⚠️ This release needs new controller firmware. After updating, open Controller and choose Update firmware. Your controller's setup is kept. The app's settings are upgraded automatically, and your old config.json is backed up next to it.

📦 What's in the box

File What it is
Volco.exe The app. One self-contained file for Windows 10/11 (x64), nothing to install. It carries the matching controller firmware inside it.
volco-firmware-esp32-1.1.zip The same firmware on its own, for flashing with your own tools, plus its licence notices and the LGPL relink bundle. Most people won't need it.

✨ New

🎵 Media buttons

  • Play/pause, Next track, Previous track and Stop, sent to whatever is playing or to an app you choose (Spotify, a browser, …).
  • The LED is lit while that app plays. A screen shows PLAYING or PAUSED over the app's name.
  • A moving equaliser on the screen while the music plays, frozen bars when it's paused. It keeps moving when the screen dims and stops when the screen turns off.
  • Play/pause responds immediately: the screen and light switch to the new state as you press, without waiting for the app to answer.

🚀 Open a program, run a script

  • Open a program: an .exe, a shortcut, a steam:// link or a document. If it's already running, its window comes to the front. The light is on while it runs.
  • Run a script: .bat/.cmd, PowerShell, Python, Node or anything with a file association, run hidden. Choose whether a press while it's running is ignored or starts another run. A failed script flashes its button and writes its last output lines to the log. Scripts receive VOLCO_BUTTON, VOLCO_GESTURE and VOLCO_PRESET.
  • For safety, programs and scripts run only when the controller is connected over USB. Presses over Wi-Fi or WebSocket are refused and logged (see below).

👆 See what a press did

  • Double press and hold actions show on the screen. For 1.5 s after you use one, the screen shows that action, then goes back to the button's main one. A light blinks twice.
  • A press that couldn't work says why. The screen shows an ✕ with the reason: NOT RUNNING, NO MEDIA, NOT AVAILABLE, USB ONLY, CAN'T OPEN or NO FILE. A light flashes fast.

🧩 A reworked Controller page

  • Connection lives on the Controller page now. The separate Connection page is gone, and one COM-port picker serves both connecting and firmware.
  • A setup dialog greets a controller that hasn't been set up yet. Apply your saved setup, start from a preset, or start from scratch. It opens again after a firmware install.
  • Mistakes are marked where they are. Every problem in the hardware setup is shown on its row with a red border and a sentence saying why, such as a pin used twice (on both rows), or a pin that can't read a slider or can't be used while Wi-Fi is on.
  • Coloured status icons for the link, the firmware and notices. The firmware line only shows an icon when something needs your attention.
  • A save bar at the bottom for unsaved changes (Revert / Save to controller), the save's progress and its result.
  • The hardware test runs in a dialog, and pressing a button cycles its light or screen so you can check it.
  • Installing firmware asks for confirmation in a dialog first.

🖥️ Smoother screens

The controller now sends only the part of a screen that changed. Animations cost a fraction of the screen bus time they used to.

🧪 Simulator

  • Pin map: the builder shows which GPIO each slider, button, LED and screen bus uses, worded the way the Controller page asks for them, so you can set the simulator up by hand.
  • Loads faster, no longer freezes for a second when you add an LED button, and explains why a control is greyed out when you run out of pins.
  • The board sits square in front of the monitor.

🐛 Fixed

  • Volco could crash on exit when a slider moved while it was shutting down.
  • Double press and hold actions never showed on a button's screen.
  • A Play/pause briefly showed PLAYING after a pause before catching up.
  • "Save to controller" could disappear after the controller's storage was erased, leaving no way to store the setup.
  • Cancelling a firmware install cleared the probe result and its Install button.

🚧 Known issues

  • Programs and scripts don't run over Wi-Fi or WebSocket until the controller can be authenticated (#89). Media actions work on every connection.
  • A script can't yet set its own button's light or screen text (#91).
  • The rough edges listed for 1.0 still apply. Only the ESP32 (not the S2, S3 or C3) is supported, and the app is Windows only.

Found something odd? Please open an issue. The log at %APPDATA%\Volco\volco.log helps a lot.

Full changelog: v1.0...v1.1

Volco v1.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 12:51
cd6b835

🎚️ Welcome to Volco 1.0

This is the first release of Volco: a small hardware controller with real sliders and buttons, and a Windows tray app that turns them into a mixing desk for your PC's audio. Spotify on one fader, your game on another, Discord on a third. Mute the mic, flip between headphones and speakers, and see what each button does on its own LED or little OLED screen.

In short: everything you need to build a controller, flash it, set it up and use it every day is here, and it works well. Some corners of the firmware and the configuration screens are still rough (more on that below), but the core of Volco is stable.

📦 What's in the box

File What it is
Volco.exe The app. One self-contained file for Windows 10/11 (x64), nothing to install. It carries the matching controller firmware inside it.
volco-firmware-esp32-1.0.zip The same firmware on its own, for flashing with your own tools, plus its licence notices and the LGPL relink bundle. Most people won't need it.

✨ What Volco does

🎛️ Control your audio

  • Per-app volume. Put spotify.exe, discord.exe, a game or a group of apps on a slider.
  • "Everything else." One slider for every app no other slider claims.
  • Device volume. A specific output, or whatever your default device is right now.
  • Response curves. Linear, logarithmic, exponential or S-curve, per slider.
  • Mute anything. The current output, the microphone, or a specific device.
  • Switch outputs. Toggle between two devices (say headphones ↔ speakers), or jump straight to one.

🔘 Buttons that do more

  • Single, double and long press, each with its own action.
  • Presets. Every button keeps its own actions per preset, and a button can flip to the next preset or jump to a specific one. When the preset changes, the controller announces it.
  • Live feedback. Each button shows its state on a LED, a LED pair (A or B), or an OLED screen with an icon, a status line and the action's name.

🖥️ OLED button screens

  • Up to 4 SSD1306 screens, one per button.
  • Device icons and names, scrolling long names, Hebrew / right-to-left text, and slide animations that move every screen together when you change presets.
  • Dimming, auto-off and pixel shift to look after the panels. The first press on a sleeping screen only wakes it.

🏷️ Friendly names everywhere

Give your devices nicknames and icons on the Devices page. "Sony WH-1000XM5 Hands-Free AG Audio" becomes Headphones 🎧 in the pickers, on the volume pop-up and on the controller's screens.

🧩 Your hardware, your layout

  • Describe your controller in the app, not in code. The Controller page lists its sliders, its buttons with their indicators and its screen buses. Start from the DIY reference preset, change what you like, and Save to controller. The setup lives on the controller, and Volco keeps a copy.
  • Install and update the firmware from the app. Plug the ESP32 in over USB and choose Install firmware…. It takes well under a minute. When a later Volco brings new firmware, the app offers Update firmware and keeps your setup.
  • Hardware test. Start test shows every slider and button live without touching your volume, so you can check your wiring.
  • Connect your way: USB, Wi-Fi (UDP) or WebSocket.

🫧 Everyday comforts

  • A small click-through volume pop-up when you move a slider, mute or switch devices.
  • A tray icon that turns red when the controller isn't connected and tells you why.
  • Built-in updates. Volco checks GitHub Releases and can install new versions itself.
  • Light, dark and high-contrast themes.

🧪 No hardware yet?

Open tools/simulator/index.html in a browser. It's a 3D controller on a desk that talks to Volco over WebSocket, with LEDs or screens, so you can try everything before you solder anything.

🚀 Getting started

  1. Build the controller. Wire sliders, buttons and LEDs or screens to an ESP32 (esp32dev). The firmware guide covers wiring and pin choices.
  2. Run Volco.exe. It appears in the tray. Click it to open Settings.
  3. Connect. On Connection, choose USB cable and the controller's COM port.
  4. Flash. On Controller, choose Install firmware….
  5. Set up. Still on Controller, choose Set up, start from the DIY reference (or your own layout) and Save to controller.
  6. Map it. Assign apps and devices on the Sliders page and actions on the Buttons page. That's it. 🎉

🚧 Known rough edges

Volco 1.0 is stable in what it does. Your volume, mutes, device switching, presets and screens all behave. Some parts are less polished:

  • The Controller page and setup flow. The hardware editor, the Advanced settings (input tuning, bus clocks, Wi-Fi) and some of the wording and confirmations still need a design pass. They work, but they can feel technical.
  • Firmware. Expect small display and behaviour quirks on the controller, especially with less common hardware layouts. The tested build is the DIY reference board: an ESP32 with a CH340 USB chip.
  • Only the ESP32 is supported for now (not the S2, S3 or C3), and the app is Windows only. The app is built to be cross-platform, and Linux and macOS are on the roadmap.

Found something odd? Please open an issue. The log at %APPDATA%\Volco\volco.log helps a lot.

🙏 Thanks

Built on Avalonia UI, PlatformIO, the Arduino-ESP32 core, U8g2 and the Arimo font.

Volco is free software under the GPL-3.0.