Repository navigation
Releases: balch/orphic-fm-app
Release list
v3.0.0: presets and sound enhancements
Presets and sound enhancements, on top of the 2.6 mixing, Orphic Lore and visuals work.
Presets
- Per-vibe presets. Save your favorite mixes for each vibe and bring them back with a tap.
Sound
- Sound enhancements. Richer, more detailed sound across the vibes.
Carried over from 2.6
- More mixers. Track fader controls with solo and mute, for live performance.
- Orphic Lore. A Homer-inspired epic with singing sirens, granular synth effects and a storm.
- Upgraded visuals. Orphoscope, Swirly, Mt Hood and the Pulsar grid are redrawn for smoother animation.
- Bluetooth DJ scratch fixes at 44.1 kHz.
Artifacts
The signed Play-Console-ready bundle (djapp-v3.0.0-og-release.aab) and universal sideload APK (djapp-v3.0.0-og-release.apk) are built, but are not attached to this release. The bundle is published to the Play Store.
Full changelog
v2.6.3...v3.0.0
v2.6.3 — Orphoscope lanes pulse through the whole loop
A small visuals fix. Orphic Lore's bell lane in the Orphoscope now pulses on every strike, where it used to go quiet for the back half of each loop.
Visualizers
- Pulses through 64-step loops. The engine sent the visualizer only the first 32 steps of a track and parked its playhead at step 31, so the lane pulse and the beat tracker saw no movement for the second half of any 64-step pattern. A longer track now shows the 32-step half its playhead is on. Orphic Lore's bell, a 64-step track, is the one most affected.
- Step grid follows the playhead. The Pulsar grid flips to the half that is playing instead of sitting on the right edge.
Tests
- A new C++ case covers a 64-step track on its back half, a 48-step track on its short second half, a front-half track and an idle track. The C++ suite and the pulsar and visualizations Kotlin tests pass.
Artifacts
The signed Play-Console-ready bundle (djapp-v2.6.3-og-release.aab) and universal sideload APK (djapp-v2.6.3-og-release.apk) are built, but are not attached to this release. The bundle is published to the Play Store internal and production tracks.
Full changelog
v2.6.2...v2.6.3: 1 commit: a 64-step track's pulse keeps going through the back half.
v2.6.2: levelled live vibes, section pans, upgraded visualizers
A mixing and visuals release. Every live vibe is levelled to a common loudness, sections can pan and glide, Orphic Lore grows into a longer piece, and the visualizers are redrawn for smoother animation.
Mixing
- Consistent loudness. The live vibes are re-levelled to -16 LUFS at master 1.0 using a new per-vibe
levelDbtrim, so switching vibes no longer jumps in volume. The DJ graph output is restaged with a 35 Hz high-pass and half the clip drive. - Per-section pan. A section can override a track's pan and the pan glides between sections. Section jumps land on the next bar line.
- Vibe fixes. Bell Tolls, Filter Funk, Space & Drums, Lost In Space, Rust Belt, Velvet Leash and Voltage Strut get individual level, drive and tambourine-register fixes. The first vibe after launch now plays at unity.
Orphic Lore
- Longer and brighter. The vibe runs 3.5 to 4 minutes. The Sirens sing ah-oh on the speech voice and sit brighter in the heavy sections, and the Sirens and bell carry Ashore out alone.
Visualizers
- Orphoscope lanes. Each Pulsar track gets its own lane, and paused tracks write silence to their rings. Each poll keeps its own read position.
- Cheaper drawing. Swirly's arms are drawn in a shader, Mt Hood's silhouettes are built once per size, and the Pulsar grid's waveform traces are drawn as rects.
Mix Bench and Orphic MCP
- Mix Bench. A desktop page for measuring and capturing mix edits, with live meters, capture files and a menu entry.
- Orphic MCP. The AI edition serves mix, port, vibe and transport tools so an agent can mix a vibe live.
Artifacts
The signed Play-Console-ready bundle (djapp-v2.6.2-og-release.aab) and universal sideload APK (djapp-v2.6.2-og-release.apk) are built, but are not attached to this release. The bundle is published to the Play Store internal and production tracks.
Full changelog
v2.6.1...v2.6.2: 2 commits: the Orphoscope scrolls at one speed on every screen, and the Play What's New is reworded.
v2.6.1: levelled live vibes, section pans, upgraded visualizers
A mixing and visuals release. Every live vibe is levelled to a common loudness, sections can pan and glide, Orphic Lore grows into a longer piece, and the visualizers are redrawn for smoother animation.
Mixing
- Consistent loudness. The live vibes are re-levelled to -16 LUFS at master 1.0 using a new per-vibe
levelDbtrim, so switching vibes no longer jumps in volume. The DJ graph output is restaged with a 35 Hz high-pass and half the clip drive. - Per-section pan. A section can override a track's pan and the pan glides between sections. Section jumps land on the next bar line.
- Vibe fixes. Bell Tolls, Filter Funk, Space & Drums, Lost In Space, Rust Belt, Velvet Leash and Voltage Strut get individual level, drive and tambourine-register fixes. The first vibe after launch now plays at unity.
Orphic Lore
- Longer and brighter. The vibe runs 3.5 to 4 minutes. The Sirens sing ah-oh on the speech voice and sit brighter in the heavy sections, and the Sirens and bell carry Ashore out alone.
Visualizers
- Orphoscope lanes. Each Pulsar track gets its own lane, and paused tracks write silence to their rings. Each poll keeps its own read position.
- Cheaper drawing. Swirly's arms are drawn in a shader, Mt Hood's silhouettes are built once per size, and the Pulsar grid's waveform traces are drawn as rects.
Mix Bench and Orphic MCP
- Mix Bench. A desktop page for measuring and capturing mix edits, with live meters, capture files and a menu entry.
- Orphic MCP. The AI edition serves mix, port, vibe and transport tools so an agent can mix a vibe live.
Artifacts
The signed Play-Console-ready bundle (djapp-v2.6.1-og-release.aab) and universal sideload APK (djapp-v2.6.1-og-release.apk) are built, but are not attached to this release. The bundle is published to the Play Store internal and production tracks.
Full changelog
v2.6.0...v2.6.1: 76 commits across mixing, vibes and visualizers.
v2.6.0 — Orphic Lore sails the Odyssey, Bluetooth earbuds behave
A vibe and stability release: Orphic Lore is rebuilt around the Odyssey, and Bluetooth earbuds no longer crash or crackle the audio engine.
Bluetooth audio
- Braids resampler hardened at 44.1 kHz. A staging buffer overrun with 882-frame callbacks was found on pre-release builds; the resampler carry state now lives in its own header and sample requests are even-count.
- Seamless turntable and Warps sources. All source buffers, including the master source, now hand off through an adaptive-latency FIFO, so scratching and Warps inputs no longer glitch when the callback size differs from the engine block.
- Drum first hit. The first hit after boot and after an engine change is no longer swallowed.
Orphic Lore
- Sections follow the Odyssey (libation through ashore). Sirens are sung on the VOW engine with a harmony choir capped at F5, and climb Bb to C; Ashore reprises the climb with the bell tolling from the start.
- Longer arc. The bass breathes before each pickup and the song runs 4 to 5 minutes.
Pulsar
- morphRise and harmonics rise glide within each note; the harmonics rise glides back on a note-on instead of snapping, which removes a click.
- Section ramps, section volume, volume envelopes and tension arcs for vibe authors, and a Grain FX and Mist grain engine.
Mixer and UI
- TRACKS per-track mixer with liquid glass faders, M/S chips below the value, and DIST/PERC kept across vibe changes. BAND mute chips are gone; mutes live in TRACKS.
- Rotation and fold. The compact header panel and the bottom panel's tab survive rotate and fold; tabletop puts the title and viz picker on the upright half.
- Hand tracking stays on through rotate and unfold, pauses while backgrounded, and finishes the in-flight frame before teardown (MediaPipe 1.1.0).
Dependencies
- Kotlin 2.4.21, Material3 1.5.0-beta01, logback 1.6.5; AI model catalog adds Haiku 5.5 and Fable 5.1.
Artifacts
The signed bundle (djapp-v2.6.0-og-release.aab, versionCode 1176) and universal sideload APK are built, but are not attached to this release. The bundle is published to the Play Store internal and production tracks.
Full changelog
v2.5.0...v2.6.0 — Orphic Lore rework, Bluetooth audio fixes, TRACKS mixer.
v2.5.0: a cleaner UI with a big fat vibe picker
A UI-focused release: the vibe picker takes over Pulsar's top row, and the audio engine's smoothers now behave the same at any buffer size.
Cleaner UI
- Big vibe picker. Pulsar's top row is the vibe picker alone, and the grid gives up the old hero VIBE row's height.
- Quieter phone bar. The vibe pill shows only while you swipe between vibes.
- Step grid while paused. Pulsar's step grid now shows the loaded vibe instead of the previous one.
Sound
- Buffer-size independence. Reverb time, damping and diffusion, total feedback, the bender's random wobble, the voice-coupling follower, drum-mix smoothing and the bass FX send all settle over fixed times instead of per-buffer steps, so they sound the same on every device.
- Leslie horn and Warps routing. Horn depth, bypass and band alignment are fixed, and the Warps bass source reads the double-buffered bass.
- Stay Asleep. Escape keys sit lower in the mix.
Store listings
- New screenshots for every Play and App Store slot, captured from the 2.5 UI.
Artifacts
The signed bundle (djapp-v2.5.0-og-release.aab, versionCode 1090) is not attached to this release. It is published to the Play Store internal and production tracks, and the iOS build goes through App Store Connect.
Full changelog
v2.4.0...v2.5.0 — the vibe picker UI, buffer-size-independent smoothing, and new store screenshots.
v2.4.0 — Magic ∞ playlist and shuffle
A feature release: the dome now opens a playlist, with albums and Shuffle, and the Pulsar beat machine gets a round of musicality fixes.
Playlist and Shuffle
- Magic ∞ playlist. A long press on the dome opens a sheet over the playing vibe: a playlist rotation built from
AlbumCatalogalbums, with Shuffle and tap-to-play. It is a side sheet with the rail and dock, and in portrait a panel in the stage that stops under the phone bar. - The 8-ball. Shuffle rolls an 8-ball out of the dome. Its phrase lifts out of the die, grows to be read, then flies to the sheet's header line as the ball turns back into the dome. Phrases may run up to 42 characters; the phrase layout now keeps over-wide phrases centered over the ball instead of shifting left, and the header's fallback phrase no longer changes on recomposition.
- Android Auto and widget. Android Auto browses the albums, and the home-screen widget skips by the rotation.
TV
- Layout. Timer moves to the TV top bar and Pulsar to the bottom bar, and the dome sits inside the bottom bar.
- Focus. Only TV hardware highlights the dock bars and play dome.
Pulsar
- Complexity zones. Complexity has steady, normal and crazy zones for lick variation. Stay Asleep is tuned to 0.4 so it sits clear of the steady zone.
- Chord fixes. Chord degrees past a short scale now read the minor table in minor-family scales, and chord changes stay on the bar when chords per bar does not divide the steps.
- Bell Tolls. The skank drops to G2 for the bVII and sits softer in the intro.
Fixes
- Theme greys and outlines always draw.
Artifacts
The signed Play-Console-ready bundle (djapp-v2.4.0-og-release.aab) and universal sideload APK (djapp-v2.4.0-og-release.apk) are built, but are not attached to this release. The bundle (versionCode 1062) is published to the Play Store internal and production tracks. iOS build 1062 is uploaded to App Store Connect.
Full changelog
v2.3.4...v2.4.0: playlist rotation, Magic ∞ and the 8-ball, Android Auto albums, TV layout, and Pulsar musicality fixes.
v2.3.4 — Calmer Heartbeat viz
A one-fix patch release. The Heartbeat visualization no longer washes out to white.
Visualization
- Heartbeat draws fewer, dimmer hearts. At full volume the viz spawned ~38 hearts a second, plus up to six more on each beat, so 100-200 were on screen at once. They draw additively at full body alpha, so overlapping hearts added up to white. This release lowers the spawn rate, beat bursts, population cap, body alpha and the
GLOWbrightness range, so the field reads as individual hearts again (HeartbeatViz.kt).
Artifacts
The signed Play-Console-ready bundle (djapp-v2.3.4-og-release.aab, versionCode 1037) is published to the Play Store internal and production tracks and is not attached to this release. The iOS build is 2.3.4 (1037).
Full changelog
v2.3.3...v2.3.4: Heartbeat viz toned down.
v2.3.3 — earbud pause/resume, clean transition cuts
A fixes release for Android and iOS. Bluetooth earbuds can now resume playback on Android. Skips and restarts no longer stack transition effects. The song-progress arc follows the music more closely. This is also the first Android build with the 2.3.2 background battery work.
Bluetooth / headset controls (Android)
- Earbuds can resume after a pause. Pausing used to only mute, so the stream kept sending silence over A2DP. Samsung's AVRCP reported "paused" only once audio actually stopped, which meant every tap sent PAUSE again. The Oboe stream now parks 0.5s after a pause, the same way iOS already parks its host, and
play()restarts it before unmuting. - A headset PLAY starts the app cold. Declaring Media3's
MediaButtonReceivermakes Android remember Orphic DJ as the media-button target. After a cold launch or a swipe-away, PLAY now startsDjMediaLibraryService, which plays the restored vibe.
Transitions
- A skip during a transition cuts. Fast skipping used to chain tape-stops and scratches that each got cut off halfway. A vibe change that lands mid-transition now plays as a CUT.
- Restarting a song cuts. A late previous-press, or a song repeating at its end, replays the same vibe, so there is nothing to hand off between.
- A vibe change while paused cuts. A tape-stop armed by a paused swipe used to sit frozen and then play out on unpause.
- RANDOM transitions now log the style they resolved to.
Song-progress arc
- The locked-in arc catches up, then rides the song. It eases onto the song's real position with a smoothstep over up to 6s instead of speeding up at the finish.
- Gentler slowdown past 68%. A soft knee replaces the exponential brake, so the arc no longer looks like it stalls.
Android also gets
- The common-code part of the 2.3.2 background battery fix:
SynthEngineMonitorgates viz onmonitoringActiveinstead ofisRunning.
Artifacts
The signed Play bundle (djapp-v2.3.3-og-release.aab) and universal sideload APK (djapp-v2.3.3-og-release.apk) were built but are not attached here. The bundle goes to the Play internal and production tracks. iOS build 1036 goes to the App Store.
Full changelog
v2.3.2...v2.3.3: Android earbud fixes, transition cut rules, and progress-arc easing.
v2.3.2 — iOS: a paused app sleeps in the background
An iOS-only follow-up to 2.3.1. A paused Orphic DJ no longer keeps the audio hardware busy in the background, so iOS can suspend it and stop the battery drain. Android stays on 2.3.1; this tag carries no Android release.
Background battery (iOS)
- The audio host parks after 30 s paused in the background. Pausing used to only mute, so
AURemoteIOkept rendering the full graph on silence andaudiomxdmixed it, about 20% of a core on an iPad Air 4, and iOS never suspended the app.AudioHostSuspendPolicynow parks the host (stopsAVAudioEngine, releases the session, keeps the engine and graph) once the app has been paused or stopped in the background for 30 s, retrying every 30 s. Play, the lock screen, the widget, speech and foregrounding bring it back through the watchdog's repair path, and foregrounding leaves other apps' music alone. - A parked host stays parked through route changes and interruptions. The watchdog stands down while parked, and an interruption ending no longer reactivates the session for silence.
- UI-only polls pause while backgrounded.
IosAppLifecycledrivessetUiVisiblefrom the app's foreground state, so the meter, Pulsar viz, turntable, spectrum and scope polls stop for nobody, matching Android.
Toolchain
- Kotlin 2.4.20, Compose Multiplatform 1.12.1, Metro 1.4.5, Gradle 9.8.0, plus patch bumps across the catalog.
Tests
- New
AudioHostSuspendPolicyTestandDspSynthEngineParkedHostTestcover the park and resume rules.
Artifacts
iOS build 1026 goes to App Store review. No Android bundle was published for this tag.
Full changelog
v2.3.1...v2.3.2 — iOS background battery fix and toolchain bump. The range also carries AI-edition and Orpheus-app commits that do not ship in the App Store build.