The Objective-C inspired live coding synthesizer.

You don't need a flashy GUI. Just weave polyrhythm and acid baseline with brackets and semi-colon. Polynomial-C is a bizarre live coding instrument born for Syrobonkers.

The Code

Talk is cheap. Show me the code.

poly_acid_test.m

[tb303 play];
[tb303 setResonance:0.9];
[tb303 setFrequency:55.0];

async {
    float cutoff = 0.1;
    while(true) {
        [tb303 setCutoff:cutoff];
        [self wait:0.25];
        if (cutoff < 0.8) { cutoff = cutoff + 0.2; }
        else { cutoff = 0.1; }
    }
}

while(true) {
    [sampler setRate:1.5];
    [sampler play:"AmenBreak"];
    [self wait:0.375];
}
                            

Cheat Sheet

Quick reference for objects, methods, and magic constants.

CategorySyntax / MethodsDescription
Core Syntax
[receiver method:value];
async { ... }
int, float, string, array
Objective-C style message passing.
Spawns a new parallel thread for polyrhythms.
Statically typed variable declarations.
tb303
[tb303 play];
[tb303 release];
[tb303 setFrequency:110.0];
[tb303 setCutoff:0.85];
[tb303 setResonance:Maximum];
Triggers the synthesizer envelope.
Releases and stops the synthesizer.
Sets the oscillator pitch in Hz.
Adjusts the low-pass filter (0.0 to 1.0).
Adjusts the filter resonance.
sampler
[sampler play:"Kick"];
[sampler setRate:1.5];
Plays a .wav file from the project root.
Changes playback speed and pitch.
self
[self wait:0.25];
[self customMethod];
Pauses the current thread (in seconds).
Executes a user-defined void function.
ConstantsMaximumMinimumAcidBraindanceFrequencyHighBuilt-in float variables designed specifically for quick Braindance sound shaping.

Objective-C Syntax

Hardcore audio engine controlled by [receiver message] paradigm.

True Concurrency

Don't get tied up to a single timeline. Spin dozens of loops simultaneously in perfectly isolated threads to create polyrhythms.

Built-in TB-303 & Sampler

Built-in analog modeling synth and .wav sampler ready to use immediately without separate plug-in settings.

Download & Quick Start

How to Acid:

  1. Mount Polynomial-C.dmg and copy the app to the Applications folder.
  2. Put Kick.wav or your favorite sample in the project root.
  3. Press Cmd + R, enter [tb303 play]; and click Compile and Run to turn on the speaker.
SYS_NOTE // QUARANTINE_OVERRIDEIf macOS prevents the app from opening, simply Right-Click ➔ Open the app, or run xattr -cr /Applications/Polynomial-C.app in your terminal to clear the quarantine flag.