Strudel REPL - 브라우저에서 구동되는 음악 라이브 코딩 환경
(strudel.cc)- Strudel REPL은 웹 브라우저에서 작동하는 오픈소스이며 무료인 음악 라이브 코딩 환경
- 별도의 소프트웨어 설치 없이 브라우저에서만으로 실시간 음악 생성 및 수정이 가능
- 기본적으로 REPL(Read–Eval–Print Loop) 방식으로, 사용자가 코드를 입력하면 즉시 사운드 패턴이 재생됨
-
주요 특징
- 사용자는
"s(\"[bd ]*2\").bank(\"tr909\").dec(.4)"
과 같은 코드 명령어를 통해 패턴 시퀀싱, 악기 선택, 사운드 조절을 쉽게 수행할 수 있음 - 다양한 드럼 샘플러(bank) , 디케이(decay) 설정 등 디테일한 음악적 조작이 가능함
- 실시간 코드 수정 및 결과 청취가 즉각적으로 이루어지므로, 즉시적 피드백이 강점임
- 사용자는
-
접근성과 활용성
- DAW(디지털 오디오 워크스테이션) 또는 복잡한 음악 소프트웨어 없이도 간단한 코드로 음악 제작 및 실험을 도전할 수 있음
- 음악, 프로그래밍 입문자도 낮은 진입장벽으로 재미와 창의적 경험을 얻을 수 있음
- 오픈소스 및 커뮤니티 지원으로 향후 확장성 및 협업 가능성도 내포함
-
비교 및 장점
- 기존 라이브 코딩 플랫폼(TidalCycles, Sonic Pi 등)보다 웹 환경 기반으로 접근성과 편리성이 높음
- 별도의 설치/설정 과정 없이 누구나 즉시 음악 라이브 코딩 경험을 시작할 수 있음
Hacker News 의견
- Strudel의 라이브 코딩 세션이 YouTube에 정말 멋지게 많음, 예시로 이 영상을 추천함
- Switch Angel의 영상이 특히 인상적임, 이 분의 인스타그램 튜토리얼도 참고할 만함
- 내가 정말 좋아하는 영상 중 하나는 보이스 필터 덕분에 내레이션이 곡의 일부처럼 느껴졌던 이 영상임, 특히 재미있게 봤음
- 누가 이 영상의 오디오(보컬 포함)를 리믹스해보면 아주 재밌을 것 같음
- 동일한 링크가 두 번 붙여진 것 같음, 원래 의도했던 두 번째 링크가 무엇인지 궁금함, 그것도 보고 싶음
- Strudel은 TidalCycles(Haskell)의 JavaScript 포트임, TC가 SuperCollider를 신스로 쓰는 것과 달리 Strudel은 superdough라는 자체 구현체를 사용하는 듯함, 지금 SuperCollider sclang을 배우는 중이고 버전 업그레이드가 있으면 HN에 공유하고 싶음, 이 주제에 대해선 항상 깊이 있는 토론이 있곤 함, 근데 sclang은 음악계의 PHP 같아서 더 못생기고 일관성이 덜함, 그렇지만 파워풀하고 재미있기도 함
- SuperCollider 포럼에서는 wasm으로 SuperCollider를 포팅하는 논의가 있음(웹어셈블리 지원에 대한 게시물), 나중에 이게 사용될 수 있을지 궁금함
- 나도 TidalCycles를 만지작거리면서 Haskell 문법이 좋아 사용해보고 싶었지만 Strudel UI가 너무 매끄러워서 JS 문법을 감수함, superdough라는 걸 덕분에 알게 되었는데, 지금까지 한 번도 못 봤던 거라 호기심이 생김
- 예전에 SuperCollider를 쓸 때는 Overtone을 썼는데, Overtone은 모든 걸 Closure API로 감싸서 sclang 대신 s-식으로 소리를 정의할 수 있음, Overtone이 요즘도 유지되는지 완전히는 모르지만 아직 활동이 조금은 있는 듯함(공식 사이트)
- 내 경험상 sclang은 Smalltalk와 Ruby의 하이브리드 같았음, 진짜 "일관성 없음" 그 자체이고, 낯설면서 이상하게 익숙하지만, 그래도 PHP보다는 훨씬 더 우아하다고 생각함
- Strudel이 멋진 이유는 기존 음악 툴들이 좀 오래되고 NIH(not invented here) 증후군에 걸린 것처럼 느껴지는 반면, 실제 필요한 건 JS로 돌아가는 것이라는 점임, 이전 세대 툴(sonic pi 등)이 나올 땐 이런 게 어려웠지만 지금은 타이밍이 딱 맞음, 다음 세대에는 시각화와 코드가 진짜 양방향 소통하는 인터페이스가 나왔으면 좋겠음, 현재 슬라이더가 정말 멋진 요소라고 생각함, Bret Victor도 뿌듯해 할 듯함
- flok이라는 도구도 있는데, strudel repl을 hydra의 비주얼과 결합함, sclang 등 다른 알고레이브 환경도 제공되며 모든 게 동기화됨(crdts로 추정), 친구들과 원격 잼할 때 아주 좋음(flok 링크)
- 그리고 새롭게 나온 dilber.io도 있음(깃허브 링크)
- 나는 음악적 재능이 별로 없는데, 이렇게 만들어 봤음
나도 여기서 무슨 일이 일어나는지 반도 모르겠지만 정말 재미있었고, 아마 내가 해본 프로젝트 중 제일 좋아함, 그리고 페이지 내에 바로 참조 문서가 있어서 아무거나 시도해보며 바로 결과를 확인할 수 있었던 점이 제일 재밌었음$: arrange( [4, "<sh09_bd>(4,8)"], [4, "<sh09_bd>(4,8)"], [1, "<sh09_bd mfb512_sd>(6,6)"] ).s().fast(2).layer(x=>x.add("0,2")).gain(".4!2 .5").phaser(2).phasercenter("<4000 800 4000 4000>") $: s("gm_tinkle_bell").distort("<1 2 1 2:.5>").crush("<8 8 8 6 6 8 8>").chop(4) $: arrange( [2, "<c4 e4 g4>(3,8)"], [1, "<f4 a4 c5>(3,8)"], [1, "<c4 e4 g4>(3,8)"] ).note().chop(4).fast(4).distort("<3:.5>").phaser(4).phasercenter("<800>").fm(4).fmdecay("<.05 .05 .1 .2>").fmsustain(.4)._scope()
- 이 에러 메시지가 뜸
내 보안 설정에서 뭘 바꿔야 이게 작동하는지 궁금함Uncaught (in promise) ReferenceError: AudioContext is not defined ln https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1 W https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1 un https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1 c https://strudel.cc/_astro/spectrum.Bf7jMx6O.js:1
- 내(Lil Data) 리믹스 버전인 DJ_Dave의 Array를 공유함(Strudel 믹스, 유튜브 영상)
- 이 소개 영상이 마음에 듦(유튜브 링크)
- Strudel이 텍스트 기반이라 AI가 음악을 자동으로 생성하기 정말 쉬워짐, 음악을 strudel 노테이션으로 받아 적어주는 Strudel 에이전트가 나오길 기다리고 있음
- 나는 내 손으로 작곡하는 게 좋지만, AI가 프롬프트 입력만으로 사운드 디자인까지 ("XYZ 곡 리드 신스랑 비슷한데 좀 더 버지하게, ABC 파라미터도 따로 조절하게") 해결해준다면 혁명적일 것 같음
- 곧 에이전트가 음악 자체를 들으면서, 우리가 이전에 어떻게 평가했는지까지 분석해줄 수 있을 거라 생각함
- 최근 유튜브에서 Strudel 인터페이스를 봤는데 처음에는 콘솔 같지만 슬라이더 같은 요소도 있어서 재미있게 느껴졌음