CmdSync · macOS · In development (beta) CmdSync · macOS · 개발 중 (베타)

See the latency.
Play together.
지연을 눈으로 보고,
함께 연주합니다.

CmdSync is a macOS dashboard for low-latency remote music sessions — the latency, jitter, loss, and buffer decisions that make online jamming possible, opened up as an instrument panel. This page explains the technology in five minutes, using Yamaha SYNCROOM's proven design as the reference. CmdSync는 저지연 원격 합주를 위한 macOS 대시보드입니다 — 온라인 합주를 가능하게 하는 지연·지터·손실·버퍼 결정들을 계기판처럼 열어 보여줍니다. 이 페이지는 검증된 레퍼런스인 Yamaha SYNCROOM의 설계를 기준 삼아, 그 기술을 5분 안에 설명합니다.

≈15 ms
playable range
합주 가능 범위
48 kHz
PCM audio
PCM 오디오
5 ms
Live Lab frames
Live Lab 프레임
253
tests passing
테스트 통과
The Problem
문제

Conversation is turn-taking. Ensemble is simultaneity. 대화는 주고받기지만, 합주는 동시성입니다.

Video-conference stacks are built for speech: hundreds of milliseconds of delay, big jitter buffers, echo cancellation and noise suppression that actively damage musical signals. That's fine for talking — turn-taking forgives delay. Playing together collapses at tens of milliseconds.

The benchmark is physical. Sound travels at ~340 m/s, so two musicians standing 5 m apart already play with ≈15 ms of natural delay — and absorb it without noticing. Networked music performance aims to get network delay near that "playable range." (Academic studies put the threshold anywhere from 20 to 50 ms, depending on genre and tempo.)

화상회의 스택은 대화용으로 설계됐습니다: 수백 ms의 지연, 큰 지터 버퍼, 그리고 음악 신호를 훼손하는 에코 제거·노이즈 억제. 대화는 주고받기라 지연에 관대하니 괜찮지만, 합주는 수십 ms에서 무너집니다.

기준점은 물리적입니다. 소리는 약 340 m/s로 전파되므로, 5 m 떨어진 두 연주자 사이에도 이미 ≈15 ms의 자연 지연이 있습니다 — 그리고 연주자는 이를 느끼지 못한 채 흡수합니다. 네트워크 합주의 목표는 네트워크 지연을 이 "합주 가능 범위"에 근접시키는 것입니다. (학술 연구는 장르·템포에 따라 임계값을 20~50 ms로 봅니다.)

The Mechanisms 원리

Four mechanisms make online ensemble possible. 온라인 합주를 가능하게 하는 네 가지 메커니즘.

This is the design proven by Yamaha SYNCROOM's NETDUETTO engine, as publicly documented. The right column names the CmdSync module that corresponds to each mechanism. Yamaha SYNCROOM의 NETDUETTO 엔진이 검증한 설계입니다 (공개 문서 기준). 오른쪽 열은 각 메커니즘에 대응하는 CmdSync 모듈입니다.

1
Pure P2P audio순수 P2P 오디오P2P
The server only manages rooms — join, leave, presence. Audio flows directly between peers in a full mesh. The cost: bandwidth and CPU grow per participant, which is the structural reason behind the 6-player default cap.
서버는 룸 관리만 합니다 — 입장·퇴장·존재 확인. 오디오는 참가자 간 풀메시로 직접 흐릅니다. 대가: 인원 수만큼 대역폭·CPU가 늘어나며, 이것이 기본 정원 6명의 구조적 이유입니다.
CmdSync: TopologyPlanner
2
Adaptive jitter buffer적응형 지터 버퍼BUFFER
At connect time, measure the link and pick the minimum stable buffer size — the latency-vs-stability balance point is chosen per connection, never fixed.
연결 시 회선을 측정해 최소 안정 버퍼 크기를 선택합니다 — 지연과 안정성의 균형점을 고정값이 아니라 회선마다 다르게 잡습니다.
CmdSync: JitterBufferAdvisor
3
Continuous monitoring지속 모니터링·지터 보상MONITOR
Delay is observed throughout the session with automatic correction; the receive buffer keeps adjusting itself to the network's behavior.
세션 내내 지연을 관찰하며 자동 보정하고, 수신 버퍼는 네트워크 상태에 맞춰 스스로 조정됩니다.
CmdSync: 1 Hz telemetry (RFC 3550)
4
Interpolation over clock sync클럭 동기화 대신 보간CLOCK
Peers' digital clocks are never synchronized; gaps are filled by interpolation instead. It avoids the extra latency of a sync protocol — accepting pitch-like noise under severe instability.
참가자 간 디지털 클럭을 동기화하지 않고, 결손 데이터를 보간으로 메웁니다. 동기화 프로토콜의 추가 지연을 피하는 대신, 심한 불안정 시 피치성 노이즈를 감수하는 트레이드오프입니다.
CmdSync: ClockSyncEstimator
The Latency Budget 지연 예산

