Skip to main content

circuit-tracks-tools

PyPI Python License: MIT Built with Claude Code

A Python library and MCP server for controlling a Novation Circuit Tracks synthesizer via MIDI. Control your Circuit Tracks from Python scripts or let an AI agent create music through natural language — just like pair-programming, but for music.

Features

  • Song format — create full songs (patterns, patches, macros, FX) in a single call and export to the device
  • Synth & drum programming — select patches, play notes/chords, tweak parameters via CC/NRPN
  • Patch builder — construct synth patches from scratch with oscillators, filters, envelopes, mod matrix, and macros
  • Pattern sequencing — create and edit step-sequencer patterns across synth, drum, and MIDI tracks with p-lock automation
  • Patch editing — read, modify, and save synth patches; load .syx patch files
  • Project management — read and write .ncs project files; transfer projects to and from the device over SysEx
  • Parameter morphing — smoothly interpolate synth, drum, and project parameters over time
  • Macro control — configure and sweep macro knobs for expressive parameter control
  • Sidechain automation — automate volume ducking across all 4 tracks with preset sidechain curves
  • Scale quantization — quantize notes to any of the Circuit Tracks' built-in scales
  • Live transport — start/stop sequencer, set BPM, mute tracks, queue patterns

Requirements

  • Python 3.11+
  • A Novation Circuit Tracks connected via USB
  • Tested with firmware 1.2.1 (latest as of April 2026) — other versions may work but are untested

Installation

As a Python library

pip install circuit-tracks-tools

With MCP server (for AI agents)

pip install circuit-tracks-tools[mcp]

Quick Start: Python Library

from circuit_tracks import MidiConnection, PatchBuilder

# Connect to the Circuit Tracks
midi = MidiConnection()
midi.connect("Circuit Tracks MIDI")

# Play a C major chord on Synth 1
midi.note_on(channel=0, note=60, velocity=100)
midi.note_on(channel=0, note=64, velocity=100)
midi.note_on(channel=0, note=67, velocity=100)

# Build a pad patch from scratch
patch = PatchBuilder.preset_pad(cutoff=80, attack=40, release=90)

See the API Reference for full library documentation.

Quick Start: MCP Server

The MCP server runs as a subprocess launched by your AI agent. The easiest setup uses uvx (requires uv):

Claude Code

Add to your .mcp.json:

{
  "mcpServers": {
    "circuit-tracks": {
      "command": "uvx",
      "args": ["--from", "circuit-tracks-tools[mcp]", "circuit-tracks-mcp"]
    }
  }
}

Then talk to Claude:

"Let's create a dark techno loop"

The agent will program patterns on your Circuit Tracks as if a human were doing it — selecting sounds, writing sequences, adjusting parameters — and iterate with you on the result.

Claude Desktop (macOS)

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "circuit-tracks": {
      "command": "uvx",
      "args": ["--from", "circuit-tracks-tools[mcp]", "circuit-tracks-mcp"]
    }
  }
}

Claude Desktop (Windows)

Edit %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "circuit-tracks": {
      "command": "uvx",
      "args": ["--from", "circuit-tracks-tools[mcp]", "circuit-tracks-mcp"]
    }
  }
}

Without uvx

If you prefer a manual setup, install into a virtual environment and use the full path:

{
  "mcpServers": {
    "circuit-tracks": {
      "command": "/path/to/venv/bin/circuit-tracks-mcp"
    }
  }
}

Windows Setup

The library and MCP server work on Windows. Install Python 3.11+ from python.org and then:

pip install circuit-tracks-tools[mcp]

The Circuit Tracks appears as a USB MIDI device automatically — no additional driver installation is needed. You can verify it shows up in Device Manager under "Sound, video and game controllers".

Build from Source

git clone https://github.com/namirsab/circuit-tracks-tools.git
cd circuit-tracks-tools
python -m venv venv
source venv/bin/activate  # or venv\Scripts\activate on Windows
pip install -e ".[mcp,dev]"

# Set up pre-commit hooks
pre-commit install

# Run tests (no hardware required — MIDI is mocked)
pytest

# Build a distributable wheel
pip install build
python -m build

Project Structure

src/circuit_tracks/   # Standalone library for Circuit Tracks control
  midi.py             # MIDI connection handling
  sequencer.py        # Pattern/step sequencer engine
  patch.py            # Synth patch read/write
  patch_builder.py    # Patch construction helpers
  constants.py        # CC numbers, NRPN mappings, channel assignments
  macros.py           # Macro knob configuration
  ncs_parser.py       # .ncs project file parser
  ncs_transfer.py     # SysEx project/patch transfer
  song.py             # Song format and device export
  song_schema.py      # Pydantic models and JSON Schema for song format
  morph.py            # Parameter morphing engine
src/circuit_mcp/      # MCP server (thin wrapper over the library)
  server.py           # All MCP tool definitions
docs/
  ncs-format.md       # Reverse-engineered .ncs file format spec

License

MIT

Disclaimer

This is an unofficial, non-commercial fan project by Namir Sayed-Ahmad Baraza. It is not affiliated with, endorsed, or sponsored by Novation or Focusrite plc. "Circuit Tracks", "Novation", and "Components" are trademarks of their respective owners, used here only to describe compatibility. The .ncs file format and SysEx protocol were independently reverse-engineered from files and MIDI traffic produced by the device; no proprietary code or documentation was used. The bundled Web Tracks browser groovebox ships only code-generated samples, patches, and projects.

Metadata

Release files for circuit-tracks-tools 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for circuit-tracks-tools 0.3.0
File Size Uploaded
circuit_tracks_tools-0.3.0.tar.gz 3.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for circuit-tracks-tools 0.3.0
File Interpreter ABI Platform
circuit_tracks_tools-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.2 MB

Release files / circuit_tracks_tools-0.3.0.tar.gz

Download URL circuit_tracks_tools-0.3.0.tar.gz
Size 3.1 MB
Tags Source
SHA-256 checksum
How to use checksums
f5512265b7621f4572848e38cb4b2c1a5994e5fbce6ef336f3e4aaf4b575c5d5
BLAKE2b-256 checksum
How to use checksums
1002418ee551e1b03b1f0832552620bf52d74ffc37008b31c5aa262b1f295bd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 11, 2026.

Transparency log

Release files / circuit_tracks_tools-0.3.0-py3-none-any.whl

Download URL circuit_tracks_tools-0.3.0-py3-none-any.whl
Size 92.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fbc6fe4bbcc9770a4b560db7e117861e1eb080db868c259f15e73be7ca261a3d
BLAKE2b-256 checksum
How to use checksums
305331afe2ab372b57215a22e620ec1df91892aa4a7082614c750e6eb207bacd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page