5.9 KiB
5.9 KiB
작업 플랜
- UUID:
4b3baabc-2767-4470-bdd9-ea310403f684 - 작업자:
Codex - 생성 시각:
2026-06-02 15:41 - 요청 요약:
Orange Pi Zero 2W에서 실행할 클라이언트 준비
할 일
- 현재 요청 확인
- 필수 문서 확인
- 저장소 상태와 관련 파일 목록 확인
- 클라이언트 준비 범위 정리
- 사용자 답변을 바탕으로 클라이언트 방향성 문서 작성
- README 문서 목록 갱신
- 사용자의 구현 승인 확인
- 승인 후 클라이언트 구현 계획 확정
- 승인 후 필요한 파일 생성
- 로컬 검토와 빌드 가능 여부 확인
- 완료 내용 정리
현재 확인 내용
- 현재 브랜치는
main이며 원격origin/main과 같은 위치입니다. client/와server/구현 파일은 아직 없습니다.- 프로젝트 규칙상 사용자가 계획을 확정하고 실행을 지시하기 전까지 C++ 소스 코드, 빌드 시스템, 테스트 코드, 구조 변경은 만들지 않습니다.
- 클라이언트는 Orange Pi Zero 2W의 USB 라발리에 마이크 입력을 캡처하고 Wi-Fi를 통해 Mac 수신기/믹서로 전송하는 역할입니다.
클라이언트 준비 초안
목표
Orange Pi Zero 2W에서 USB 라발리에 마이크를 인식하고, C++ 송신기 프로그램으로 Mac 수신기까지 오디오를 전송할 수 있는 최소 클라이언트 경로를 준비합니다.
대상 환경
- 보드: Orange Pi Zero 2W
- OS: Orange Pi 공식 Debian 12 Bookworm Server, Linux 6.1
- 언어: C++
- 실행 형태: headless SSH 접속 후 실행
우선 확인할 항목
- OS 부팅과 SSH 접속
- Wi-Fi 연결 안정성
- USB 라발리에 마이크 인식 여부
- ALSA 장치 목록 확인
- Mac 수신기 IP와 UDP 수신 가능 여부
라이브러리 후보
- 오디오 캡처: ALSA
libasound2-dev - 네트워크 전송: POSIX UDP socket
- 빌드: CMake 후보, 단 사용자의 승인 전에는 생성하지 않음
초기 송신 방식 후보
- 압축 없는 PCM 16-bit mono
- 샘플레이트 후보: 48 kHz 또는 44.1 kHz
- 프레임 크기 후보: 10 ms 또는 20 ms
- 전송: UDP 패킷에 간단한 헤더와 PCM payload 포함
검증 방법 후보
- Orange Pi에서 마이크 장치 확인
- 짧은 ALSA 캡처 동작 확인
- Mac에서 UDP 패킷 수신 확인
- 단일 송신기 오디오 재생 확인
- 지연, 끊김, 패킷 손실 로그 확인
사용자 답변 반영
결정된 초기 범위
- USB 라발리에 마이크 모델은 고정하지 않습니다.
- 첫 테스트 마이크는 MATA STUDIO C300 같은 일반 USB 마이크를 사용합니다.
- 초기 목표는 지연 시간 최적화가 아니라
소리가 나온다까지입니다. - 첫 버전은 송신기 1대만 검증합니다.
- Mac 수신기 포트는 고정 사용을 선호합니다.
- Mac 수신기 IP는 고정 설정과 자동 검색 후보를 함께 검토합니다.
반영할 제안
- 첫 구현은 고정 IP 설정 파일 기반으로 시작합니다.
- 자동 검색은 초기 오디오 경로 검증 이후 확장 후보로 둡니다.
- 설정 파일에는 Mac 수신기 주소, 포트, ALSA 장치, 샘플레이트, 채널 수, 프레임 길이를 둘 수 있게 설계합니다.
- USB 마이크 모델이 바뀔 수 있으므로 ALSA 장치명을 하드코딩하지 않고 설정 또는 실행 옵션으로 지정할 수 있게 합니다.
- 마이크가 지원하는 실제 포맷을 먼저 확인한 뒤 캡처 포맷을 정합니다.
우려 사항
- USB 마이크가 Linux ALSA에서 USB Audio Class 장치로 정상 인식되는지 확인해야 합니다.
- 마이크가 96 kHz/24-bit 위주로 동작할 경우, 초기 송신 포맷인 48 kHz/16-bit와 맞추기 위해 ALSA
plug변환 또는 별도 변환이 필요할 수 있습니다. - Orange Pi Zero 2W의 USB 연결 방식, 전원, 허브 품질에 따라 마이크 인식이나 안정성이 달라질 수 있습니다.
- 마이크 자체의 MUTE, 게인, 모니터링 설정 때문에 캡처는 되지만 무음처럼 보일 수 있습니다.
- 여러 USB 오디오 장치가 연결되면 ALSA 카드 번호가 바뀔 수 있으므로 카드 번호만 믿는 설정은 피해야 합니다.
진행 기록
docs/02-client-direction.md를 추가해 클라이언트 초기 목표, 마이크 기준, ALSA 캡처 방향, UDP 전송 방향, 수신기 주소 설정, 자동 검색 확장 후보, 검증 순서를 정리했습니다.README.md의 문서 목록에 클라이언트 방향성 문서를 추가했습니다.- 사용자의 진행 지시에 따라
client/에 C++ 클라이언트 초기 구현을 추가했습니다. client/src/main.cpp는 설정 파일을 읽고 ALSA에서 signed 16-bit little endian PCM을 캡처한 뒤 UDP 패킷으로 송신합니다.client/CMakeLists.txt,client/client.conf.example,client/README.md를 추가했습니다.docs/02-client-direction.md를 현재 구현된 40바이트 UDP 헤더 형식에 맞춰 갱신했습니다.- 로컬 PowerShell에는
cmake와g++가 없고, WSL Ubuntu에도 빌드 도구와 ALSA 개발 패키지가 없어 실제 컴파일은 수행하지 못했습니다. - 실제 빌드 검증은 Orange Pi 또는 ALSA 개발 패키지가 설치된 Linux 환경에서 수행해야 합니다.
- 사용자 추가 기준에 따라 초기 단일 UDP 포트를
4860으로 변경했습니다. - 여러 포트가 필요할 경우
4800-5000범위 안에서 배정하는 방향을 문서에 반영했습니다.
완료 요약
- 클라이언트 방향성 문서를 추가하고 README 문서 목록에 연결했습니다.
- Orange Pi용 최소 C++ 클라이언트 구조를 추가했습니다.
- 첫 버전은 단일 USB 마이크, 단일 Mac 수신기, 고정 설정 파일, UDP PCM 송신 경로에 집중합니다.
- 자동 검색, 압축, 다중 송신기, 지연 시간 최적화는 이후 확장 후보로 남겼습니다.