# 작업 플랜 - UUID: `b47aca02-f7bc-4df3-aba9-386f09d2e974` - 작업자: `Codex` - 생성 시각: `2026-06-02 15:55` - 요청 요약: `Mac에서 실행할 서버 수신/믹서 준비` ## 할 일 - [x] 현재 요청 확인 - [x] 필수 문서 확인 - [x] 저장소 상태와 서버 관련 파일 목록 확인 - [x] 클라이언트 방향성 문서 확인 - [x] 서버 준비 범위 정리 - [x] 서버 방향성 문서 작성 - [x] 서버 폴더 README와 설정 예시 추가 - [x] README 문서 목록 갱신 - [x] 결과 검증 - [x] 완료 내용 정리 ## 현재 확인 내용 - 현재 브랜치는 `main`이며 원격 `origin/main`과 같은 위치입니다. - 작업 시작 시점의 `server/` 디렉터리는 비어 있었습니다. - 작업 시작 시점에 사용자 또는 이전 작업으로 보이는 변경사항이 있습니다. - `README.md` 수정 - `client/` 추가 - `docs/02-client-direction.md` 추가 - `plans/4b3baabc-2767-4470-bdd9-ea310403f684.md` 추가 또는 수정 - 사용자 변경사항은 되돌리지 않고 서버 준비 내용만 추가합니다. - 프로젝트 규칙상 사용자가 계획을 확정하고 실행을 지시하기 전까지 C++ 소스 코드, 빌드 시스템, 테스트 코드, 프로토콜 세부 구현은 만들지 않습니다. ## 서버 준비 초안 ### 목표 Mac에서 실행되는 서버가 Orange Pi Zero 2W 클라이언트가 보낸 UDP 오디오 패킷을 수신하고, 단일 송신기의 PCM 오디오를 재생할 수 있는 최소 경로를 준비합니다. 초기 목표는 믹싱 기능 완성이 아니라 `Mac에서 실제 소리가 나온다`는 것을 확인하는 것입니다. ### 대상 환경 - 실행 장비: Mac - 역할: UDP 수신기 및 이후 믹서 - 언어: C++ - 초기 실행 형태: 터미널에서 실행하는 headless/CLI 프로그램 후보 ### 우선 확인할 항목 - Mac 로컬 IP 확인 - Orange Pi와 Mac이 같은 Wi-Fi 네트워크에서 통신 가능한지 확인 - Mac 방화벽 또는 네트워크 권한 확인 - UDP 포트 수신 가능 여부 확인 - 수신한 PCM 프레임을 Mac 오디오 출력 장치로 재생 가능한지 확인 ### 라이브러리 후보 - 네트워크 수신: POSIX UDP socket - 오디오 출력: PortAudio, RtAudio, Core Audio 후보 - 빌드: CMake 후보, 단 사용자의 구현 승인 전에는 생성하지 않음 ### 초기 수신 방식 후보 - 고정 UDP 포트에서 단일 클라이언트 패킷 수신 - 압축 없는 PCM 16-bit mono payload 처리 - 샘플레이트 후보: 48 kHz - 프레임 크기 후보: 10 ms - 서버 지정 패킷 헤더로 sender_id, session_id, sequence, capture_sample_index, timestamp, payload size 확인 ### 검증 방법 후보 - Mac에서 UDP 포트 바인딩 확인 - Orange Pi 또는 로컬 도구에서 테스트 UDP 패킷 수신 확인 - 클라이언트가 보낸 PCM 프레임 수신 확인 - Mac 기본 출력 장치로 오디오 재생 확인 - 패킷 손실, 순서 역전, 수신 지연을 로그로 확인 ## 메모 현재 단계에서는 코드나 빌드 파일을 만들지 않습니다. 다음 단계는 서버 방향성 문서를 정리하고, 사용자가 서버 구현 계획을 승인하면 C++ 서버 구현 계획을 확정하는 것입니다. ## 진행 기록 - `docs/03-server-direction.md`를 추가해 Mac 서버의 초기 목표, UDP 수신 방향, 오디오 출력 후보, 패킷 포맷 후보, 지터/버퍼링 방향, 검증 순서를 정리했습니다. - `server/README.md`를 추가해 서버 폴더의 현재 목적과 구현 전 기준을 정리했습니다. - `server/server.conf.example`을 추가해 초기 설정 후보를 기록했습니다. - `README.md`의 문서 목록에 서버 방향성 문서를 추가했습니다. - 현재 요청에서는 문서화와 설정 예시만 추가했고, C++ 소스 코드, 테스트 코드, 빌드 시스템은 생성하지 않았습니다. ## 완료 요약 - 서버 준비 문서와 서버 폴더 안내 파일을 추가했습니다. - 사용자 요청에 따라 서버 초기 포트를 `4860`, 오디오 포맷 후보를 `48 kHz / 16-bit / mono / 10 ms`로 기록했습니다. - 서버 기준으로는 포트 1개를 우선 사용하고, 여러 마이크는 송신기 식별자와 sequence, timestamp로 구분하는 방향을 기록했습니다. - 서버 지정 패킷 헤더 v1 후보와 `miniaudio` 우선 후보를 반영했습니다. - 송신기별 음량 조절은 초기 범위에서 제외했습니다. - 서버 구현 전에는 패킷 포맷, 오디오 출력 라이브러리, 빌드 방식, 검증 절차를 사용자가 승인해야 합니다.