From 767b1c896357fe1f058c1a29bc96c5089905c921 Mon Sep 17 00:00:00 2001 From: jsahn Date: Tue, 13 Oct 2026 18:27:32 +0900 Subject: [PATCH] Mix inputs at 0 dB instead of -3 dB The common attenuation made playback too quiet. Inputs are now summed without attenuation; docs note that loud simultaneous inputs can clip. Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- TROUBLESHOOTING.md | 4 ++-- reference/CURRENT-BOARD.md | 2 +- scripts/radxa-audio.py | 4 ++-- scripts/web/index.html | 2 +- tests/test_manager.py | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d2b60b1..76dca88 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Mac/iPhone의 AirPlay 2 ── Shairport Sync ─┐ - SBC 송신 품질은 medium입니다. 기준 보드에서 high로 동시 수신·송신 시 끊겨 전송량을 줄였습니다. 믹서·입력·송신 버퍼는 각 200 ms이며, 이 조합에서 끊김 없는 청취를 확인했습니다. - DAC 출력은 44.1 kHz / 스테레오 / 16비트, 블루투스용 가상 믹서는 48 kHz입니다. -- 각 입력을 3 dB 낮춥니다. 여러 입력의 큰 소리가 겹쳐 찢어지면 입력 볼륨을 낮추세요. 지연 없는 실시간 녹음/악기 모니터링용 구성은 아닙니다. +- 입력은 감쇠 없이(0 dB) 섞습니다. 여러 입력의 큰 소리가 겹치면 합이 최대치를 넘어 찢어질 수 있으니 입력 볼륨을 낮추세요. 지연 없는 실시간 녹음/악기 모니터링용 구성은 아닙니다. - 각 송신 기기의 볼륨으로 믹스 비율을 바꿉니다. - 출력은 DAC 또는 블루투스 중 하나를 선택합니다. 양쪽 동시 출력은 구현하지 않았습니다. diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md index 1cbf19f..e801766 100644 --- a/TROUBLESHOOTING.md +++ b/TROUBLESHOOTING.md @@ -70,9 +70,9 @@ cat /sys/module/aic8800_fdrv/parameters/ps_on 블루투스 인코딩/무선 전송에는 지연이 추가됩니다. 이 자료는 DAC 또는 블루투스 중 하나를 출력으로 선택하며, 두 출력의 동기 재생은 지원하지 않습니다. -## 3개 이상 입력을 더하면 찢어짐 +## 여러 입력을 더하면 찢어짐 -각 입력의 공통 감쇠는 3 dB입니다. 입력 수가 늘어나면 +입력은 감쇠 없이(0 dB) 섞으므로 두 입력이 동시에 크게 재생되면 합이 최대치를 넘을 수 있습니다. 입력 수가 늘어나면 각 기기의 볼륨을 더 낮춰 합산 클리핑을 피해야 합니다. 최대 안정적인 블루투스 동시 입력 수는 보드 컨트롤러/드라이버와 실제 재생으로 검증해야 합니다. diff --git a/reference/CURRENT-BOARD.md b/reference/CURRENT-BOARD.md index a533f1e..2a9579d 100644 --- a/reference/CURRENT-BOARD.md +++ b/reference/CURRENT-BOARD.md @@ -9,7 +9,7 @@ - 출력 장비 주소: `E4:58:BC:C3:3B:F8` (기존 장비 참고만; 새 설치 기본값이 아님). - 호스트 이름: `radxa-mixer` (기존 `radxa-zero3`에서 변경). - 웹 믹서: `http://radxa-mixer.local` (= `http://192.168.10.83`, 80번 포트), `radxa-mixer-web.service` 자동 시작. -- 공통 감쇠 −3 dB. AirPlay는 기존 네이티브 볼륨만 제어. +- 공통 감쇠 없음(0 dB, 이전 −3 dB에서 사용자 요청으로 변경). AirPlay는 기존 네이티브 볼륨만 제어. - 보스는 영구 등록(`Bonded: yes`, Trusted) 상태. - Wi-Fi 드라이버: aic8800_fdrv; `ps_on=0 he_on=0` 설정을 재부팅 후 확인함. - USB 관리 주소 10.55.0.1/24는 별도 gadget/systemd-networkd 설정이며, diff --git a/scripts/radxa-audio.py b/scripts/radxa-audio.py index ba6ca7a..2d91c66 100755 --- a/scripts/radxa-audio.py +++ b/scripts/radxa-audio.py @@ -68,7 +68,7 @@ def save(path, text, mode=0o644): def mixer(pcm, rate): - return f'''# Managed by radxa-audio; each input is attenuated by 3 dB. + return f'''# Managed by radxa-audio; inputs are mixed at 0 dB (no attenuation). pcm.radxa_dmix {{ type dmix ipc_key 553001 @@ -89,7 +89,7 @@ pcm.radxa_dmix {{ pcm.radxa_mix {{ type plug slave.pcm "radxa_dmix" - ttable {{ 0.0 0.707945784 1.1 0.707945784 }} + ttable {{ 0.0 1.0 1.1 1.0 }} }} ''' diff --git a/scripts/web/index.html b/scripts/web/index.html index 2d5a989..7c69651 100644 --- a/scripts/web/index.html +++ b/scripts/web/index.html @@ -4,4 +4,4 @@

입력 믹서

입력별 볼륨 · 음소거

AirPlay는 기존 볼륨을 조절합니다. 출력 장비의 볼륨은 변경하지 않습니다.

Bluetooth 입력 등록

확인 중

켜 두는 동안 휴대폰 Bluetooth 목록에 Radxa Audio Bluetooth가 표시됩니다. 이 시간에 연결하는 기기는 자동으로 승인·신뢰 등록되므로 등록이 끝나면 꺼 주세요. 이미 등록한 기기는 꺼져 있어도 연결됩니다.

출력 장비

확인 중

출력 전환 중에는 잠시 소리가 멈출 수 있습니다. 전환 후 AirPlay를 다시 선택해 주세요.

-
RADXA MIXER 공통 감쇠 −3 dB · 스테레오
+
RADXA MIXER 감쇠 없음 (0 dB) · 스테레오
diff --git a/tests/test_manager.py b/tests/test_manager.py index 2ac93f5..e1f80f0 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -40,7 +40,7 @@ class ManagerTests(unittest.TestCase): self.assertIn('"radxa_mix"',f['/etc/shairport-sync.conf']) self.assertIn('--pcm=radxa_mix',f['/etc/systemd/system/bluealsa-aplay.service.d/10-radxa-mixer.conf']) self.assertNotIn('--single-audio', ''.join(f.values())) - self.assertIn('ttable { 0.0 0.707945784 1.1 0.707945784 }',f['/etc/asound.conf']) + self.assertIn('ttable { 0.0 1.0 1.1 1.0 }',f['/etc/asound.conf']) self.assertIn('rate 44100',f['/etc/asound.conf']) def test_output_device_is_not_hardcoded(self):