본문 바로가기

라이브코딩

라이브코딩 음악이란? 실시간으로 코드를 연주하는 법

무대에서 코드를 연주하는 라이브코딩 음악 공연

핵심 요약

  • 라이브코딩 음악은 무대에서 코드를 실시간으로 작성·수정하며 소리를 만들어 내는 연주 방식입니다.
  • 관객이 코드를 볼 수 있도록 화면을 스크린에 띄우는 것이 이 문화의 오랜 관행입니다.
  • 연주자는 곡을 처음부터 치지 않습니다. 이미 돌고 있는 루프를 바꿔 가며 전개를 만듭니다.
  • 첫 무대를 준비한다면 완성된 코드보다 안전하게 되돌릴 수 있는 구조를 먼저 만드는 편이 낫습니다.

라이브코딩 영상을 처음 보면 대개 같은 의문이 듭니다. 저 사람은 지금 코드를 처음부터 치고 있는 것인가, 미리 준비한 것을 붙여 넣는 것인가. 소리는 어떻게 끊기지 않는가. 틀리면 어떻게 되는가. 이 글은 라이브코딩 공연이 실제로 어떤 절차로 굴러가는지, 그리고 처음 도전할 때 무엇을 준비해야 하는지를 순서대로 설명합니다.

라이브코딩 음악의 정의와 배경

라이브코딩은 프로그램이 실행되는 도중에 그 프로그램의 코드를 고쳐 결과를 바꾸는 연주 행위입니다. 음악 분야에서는 리듬 패턴, 신디사이저 파라미터, 이펙트 체인 같은 요소를 코드로 기술해 두고, 연주 중에 그 코드를 수정해 곡을 전개합니다. 핵심은 중단 없이 교체된다는 점입니다. 코드를 평가(evaluate)하는 순간 새 정의가 반영되지만 이미 돌고 있는 시계는 멈추지 않습니다.

이 방식이 하나의 문화로 자리 잡은 계기는 2004년 결성된 국제 모임 TOPLAP입니다. TOPLAP은 라이브코딩 실천에 관한 선언문을 통해 “코드를 보여 줄 것”을 강조해 왔고, 그 결과 연주자의 화면을 관객에게 그대로 투사하는 것이 이 장르의 시각적 특징으로 굳어졌습니다. 관객은 무엇이 바뀌어 소리가 달라졌는지를 눈으로 따라갈 수 있습니다.

여기에는 일반적인 전자음악 공연과 다른 성격이 하나 있습니다. 연주자가 실수하는 과정, 잠시 소리가 단조로워지는 구간, 다시 복구하는 흐름이 모두 공개된다는 점입니다. 이 노출을 결함이 아니라 장르의 성격으로 받아들이는 것이 라이브코딩 문화의 전제입니다. 이런 공연이 클럽 형식으로 열리는 형태를 알고레이브라고 부릅니다.

공연은 실제로 어떻게 진행되는가

무대 위 구성은 생각보다 단순합니다. 노트북 한 대, 오디오 출력, 그리고 화면 송출용 케이블이 기본입니다. 다만 이 단순한 구성을 안정적으로 돌리기 위해 아래 요소들이 사전에 정리되어 있어야 합니다.

라이브코딩 공연의 구성 요소
구성 역할 사전 점검 항목
코드 에디터 패턴 작성·수정, 평가 단축키 실행 글자 크기를 관객이 읽을 수준으로 확대, 고대비 테마
사운드 엔진 코드 지시를 실제 오디오로 합성 샘플 경로, 버퍼 크기, 지연 시간
오디오 출력 믹서·PA로 신호 전달 출력 단자 규격, 모니터링 경로, 볼륨 여유
화면 송출 관객에게 코드 노출 해상도·미러링 설정, 알림창 차단

실제 진행은 대체로 이런 흐름입니다. 먼저 아무 소리도 없는 상태에서 리듬 하나를 띄웁니다. 이 첫 루프가 곡의 기준 시계 역할을 합니다. 이후 베이스와 화성 요소를 차례로 추가하고, 중간에 특정 패턴만 잠시 잠재웠다가 다시 불러오는 방식으로 긴장과 이완을 만듭니다. 마무리는 대개 요소를 하나씩 걷어 내며 마지막 남은 리듬을 정지시키는 형태입니다.

코드와 소리의 동기화는 도구가 처리합니다. 대부분의 라이브코딩 환경은 사이클(cycle) 또는 마디 단위로 변경 사항을 적용합니다. 코드를 아무 시점에나 평가해도 다음 마디 경계에서 반영되기 때문에 박자가 어긋나지 않습니다. 이 동작 방식을 이해하면 “왜 지금 눌렀는데 바로 안 바뀌지”라는 첫 혼란이 사라집니다.

이 문화를 이끌어 온 흐름

라이브코딩은 특정 스타 연주자를 중심으로 형성된 장르가 아니라 커뮤니티 중심으로 이어져 온 실천에 가깝습니다. 앞서 언급한 TOPLAP이 그 구심점 역할을 해 왔고, 여기에 참여한 연구자·개발자들이 도구를 만들면서 문화와 기술이 함께 자랐습니다. TidalCycles를 만든 앨릭스 맥린, Sonic Pi를 만든 샘 아론처럼 도구 개발자가 곧 연주자인 경우가 많다는 점이 이 분야의 특징입니다.

