July 2026

Anomalies

Anomalies explores happy accidents in the Orpheus audio graph and generative engine — bugs turned into features, edge cases preserved as creative tools, and unexpected behaviors that earned a permanent spot in the DSP pipeline.

• Track 3

Stay Asleep

Built in 69933cf98 as StayAsleepVibe.kt: a one-pass sound walk that plays once and hands off — OSC bass sliding from the fourth down to the root under a single ringing kick, DX keys answering at twice the bass’s rate, off-eighth re-picks in the alley and the chase, street footsteps, a passing train, sirens, and one spoken line held back for the closing awake section. That line was tuned in 0b079532c and c4bf61abc so the setup and punchline land once, on the last downbeat, instead of repeating through the chase. A matching visualizer shipped alongside it: FaceMorphViz.kt draws a news broadcast on an old TV set, rabbit ears and all, whose story graphic is a face that dissolves eyes-first as the song plays — surging on loud passages, snapping to black-and-white on kicks, tearing on drum hits — introduced in 1c6bb331c.

View commit

A slow blues vibe on an empty street that needs help waking up. A new viz that shows what’s really going on behind the scenes.My homage to a classic.

#human #pulsar #dj #tv #noir
• Track 2

Rust Belt

Rust Belt is a swampy heartland-rock pocket at 87 BPM in D Dorian inspired by the Pretenders classic. The bass evolves the pocket, adding a round, fingered two-bar hook that never transposes until the chorus asks it to (IV → bVII → i; in dorian the major IV is the money chord).

What shipped. e6e1b9c53 added three pieces of arrangement machinery that were built together and share one wire: a storm voice, a per-edge transition-effect bank, and a per-track breathe cycle.

The storm is a 9th Pulsar voice, not a graph unit. pulsar_storm.h is 1,272 lines, seeded per instance and driven only by pulsar_rng, so a given seed always renders the same audio — no allocation, no statics, no logging after Init.

Rain is two fields at once, and voicing only one of them is what makes it read as a leak. Near field: Bernoulli dust, each drop a one-sample impulse into a band-pass it re-tunes on the way in, so every drop is its own size. Far field: a diffuse wash of the thousands of drops too distant to resolve, dark and gusting, rising super-linearly so it’s a hint behind a drizzle and the body of a downpour. Density is mapped geometrically, not linearly — a linear sweep spends its whole bottom half above the rate at which the ear stops resolving individual drops. The particle field and the smooth-random LFO are both adapted from Mutable Instruments Plaits (MIT, © Emilie Gillet).

Thunder is a five-octave fractal sum starting at 0.12 Hz (8.3 s) and doubling up to 1.9 Hz, undulating deep enough that troughs land 20 dB under the crests — the front swells and recedes as it travels rather than sitting at one level. Distance darkens the roll, but only so far: the pulsar’s output high-pass sits at 55 Hz, and a deeper tilt would push a far strike’s whole band underneath it and simply delete the thunder.

Lightning is a cascade, not a hit — and it falls. Four transients step down 3400 → 1900 → 950 → 420 Hz on widening gaps (32 / 42 / 52 ms), with tails that lengthen on the way down (35 → 130 ms) because a lower band rings longer. The tails overlap the next onset on purpose: the “clap-clap” is carried by the attacks, and a strike that went silent between steps was four ticks. A band-pass alone was a filter ping — the textbook synthetic transient, and exactly what the ear test called synthy — so a parallel grit path gives every hit a torn broadband body beside its pitch, a crackle modulator rips its amplitude, and a Lorenz stream wanders both the centre and the pitch/grit balance so no two cracks are the same shape. The descent runs crack → tear → boom → sub without a hole in it.

Then terrain echo: five irregularly spaced taps (37 / 71 / 118 / 179 / 247 ms) off one mono line with no feedback, so the tail is bounded by the longest tap by construction. The spacing is deliberately non-harmonic — evenly spaced taps comb, and a doubling chain reads as a tempo-synced delay rather than as ground. Distance is the whole dial and it runs the right way round: a bolt directly overhead barely echoes, a distant one answers off the hills for a quarter second.

