Next.js 기반의 실시간 MIDI 세션 공유 웹 애플리케이션입니다. 고유한 링크를 통해 여러 사용자가 실시간으로 MIDI 신호를 주고받을 수 있습니다.
- 세션 기반 연결: URL 쿼리 파라미터를 통한 세션 식별 및 자동 생성
- 실시간 MIDI 전송: Supabase Realtime을 활용한 실시간 MIDI 신호 중계
- Web MIDI API 연동: 물리적/가상 MIDI 장치 연결 및 제어
- 직관적 UI: 장치 선택, 상태 표시, 활동 모니터링
- Frontend: Next.js 15 (App Router), React 18, TypeScript
- Styling: Tailwind CSS
- Backend: Supabase (Realtime Broadcast + Presence)
- API: Web MIDI API
- Icons: Lucide React
pnpm install.env.local 파일에서 Supabase 설정을 업데이트하세요:
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_keypnpm dev브라우저에서 http://localhost:3000을 열어 확인하세요.
- Supabase에서 새 프로젝트 생성
- 프로젝트 URL과 anon key를
.env.local에 설정 - Realtime 기능이 활성화되어 있는지 확인
- 웹 애플리케이션에 접속
- 자동으로 생성된 세션 링크를 다른 사용자와 공유
- MIDI 초기화
- MIDI 입력/출력 장치 선택
- 실시간 MIDI 협업 시작!
src/
├── app/
│ ├── layout.tsx # 루트 레이아웃
│ └── page.tsx # 메인 페이지
├── components/
│ └── MidiSession.tsx # MIDI 세션 컴포넌트
├── hooks/
│ └── useMidiSession.ts # MIDI 세션 커스텀 훅
└── lib/
└── utils.ts # 유틸리티 함수
pnpm dev: 개발 서버 실행pnpm build: 프로덕션 빌드pnpm start: 프로덕션 서버 실행pnpm lint: ESLint 실행pnpm type-check: TypeScript 타입 체크
MIT License