Framework
charlesvestal/schwung avatar
charlesvestal/schwung

Schwung: Running custom synths and effects on the Ableton Move

An open framework for additional synths, FX and tools for the Ableton Move

489 stars78 forksCNOASSERTION

At a glance

What is it?
Schwung is an unofficial framework that installs a Shadow UI on the Ableton Move, letting users run custom instruments, effects, and controllers. It is a hack, not a stable daily driver, but it opens the device to third-party modules.
Who is it for?
Adopt Schwung if you own an Ableton Move, are comfortable with SSH and device recovery, and want to experiment with custom modules that stock Move cannot run. Do not use it if you need a stable daily driver or are unwilling to back up sets and learn DFU restore mode.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • charlesvestal/schwung489 ★ · +59
Star history
Repository2026-08-242026-10-22
charlesvestal/schwung430489

59 Stars in the last 59 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What Schwung actually adds to the Move

The Ableton Move is a closed hardware device. Its stock firmware only runs the built-in instruments and effects. Schwung changes that by installing a Shadow UI that runs alongside the stock interface. This Shadow UI is the core mechanism: it lets additional synths, effects, and controllers execute in parallel with the usual interface, without replacing it. The README is blunt about the nature of the project. It calls itself a hack, states it is not stable or generally usable as a daily driver, and warns that it modifies software on the device. The target user is someone who owns a Move, wants to extend it beyond Ableton's official limits, and accepts the risk of breaking the device. The project is unofficial and has no endorsement from Ableton.

The Shadow UI architecture

The documentation describes a Shadow UI that runs alongside stock Move. The README does not give a full system diagram, but the architecture document is referenced as docs/ARCHITECTURE.md. From the available material, the Shadow UI appears to be a separate layer that intercepts or mirrors the device's display and input, allowing custom modules to draw their own interfaces and respond to controls. The module system is JavaScript-based; the API is documented in docs/API.md. Modules can be synths, effects, or controllers, and they integrate with the Shadow UI. There is also a concept called overtake modules, mentioned in docs/MODULES.md, which suggests some modules can take over parts of the stock UI. The README does not explain the technical details of how the Shadow UI communicates with the hardware, but it credits the Move Anything project for the base techniques for accessing Move's hardware and system functions. That project provided the low-level access, and Schwung builds the framework on top.

Installation paths: desktop installer, command line, and screen reader

There are two official installation methods. The recommended one is a desktop installer, available for macOS, Windows, and Linux, from the schwung-installer repository. It handles SSH setup, module selection, and upgrades through a graphical interface, and it is accessible via screen reader. The command-line method uses a curl pipe to a shell script. The basic command is: curl -L https://raw.githubusercontent.com/charlesvestal/schwung/main/scripts/install.sh | sh. That script walks through SSH key generation, downloads the framework, offers modules from a catalog, and copies assets like ROMs and SoundFonts. There are options: --enable-screen-reader enables text-to-speech announcements, --disable-shadow-ui installs only the screen reader without the UI features, and --skip-modules skips the module prompt. For a screen-reader-only install, the README suggests using -sL for silent output. Uninstall is similarly scripted with curl -L .../uninstall.sh | sh, and it exports inactive Set Pages backups to /data/UserData/UserLibrary/Schwung Backups/Set Pages/ before removal. A --purge-data flag deletes Schwung data permanently. The installer assumes the Move is on WiFi and the computer is on the same network.

Module catalog and management

Modules are the reason to install Schwung. The catalog lives in module-catalog.json in the repository, and the full listing is at schwung.dev/catalog.html. Modules are installed either through the desktop installer or through Schwung Manager, which runs at http://move.local:7700 on the device. The README gives an example of a Signal Chain module, with its own notes in src/modules/chain/README.md. The module API is JavaScript, which means developers can write custom instruments and effects without compiling C code, even though the framework itself is written in C. The catalog is open and extensible, so users can add their own modules. The README does not specify how many modules exist or what they do beyond the Signal Chain example. This is a point where the project's documentation is thin. The catalog file is the authoritative source, and interested users should read it before assuming a desired module exists.

Real limitations and failure modes

The README is unusually honest about risks. It states that Schwung modifies software on the Move and that users should back up important sets and samples before installing. It also instructs users to familiarize themselves with DFU restore mode, which is the recovery path if the device becomes unusable. The project is described as not stable and not generally usable as a daily driver. That is a strong warning. The Shadow UI runs alongside stock Move, so the stock interface should still work, but the added layer can introduce bugs or conflicts. The README does not list specific known issues, but the lack of a stable daily-driver claim suggests that crashes or glitches are possible. Another limitation is the contribution policy: contributions developed with Grok are not accepted, and all AI-assisted work must be disclosed. This may matter to developers who rely on specific AI tools. The project is also heavily written by coding agents with human supervision, which the README flags as a potential concern for users who are nervous about AI-generated code.