Breathe is what makes it more than a weather layer. A bar-clocked swell sinks a track’s gain toward a floor and closes its tone with it, then rises back. In downpour the kit drops out and everyone else keeps playing under the roar — buried, not absent — breathing on co-prime periods of 2, 3 and 5 bars, so their swells only re-converge every 30 bars, far longer than the section lives. The ensemble audibly decoheres instead of just getting quieter. Then cloud break snaps every voice onto one shared 3-bar breath and walks the kit back in under full rain: the band reassembles in a single move. bars = 0 is exactly unity — the caller skips the audio path rather than multiplying by a computed 1.0 — so a vibe with no breathe renders bit-identically to a build without the feature.

68b00e82d wired the storm into the arrangement as one deliberate lap instead of a weighted graph: every section is worth hearing, and the downpour is worth hearing exactly once, which is also what pins the song near three minutes. 1439739 pushed the cloud break’s energy to 0.90 — above the verse it returns to, so the peak of the storm reads as a peak instead of a lull — and stretched its exit ramp to three bars so the macros have room to walk home before the band arrives. Recorded a few hours later.

View commit

New vibe to showcase the weather effects. Thunderclaps, rolling thunder and evolving rain intensity integrate with the lick as it mutates with the storm. Inspired by the live music playing at Barrel House Saloon in Sandusky, OH, watching the thunder and lightning roll in over Lake Erie.

#human #pulsar #dj #storm #anomaly
• Track 1

Lost in Space

Root-caused in pulsar_handoff.h: drum-lead BREAK handoffs duck every melodic track so the drummer can solo, but nothing exempted the drummer’s own tracks when they were also typed Melodic, which is exactly LostInSpaceVibe.kt’s situation (all 8 tracks Melodic, none Percussive). Fixed in e3ed37a3, which also built the Lost in Space Anomaly, a tunable ramp-down / near-silent-floor / ramp-up gain envelope layered on top, not the bug left in place. A night later, 78863406 generalized the idea into 7 Master* anomaly effects (Tape, Scratch, Filter, Crossfade, Cut, Swell, Wah). Full story on the blog.

View commit

I’ve used the term Anomaly for a long time to describe issues I see in apps.This one inspired my next set of features.

#human #pulsar #dj #anomaly
April 2026

RIF

This album includes jams from the new Orphic-DJ app that brings the Pulsar Generative Sequencer to Android and IOS. Paired with the DJ Panel, the Leslie, and a Timer, music of any style can evolve according to the user’s input and taste. Built as a standalone app using a separate audio graph, it shares plugins and panels with Orphic-FM.

New Drop effects in the DJ Panel provide Coachella-inspired sounds and graphics. Arrangements are constructed in Kotlin with a data hierarchy allowing sounds to be assigned to tracks, which are assembled into band mates who perform based on the characteristics of the song, individual, and user input to produce flowing and evolving musiç.

In this app, everything is left to chance, and Markov chains are used to define probabilities that generate sounds and compositions. A lot can go wrong with this setup, but the goal is to provide space and room for creativity, while defining guidelines and constraints to manage the overall flow and create something that is compelling.

• Track 2

One Shot

Extremely cool drop sound embellishment synced flawlessly with turntable spin physics provides a fun, musical experience on all platforms.

View commit

Coachella-inspired DJ Drop features implemented in a day by 4.7.

#human #pulsar #dj #drops
• Track 1

Bell Tolls

Comprehensive song arrangement structure defined in PulsarVibe.kt. This track also highlights the power of the four knobs — Energy, Complexity, Mood, and Space — for shaping unique, compelling sounds from the Pulsar engine.

View commit

Never send to know for whom the bell tolls; it tolls for thee- John Donne (1624)

#human #pulsar #dj #drops
• Track 3

Ant Hill

Nice demonstration of using the built-in timer to control the arrangement and auto fade out at the end.

View commit

All in all, we are all just ants on the hill.

#human #pulsar #dj #drops #ants
March 2026

0-2-1