그 결과 몇 가지 관행이 자리 잡았습니다. 첫째, 도구와 코드가 대부분 공개됩니다. 공연에서 들은 소리를 만든 코드를 그대로 찾아볼 수 있는 경우가 흔합니다. 둘째, 공연과 워크숍이 붙어 있습니다. 행사에서 연주만 하는 것이 아니라 사용법을 가르치는 세션이 함께 열리는 경우가 많습니다. 셋째, 진입을 막지 않습니다. 시작한 지 얼마 되지 않은 사람이 소규모 무대에 서는 것이 자연스럽게 받아들여집니다.

공연 사례를 찾아보고 싶다면 각 도구의 공식 사이트와 커뮤니티 포럼, 그리고 알고레이브 관련 채널을 확인하는 것이 가장 정확합니다. 행사 일정과 참여 연주자는 수시로 바뀌므로, 특정 공연을 기준으로 삼기보다 커뮤니티 채널을 직접 살펴보시기 바랍니다.

클럽 무대에서 실시간 코드를 연주하는 라이브코딩 공연
라이브코딩 음악 — 코드로 소리를 다루는 작업 환경

어떤 언어와 환경을 쓰는가

선택지는 몇 가지로 좁혀집니다. 각각의 성격이 뚜렷해서, 취향과 목적에 따라 갈립니다.

주요 라이브코딩 환경 비교
환경 기반 언어 사운드 엔진 특징
TidalCycles Haskell SuperDirt(SuperCollider) 패턴 조합 표현력이 가장 높음, 설치 단계가 많음
Sonic Pi Ruby 내장(SuperCollider 기반) 에디터·샘플·문서 일체형, 학습 곡선이 완만함
Strudel JavaScript Web Audio 브라우저에서 즉시 실행, 설치 불필요
SuperCollider sclang scsynth 신디사이저를 직접 설계, 저수준 제어 가능

공연 안정성 측면에서 보면 판단 기준이 하나 더 생깁니다. 의존 요소가 적을수록 무대에서 사고가 날 확률이 낮습니다. TidalCycles는 표현력이 뛰어나지만 에디터, GHCi, SuperCollider, SuperDirt가 모두 정상이어야 소리가 납니다. 반면 Sonic Pi는 하나의 애플리케이션 안에서 끝나고, Strudel은 브라우저만 있으면 됩니다. 첫 무대라면 구성 요소가 적은 쪽을 고르는 편이 합리적입니다. 각 도구의 상세 사용법은 TidalCycles 시작하기, Sonic Pi 사용법, Strudel 브라우저 라이브코딩에서 다룹니다.

처음 도전할 때의 준비물과 연습 순서

  1. 되돌릴 수 있는 시작점을 만든다 — 언제든 평가하면 기본 리듬으로 복귀하는 코드 블록을 파일 맨 위에 준비합니다. 무대에서 꼬였을 때 여기로 돌아오면 됩니다.
  2. 변형 방법을 손에 익힌다 — 같은 패턴을 빠르게/느리게, 뒤집기, 일부만 반복 같은 변형 함수 서너 개를 정해 반복 연습합니다. 새 패턴을 즉석에서 짜는 것보다 기존 패턴을 변형하는 편이 훨씬 안정적입니다.
  3. 타이핑 없이 진행되는 구간을 만든다 — 한 번 평가하면 몇 마디 동안 알아서 변하는 패턴을 준비해 두면, 그 사이에 다음 블록을 여유 있게 작성할 수 있습니다.
  4. 실제 시간을 재며 통주한다 — 10분이면 10분을 끊지 않고 진행해 봅니다. 대부분의 문제는 시간 압박 상태에서만 드러납니다.
  5. 사고 대응을 정해 둔다 — 소리가 완전히 끊겼을 때 무엇을 누를지, 엔진이 죽으면 어떤 순서로 재기동할지를 미리 적어 둡니다.

초보자가 자주 하는 실수

가장 흔한 실수는 한 번에 너무 많은 것을 바꾸는 것입니다. 여러 줄을 동시에 고친 뒤 소리가 이상해지면 어느 부분이 원인인지 판단할 수 없습니다. 한 번에 한 가지만 바꾸는 습관이 무대에서는 훨씬 강력합니다.

두 번째는 볼륨 관리를 코드로 하지 않는 것입니다. 패턴을 추가할수록 전체 음량이 누적되어 클리핑이 발생하기 쉽습니다. 각 패턴의 게인을 처음부터 낮게 잡고 시작하는 편이 안전합니다.

세 번째는 알림과 배경 프로세스를 정리하지 않는 것입니다. 화면을 그대로 송출하기 때문에 메신저 알림이 그대로 노출됩니다. 방해 금지 모드와 불필요한 애플리케이션 종료는 리허설 체크리스트에 넣어 두시기 바랍니다.

무대에서 소리가 멈추는 사고는 대부분 코드 실력이 아니라 환경 설정에서 발생합니다. 공연장 오디오 출력에 실제로 연결해 소리를 내 보는 리허설이 연습 시간보다 중요할 때가 많습니다.

이 글은 AI(인공지능)의 도움을 받아 작성되었습니다.