Alternatives and the difference in approach

The closest alternative is the Move Anything project, which Schwung explicitly credits. Move Anything provides the base techniques for accessing Move's hardware and system functions. The difference is scope and abstraction. Move Anything is a lower-level toolkit: it gives developers direct access to the hardware, but it does not provide a framework for running custom modules alongside the stock UI. Schwung builds on that foundation to create a Shadow UI and a module system. If you only need to poke at the device's internals or run a single custom script, Move Anything might be simpler. If you want a structured way to install and manage multiple synths and effects, Schwung is the higher-level option. The README does not compare Schwung to any other framework, and no other similar project is mentioned. The choice comes down to how much abstraction you want and how willing you are to depend on a framework that is explicitly unstable.

Maintenance, licensing, and upgrade cost

Schwung is licensed under MIT, with a THIRD_PARTY_LICENSES file that covers dependencies. The repository is active; the latest release is v1.0.0 from August 2026, and the last push was the same day. The maintainers have a CI-gated workflow: every change lands via a pull request that must pass three checks (host-tests, go, cross-compile), and direct pushes to main are blocked. This suggests a controlled development process, but the README does not state a release cadence or a long-term maintenance commitment. Upgrade cost is not documented beyond the desktop installer handling upgrades. The uninstall script exports backups by default, which is a safety feature, but it also means uninstalling is not a clean wipe unless you use --purge-data. The license is permissive, but the README warns users to validate functionality, security, and license compatibility before production use. That warning applies to modules you install, as their licenses may differ from the framework's MIT license. The project is a hack, and the maintenance cost is on the user: you must be prepared to restore the device via DFU if something goes wrong.

Editorial conclusion

Adopt Schwung if you own an Ableton Move, are comfortable with SSH and device recovery, and want to experiment with custom modules that stock Move cannot run. Do not use it if you need a stable daily driver or are unwilling to back up sets and learn DFU restore mode. Before installing, verify your Move's firmware version against the manual, test the uninstall script on a spare device, and confirm that any modules you plan to use have licenses compatible with your use case.

Frequently asked questions

What is Schwung and what does it add to Ableton Move?

It is an unofficial framework for running custom instruments, effects and controllers on Ableton Move. It adds a shadow user interface that runs alongside the stock interface, so additional synths and effects can run in parallel rather than replacing the normal one. It is not approved, endorsed or supported by Ableton.

What licence is Schwung under?

Schwung's own code is MIT. The release ships two separate GPL programs, the Ableton Link subscriber and a jack2 library, which impose nothing on the rest, and it links the screen-reader shim against eSpeak NG, which makes that one binary GPL-3.0-or-later. Building with the screen reader disabled produces an MIT shim instead.

How do I install Schwung on Ableton Move?

Either download the desktop installer from the separate schwung-installer repository for macOS, Windows or Linux, or use the command line. That needs the Move on WiFi, a computer on the same network, and a terminal on macOS or Linux or Git Bash on Windows, then runs a curl command piped into sh. The installer handles SSH key setup and offers to install modules from the catalog.

What happens to my sets when I uninstall Schwung?

By default the uninstaller exports backups of inactive set pages to a Schwung Backups directory under the device user library before removing Schwung. To delete the data permanently instead of exporting it, run the uninstall script with the --purge-data argument.

How do I write a module for Schwung?

Modules are JavaScript and run on a vendored QuickJS engine pinned to a dated release. docs/API.md documents the JavaScript module API, docs/MODULES.md covers module development and shadow UI integration including overtake modules, and there are notes on a signal chain module in the source tree. Modules are installed through Schwung Manager on the device or the desktop installer, and the catalog is a JSON file at the repository root.

What are the rules for contributing to Schwung?

The main branch is protected and every change lands through a pull request passing three checks named host-tests, go and cross-compile, with direct pushes blocked. The contribution provenance policy asks you to disclose which AI coding tools you used, and contributions developed with Grok are not accepted.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/charlesvestal-schwung.svg)](https://hysenlabs.com/projects/charlesvestal-schwung)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/charlesvestal-schwung.svg)](https://hysenlabs.com/projects/charlesvestal-schwung)