프로젝트 소개

NoiseCraft는 사운드 합성과 음악 제작을 위한 오픈소스, 브라우저 기반 비주얼 프로그래밍 언어이자 플랫폼입니다. 그 설계는 PureData와 Max/MSP에서 느슨하게 영감을 받았으며, 음악적 아이디어를 교환하는 커뮤니티를 육성하는 것을 목표로 합니다. 이 프로젝트는 진행 중인 작업이며 README는 기여자들에게 프로젝트 구축과 디버깅을 도와달라고 명시적으로 요청합니다. noisecraft.app에서 사용해 볼 수 있고 noisecraft.app/browse에서 공유된 프로젝트를 둘러볼 수 있습니다. 현재 Chrome, Firefox, Edge에서 작동하지만, 웹 오디오 구현 문제로 인해 Safari에서는 안정적으로 작동하지 않습니다. 모바일 지원은 부족하다고 설명되어 있으며, 버그는 예상됩니다. 설계 원칙: - 미니멀리즘 철학: 웹 프레임워크 없는 순수 JS/HTML/CSS, 의도적으로 최소한의 의존성, 필요한 기능에 집중, 기능 확장 회피. - UI 설계: 학습 곡선과 마찰 최소화, 인터페이스를 단순하고 깔끔하게 유지, 가능한 한 드롭다운 메뉴와 숨겨진 옵션 회피, 익숙한 키 조합 사용, 모호함 회피. - 언어 설계: 단 하나의 데이터 타입(부동소수점 숫자), 제어 신호와 오디오 신호 간의 구분 없음. - 실용적 고려사항: 대역폭과 서버 비용을 낮게 유지하기 위해 이미지와 사운드 샘플 회피; 샘플을 피하는 것은 또한 사용자들이 사운드 생성에 대해 생각하도록 유도함. 아키텍처 참고사항: - 단일 페이지 앱이 아닌 다중 페이지 설계로, New, Help, Browse가 새 탭을 열어 작업의 우발적 손실을 줄이고 /browse와 /help에 대한 직접 링크를 가능하게 함. - 즉시 모드 GUI: UI는 모델 동작 시 다시 그려지며, 이는 이전 프로젝트 상태를 저장하여 실행 취소/재실행을 단순화하고, 전체 다시 그리기를 피하기 위한 캐싱을 사용함. - 오디오는 AudioView 클래스(public/audioview.js)에 의해 생성되며, 이는 오디오 그래프를 AudioWorklet에서 실행되는 JavaScript로 컴파일함. Web Audio API는 출력에만 사용되고 합성에는 사용되지 않아 브라우저와 기기 간에 사운드가 일관되게 유지됨. - 프로젝트는 쉽게 파싱되는 JSON(.ncft)으로 저장되며, 이는 외부 도구를 가능하게 할 수 있고, README는 프로젝트를 VST로 컴파일하는 것에 대해 추측함. 기여: 버그 수정은 환영하지만, 프로젝트는 새로운 기능과 주요 변경에 대해 보수적이며; 기여자들은 제안된 변경을 논의하기 위해 먼저 이슈를 열도록 요청받음. 개발 설정: Chrome을 권장함. Node.js와 npm을 설치하고, npm install을 실행한 다음 node server.js를 실행함; 앱은 http://localhost:7773/에서 사용 가능함. 테스트는 node tests.js로 실행함. Docker 지침이 제공됨(docker build . -t noisecraft; docker run -p 7773:7773 -d noisecraft). 서버 구성은 환경 변수 DB_FILE_PATH(기본값 ./database.db)와 HTTP_PORT_NO(기본값 7773)를 사용함.