Strudel 라이브 코딩: 코드로 온라인 음악 만들기

음악 패턴을 코드로 작성하고 내장 Strudel 편집기에서 즉시 들어 보세요. 브라우저용 TidalCycles입니다.

아래에서 시작 패턴을 고르고 편집기 안의 재생 버튼을 누른 뒤, 실행 중인 코드를 바꿔 보세요. 이것이 라이브 코딩입니다. 다시 평가하는 순간 음악이 업데이트됩니다.

Strudel 라이브 코딩: 코드로 온라인 음악 만들기
음악 패턴을 코드로 작성하고 내장 Strudel 편집기에서 즉시 들어 보세요. 브라우저용 TidalCycles입니다.
시작 패턴

패턴: 드럼

sound("bd hh sd hh")

편집기 안에서 재생을 눌러야 소리가 시작됩니다. 샘플 브라우저와 비주얼이 있는 전체 환경이 필요하신가요? 전체 Strudel에서 열기

Strudel 미니 표기법 빠른 참조

패턴 언어 대부분을 활용하게 해 주는 열 가지 구문입니다. 큰따옴표 안은 모두 미니 표기법이며, 따옴표로 묶인 한 시퀀스는 정확히 한 사이클 동안 지속됩니다.

구문예제기능
sound() / s()sound("bd hh sd hh")이름 있는 샘플이나 신스를 재생합니다. bd = 킥 드럼, sd = 스네어, hh = 하이햇입니다. 네 이벤트가 한 사이클을 균등하게 나눕니다.
note()note("c4 e4 g4").sound("piano")음이름(c4, eb3) 또는 MIDI 번호로 피치를 재생하고, 뒤에 체인한 사운드로 보냅니다.
* (반복)sound("hh*8")하이햇 8개를 한 이벤트의 시간 안에 압축합니다. 빠른 세분 리듬을 쓰는 표준 방식입니다.
~ (쉼표)sound("bd ~ sd ~")무음 슬롯입니다. 이벤트 그리드는 타이밍을 유지하고 물결표는 아무것도 재생하지 않습니다.
[ ] (그룹)sound("bd [sd sd] bd sd")대괄호는 여러 이벤트를 한 슬롯에 넣어 시간을 세분합니다. 여기서는 빠른 스네어 두 개가 2박을 공유합니다.
< > (교대)note("<c2 eb2 g2>")꺾쇠괄호는 사이클마다 한 항목을 재생하며 순환합니다. 즉석 코드 진행을 만듭니다.
stack()stack(sound("bd*4"), sound("hh*8"))패턴을 겹쳐 동시에 재생합니다. 완전한 드럼 키트를 만들거나 드럼 아래에 베이스라인을 추가하는 방법입니다.
fast() / slow()sound("bd sd").fast(2)패턴을 빠르게 하거나 늘립니다. fast(2)는 사이클당 두 번 반복하고 slow(2)는 한 번을 두 사이클에 펼칩니다.
rev()note("c4 e4 g4 b4").rev()각 사이클 안에서 패턴을 뒤집습니다. 한 단어로 만드는 멜로디 변주입니다.
.euclid(k, n)sound("bd").euclid(3, 8)k개의 히트를 n개 스텝에 최대한 균등하게 분산합니다. euclid(3,8)은 수많은 댄스와 라틴 그루브의 트레시요 리듬입니다.

Strudel과 라이브 코딩 소개

라이브 코딩은 음악이 재생되는 동안 코드를 쓰고 고쳐서 음악을 연주하는 방식입니다. 타임라인에 음표를 배열하는 대신, 4분음표마다 킥 드럼, 사이클마다 바뀌는 코드, 셋잇단음표에 압축한 하이햇처럼 패턴을 설명하면 언어가 즉시 소리로 바꿉니다. 한 줄을 바꾸고 다시 평가하면 음악은 멈추지 않고 다음 사이클에 변합니다. 이 실천을 중심으로 연주자의 코드를 관객에게 투사하는 클럽 밤인 algorave 문화가 성장했습니다. Strudel은 TidalCycles의 JavaScript 구현입니다. TidalCycles는 Alex McLean이 2009년경 Haskell로 만든 패턴 언어로 라이브 코딩 음악의 공용어가 되었습니다. Strudel은 브라우저 탭에서 Tidal의 개념을 다시 구현하므로 Haskell 도구 체인, SuperCollider 오디오 서버, 설치가 전혀 필요 없습니다. 이 페이지는 strudel.cc의 공식 Strudel REPL을 프레임으로 내장하여, 평가 시 플래시, 오류 메시지, 내장 사운드를 갖춘 진짜 편집기를 제공합니다. 시작 버튼은 작동하는 패턴을 불러오며, 전체 Strudel 열기 링크는 현재 패턴을 샘플 브라우저와 시각화가 있는 완전한 환경으로 가져갑니다. Tidal 계열 언어의 핵심은 사이클입니다. 기본적으로 약 2초인 반복 시간 단위이며 모든 패턴은 이를 기준으로 측정됩니다. 큰따옴표 사이의 미니 표기법이 이 사이클을 나눕니다. bd hh sd hh를 쓰면 킥, 하이햇, 스네어, 하이햇의 네 균등 이벤트가 생깁니다. 작은 수정이 큰 음악적 변화를 냅니다. 별표는 이벤트를 늘리고, 물결표는 무음을 넣으며, 대괄호는 한 슬롯을 더 빠른 이벤트로 세분하고, 꺾쇠괄호는 이어지는 사이클마다 값을 교대합니다. 패턴 언어가 중독적인 이유는 변환을 조합할 수 있기 때문입니다. rev()로 멜로디를 뒤집고, fast(2)로 속도를 두 배로 하거나, euclid(3,8)로 히트를 쿠바 트레시요 리듬으로 재분배하세요. 모두 단일 음이 아니라 전체 패턴에 적용되어 한 번의 수정이 전체 질감을 바꿉니다. 드럼 패턴으로 시작해 샘플 이름을 바꾸고 별표 하나를 더하면 라이브 코딩을 하고 있는 것입니다.

