# Synchrotron
Graph-based live audio manipulation engine implemented in Python
> [!NOTE]
> For the frontend web interface to interact with Synchrotron, go to [SynchrotronUI](https://synchrotron.thatother.dev) ([GitHub](https://github.com/ThatOtherAndrew/SynchrotronUI/)).
---
## What is it?
Synchrotron is all of the following:
- DSP (Digital Signal Processing) engine
- Audio router / muxer
- Synthesiser
- Audio effects engine
- MIDI instrument
- And more!
It's still very much a baby project, but make no mistake, it can already be pretty powerful! Take a look for yourself:
| [Hack Club Showcase - Synchrotron](https://youtu.be/wlhBz62t2zE) |
|----------------------------------------------------------------------------------------------------------------------------------|
| [](https://www.youtube.com/watch?v=wlhBz62t2zE) |
Synchrotron has been designed from the ground up with **maximum flexibility and interoperability in mind**, and as such, there are many ways to use Synchrotron and interact with the server.
This includes (click images to enlarge):
| Blender-inspired node editor UI | Fancy TUI Console | REST API | Python API |
|-------------------------------------------------------------------------|-------------------------------------------------------------------------|-------------------------------------------------------------------------|-------------------------------------------------------------------------|
| [](https://i.imgur.com/MXSbFcv.png) | [](https://i.imgur.com/t924jJd.png) | [](https://i.imgur.com/AUAx4xs.png) | [](https://i.imgur.com/j5xTHEa.png) |
The possibilities are endless - whether you wish to render audio to a WAV file on a remote server, or embed the Python package as a dependency for your desktop app. Use Synchrotron as a Python library, interact with its webserver's endpoints through an HTTP client, or use the elegant Synchrolang syntax to control it with just your keyboard.
---
## Installation
Synchrotron can be installed from this repository directly via [pip](https://packaging.python.org/en/latest/tutorials/installing-packages/):
```shell
pip install git+https://github.com/ThatOtherAndrew/Synchrotron
```
Of course, [uv](https://astral.sh/blog/uv) - the faster pip alternative - is also supported:
```shell
uv pip install git+https://github.com/ThatOtherAndrew/Synchrotron
```
## Startup
From the Python environment you installed Synchrotron in, you can start the server:
```shell
synchrotron-server
```
To start the console for a TUI client to interact with the server:
```shell
synchrotron-console
```
## Usage
Synchrotron provides a **Python API**, **[DSL](https://www.jetbrains.com/mps/concepts/domain-specific-languages/)**, and **REST API** for interacting with the *synchrotron server* - the component of Synchrotron which handles the audio rendering and playback.
For the humans, you can find a web-based user interface for Synchrotron at **[ThatOtherAndrew/SynchrotronUI](https://github.com/ThatOtherAndrew/SynchrotronUI)**.
## Random YouTube Video
I recorded myself at a pretty garden in Queens' College in Oxford yapping about dependency graphs: https://youtu.be/qkNqOcH2jWE
Raw data
{
"_id": null,
"home_page": null,
"name": "synchrotron",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "ThatOtherAndrew <andrew@thatother.dev>",
"keywords": "audio-processing, dsp, live-coding, synthesiser, synthesizer",
"author": null,
"author_email": "ThatOtherAndrew <andrew@thatother.dev>",
"download_url": "https://files.pythonhosted.org/packages/c8/d1/3fa057f527016d073ffaef0ee312e05ffc761622f6eec74f9ab8fc78a658/synchrotron-0.1.0.tar.gz",
"platform": null,
"description": "# Synchrotron\n\nGraph-based live audio manipulation engine implemented in Python\n\n> [!NOTE]\n> For the frontend web interface to interact with Synchrotron, go to [SynchrotronUI](https://synchrotron.thatother.dev) ([GitHub](https://github.com/ThatOtherAndrew/SynchrotronUI/)).\n\n---\n\n## What is it?\n\nSynchrotron is all of the following:\n- DSP (Digital Signal Processing) engine\n- Audio router / muxer\n- Synthesiser\n- Audio effects engine\n- MIDI instrument\n- And more!\n\nIt's still very much a baby project, but make no mistake, it can already be pretty powerful! Take a look for yourself:\n\n| [Hack Club Showcase - Synchrotron](https://youtu.be/wlhBz62t2zE) |\n|----------------------------------------------------------------------------------------------------------------------------------|\n| [](https://www.youtube.com/watch?v=wlhBz62t2zE) |\n\nSynchrotron has been designed from the ground up with **maximum flexibility and interoperability in mind**, and as such, there are many ways to use Synchrotron and interact with the server.\n\nThis includes (click images to enlarge):\n\n| Blender-inspired node editor UI | Fancy TUI Console | REST API | Python API |\n|-------------------------------------------------------------------------|-------------------------------------------------------------------------|-------------------------------------------------------------------------|-------------------------------------------------------------------------|\n| [](https://i.imgur.com/MXSbFcv.png) | [](https://i.imgur.com/t924jJd.png) | [](https://i.imgur.com/AUAx4xs.png) | [](https://i.imgur.com/j5xTHEa.png) |\n\nThe possibilities are endless - whether you wish to render audio to a WAV file on a remote server, or embed the Python package as a dependency for your desktop app. Use Synchrotron as a Python library, interact with its webserver's endpoints through an HTTP client, or use the elegant Synchrolang syntax to control it with just your keyboard.\n\n---\n\n## Installation\n\nSynchrotron can be installed from this repository directly via [pip](https://packaging.python.org/en/latest/tutorials/installing-packages/):\n\n```shell\npip install git+https://github.com/ThatOtherAndrew/Synchrotron\n```\n\nOf course, [uv](https://astral.sh/blog/uv) - the faster pip alternative - is also supported:\n\n```shell\nuv pip install git+https://github.com/ThatOtherAndrew/Synchrotron\n```\n\n## Startup\n\nFrom the Python environment you installed Synchrotron in, you can start the server:\n\n```shell\nsynchrotron-server\n```\n\nTo start the console for a TUI client to interact with the server:\n\n```shell\nsynchrotron-console\n```\n\n## Usage\n\nSynchrotron provides a **Python API**, **[DSL](https://www.jetbrains.com/mps/concepts/domain-specific-languages/)**, and **REST API** for interacting with the *synchrotron server* - the component of Synchrotron which handles the audio rendering and playback.\n\nFor the humans, you can find a web-based user interface for Synchrotron at **[ThatOtherAndrew/SynchrotronUI](https://github.com/ThatOtherAndrew/SynchrotronUI)**.\n\n## Random YouTube Video\n\nI recorded myself at a pretty garden in Queens' College in Oxford yapping about dependency graphs: https://youtu.be/qkNqOcH2jWE\n",
"bugtrack_url": null,
"license": null,
"summary": "Graph-based live audio manipulation engine implemented in Python",
"version": "0.1.0",
"project_urls": {
"Bug Reports": "https://github.com/ThatOtherAndrew/Synchrotron/issues",
"Homepage": "https://synchrotron.thatother.dev",
"Source": "https://github.com/ThatOtherAndrew/Synchrotron"
},
"split_keywords": [
"audio-processing",
" dsp",
" live-coding",
" synthesiser",
" synthesizer"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a2758794b462566181b63bc93435e6fa026fd50a4a17dbc18c3455c6d2339b95",
"md5": "f46f203f0319aa8dfcfafc138abc9825",
"sha256": "77f095da0ea633190ee33ea35320e7a51570915f36469530813dc7d006e46472"
},
"downloads": -1,
"filename": "synchrotron-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f46f203f0319aa8dfcfafc138abc9825",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 10982035,
"upload_time": "2025-08-05T00:18:54",
"upload_time_iso_8601": "2025-08-05T00:18:54.499601Z",
"url": "https://files.pythonhosted.org/packages/a2/75/8794b462566181b63bc93435e6fa026fd50a4a17dbc18c3455c6d2339b95/synchrotron-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c8d13fa057f527016d073ffaef0ee312e05ffc761622f6eec74f9ab8fc78a658",
"md5": "d9e03908d062901a4136914079d5427a",
"sha256": "86a0a674007a9a98bb309727cafa76c6ce364a3500c360867fb8296f10ec6a82"
},
"downloads": -1,
"filename": "synchrotron-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "d9e03908d062901a4136914079d5427a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 13921180,
"upload_time": "2025-08-05T00:18:57",
"upload_time_iso_8601": "2025-08-05T00:18:57.038448Z",
"url": "https://files.pythonhosted.org/packages/c8/d1/3fa057f527016d073ffaef0ee312e05ffc761622f6eec74f9ab8fc78a658/synchrotron-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-05 00:18:57",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ThatOtherAndrew",
"github_project": "Synchrotron",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "synchrotron"
}