Overview

Orange Music Player includes a full Audio Unit (AU) plugin host. Any AU effect plugin installed on your Mac can be loaded into Orange's effect chain and applied to your music in real time. This lets you use professional studio plugins — EQs, compressors, reverbs, saturators, and more — alongside Orange's built-in effects.

8-Slot Chain

Mix and match built-in effects and AU plugins in any order across 8 configurable slots.

Auto-Discovery

Scans your system for all installed AU effect plugins. New plugins appear automatically.

Native Plugin UI

Opens the plugin's own interface in a floating window. Falls back to a generic parameter view if unavailable.

Full State Persistence

Every plugin's parameters and state are saved and restored between sessions automatically.

Non-Destructive

All processing is real-time. Your audio files are never modified.

Script Control

Inspect the chain, toggle bypass, tweak parameters, and load presets from JavaScript.

Signal Flow

Audio flows from the player through each occupied slot in order, then to the system output. Bypassed slots are skipped. Empty slots are ignored.

Player
Slot 1
Slot 2
Slot 3
...
Slot 8
Output

Effect Chain

The effect chain is the heart of the audio processing pipeline. It provides 8 slots that can each hold either a built-in effect or a third-party AU plugin.

Slot 1 10-Band EQ
Slot 2 · AU FabFilter Pro-Q
Slot 3 Reverb
Slot 4 · AU Valhalla Room
Slot 5 Empty
Slot 6 Empty
Slot 7 Empty
Slot 8 Empty

Adding Effects

Open the Audio Effects panel from the menu bar (Playback → Audio Effects or Cmd+Shift+E). Click the + button on any empty slot to open the plugin picker. You'll see two tabs:

  • Built-in — Orange's four built-in effect types (EQ, Reverb, Delay, Pitch/Speed)
  • Audio Units — All AU effect plugins installed on your system, grouped by manufacturer

Select a plugin to insert it into the slot. AU plugins load asynchronously — playback continues uninterrupted while the plugin initializes.

Reordering

Drag and drop slots to reorder them. The effect chain rebuilds automatically. Signal flow always follows slot order from top to bottom (1 → 8).

Bypass

Click the power icon on any slot to bypass it. A bypassed effect is removed from the signal path without being unloaded — its state and parameters are preserved. Click again to re-enable.

Bypassing is instant and glitch-free. Use it to A/B compare your chain with and without specific effects.

Built-In Effects

Orange ships with four built-in audio effects. These load instantly and have dedicated UIs in the effects panel.

EffectDescriptionKey Parameters
EQ 10-band parametric equalizer Per-band gain, built-in presets (Flat, Classical, Vocal Boost), custom presets
Reverb Convolution reverb with 13 room types Preset (Small Room, Large Hall, Cathedral, Plate, etc.), Wet/Dry mix
Delay Stereo delay with feedback Delay time, Feedback, Wet/Dry mix, Low-pass cutoff
Pitch / Speed Independent pitch shift and tempo change Pitch (−2400 to +2400 cents), Rate (0.5x to 2.0x)

AU Plugins

Any Audio Unit effect (kAudioUnitType_Effect) installed on your Mac is automatically discovered and available in the plugin picker. Orange scans for AU components at launch and watches for newly installed plugins.

Supported Plugin Types

Orange hosts AU effect plugins only (type aufx). Instrument plugins (aumu) and MIDI processors are not supported. Both Apple Silicon native and Rosetta-translated plugins work.

Plugin UI

When you click the sliders icon on an AU slot, Orange opens the plugin's user interface in a floating panel. The panel:

  • Uses the plugin's native CoreAudioKit view if available
  • Falls back to a generic parameter view with sliders for every parameter
  • Floats above other windows and is available in all Spaces
  • Can be resized, and its size follows the plugin's preferred dimensions

Parameters

Every AU plugin exposes a parameter tree. Orange reads this tree to populate the generic parameter UI. Parameters are organized into groups (if the plugin defines them) and displayed as labeled sliders with real-time value readouts.

Each parameter has:

PropertyDescription
addressUnique numeric identifier used for scripting access
displayNameHuman-readable label
minValue / maxValueValid range for the parameter
valueCurrent value (read/write, updates in real time)

Factory Presets

Many AU plugins ship with factory presets. Orange can load these via the scripting API:

// Load by preset number
orange.effects.loadPreset(0, 0, 'factory');

// Load by preset name
orange.effects.loadPreset(0, 'Warm Vocal', 'factory');

State & Persistence

Orange automatically saves and restores the complete state of your effect chain:

  • Chain configuration (which slots are filled, effect types, order, bypass state) is saved as JSON
  • AU plugin state (all parameter values + any internal plugin data) is saved as a binary property list per plugin instance
  • Everything is stored in ~/Library/Application Support/OrangeMusicPlayer/

When you relaunch Orange, your entire effect chain — including all AU plugin settings — is restored exactly as you left it.

Storage Locations

DataFormatPath
Chain config JSON EffectChains/Default.json
AU plugin states Binary plist PluginPresets/<uuid>.plist

Combined Presets

Orange includes a combined preset system that captures the state of all built-in effects at once. These let you switch between complete effect configurations instantly.

Built-In Presets

PresetDescription
Slowed + ReverbSlowed tempo with large hall reverb for a dreamy aesthetic
Concert HallSimulates a live concert hall environment
Bathroom SingerTight room reverb with slight echo
NightcoreIncreased pitch and tempo for the Nightcore effect
Practice SlowReduced speed without pitch change for learning songs
Echo ChamberHeavy delay and feedback for atmospheric listening

You can also save your own custom presets. Custom presets capture the full state of EQ, Reverb, Delay, and Pitch/Speed settings.

Combined presets capture built-in effects only. AU plugin states are saved independently per slot and persist automatically across sessions.

Scripting Integration

The entire effect chain is accessible from the JavaScript scripting API via orange.effects. You can inspect the chain, toggle bypass, read and write parameters, and load factory presets programmatically.

// Inspect the chain
var slots = orange.effects.chain();
for (var i = 0; i < slots.length; i++) {
    if (slots[i]) {
        console.log(
            'Slot ' + i + ': ' + slots[i].name +
            ' (' + slots[i].manufacturer + ')' +
            (slots[i].isBypassed ? ' [BYPASSED]' : '')
        );
    }
}

// Toggle bypass on slot 0
orange.effects.bypass(0, true);

// Tweak a parameter (slot index, param address, value)
orange.effects.setParameter(1, 100, 0.75);

// Read a parameter
var val = orange.effects.getParameter(1, 100);
console.log('Param 100 = ' + val);

See the full effects scripting reference for details on all available methods.