Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Renardo

Live coding environment for Python - A modern fork of FoxDot for algorithmic music composition and live performance.

Renardo is currently going through a wide and deep refactoring toward version 1.0.

Features

  • Live Coding: Write and execute Python code in real-time to create music
  • Pattern-based Composition: Powerful pattern system for rhythmic and melodic structures
  • Multiple Backends:
    • SuperCollider integration for synthesis and audio processing
    • REAPER backend for advanced DAW integration
    • Ableton Live backend with Link synchronization
    • MIDI output support
  • Web-based Interface: Modern, responsive web client built with Svelte
  • Desktop Application: Optional Electron-based desktop app
  • Interactive Tutorials: Built-in tutorials in multiple languages (English, Spanish)
  • Extensible: Plugin system for custom instruments and effects
  • Resource Management: Library system for managing samples, FX chains, and instruments

Quick Start

Prerequisites

  • Python 3.9 or higher
  • SuperCollider (for audio synthesis)
  • uv (Python package manager) - recommended
  • REAPER (optional, for REAPER DAW integration)
  • Ableton Live (optional, for Ableton Live integration)

Installation

Using uv (recommended)

# Clone the repository
git clone https://github.com/yourusername/renardo.git
cd renardo

# Install with uv
uv pip install -e .

# Or run directly with uv
uv run renardo

Using pip

pip install renardo

First Run

# Launch Renardo with default settings
renardo

# Or use the CLI interface
uv run cli

# Interactive pipe mode
uv run cli --pipe

The web interface will automatically open at http://localhost:5000

Usage

Basic Live Coding Example

# Create a simple drum pattern
d1 >> play("x-o-")

# Add a bassline
b1 >> bass([0, 3, 5, 7], dur=1/2)

# Modify in real-time
d1 >> play("x-o-", amp=1.2)

# Stop everything
Clock.clear()

CLI Options

# Show all available commands
renardo --help
cli --help

# Start in pipe mode (for integration with other tools)
cli --pipe

# Launch with specific backend
renardo --backend supercollider
renardo --backend reaper
renardo --backend ableton

# Configure backend integration
renardo --configure-reaper

Architecture

Renardo is organized into several key modules:

renardo/
├── lib/              # Core library (patterns, players, effects)
├── sc_backend/       # SuperCollider integration
├── reaper_backend/   # REAPER DAW integration
├── ableton_backend/  # Ableton Live integration
├── midi_backend/     # MIDI output support
├── webserver/        # Flask-based web server
├── runtime/          # Runtime environment and state management
├── settings_manager/ # Configuration management
├── gatherer/         # Resource library system
├── tutorial/         # Interactive tutorials (en, es)
└── cli_entrypoint/   # Command-line interface

webclient/
├── src/              # Svelte web interface
├── electron/         # Electron desktop app wrapper
└── dist/             # Built web assets

Documentation

Tutorials

Renardo includes interactive tutorials accessible from the web interface:

  • English: /tutorial/en/
  • Spanish: /tutorial/es/

Topics covered:

  1. Introduction to live coding
  2. Playing notes and samples
  3. Algorithmic manipulation
  4. Using patterns
  5. Player attributes
  6. Clock management
  7. Advanced features (scales, groups, vars)
  8. SuperCollider instruments
  9. REAPER backend integration
  10. Ableton Live backend integration

Contributing

Contributions are welcome! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/amazing-feature)
  3. Commit your changes using Conventional Commits
    feat: add new pattern generator
    fix: resolve timing issue in Clock
    docs: update tutorial content
    
  4. Push to your branch (git push origin feat/amazing-feature)
  5. Open a Pull Request

We use Conventional Commits format

Reference

Key components:

  • Players: Objects that play patterns (p1, d1, b1, etc.)
  • Patterns: Sequence generators (P, PSum, PRand, etc.)
  • Clock: Global timing system
  • SynthDefs: SuperCollider instrument definitions
  • TimeVars: Variables that change over time

Configuration

Renardo uses TOML files for configuration:

# Default config location
~/.renardo/settings.toml

# Backend settings (REAPER, Ableton, etc.)
~/.renardo/reaper_backend.toml
~/.renardo/ableton_backend.toml

Example Configuration

[general]
backend = "supercollider"
auto_start = true

[supercollider]
port = 57120
audio_device = "default"

[reaper]
enabled = true
project_path = "~/Music/renardo_sessions"

