Rusty Pipes Logo
REST API Documentation

The Rusty Pipes REST API allows for remote control of the organ engine. By default, the API server listens on port 8080. All request bodies should be sent as application/json. Note that the API is only available once an organ has been loaded and is ready to play.

General

GET /organ Get organ info

Returns information about the currently loaded organ definition.

Response Model (200):
{ "name": "string" }
POST /panic MIDI Panic

Executes the MIDI Panic function (All Notes Off). Use this if notes get stuck.

Audio

GET /audio/settings Get audio settings

Get current audio configuration and status.

Response Model (200):
{ "active_reverb_index": 0, // Integer or null "gain": 0.0, // Float "polyphony": 0, // Integer "reverb_mix": 0.0, // Float "is_recording_audio": false, "is_recording_midi": false }
POST /audio/gain Set Master Gain

Set the master output volume (0.0 - 2.0).

Request Body:
{ "value": 0.4 // Float }
POST /audio/polyphony Set Polyphony

Set the polyphony limit (minimum 1).

Request Body:
{ "value": 1024 // Integer passed as value }
GET /audio/reverbs List Reverbs

Get available Impulse Response (Reverb) files.

Response Model (200):
[ { "index": 0, "name": "Cathedral.wav" } ]
POST /audio/reverbs/select Select Reverb

Set active Reverb by index. Use -1 to disable reverb.

Request Body:
{ "index": 0 // Integer }
POST /audio/reverbs/mix Set Reverb Mix

Set Reverb wet/dry mix (0.0 - 1.0).

Request Body:
{ "mix": 0.5 // Float }

Stops

GET /stops List stops

Returns a list of all stops and their currently enabled virtual channels.

Response Model (200):
[ { "index": 0, "name": "Principal 8'", "active_channels": [ 0, 1 ] // Array of active channel IDs (0-15) } ]
POST /stops/{stop_id}/channels/{channel_id}

Enables or disables a specific stop for a specific virtual MIDI channel.

Parameters:
stop_idIndex of the stop (Integer)
channel_idVirtual MIDI Channel 0-15 (Integer)
Request Body:
{ "active": true // Boolean }

Tremulants

GET /tremulants List tremulants

Get list of Tremulants and their status.

Response Model (200):
[ { "id": "string", "name": "string", "active": true } ]
POST /tremulants/{trem_id} Toggle tremulant

Enable/Disable a Tremulant by ID.

Parameters:
trem_idTremulant ID (String)
Request Body:
{ "active": true // Boolean }

Presets

POST /presets/{slot_id}/load Load Preset

Recalls a stop mapping preset (1-12).

Parameters:
slot_idPreset Slot ID 1-12 (Integer)
POST /presets/{slot_id}/save Save Preset

Saves the current mapping to a preset (1-12).

Parameters:
slot_idPreset Slot ID 1-12 (Integer)
Request Body:
{ "name": "My Preset Name" // String }

Recording

POST /record/audio Toggle Audio Recording

Start or Stop Audio (WAV) Recording.

Request Body:
{ "active": true // Boolean: true to start, false to stop }
POST /record/midi Toggle MIDI Recording

Start or Stop MIDI Recording.

Request Body:
{ "active": true // Boolean: true to start, false to stop }