0-2-1 marks the 1.0 release of Orphic-FM. The big architectural shift: a C++ thin audio bus that wraps the Mutable Instruments OSS DSP code directly, replacing the previous Kotlin-only signal path. This unlocks native performance on all platforms (Android, iOS, Desktop) and makes it trivial for Claude to wire up new instruments against the MI engines.

• Track 5

Dog House

Dog House is built on the Pulsar engine’s transformation from a beat machine into a generative song arrangement engine. At its core, Markov chord progressions drive the harmonic movement — weighted probability matrices determine which chord follows the next, so no two plays through the same section sound identical. The arrangement is a 6-section graph (intro → verse → chorus → solo → breakdown → outro) where transitions between sections are also probabilistic, creating songs that follow a familiar blues arc but never repeat exactly.

Four virtual band members — Drummer, Bassist, Keys, and FX — interact through personality traits (loudness, creativity, swing, drag) and handoff/pull-in matrices that govern who plays lead and who locks in behind them. Each member runs 32-step patterns with per-track bar strategies (Mutate, Fill, Call & Response) that evolve the patterns over time. In the solo section, Jam mode kicks in — band members lock into combos and riff on a shared lick, mutating it with each pass to create the spontaneous call-and-response feel of a live session. Dedicated Pulsar delay and reverb effect units (independent of the main voice chain) add spatial depth, while per-track mod LFOs and hold-step logic create evolving textures and drones beneath the arrangement.

This track is also the debut of the standalone DJ App, which packages Orphic modules (Pulsar, DJ turntable, Leslie, and Distortion) into a mobile-friendly UX with full Media Session integration across Android, iOS, and macOS — complete with a foreground service to keep the jam alive when backgrounded.

View commit

Phrygian jam session using DJ to add some Coachella inspired texture.

#human #pulsar #DJ #Coachella
• Track 3

Itchy Scratchy

Itchy Scratchy puts the new DJ turntable front and center. The C++ DSP layer captures audio into a circular buffer and plays it back with cubic Hermite interpolation, giving scratches that warm, vinyl-like pitch response. Each deck can tap any source — Synth, Drums, Bass, or Master — and a constant-power crossfader blends between them without volume dips at center. On the Kotlin side, an MVI ViewModel drives a 60Hz physics simulation for platter momentum, while the Compose UI renders radial waveform platters and a vertical crossfader in the Cleveland Guardians palette.

View commit

New dual turntable module with scratch physics and crossfade bring DJ-style performance to the synth engine.

#human #dj #turntable #scratch
• Track 4

Lazy Susan

Lazy Susan showcases the new Horn (Leslie rotary speaker) DSP effect. The C++ engine splits the input through a Linkwitz-Riley crossover into separate horn and drum rotor channels, each spinning with independent inertia to model the real-world lag of heavy rotating elements. Stereo amplitude modulation recreates the Doppler-like swirl that defines the Leslie sound. On the Kotlin side, a physics-based animation drives the rotor visuals in the HornPanel, with tactile controls for Speed, Ratio, Depth, Amount, Mix, and Brake. Rotor phase and audio peaks feed back into the engine’s visualization ring buffers, so you can watch the rotors spin in sync with what you hear.

View commit

The Leslie Horn Panel adds chorus you can feel with your ears. Headphones on for this one.

#human #leslie #cowbell
• Track 2

Insight

Insight showcases the new portamento and legato behavior in the bass unit. A three-tier gate system now classifies each step: rest (≤0.3), slide (0.3–0.7), or normal trigger (>0.7). During slide steps, pitch smoothing (portamento) glides between notes with the glide time controlled by the envelope parameter. The envelope generator was updated to hold a sustain floor while the gate stays open, enabling smooth legato transitions without retriggering. The trigger logic skips retriggering entirely on slide steps, allowing the signal to flow continuously — the bass line breathes instead of stuttering between notes.

View commit

Sliding into the groove. Portamento and legato bring the bass to life with smooth pitch transitions and sustained expression.

#human #bass #portamento #bugs
• Track 1

