strudel
핵심 포인트
- 1Strudel은 TidalCycles를 JavaScript로 충실히 포팅한 웹 기반 환경으로, 알고리즘 패턴을 라이브 코딩하여 음악을 생성하는 데 사용됩니다.
- 2이 프로젝트는 GNU Affero Public Licence v3에 따라 오픈 소스로 제공되며, 윤리적인 이유로 GitHub에서 Codeberg로 이전하여 소스 코드를 호스팅하고 있습니다.
- 3Strudel은 npm을 통해 다양한 package로 제공되어 다른 프로젝트에서 활용 가능하며, Node.js 및 pnpm을 통해 로컬에서 실행하고 커뮤니티와 기여할 수 있습니다.
스트루델(strudel)은 웹 기반 환경에서 알고리듬 패턴을 라이브 코딩할 수 있도록 설계된 프로젝트로, 특히 타이달사이클스(TidalCycles)를 자바스크립트(JavaScript)로 충실하게 포팅하여 실시간 음악 합성(synthesis)을 가능하게 합니다.
핵심 방법론 및 기술:
스트루델의 핵심 방법론은 타이달사이클스의 강력한 알고리듬 패턴 생성 기능을 웹 환경으로 가져오는 데 있습니다. 이는 자바스크립트와 웹 오디오 API(Web Audio API)를 주로 활용합니다.
- 알고리듬 패턴 언어 재구현: 타이달사이클스의 미니 노테이션(mini-notation)과 패턴 조작 함수들을 자바스크립트로 재구현하여, 사용자가 브라우저에서 직접 알고리듬 패턴을 정의하고 수정할 수 있도록 합니다.
- 실시간 오디오 합성 및 스케줄링: 정의된 패턴은 웹 오디오 API를 통해 실시간으로 사운드(sound)로 변환됩니다. 이는 정밀한 타이밍으로 오디오 이벤트(event)를 스케줄링하고, 다양한 오디오 노드(node)와 프로세싱(processing)을 관리하여 음악적 표현을 가능하게 하는 것을 포함합니다. 프로젝트에 Csound가 사용된 비율이 언급된 것으로 보아, 특정 합성 또는 이펙트(effect) 모듈에 Csound 통합이 이루어졌을 가능성도 있습니다.
- 웹 기반 인터페이스: 사용자 인터페이스는 Astro, MDX 등의 웹 기술로 구축되어, 코드 편집(code editing) 및 실시간 실행 환경을 브라우저 내에서 제공합니다.
- 모듈화된 아키텍처: 프로젝트는 다수의
packages로 구성되어 있으며, NPM을 통해 배포됩니다. 이는 핵심 패턴 엔진(engine), 합성 모듈, UI 컴포넌트,edoScale()과 같은 유틸리티(utility) 기능들이 독립적으로 개발 및 관리될 수 있도록 합니다. 이러한 모듈성은 프로젝트의 확장성과 재사용성을 높입니다. - 라이브 코딩 지원: 코드를 변경하는 즉시 음악에 반영되는 라이브 코딩(live coding) 패러다임을 지원하기 위해, 변경된 코드의 효율적인 재해석(reinterpretation) 및 오디오 스트림(stream)의 끊김 없는 업데이트(update) 메커니즘을 구현합니다.
일반 정보:
이 프로젝트는 코드버그(Codeberg)에서 호스팅(hosting)되며, 윤리적인 이유로 마이크로소프트(Microsoft)의 깃허브(GitHub)에서 이전되었으며, 깃허브로 포크(fork)하지 않을 것을 명시적으로 요청합니다. 사용자는 웹사이트(strudel.cc)에서 직접 사용해 볼 수 있으며, 로컬(local) 환경에서는 Node.js 18+ 및 PNPM을 사용하여 pnpm i 및 pnpm dev 명령어로 개발 서버를 실행할 수 있습니다. 라이선스(license)는 GNU Affero Public License v3 (AGPLv3)를 따르며, 이는 스트루델 코드가 동일한 라이선스 하의 자유/오픈 소스(open source) 프로젝트 내에서만 공유될 수 있음을 의미합니다. 기본 사운드 뱅크(sound bank)는 dough-samples 저장소에서 별도 라이선스 정보를 제공합니다. 기여(contribution) 및 커뮤니티(community) 활동은 타이달사이클스 디스코드(Discord) 채널, 타이달 클럽 포럼(forum), 마스토돈(Mastodon) 계정을 통해 활발하게 이루어지고 있습니다.