[ableton_backend]
ABLETON_BACKEND_ENABLED = false

Backends

SuperCollider Backend

The default audio backend using SuperCollider for synthesis:

# Start SuperCollider
from renardo.sc_backend import SuperColliderInstance

sc = SuperColliderInstance()
sc.start()

# Use SuperCollider instruments
p1 >> pluck([0, 2, 4, 7])

REAPER Backend

Advanced DAW integration for professional production:

# Initialize REAPER backend
from renardo.reaper_backend import ReaperBackend

reaper = ReaperBackend()
reaper.configure()

# Create REAPER instruments
r1 >> ReaperInstrument("my_synth.RfxChain", notes=[0, 4, 7])

Ableton Live Backend

Deep integration with Ableton Live via pylive and Ableton Link:

# Initialize Ableton backend
from renardo.ableton_backend import create_ableton_instruments

# Scan Live set and create instruments
instruments = create_ableton_instruments()
bass = instruments['Bass']
synth = instruments['Synth']

# Play notes and control parameters
p1 >> bass.out([0, 3, 7], dur=1/2, filter_cutoff=80)
p2 >> synth.out([7, 9, 12], reverb_mix=0.5)

# Trigger clips
p3 >> bass.out(clip=P[0, 1, 2], dur=4)

# Automate parameters with TimeVar (300Hz!)
p1 >> synth.out(degree=0, filter_cutoff=var([20, 127], 8))

Features:

  • MIDI note output + OSC parameter control
  • Clip triggering and scene launching
  • TimeVar automation at 300Hz
  • Ableton Link tempo synchronization (dual-threaded clock)
  • Auto-discovery of tracks, devices, and parameters

See docs/ableton_backend.md for detailed documentation.

MIDI Backend

Output to external MIDI devices:

# Configure MIDI output
from renardo.midi_backend import MIDIOut

midi = MIDIOut("My MIDI Device")
m1 >> midi([60, 64, 67])  # C major chord

Web Client

The web interface provides:

  • Code Editor: Syntax highlighting, auto-completion
  • Console Output: Real-time feedback
  • Session Management: Save and load sessions
  • Settings Panel: Configure backends and preferences
  • Tutorial Browser: Access interactive tutorials
  • Resource Explorer: Browse samples and instruments

Development

cd webclient

# Install dependencies
npm install

# Run development server
npm run dev

# Build for production
npm run build

# Build Electron app
npm run build:electron

License

This project is licensed under the GNU General Public License v3.0 (GPL-3.0).

See the LICENSE file for details.

🙏 Acknowledgments

  • FoxDot: Original live coding environment by Ryan Kirkbride
  • SuperCollider: Synthesis engine
  • REAPER: Digital Audio Workstation
  • Ableton Live: Digital Audio Workstation
  • pylive and AbletonOSC: Ableton Live OSC control
  • All contributors to the Renardo project

Contact & Community

Happy live coding! 🎵

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

renardo-1.0.0a22.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

renardo-1.0.0a22-py3-none-any.whl (2.9 MB view details)

Uploaded Python 3

File details

Details for the file renardo-1.0.0a22.tar.gz.

File metadata

  • Download URL: renardo-1.0.0a22.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for renardo-1.0.0a22.tar.gz
Algorithm Hash digest
SHA256 155a77c283eebf90091d615985905a77742d6f924e5ecbd2a417d9606bdb6502
MD5 ca48c8fb903561a13dbf1cbbcb717b72
BLAKE2b-256 a6cd83559bdb5d73b0f1ec50d38adceb57e3d9ef2a07173379ef97ed32fdd880

See more details on using hashes here.

Provenance

The following attestation bundles were made for renardo-1.0.0a22.tar.gz:

Publisher: publish-renardo-pypi.yml on e-lie/renardo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file renardo-1.0.0a22-py3-none-any.whl.

File metadata

  • Download URL: renardo-1.0.0a22-py3-none-any.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for renardo-1.0.0a22-py3-none-any.whl
Algorithm Hash digest
SHA256 24cc3c1b416f63d3c3eac2b3a6115556a5a3fc446efd515dd7cb0e034343d9e4
MD5 8002131610ca6cba2c6ceac7724b3af0
BLAKE2b-256 e909863dce38f74e1a6c45aee689597c051719f70bd13f1bf84e72d5f9b8c9a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for renardo-1.0.0a22-py3-none-any.whl:

Publisher: publish-renardo-pypi.yml on e-lie/renardo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page