WYSIWYG

WYSIWYG is the first track produced entirely on the new C++ audio bus — the result of a massive engine migration that removed JSyn and all Kotlin DSP infrastructure, deleting ~28,000 lines of code across 214 files. Every plugin was stripped down to a pure state container that forwards parameters to C++ via NativeDspBridge, unifying Desktop (JNI + miniaudio), Android (Oboe), and WASM (Emscripten Worker) under a single native engine. The hard-clipped master output was replaced with tanh() soft saturation, letting the Bassline funk and PolyLFO orchestra stack without digital distortion. The signal visualization reads directly from the C++ peak monitor flow, giving a true picture of what the sound actually looks like — what you see is what you get.

View commit

Seeing is believing. A Bassline funk combined with a PolyLFO orchestra produces sonic bliss.

#human #bass #signal-viz #lfo
February 2026

Crossing the Chasm

Crossing the Chasm was feature-driven – still Kotlin, but with a new focus on front-end architecture and shipping as many features as possible. Self-registering UI panels, Panel Sets, the full Plaits engine suite, Dattorro plate reverb, speech synthesis, the Marbles-based Flux module, MediaPipe hand tracking, and ASL Maestro Mode all landed during this album. The codebase went from prototype to something resembling a real product.

• Track 5

The Balch Hotel

Written at the Balch Hotel in Dufur, Oregon with Mt. Hood visible in the background. The day before (February 27th), the Mt. Hood lava visualization was added to the synth and rendering performance was optimized. On recording day, control event handling was unified via setPluginControl. The cozy and charming 1907 hotel room, watching the sunset behind Mt. Hood in the window with my fabulous wife Benedicte, was captured perfectly in this visualization and song.

View commit

This was written in Dufur, OR at the fabulous Balch Hotel with Mt. Hood in the background.

#human #strings #bender #MtHood
• Track 4

Goodnight Brasi

This track showcases 4 new oscillators and the Bender toy on Desktop. The song was inspired by the big Block news that day, which left the community reeling: February 26th. A Aquarium visualization was added to the synth along with enhanced AI agent integration. The aquarium for some reason reminded of The GodFather. I experimented with an AR but so far that is not working as expected. The gesture control is still a huge WIP as it easily get confused on M,S and H.

View commit

This song features 4 new oscillators and a new Bender toy on Desktop. Orpheus sleeps above the fishes.

#human #bender #strings #looper #fishes
• Track 3

Handwavey

The first track performed using Maestro Mode – conducting the synth with hand gestures via MediaPipe. Camera-based hand tracking was added on February 21st, along with CPU-saving inactive DSP plugin disabling. On recording day (Feb 22nd), Maestro Mode was reworked to use individual voice gating with Thumbs-Up hold control, ASL gesture control routing was made context-dependent, and state snapshotting was centralized for REPL and gestures. The core:foundation module had also been decomposed into specialized modules with a JVM 21 upgrade just two days prior. The aspect ratio (1006/1080) captures the portrait-mode camera view of the hand tracking in action.

View commit

MediaPipe + ML + ASL = Maestro Mode. In this master-POS, Orpheus is accompanied by the Ant-Band and conducted for the first time using the new ASL Maestro Feature. This song is sponsored by the Terro.

#human #maestro #strings #Ant-Band
• Track 2

Piece of Ice Cream Cake

A Valentine’s Day session with TTS and the brand-new Flux module. On February 13th, the full Marbles engine was implemented in Flux, self-registering UI panels were introduced (decoupling UI from layout), the Speech Panel got an animated multi-phase readout with avatar animation, and Panel Sets were added for UI layout management. On recording day (Feb 14th), the codebase saw keyboard input decoupled from ViewModels, SharingStarted strategy made configurable, and feature documentation centralized into SynthFeature. The front-end architecture was maturing fast.

View commit

Orpheus was feeling a little Pink on Valentines day and decided to chill with a piece of Ice Cream Cake.

#human #tts #flux #delay #reverb
• Track 1

6-7

