Releases: Gomtanga/lowend-circuit
Release list
LowEnd Native Audio v0.2.10
한국어
LowEnd Native Audio v0.2.10은 TIDAL 곡 전환 때 소스 포맷 반영이 늦어지던 문제를 개선하고, 공개 배포 범위를 macOS Native 앱으로 정리한 패치 릴리스입니다.
TIDAL 소스 포맷 추적
~/Library/Logs/TIDAL/player.log변경을 파일 시스템 이벤트로 감시합니다.- 로그 변경 후 약 80 ms 디바운스로 즉시 다시 분석하며, 주기적 확인은 복구 경로로 유지합니다.
- 로그 파일이 교체되거나 회전되면 감시를 자동으로 다시 연결합니다.
CoreaudioSink::start를 재생 시작,CoreaudioSink::close를 재생 종료 근거로 사용합니다.- TIDAL이
media.state=active를 늦게 쓰거나 생략하는 곡 전환도 처리합니다. - Apple Music과 TIDAL의 빠른 감지 경로를 분리해 서로의 가속 상태에 영향을 주지 않도록 했습니다.
- 24-bit 48 kHz에서 16-bit 44.1 kHz로 바뀌는 순서를 포함한 회귀 검사를 추가했습니다.
배포 범위 정리
- 공개 배포는 Apple Silicon용 macOS Native 앱만 유지합니다.
- 폐기된 Windows/JUCE 빌드 타깃과 릴리스 워크플로는 현재
main에서 제거되어 있습니다. - 과거 GitHub Releases에 남아 있던 Windows 바이너리 22개와 관련 다운로드 문구를 제거했습니다.
- Windows/JUCE 제거를 되돌리던 PR #20은 폐기하고 관련 브랜치를 제거했습니다.
- 이번 릴리스에는 Windows, VST3 또는 Standalone 플러그인 자산이 포함되지 않습니다.
검증
LowEndSupportChecks통과- Swift/C++ DSP parity: 44.1/48/96/192/768 kHz 통과
- 출력 컨디셔닝 유한값, 연속성, bypass identity 및 image-rejection 검사 통과
- 휴대용 C++ Core: 5/5 테스트 통과
- macOS Native/Core 및 Ubuntu Core CI 통과
- 앱 번들:
arm64, ad-hoc 서명 유효 - 앱 버전
0.2.10, build88, commitdf07c6c
TIDAL의 Use Exclusive Mode는 끄고 사용하세요. 앱은 Apple Developer ID로 서명되거나 공증되지 않았으므로 처음 실행이 차단되면 Finder에서 앱을 우클릭한 뒤 열기를 선택하세요.
SHA-256
336cf8bfd95989ebb2c6cc49550f20d43483ab7cbd3ea63f0b01c76ac96c22c1 LowEnd-Native-Audio-macOS-v0.2.10.zip
English
LowEnd Native Audio v0.2.10 improves delayed TIDAL source-format updates during track changes and completes the transition to a macOS Native-only public distribution.
TIDAL source-format tracking
- Watches
~/Library/Logs/TIDAL/player.logfor filesystem changes. - Rechecks the log after an approximately 80 ms debounce while retaining periodic polling as a recovery path.
- Automatically rearms the watcher when the log is replaced or rotated.
- Treats
CoreaudioSink::startas playback-active evidence andCoreaudioSink::closeas inactive evidence. - Handles transitions where TIDAL delays or omits
media.state=active. - Keeps the Apple Music and TIDAL fast paths independent.
- Adds regression coverage including the 24-bit 48 kHz to 16-bit 44.1 kHz transition order.
Distribution cleanup
- Public binaries now cover only the Apple Silicon macOS Native app.
- The retired Windows/JUCE build targets and release workflow are absent from current
main. - Removed 22 historical Windows binaries and related download wording from GitHub Releases.
- Closed obsolete revert PR #20 and removed its branch.
- This release contains no Windows, VST3, or Standalone plugin assets.
Verification
LowEndSupportCheckspassed- Swift/C++ DSP parity passed at 44.1/48/96/192/768 kHz
- Output-conditioning finite, continuity, bypass-identity, and image-rejection checks passed
- Portable C++ Core: 5/5 tests passed
- macOS Native/Core and Ubuntu Core CI passed
- App bundle:
arm64, valid ad-hoc signature - App version
0.2.10, build88, commitdf07c6c
Disable TIDAL Use Exclusive Mode while using LowEnd Native Audio. The app is neither Developer ID signed nor notarized; if macOS blocks the first launch, right-click the app in Finder and choose Open.
SHA-256
336cf8bfd95989ebb2c6cc49550f20d43483ab7cbd3ea63f0b01c76ac96c22c1 LowEnd-Native-Audio-macOS-v0.2.10.zip
LowEnd Native Audio v0.2.9
English
Circuit stability and loudness
- Fixes sustained hard clipping and harsh broadband distortion at high LowEnd/Body settings.
- Derives headroom from the combined low-shelf, Body injection, and virtual-feedback gain.
- Applies headroom to the complete Circuit blend.
- Restores up to 3 dB with bounded automatic makeup gain.
- Adds a continuous soft-knee peak protector near full scale.
- Keeps Swift Native and portable C++ Core processing in parity.
- Normalizes dB readouts that previously displayed
-0.0 dB.
Verification
- Core tests and high-control clipping regression passed.
- DSP parity passed at 44.1/48/96/192/768 kHz.
- macOS Native and portable Core CI passed.
macOS ZIP SHA-256: 7f2ad918876e453b5eb0e54b649f31db6e0c40d58242f243f2d51968333082d2
한국어
Circuit 안정성 및 음량
- 높은 LowEnd/Body 설정에서 발생하던 지속적인 하드 클리핑과 거친 광대역 왜곡을 수정했습니다.
- Low-shelf, Body 주입, Virtual feedback의 합산 이득으로 헤드룸을 계산합니다.
- Circuit의 최종 blend 전체에 헤드룸을 적용합니다.
- 최대 3 dB의 제한된 자동 makeup gain으로 체감 음량을 보상합니다.
- Full scale 부근에 연속적인 soft-knee 피크 보호를 적용했습니다.
- Swift Native와 공통 C++ Core의 처리식을 동일하게 유지합니다.
-0.0 dB로 표시되던 dB 값을 정상화했습니다.
macOS 앱은 Apple Silicon 및 macOS 14.4 이상을 지원하며 ad-hoc 서명 상태입니다.
LowEnd Native Audio v0.2.8
LowEnd Native Audio v0.2.8 adds experimental live PCM 2× output conditioning and a new read-only Diagnostics/Status panel, on top of the v0.2.7 output-conditioning engine. The real-time audio callback stays allocation-free and lock-free throughout.
Highlights
Live PCM 2× output conditioning (experimental)
- Wires the existing offline polyphase resampler into the live capture→output path.
- Enable Output Conditioning + PCM Oversampling + 2× to activate (44.1k→88.2k, 48k→96k only); 4×/8×, dither, and DSD stay bypass.
- The output device is switched to 2× on the manager queue — never inside the audio callback — while the aggregate/tap stays at 1×, so
processLivedoubles the captured signal. - Unsupported device/rate combinations fall back to PCM bypass with a posted reason.
ResamplingOutputConditioningEngine.processLiveis out-of-place 2× polyphase upsampling (headroom + finite guard), allocation/lock-free; every non-2× configuration is a verbatim identity copy.
Diagnostics/Status panel (new)
A read-only "진단" sidebar page surfaces the live pipeline state. It reads only existing off-callback state and never touches the realtime callback:
- tap / engine / output-device sample rates
- output format (bit depth / sample type)
- Output Conditioning status: off / PCM 2× active / fallback (+ fallback reason)
- HighExciter resolved oversampling mode: 1× / 2× / 4× / safety-limited
- dropout / underrun / drop counters and engine restart count
- current output device name · id
UI & build
- DSD/DoP picker disabled and badged "(오프라인/테스트 전용)"; captions state capability-check-only.
- Build identity:
CFBundleVersionis stamped from the git commit count, withLCBuildCommit/LCBuildDate/LCBuildIDshown in Settings.
Real-time safety
The live render path performs no allocation, lock, dispatch, logging, coefficient generation, or device-format change. All Diagnostics-panel values are read off-callback (NotificationCenter mirror + diagnosticsSnapshot() + ExciterOversamplingPolicy.resolve + a single off-thread CoreAudio device-name query).
Verification
swift build, LowEndSupportChecks, SystemAudioProcessor --self-test (debug + release), and ./scripts/build-native-system-audio-app.sh all pass. Idle CPU is unchanged with Output Conditioning off (default).
한국어 요약
- v0.2.7의 출력 컨디셔닝 엔진 위에 실험적 라이브 PCM 2× 출력 컨디셔닝과 읽기 전용 진단/상태 패널을 추가했습니다.
- 라이브 PCM 2×: 활성화 + PCM Oversampling + 2×일 때 동작합니다(44.1k→88.2k, 48k→96k만). 출력 장치는 오디오 콜백 밖(manager queue)에서 2×로 전환되며, 미지원 장치/레이트는 안전하게 PCM으로 폴백합니다.
- 진단 패널: tap/engine/출력 장치 샘플레이트, 출력 포맷, Output Conditioning 상태(off / PCM 2× active / fallback)와 폴백 사유, HighExciter 실제 오버샘플링 모드(1×/2×/4×/safety-limited), dropout/underrun 카운터, 출력 장치 이름·ID를 표시합니다. 오디오 콜백에 영향 없이 기존 상태만 읽습니다.
- DSD/DoP는 오프라인/테스트 전용으로 명확히 표시하고, 빌드 식별 정보(commit/hash/시각)를 추가했습니다.
swift build,LowEndSupportChecks,--self-test, 빌드 스크립트가 모두 통과하며, 컨디셔닝이 꺼진 기본 상태의 대기 CPU는 변동이 없습니다.
LowEnd Native Audio v0.2.7
LowEnd Native Audio v0.2.7 adds an independent output-conditioning layer alongside the existing tonal DSP, plus the spatial/rate-match refinements. The real-time audio callback stays allocation-free and lock-free throughout.
Highlights
Output-conditioning engine (new, experimental infrastructure)
- Adds an independent
ResamplingOutputConditioningEnginebetween the tonal DSP and the output device PCMResampler: integer (2x/4x/8x) polyphase FIR upsampler with rate-independent coefficients pre-built at init, per-phase DC normalization, and vDSP + scalar-loop kernelsDeltaSigmaDSDModulator: 1st/2nd-order error-feedback delta-sigma with an overload guardDoPacker: DoP (DSD-over-PCM) v1.0 packing with 0x05/0xFA markers and stereo interleaveOutputConditioningDeviceCapability: probes the DAC for DoP carrier rates (176.4 / 352.8 / 705.6 kHz) and a 24/32-bit carrier- Live output stays bypass-only this iteration; PCM oversampling and DSD/DoP are offline/testable paths. Device-format switching for live oversampling/DSD is deferred to a later release.
- Parameters cross to the audio thread through the existing lock-free SPSC control queue
Offline verification suite (--self-test)
- Image-rejection FFT: in-band stopband floor short ≥ 50 dB, long ≥ 70 dB (measured short ~78 dB, long ~103 dB)
- DC unity-gain, passband preservation, impulse response, block-boundary continuity (2/4/8x)
- vDSP vs direct kernel equivalence, DSD stability (DC / full-scale / silence / clipped, overload guard verified to fire), DoP marker/interleave checks, capability gating
- vDSP-vs-direct resampler benchmark (vDSP ~110x faster)
Spatial & Rate Match
- Default spatial off; per-model slider values persisted
- Automatic DAC Rate Match: polling optimization + listener-deadlock fix;
RateMatchBenchstandalone benchmark - "전문가 모드" renamed to "자세히 보기"; Auto Rate Match decoupled from it
UI
- Korean localization of labels and status strings
- Fixed spatial audio not applying in the Clean model
- New "출력 컨디셔닝" page with experimental DSD/DoP and device-capability gating (disabled with PCM-fallback notice on unsupported DACs)
Real-time safety
The live render path (handleInput → applyPendingControlEvents → processAndPush* → processLive) performs no allocation, lock, dispatch, logging, coefficient generation, or device-format change. processLive is a verified identity bypass.
한국어 요약
- 톤 DSP와 분리된 독립 출력 컨디셔닝 엔진(PCM polyphase 업샘플러, delta-sigma DSD, DoP 패커, DAC capability 조회)을 추가했습니다.
- 실시간 출력은 이번 버전에서 안전한 Bypass 기본값으로만 동작하며, PCM 오버샘플링과 DSD/DoP는 offline에서 검증된 실험 경로입니다.
--self-test에 image rejection FFT(단/장필터 각각 ≥50/≥70 dB), DC unity, 커널 동등성, DSD 안정성, DoP 패킹, capability 게이팅 등 정량 검증을 추가했습니다.- 공간 음향 기본 off + 모델별 슬라이더 영속화, 자동 Rate Match 안정화, UI 한글화, Clean 모드 공간 음향 수정, "출력 컨디셔닝" 페이지를 추가했습니다.
- 오디오 콜백은 zero-allocation/no-lock 원칙을 유지합니다.
LowEnd Native Audio v0.2.6
LowEnd Native Audio v0.2.6 stabilizes automatic DAC Rate Matching while preserving the existing DSP voicing and v0.2.5 sidebar interface.
Highlights
- Recreates the Core Audio Process Tap, aggregate capture device, and AVAudioEngine output graph after a hardware sample-rate change
- Verifies both capture writes and output reads through atomic lock-free ring-buffer counters before restoring output gain
- Restores output gain to 1.0 only after real audio flow resumes
- Rolls back to the previous hardware rate when capture or playback recovery fails
- Keeps the real-time callback allocation-free, lock-free, and free of logging or coefficient calculations
- Adds regression coverage for the new ring-buffer flow counters
- Updates the Native app to v0.2.6 build 8
A short 1-2 second pause can occur while the DAC, capture graph, and output engine are safely rebuilt.
Real-device validation
Verified with an external USB DAC using whole-system processing and Automatic Rate Match:
- 44.1 -> 96 -> 192 -> 44.1 kHz transitions
- continuous playback after each transition
- pause and resume
- rapid track changes
- Spectrum and Dynamics recovery
한국어 요약
- DAC 샘플레이트 변경 후 Process Tap, Aggregate 장치, AVAudioEngine 출력 그래프를 새로 생성합니다.
- Lock-free 링 버퍼의 실제 write/read 진행을 확인한 뒤에만 출력 gain을 복구합니다.
- 복구 실패 시 이전 샘플레이트로 롤백하여 영구 무음을 방지합니다.
- 전환 중 DAC와 엔진 재구성을 위해 약 1-2초의 짧은 정지가 발생할 수 있습니다.
- 외장 USB DAC에서 44.1/96/192 kHz 전환, 일시정지/재개, 빠른 곡 전환과 분석계 복구를 검증했습니다.
macOS installation
Unzip the archive, move LowEnd Native Audio.app to Applications, and allow system-audio recording. The app is ad-hoc signed and not notarized; if Gatekeeper blocks it, right-click and choose Open.
SHA-256
a60c232ad7887593064302a741d4383bb1fd846b658262b5ba2b6dcd40269f7e LowEnd-Native-Audio-macOS-v0.2.6.zip
LowEnd Native Audio v0.2.5
LowEnd Native Audio v0.2.5 rebuilds the app around a compact sidebar workflow while preserving the existing DSP voicing and real-time audio architecture.
Highlights
- New sidebar navigation for Model, Spatial Audio, Audio Routing, and Settings
- Persistent Spectrum and Dynamics analysis rail across every page
- Responsive window layout with a smaller minimum size and stable resizing
- Compact format card showing the detected source format, DAC output format, and active DSP model
- Optional Expert Mode for detailed Source, Tap, Engine, DAC, HighExciter oversampling, and Rate Match information
- Cleaner whole-system apply control in the sidebar
- Reworked Spatial Audio page with a larger stage and direct controls
- Version updated to 0.2.5 (build 7)
한국어 요약
- 모델, 공간 음향, 오디오 적용, 설정을 사이드바 페이지로 분리했습니다.
- 모든 페이지에서 Spectrum과 Dynamics 분석계를 계속 볼 수 있습니다.
- 창 크기를 줄여도 주요 조작부가 사라지지 않도록 반응형 레이아웃을 적용했습니다.
- 기본 화면은 재생 음원의 샘플레이트/비트 깊이, 출력 포맷, 적용 모델을 간결하게 표시합니다.
- 설정의 전문가 모드를 켜면 Source, Tap, Engine, DAC, 오버샘플링, Rate Match 경로를 자세히 표시합니다.
- 공간 음향 페이지와 전체 시스템 적용 동선을 정리했습니다.
macOS installation
Unzip the archive, move LowEnd Native Audio.app to Applications, and allow system-audio recording. The app is ad-hoc signed and not notarized; if Gatekeeper blocks it, right-click and choose Open.
SHA-256
cc9d5f0be97421e1d938b739b503caef0befed877dc3a4b588484c7e5b6e9e2f LowEnd-Native-Audio-macOS-v0.2.5.zip
LowEnd Native Audio v0.2.4
LowEnd v0.2.4 adds explicit HighExciter oversampling control and an opt-in DAC rate-matching path while preserving the real-time callback rules.
Highlights
- HighExciter
Auto | 1x | 2x | 4xselection with persisted settings - 384 kHz maximum added internal processing rate and clear requested/effective indicators
- Rate Match Preview that compares Source and DAC capabilities without changing the device
- Optional Automatic Rate Match, OFF by default
- Stable source observation gate for Apple Music and TIDAL
- Pop-resistant
fade-out -> stop/reset -> DAC/Engine update -> restart -> fade-intransition - Original DAC rate restoration when Auto is disabled or the app exits
- Rollback and session pause after a failed device transition
- Lock-free C output gain ramp; no allocation, lock, logging, or UI access in the render callback
한국어 요약
- HighExciter 오버샘플링 배수를
Auto | 1x | 2x | 4x로 선택하고 저장할 수 있습니다. - 내부 처리율은 최대 384 kHz 안전 상한을 적용합니다.
- Source와 DAC 지원 rate를 비교하는 Rate Match Preview를 항상 표시합니다.
- 자동 DAC Rate Matching은 기본 OFF인 선택 기능입니다.
- 전환 시 fade-out, 엔진/버퍼/DSP 초기화, DAC/Engine 재설정, fade-in 순서를 사용합니다.
- 실패 시 이전 rate로 롤백하고 해당 세션의 자동 전환을 일시 중지합니다.
macOS installation
Unzip the archive, move LowEnd Native Audio.app to Applications, and allow system-audio recording. The app is ad-hoc signed and not notarized; if Gatekeeper blocks it, right-click and choose Open.
SHA-256
b3c73685819729f6b98ed5a7dc278b57d6c9d7473759c169cdcbe648454504a1 LowEnd-Native-Audio-macOS-v0.2.4.zip
LowEnd Native Audio v0.2.3
LowEnd Native Audio의 Apple Music 소스 포맷 감지 정확도와 안정성을 개선한 릴리스입니다.
주요 변경 사항
- Apple Music 소스 포맷 감지 개선
- 재생 상태(playing/paused/stopped) 구분
- AppleScript 메타데이터와 Unified Log 교차 검증
- AppleScript-only 포맷을 Inferred, 로그 확인 포맷을 Detected로 구분
- 곡 전환 시 가속 폴링(0.5초×4)으로 빠른 rate 반영
- 일시정지/정지 시 감지 포맷 캐시 초기화
NSAppleEventsUsageDescription추가로 Automation 권한 대화상자 표시
- OSLogStore 쿼리 윈도우 8초 → 30초 확장
- 20개 이상의 Apple Music 회귀 테스트 추가 (상태, 교차검증, rate 전환)
- TIDAL 감지는 기존과 동일하게 동작
설치
ZIP을 풀고 LowEnd Native Audio.app을 Applications 폴더로 옮겨 실행하세요. 처음 실행이 차단되면 Finder에서 앱을 우클릭한 뒤 열기를 선택하세요. 시스템 오디오 녹음 권한이 필요합니다. Apple Music 소스 포맷 감지를 위해 Automation 권한 대화상자가 나타나면 허용을 선택하세요.
SHA-256
b2811b19e1b3211460d002af8597b3676d7c3ac26746ed20b1268260708efd75 LowEnd-Native-Audio-macOS-v0.2.3.zip
LowEnd Native Audio v0.2.2
LowEnd Native Audio의 HighExciter 오버샘플링, 오디오 포맷 표시, 특정 앱 캡처를 개선한 릴리스입니다.
주요 변경 사항
- HighExciter 비선형 배음 생성 구간에 적응형 오버샘플링 추가
- 44.1/48 kHz: 4x
- 88.2/96 kHz: 2x
- 176.4/192 kHz 이상: 1x
- HighExciter의 현재 오버샘플링 배수와 내부 처리율 표시
- Core Audio Tap, DSP Engine, DAC 공유 처리 포맷 표시 개선
- TIDAL 같은 다중 프로세스 앱에서 부모 bundle ID로 실제 PCM 출력 child process 자동 추적
- 예:
com.tidal.desktop→com.tidal.desktop.player
- 예:
- 특정 앱의 활성 Core Audio 출력 프로세스를 찾지 못할 때 명확한 오류 표시
- 영문/한글 README의 오디오 포맷 및 특정 앱 사용 안내 갱신
설치
ZIP을 풀고 LowEnd Native Audio.app을 Applications 폴더로 옮겨 실행하세요. Apple Developer ID로 공증된 앱이 아니므로 처음 실행이 차단되면 Finder에서 앱을 우클릭한 뒤 열기를 선택하세요. 시스템 또는 특정 앱 오디오 처리에는 macOS 시스템 오디오 녹음 권한이 필요합니다. TIDAL은 Exclusive Mode를 끄고 재생을 시작한 뒤 특정 앱 적용을 사용하세요.
SHA-256
c5e1f864847e40a9cd3dae6841acac8d55cb5a93a5a0123644724d2efa38b528 LowEnd-Native-Audio-macOS-v0.2.2.zip
LowEnd Native Audio v0.2.1
LowEnd Native Audio의 모델별 프리셋 동작과 문서를 정리한 패치 릴리즈입니다.
주요 변경 사항
- Clean 모델에서 프리셋 버튼을 비활성화해 슬라이더가 움직이지 않도록 수정
- Circuit 프리셋을 기존 LowEnd / Body / Output 흐름에만 적용
- HighExciter 전용 프리셋 Soft / Air / Detail / Shimmer / Off 추가
- HighExciter 프리셋이 Circuit Output 슬라이더를 변경하지 않도록 수정
- 영문 및 한글 README 전면 갱신
- 권장 및 최소 시스템 사양 문서화
- macOS 앱 내부 버전을 0.2.1로 갱신
설치
ZIP을 풀고 LowEnd Native Audio.app을 Applications 폴더로 옮겨 실행하세요. Apple Developer ID로 공증된 앱이 아니므로 처음 실행이 차단되면 Finder에서 앱을 우클릭한 뒤 열기를 선택하세요. 시스템 전체 오디오 처리에는 macOS 시스템 오디오 녹음 권한이 필요합니다.
SHA-256
6775fca22d18f4129f6eab333e55ca8038b1352c2b3b6bfb6e2d9827ebb4e134 LowEnd-Native-Audio-macOS-v0.2.1.zip