편집기에서 시도할 패턴 레시피

아무 예제나 내장 편집기에 복사하고 재생한 뒤, 한 번에 한 토큰씩 변형해 보세요.

코드들리는 소리보여 주는 아이디어
sound("bd hh sd hh")기본 백비트: 킥, 하이햇, 스네어, 하이햇이 매 사이클 한 번네 이벤트가 한 사이클을 균등하게 나눕니다. 미니 표기법의 Hello World입니다.
sound("bd*4, hh*8")8분음표 하이햇 흐름 아래의 포온더플로어 킥따옴표 안의 쉼표는 시퀀스를 레이어링하며 간결한 stack()과 같습니다.
note("<c2 eb2 g1 bb1>").sound("sawtooth").lpf(500)매 사이클 새 루트로 움직이는 어두운 필터 베이스라인꺾쇠괄호는 사이클마다 교대합니다. lpf(500)은 톱니파를 누르는 500 Hz 로우패스 필터입니다.
sound("bd").euclid(3, 8)트레시요: 8스텝 중 1, 4, 7에서 히트유클리드 리듬은 3개 히트를 8스텝에 최대한 균등하게 분산합니다. 쿠바 손부터 EDM까지 등장합니다.
note("c4 e4 g4 b4").rev().fast(2)사이클마다 두 번 연주되는 하행 아르페지오변환은 왼쪽에서 오른쪽으로 체인됩니다. 패턴을 뒤집은 다음 속도를 두 배로 합니다.

라이브 코딩 시작 방법

  1. 드럼, 멜로디, 베이스라인, 폴리리듬 중 시작 패턴을 클릭해 코드를 내장 Strudel 편집기에 불러옵니다.
  2. 편집기 안의 재생 버튼을 누릅니다(브라우저는 소리가 시작되기 전에 클릭을 요구합니다).
  3. 재생 중 코드를 편집하세요. 샘플 이름을 바꾸고, 이벤트에 *2를 추가하거나 음을 바꾼 후 Ctrl+Enter(Mac에서는 Cmd+Enter)를 눌러 다시 평가합니다.
  4. stack()으로 패턴을 더 겹치고 위 빠른 참조의 fast, slow, rev, euclid로 형태를 만드세요.
  5. 패턴이 스케치를 넘어가면 전체 Strudel에서 열기를 사용하여 사운드 브라우저와 비주얼이 있는 완전한 환경을 이용하세요.

Strudel 라이브 코딩 FAQ

Strudel과 TidalCycles의 차이는 무엇인가요?
TidalCycles는 Haskell로 작성되고 보통 SuperCollider 합성 엔진과 함께 쓰이는 원래의 패턴 언어입니다. Strudel은 같은 패턴 시스템을 JavaScript와 Web Audio API로 포팅한 공식 자매 프로젝트라서 최신 브라우저에서 설치 없이 실행됩니다. 패턴과 개념은 두 언어 사이에서 거의 일대일로 옮길 수 있습니다.
왜 시작 버튼은 편집기를 다시 불러오나요?
Strudel은 URL을 통해 프로그램 전체를 받을 수 있습니다. 패턴 소스는 # 기호 뒤 주소에 base64로 인코딩됩니다. 각 시작 버튼은 해당 패턴을 담은 새 URL로 내장 편집기를 가리키며, 전체 Strudel 열기 링크가 현재 패턴을 함께 가져가는 이유이기도 합니다.
편집기에서 재생을 누르기 전에는 왜 소리가 없나요?
브라우저는 소리를 만드는 페이지와 사용자가 상호작용하기 전까지 모든 오디오를 차단합니다. 자동 재생 방지 기능입니다. Strudel 프레임은 별도 페이지이므로 첫 재생 클릭은 편집기 안에서 해야 합니다. 그 후에는 코드를 다시 평가해도 멈추지 않고 음악이 업데이트됩니다.
사이클이란 무엇인가요?
사이클은 Tidal과 Strudel의 음악 시간 단위입니다. 기본 템포에서 약 2초인 반복 구간이며 모든 패턴은 이를 기준으로 합니다. bd hh sd hh 같은 따옴표 시퀀스는 한 사이클을 동일한 부분으로 나누고, fast(2)는 두 사이클 분량을 하나에 넣으며, 꺾쇠괄호는 사이클마다 하나의 값을 배분합니다.
algorave란 무엇인가요?
algorave는 연주자가 코드를 작성해 음악과 흔히 비주얼까지 라이브로 생성하는 음악 행사입니다. 보통 화면을 투사해 관객이 소스 코드가 바뀌는 모습을 볼 수 있습니다. 이 용어는 2012년경 TidalCycles 커뮤니티에서 생겼으며 지금은 전 세계에서 algorave가 열립니다.
Strudel은 무료인가요? 왜 프레임에 내장하나요?
네. Strudel은 Strudel/TidalCycles 커뮤니티가 AGPL-3.0 라이선스로 배포하는 무료 오픈 소스 소프트웨어입니다. 공식 strudel.cc 편집기를 내장하면 코드베이스가 자체 오리진에 있어 이 사이트와 깔끔히 분리되면서, 복사본이 아니라 실제 최신 REPL을 제공할 수 있습니다.