Skip to content

Releases: Gomtanga/lowend-circuit

LowEnd Native Audio v0.2.10

Choose a tag to compare

@Gomtanga Gomtanga released this 28 Aug 08:39
df07c6c

한국어

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, build 88, commit df07c6c

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.log for 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::start as playback-active evidence and CoreaudioSink::close as 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

  • LowEndSupportChecks passed
  • 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, build 88, commit df07c6c

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

Choose a tag to compare

@Gomtanga Gomtanga released this 12 Jul 00:04
00d47f9

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

Choose a tag to compare

@Gomtanga Gomtanga released this 24 Jun 06:59

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 processLive doubles the captured signal.
  • Unsupported device/rate combinations fall back to PCM bypass with a posted reason.
  • ResamplingOutputConditioningEngine.processLive is 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: CFBundleVersion is stamped from the git commit count, with LCBuildCommit / LCBuildDate / LCBuildID shown 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

Choose a tag to compare

@Gomtanga Gomtanga released this 19 Jun 06:22
3e74bcf

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 ResamplingOutputConditioningEngine between 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 kernels
  • DeltaSigmaDSDModulator: 1st/2nd-order error-feedback delta-sigma with an overload guard
  • DoPacker: DoP (DSD-over-PCM) v1.0 packing with 0x05/0xFA markers and stereo interleave
  • OutputConditioningDeviceCapability: 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; RateMatchBench standalone 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

Choose a tag to compare

@Gomtanga Gomtanga released this 14 Jun 03:45
fed859e

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

Choose a tag to compare

@Gomtanga Gomtanga released this 12 Jun 06:44

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

Choose a tag to compare

@Gomtanga Gomtanga released this 11 Jun 19:05
f60414b

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 | 4x selection 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-in transition
  • 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

Choose a tag to compare

@Gomtanga Gomtanga released this 11 Jun 15:28
b7c6140

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

Choose a tag to compare

@Gomtanga Gomtanga released this 10 Jun 13:01

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.desktopcom.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

Choose a tag to compare

@Gomtanga Gomtanga released this 07 Jun 14:10

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