Where the milliseconds go. 밀리초는 어디로 가는가.

Every remote session spends its delay in four places. The last one holds the key reframe: not "reduce the delay" — make everyone hear equally late. 모든 원격 세션은 네 곳에서 지연을 씁니다. 마지막 단계에 발상의 전환이 있습니다: "지연을 줄인다"가 아니라 "모두가 같은 만큼 늦게 듣게 만든다."

1
Capture캡처
ASIO / Core Audio · 64–128 samples
≈2–4 ms at the audio interface — the smallest buffer your hardware sustains.
오디오 인터페이스에서 ≈2~4 ms — 하드웨어가 버틸 수 있는 최소 버퍼로.
2
Transport전송
P2P direct · no server relay
Distance is latency — one reason official service regions stay geographically close (Japan + Korea).
거리가 곧 지연 — 공식 서비스 지역이 일본+한국으로 가까운 이유 중 하나.
3
Buffer버퍼
adaptive · minimum-stable
Absorb network jitter with the smallest buffer the link can sustain — measured, not guessed.
회선이 버틸 수 있는 최소 버퍼로 지터를 흡수 — 추측이 아니라 측정으로.
4
Align정렬
self-delay ≤ 20 ms · play-ahead
Delay your own monitor so local and remote arrive together; send the metronome ahead of time.
자기 모니터에 지연을 더해 내 소리와 상대 소리를 동시에 듣고, 메트로놈은 미리 전송.
Two apps, one physics 두 앱, 하나의 물리 법칙

The reference, and the experiment. 레퍼런스, 그리고 실험.

Yamaha SYNCROOM

The proven reference — an online session service built on the proprietary NETDUETTO engine, officially serviced in Japan and South Korea since 2020.

검증된 레퍼런스 — 독자 NETDUETTO 엔진 위에 세워진 온라인 세션 서비스. 2020년부터 일본·대한민국 공식 서비스.

  • 48 kHz / 16-bit stereo, up to uncompressed48 kHz / 16-bit 스테레오, 비압축 가능
  • 6 terminals per room (P2P full mesh)룸당 6 터미널 (P2P 풀메시)
  • NAT traversal without port forwarding포트 포워딩 없는 NAT 통과
  • Proprietary engine — a black box that works비공개 엔진 — 작동하는 블랙박스
CmdSync

The open experiment — a macOS-first SwiftUI dashboard plus a beta two-peer LAN UDP live link ("Live Lab"), with demo and measured data strictly separated.

열린 실험 — macOS 우선 SwiftUI 대시보드 + 베타 2-peer LAN UDP 라이브 링크("Live Lab"). 데모와 실측 데이터를 엄격히 구분합니다.

  • Measured RTT · jitter · loss · drift, at 1 Hz실측 RTT · 지터 · 손실 · 드리프트 (1 Hz)
  • 48 kHz mono PCM · 5 ms frames48 kHz 모노 PCM · 5 ms 프레임
  • Swift 6 · zero third-party dependenciesSwift 6 · 서드파티 의존성 0
  • Honest labeling — an instrument panel정직한 라벨링 — 계기판
The CmdSync Map 대응 지도

Same physics, opened up. 같은 물리 법칙을, 계기판으로.