Orpheus speaks for the first time. The Speech Synthesis Engine and TTS Player were committed on February 8th – the same day this track was recorded. The day before saw a massive Plaits engine integration: five new physical modeling and granular synth engines, complete gain staging, percussive mode, audio-rate modulation, and the Dattorro plate reverb (ported from Mutable Instruments Rings). The reverb and delay atmosphere in this track are the brand-new effects getting their first real workout. Also notable: audio thread heap allocations were eliminated that same day, a critical performance fix.

View commit

Orpheus utters his first words, using his new Plaits-inspired speech synthesis module. A healthy dose of reverb with a touch of delay and lfo provide the atmosphere for this new timeless classic fad hit.

#human #speech #reverb #delay #lfo
February 2026

Bootstrap

Bootstrap was cut on a raw prototype – all Kotlin, all the time. The synth ran on JSyn for desktop audio, had 8 oscillators, a Rings-inspired resonator, an 808-style drum machine, and a brand-new AI agent that could barely hold a tune. CPU was slow, the architecture was monolithic, and every recording session doubled as a stress test. By the end of this album the Ports DSL, plugin system, and multi-model AI support had all taken shape.

• Track 1

Encapsulation

This track was recorded in the middle of the biggest architecture overhaul of the Bootstrap era. The Ports DSL – a type-safe nested DSL for defining DSP port connections – was taking shape, along with PortRegistry for unified plugin parameter management. The Duo LFO got speed multipliers, the ViewModel layer was overhauled with SynthController controlFlow, and drum synthesis was abstracted using Plaits engines. The resonator and LFO you hear in this track were literally being refactored as it was being recorded.

View commit

Melodic buildup to sweet droney howl aided by the clang of the resonator while being guided by a tasteful amount of feedback and lfo.

#human #drums #drone #lfo #resonator
• Track 5

Welcome to ML

A fully AI-generated drone – Gemini Flash 3.0 with no human intervention. On January 25th, the Looper and Resonator panels were integrated into the Desktop UI, Warps routing was changed to use pre/post-master effects sends, the evolution prompt system got its first-prompt fix (ensuring the AI started generating immediately), and LiveCode was encapsulated into its own panel. The grinding, metallic sound comes from the AI pushing the Warps meta-modulator to extremes the routing wasn’t originally designed for.

View commit

Grinding, Metallic, Bending drone generated entirely by Orpheus using Gemini Flash 3.0

#ai #flash3 #drone #machine
• Track 3

AGP 9.0

A celebration song for the Android Gradle Plugin 9.0 migration – hence the name and the @Preview annotation in the description. On January 24th, the Gradle wrapper was upgraded to 9.3.0, DSP plugin access was centralized, and the Matrix meta-modulator (based on Mutable Instruments Warps) got Duo LFO modulation. The live debug log view also landed that day, which was immediately useful for monitoring the CPU-hungry desktop build.

View commit

@Preview: Celebration song for the Gradle Plugin migration

#human #drums #organ #pitch #cowbell #fm #drone
• Track 4

Reprise Surprise

One of the earliest AI-composed tracks. The day before, AI feature code was consolidated into commonMain (enabling Kotlin Multiplatform AI support) and the Sonnet model was added alongside centralized model definitions. Gemini Flash 3.0 drove this composition, but the heavy drum backing exposed the limits of the AI’s mix sensibility at this stage.

View commit

Gemini Flash 3.0 with a (too) heavy drum backing

#ai #flash3 #drums #swirl
• Track 2

Daisy 9000

The first-ever recording on the Orphic-FM synth. On January 11th alone there were 16 commits – AI agent hardening, multi-provider support (OpenAI and Anthropic Haiku3), MIDI learn, generic control routing for Tidal and AI agents, and the drum machine mix control. The 808-style drum synth and physical modeling resonator (based on Mutable Instruments Rings) had landed just the day before. Everything was raw and untested – this recording was as much a shakedown cruise as a composition.

View commit

First track recorded on the Orphic-FM Synth. This manual composition was inspired by HAL 9000 as means to show AI how to express itself through music.

#human #drums #drone