audio.crowny.org 서버 구현 (포트 9880)
개요
CAF7 오디오 포맷 웹 서비스 구현. 랜딩페이지 + 웹 플레이어 + API + 다운로드 페이지.
무엇을 했는지
1. /Users/ef/crowny-audio/server/server.js
Node.js 순수 http 모듈 (외부 npm 의존성 0)
포트 9880 고정
라우팅:
GET / → server/public/index.html (랜딩)
GET /player → player/web/index.html (기존 웹 플레이어)
GET /downloads → 6플랫폼 다운로드 페이지 (인라인 생성)
GET /api/info?file= → CAF7 헤더 파싱 + 메타데이터 JSON
GET /spec/* → spec/ 디렉토리 정적 서빙
GET /build/* → build/ 디렉토리 (바이너리 다운로드)
GET /daw → http://daw.crowny.org:9881 리다이렉트 (302)
POST /upload → 업로드 바이너리 → CAF7 매직 확인 + 메타 JSON
POST /convert → 501 + crownyc VM 사용 안내
server-side CAF7 헤더 파싱 (parseCAF7Header): META 청크 title/artist/album, 프로파일, threshold, 존재율2. /Users/ef/crowny-audio/server/public/index.html
다크 테마 랜딩페이지 (외부 CDN 없음, 모든 CSS 인라인)
히어로: 애니메이션 파형 캔버스 + "존재하는 파장만 기록한다" 슬로건
섹션 1 (PCM vs CAF7): 비교 테이블 + 바 차트 애니메이션
피아노 7% 존재 → 4.7배, 효과음 3% → 9.8배, 드럼 24% → 1.4배
8ch 밴드 8시간: Logic Pro 33.2GB → CAF7 4.1GB (1/8)
섹션 2 (기술 스펙): MDCT / -80dB 소멸 / 33트릿 / 크라우니력 / 청크 / 4프로파일
섹션 3 (다운로드): 6플랫폼 카드 (macOS/Windows/Linux/Android/iOS/Web)
섹션 4 (CrownyDAW): DAW 트랙 시각화 + daw.crowny.org 링크
반응형, 스크롤 fade-up 애니메이션3. /Users/ef/crowny-audio/server/서버.한선
- 한선씨 동반 구현 (TCP대기/TCP수락/TCP읽기/TCP쓰기/TCP닫기 사용)
- 경로파싱 / 메서드파싱 / CAF7확인 / 라우팅 핸들러 전부 한선씨로 구현
관련 파일 경로
/Users/ef/crowny-audio/server/server.js — 메인 서버
/Users/ef/crowny-audio/server/public/index.html — 랜딩페이지
/Users/ef/crowny-audio/server/서버.한선 — 한선씨 동반
/Users/ef/crowny-audio/player/web/index.html — 기존 웹 플레이어 (연동)
/Users/ef/crowny-audio/spec/CAF7_SPEC.3layer — 스펙 문서
실행 방법
bashcd /Users/ef/crowny-audio
node server/server.js
# → http://localhost:9880
잔여 이슈
POST /upload multipart 파일명 추출 미구현 (raw body만 받음)
GET /api/info 실제 CAF7 큐브 디코딩은 crownyc VM에 위임
- 한선씨 서버(
서버.한선)는 hanseonc_high 빌드 후 실행 가능 (Node.js 서버와 별도 운용)
- iOS/Android 바이너리는 build/ 디렉토리에 없으므로 다운로드 시 404 발생 (빌드 산출물 필요)