If SYNCROOM is a black box that works, CmdSync turns the same physics into an instrument panel — each design decision the product seals inside becomes something you can see and adjust. SYNCROOM이 "작동하는 블랙박스"라면, CmdSync는 같은 물리 법칙을 계기판으로 만듭니다 — 제품 안에 봉인된 설계 결정 하나하나를 보고 조정할 수 있는 형태로.

01
Adaptive buffer적응형 버퍼
→ AdaptiveJitterBuffer + Advisor (12–96 ms)
02
No clock sync — interpolate클럭 동기화 없이 보간
→ ClockSyncEstimator: measure first측정 우선 (offset · RTT · drift ppm)
03
Fixed full mesh고정된 풀메시
→ TopologyPlanner: Mesh / SFU / Relay as explicit choices를 명시적 선택지로
04
Internal jitter compensation내부 지터 보상
→ RFC 3550 jitter, promoted to first-class UI지터 추정을 1급 화면 요소로
05
48 kHz · ASIO 64–128
→ Live Lab: 48 kHz PCM · 5 ms frames프레임
06
Internet P2P + NAT traversal인터넷 P2P + NAT 통과
Not yet — beta is LAN-only. The stated next gap.아직 아님 — 베타는 LAN 전용. 명시된 다음 과제.
Under the hood 내부 들여다보기

Real, not simulated. 시뮬레이션이 아니라 실측.

The live link is a small, testable stack — a binary wire format, an NTP-style clock estimator, and a headless CLI whose loopback run must pass hard acceptance gates. 라이브 링크는 작고 테스트 가능한 스택입니다 — 바이너리 와이어 포맷, NTP식 클럭 추정기, 그리고 루프백 실행이 엄격한 수용 게이트를 통과해야 하는 헤드리스 CLI.

wire CSYN audio packets · 64-byte header · 48 kHz mono PCM · 5 ms frames control CSYC JSON · hello / helloAck handshake · 1 Hz clock-sync + stats clock NTP-style offset & RTT · EWMA · least-squares drift (ppm) jitter RFC 3550 §6.4.1 interarrival estimator gates loss < 2% · RTT < 50 ms · jitter < 5 ms tests swift test — 253 passing · 0 failures
Status 현재 상태

Honest labeling. 정직한 라벨링.

The repo rule: what's demo says DEMO, what's measured says LIVE. This page follows the same rule. 저장소의 원칙: 데모는 DEMO라고, 실측은 LIVE라고 말한다. 이 페이지도 같은 원칙을 따릅니다.

Works today
오늘 동작하는 것
  • SwiftUI dashboard + unit-tested domain enginesSwiftUI 대시보드 + 단위테스트된 도메인 엔진
  • Live Lab: two Macs on one LAN stream live mic audioLive Lab: 같은 LAN의 두 Mac이 라이브 마이크 오디오 스트리밍
  • Measured telemetry: RTT, clock offset, jitter, loss, drift실측 텔레메트리: RTT · 클럭 오프셋 · 지터 · 손실 · 드리프트
  • Headless CLI harness: listen · send · loopback헤드리스 CLI 하니스: listen · send · loopback
Not yet — deliberately
아직 아닌 것 — 의도적으로
  • Two peers only · LAN/loopback only (no NAT traversal)2 peer 한정 · LAN/루프백 전용 (NAT 통과 없음)
  • Uncompressed PCM only — no codecs yet비압축 PCM 전용 — 코덱은 아직
  • Clock drift is measured, not yet corrected클럭 드리프트는 측정만, 보정은 아직
  • No internet-scale claims until they're measured실측 전에는 인터넷급 성능을 주장하지 않음

Building this in the open.
Let's talk.
열어놓고 만드는 중입니다.
이야기 나눠요.

If you jam remotely, build audio software, or just met me and got curious — this page is the five-minute version. I'm happy to go deeper. 원격 합주를 하시거나, 오디오 소프트웨어를 만들거나, 방금 저를 만나 궁금해지셨다면 — 이 페이지가 5분 요약본입니다. 더 깊은 이야기는 언제든 환영합니다.

CMDSPACE CMDSPACE

Command your space. 당신의 공간을 지휘하세요.