본문 바로가기

툴과 라이브러리

Sonic Pi 사용법: 코드로 음악 만드는 입문 가이드

싱글보드 컴퓨터와 스피커를 연결한 Sonic Pi 작업 환경

핵심 요약

  • Sonic Pi는 Ruby 문법 기반의 라이브코딩 환경으로, 에디터·신디사이저·샘플·튜토리얼이 하나의 프로그램에 들어 있습니다.
  • 별도 오디오 엔진을 설치할 필요가 없어 설치 직후 바로 소리를 낼 수 있습니다.
  • 교육용으로 설계되어 학교 수업과 코딩 교육에서 폭넓게 활용됩니다.
  • play, sleep, live_loop 세 가지만 알면 첫 곡을 만들 수 있습니다.

“코드로 음악을 만들어 보고 싶은데 설치부터 막힌다”는 이야기를 자주 듣습니다. Sonic Pi는 바로 그 지점을 해결하려고 만들어진 도구입니다. 프로그램 하나를 설치하면 코드 에디터, 소리를 내는 엔진, 수백 개의 샘플, 그리고 단계별 튜토리얼이 전부 함께 들어옵니다. 이 글은 설치부터 첫 루프 완성, 그리고 교육 현장 활용까지를 순서대로 다룹니다.

Sonic Pi 소개와 설계 배경

Sonic Pi는 케임브리지 대학의 샘 아론(Sam Aaron)이 개발한 라이브코딩 환경입니다. 시작부터 학교 교실에서 프로그래밍을 가르치기 위한 도구로 설계되었다는 점이 다른 도구와의 결정적 차이를 만듭니다. 라즈베리 파이 같은 저사양 기기에서도 동작하도록 고려되었고, 지금은 윈도우·맥·리눅스를 모두 지원합니다.

교육용 설계는 구체적인 형태로 드러납니다. 첫째, 프로그램을 열면 하단에 튜토리얼 패널이 함께 열려 문서를 따로 찾을 필요가 없습니다. 둘째, 오류가 나면 무엇이 잘못됐는지 알려 주는 메시지가 화면 아래에 표시됩니다. 셋째, 코드를 실행하는 방법이 버튼 하나(또는 단축키)로 통일되어 있습니다. 개발 환경 구성이라는 관문을 통째로 없앤 것이 이 도구의 가장 큰 기여입니다.

내부적으로는 SuperCollider를 사운드 엔진으로 사용하지만, 사용자는 그 존재를 의식할 필요가 없습니다. Sonic Pi가 기동과 통신을 모두 처리하기 때문입니다. TidalCycles가 엔진을 직접 설치하고 연결해야 하는 것과 대비되는 지점입니다.

설치 방법과 플랫폼별 차이

설치는 공식 사이트에서 운영체제에 맞는 설치 파일을 받아 실행하는 방식입니다. 다만 플랫폼별로 유의할 점이 조금씩 다릅니다.

플랫폼별 설치 시 유의사항
플랫폼 설치 방식 유의할 점
윈도우 공식 설치 프로그램 방화벽 경고가 뜨면 허용해야 내부 통신이 정상 동작
macOS 애플리케이션 패키지 최초 실행 시 보안 설정에서 실행 허용 필요
리눅스 배포판 패키지 또는 공식 빌드 오디오 서버(JACK/PulseAudio) 설정 확인 필요
라즈베리 파이 OS 저장소 패키지 사양에 따라 동시 재생 수를 줄여야 안정적

설치 후 첫 실행에서는 엔진이 기동될 때까지 몇 초 정도 걸립니다. 하단 로그에 준비 완료 메시지가 뜬 뒤에 코드를 실행해야 합니다. 소리가 나지 않는다면 대부분 시스템 출력 장치가 다른 곳으로 잡혀 있는 경우이므로, OS의 오디오 출력 설정을 먼저 확인하시기 바랍니다.

기본 문법과 첫 사운드

가장 짧은 프로그램은 한 줄입니다.

play 60

숫자 60은 MIDI 노트 번호로 가운데 도(C4)에 해당합니다. 숫자를 62, 64로 바꾸면 음이 올라갑니다. 음이름으로 play :c4처럼 써도 동일하게 동작합니다. 여러 음을 순서대로 내려면 사이에 sleep으로 시간을 둡니다.

play :c4
sleep 0.5
play :e4
sleep 0.5
play :g4

sleep 0.5는 실제 0.5초가 아니라 비트 기준의 0.5박을 의미하며, 기본 템포에 따라 실제 시간이 달라집니다. 템포는 use_bpm 120으로 지정합니다. 샘플을 재생할 때는 sample :bd_haus처럼 이름을 부릅니다. 신디사이저 음색은 use_synth :prophet과 같이 바꿉니다.

이 세 가지 축(음정·시간·음색)만 조합해도 상당한 범위를 표현할 수 있습니다. 값을 배열로 넘겨 순회하는 [:c4, :e4, :g4].each 같은 Ruby 문법도 그대로 사용할 수 있어, 프로그래밍 경험이 있다면 익숙한 구조로 곡을 구성할 수 있습니다.

싱글보드 컴퓨터와 노트북으로 실행하는 Sonic Pi 사운드 코드
Sonic Pi — 코드로 소리를 다루는 작업 환경

루프와 리듬 만들기

라이브코딩의 핵심 도구는 live_loop입니다. 이름을 붙인 루프를 정의하면 그 루프가 계속 돌고, 실행 중에 내용을 고쳐 다시 실행하면 다음 순회부터 새 코드가 적용됩니다. 소리는 끊기지 않습니다.

live_loop :drums do
  sample :bd_haus
  sleep 1
end

live_loop :hats do
  sample :drum_cymbal_closed, amp: 0.6
  sleep 0.25
end

여러 루프를 함께 돌릴 때는 박자 정렬이 필요합니다. 루프 안에서 sync :drums를 호출하면 해당 루프가 기준 루프의 주기에 맞춰 시작하므로 어긋남을 방지할 수 있습니다.

  1. 기준 루프 정의 — 킥 드럼 루프를 하나 만들어 전체 템포의 기준으로 삼습니다.
  2. 세분 리듬 추가sleep 값을 0.25 등으로 줄여 잘게 쪼갠 퍼커션을 올립니다. amp:로 음량을 낮춥니다.
  3. 멜로디 얹기 — 음 배열과 tick을 사용해 순서대로 음을 꺼내 연주합니다.
  4. 변주 넣기one_in(4)처럼 확률 조건을 걸어 가끔씩만 다른 소리가 나게 합니다.
  5. 정리·저장 — 완성된 코드를 저장하고, 필요하면 녹음 기능으로 오디오를 남깁니다.
자주 쓰는 Sonic Pi 명령 요약
명령 역할 예시
play 음 하나를 연주 play :c4
sleep 다음 동작까지 대기(박 단위) sleep 0.5
sample 내장 샘플 재생 sample :bd_haus
use_synth 신디사이저 음색 변경 use_synth :prophet
use_bpm 템포 지정 use_bpm 120
live_loop 이름 붙은 반복 루프 정의 live_loop :drums do ... end
sync 다른 루프와 박자 정렬 sync :drums

여러 live_loop이 점점 어긋난다면 대부분 루프 한 바퀴의 총 sleep 합이 서로 배수 관계가 아니기 때문입니다. 각 루프의 총 길이를 1, 2, 4처럼 맞추면 문제가 사라집니다.

학교와 코딩 교육 현장에서의 활용

Sonic Pi가 교육에서 자주 채택되는 이유는 결과가 즉시 귀로 확인되기 때문입니다. 변수, 반복문, 조건문, 배열 같은 개념을 설명할 때 화면의 숫자 대신 소리 변화로 보여 줄 수 있습니다. 예를 들어 반복문의 횟수를 바꾸면 리듬의 밀도가 달라지고, 조건문을 넣으면 특정 박에서만 다른 소리가 납니다. 추상적인 개념이 감각적으로 연결됩니다.

수업 설계 측면에서도 이점이 있습니다. 학생마다 결과물이 달라지므로 정답 하나를 맞히는 과제가 아니라 각자의 결과를 만드는 과제가 됩니다. 컴퓨터 사양 요구가 낮아 노후 장비가 많은 환경에서도 운영할 수 있고, 인터넷 연결 없이 동작한다는 점도 실무적으로 중요합니다.

다만 유의할 점도 있습니다. 헤드폰 없이 여러 대를 동시에 실행하면 교실이 통제되지 않으므로 개인 헤드폰 준비가 사실상 필수입니다. 또한 음량 기본값이 큰 편이라 첫 수업에서 amp: 사용법을 먼저 안내하는 편이 좋습니다.

다음 단계로 넘어가기

Sonic Pi에서 live_loop과 샘플 조작이 익숙해졌다면 두 갈래로 확장할 수 있습니다. 하나는 같은 환경에서 신디사이저 파라미터와 이펙트를 깊이 파고드는 방향이고, 다른 하나는 패턴 표현이 더 강력한 도구로 옮겨 가는 방향입니다. 후자라면 Strudel이나 TidalCycles가 자연스러운 다음 선택지입니다.

규칙으로 멜로디를 생성하는 쪽에 관심이 생겼다면 알고리즘 작곡 편을 함께 보시기 바랍니다. Sonic Pi 안에서도 확률과 배열을 이용해 상당한 수준의 자동 생성이 가능합니다.

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