
소리 내기 - cycle~, gain~, ezdac~
MSP 오브젝트로 사인파를 생성하고 스피커로 출력하는 오디오 체인을 만듭니다.
이 에피소드에서 배우는 것
- MSP 오브젝트로 소리를 생성하는 방법
- cycle~의 기본 사용법
- gain~으로 볼륨 조절하기
- ezdac~로 스피커 출력하기
사전 지식
- EP02: 첫 번째 패치 만들기
첫 번째 소리 만들기
지금까지 Max의 기본 구조를 배웠으니, 이제 실제로 소리를 만들어볼 차례이다. Max에서 소리를 다루려면 MSP 오브젝트를 사용해야 한다. MSP 오브젝트는 이름 끝에 ~(틸드)가 붙어있다는 것을 기억하자.
소리를 만드는 가장 기본적인 방법은 오실레이터를 사용하는 것이다. 오실레이터는 일정한 주기로 반복되는 파형을 생성하는 장치이며, 이 파형이 스피커를 통해 재생되면 우리가 인식하는 “소리”가 된다.
cycle~ - 사인파 오실레이터
[cycle~]은 Max에서 가장 기본적인 오실레이터이다. Cosine(코사인) 파형을 생성하며, 내부에 512 샘플 길이의 사인 파형 웨이브테이블을 내장하고 있다.
[cycle~ 440]이라고 입력하면 440Hz의 사인파를 생성한다. 440Hz는 피아노의 가운데 A음(A4)의 주파수로, 음악에서 표준 튜닝 기준으로 사용된다.
오브젝트 이름 옆의 숫자 440은 초기값(Initial Value)을 의미한다. 패치가 실행될 때 이 값으로 오실레이터가 시작된다.
cycle~에는 두 개의 입력(Inlet)이 있다.
- In1 (왼쪽): 주파수 입력. Hz 단위로 숫자를 보내면 음의 높이가 바뀐다.
- In2 (오른쪽): 위상(Phase) 입력. 0에서 1 사이의 값으로, 파형의 시작점을 조절한다.
참고로 A4(라) 음정의 표준 튜닝은 440Hz이다. 전자 튜너 앱에서도 이 값이 기준이 된다.
phasor~ - 램프 제너레이터
[phasor~]는 또 다른 중요한 오실레이터이다. 0에서 1까지 직선으로 올라가는 톱니파(Sawtooth) 형태의 신호를 생성한다. 단, phasor~가 만드는 톱니파는 Unipolar(0~1 범위)이며, Anti-aliasing이 적용되어 있지 않다.
phasor~는 오디오 신호를 직접 듣기보다는 다른 용도로 많이 사용된다. 다른 오실레이터의 위상을 동기화하거나, LFO(Low Frequency Oscillator)로 사용하거나, 나중에 배울 웨이브테이블을 스캔하는 데 핵심적인 역할을 한다.
number~ - MSP 신호 모니터링
[number~]는 MSP 신호의 현재 값을 숫자로 보여주는 오브젝트이다. 오디오 신호는 초당 수만 번 값이 바뀌므로 number~는 일정 간격으로 샘플링하여 대표값을 보여준다. 오디오 신호가 어떤 범위의 값을 가지는지 확인할 때 유용하다.
오디오 출력 체인
소리를 스피커로 내보내려면 세 가지 오브젝트를 연결해야 한다.
- 오실레이터 (
[cycle~ 440]): 소리 생성 - gain~ (
[gain~]): 볼륨 조절. 반드시 거쳐야 한다. 처음 소리를 확인할 때는 볼륨을 낮게 시작하는 것이 안전하다. 급작스러운 큰 소리는 청력에 해롭고 스피커를 손상시킬 수 있다. - ezdac~ (
[ezdac~]): Digital-to-Analog Converter. 디지털 신호를 스피커가 이해하는 아날로그 신호로 변환하여 출력한다. 클릭하면 DSP가 켜지고 소리가 나기 시작한다.
ezdac~는 DSP 활성화 버튼이 내장된 버전이며, 스테레오(2채널) 출력만 지원한다. 멀티채널 출력이 필요하면 [dac~] 오브젝트를 사용한다. 마찬가지로 마이크 입력에는 [adc~] 또는 [ezadc~]를 사용한다.
오디오 파일 재생하기
Max에서 오디오 파일을 재생하는 방법도 간단하다. Patcher 창에 오디오 파일을 드래그 앤 드롭하면 [playlist~] 오브젝트가 자동으로 생성된다. 또는 [sfplay~] 오브젝트를 사용하여 프로그래밍 방식으로 오디오 파일을 불러올 수도 있다.

핵심 오브젝트 정리
| 오브젝트 | 역할 | 비고 |
|---|---|---|
[cycle~] | Cosine 오실레이터 | 웨이브테이블 방식, 512 샘플 |
[phasor~] | Ramp generator (0~1) | Anti-aliasing 없음 |
[number~] | MSP 신호값 모니터링 | - |
[gain~] | 오디오 볼륨 조절 | MSP 전용 |
[ezdac~] | 오디오 출력 (스테레오) | 클릭으로 DSP on/off |
[ezadc~] | 오디오 입력 (스테레오) | 마이크 등 |
[sfplay~] | 오디오 파일 재생 | - |
직접 해보기
[cycle~ 440]→[gain~]→[ezdac~]를 연결하여 사인파를 들어보자- cycle~의 주파수를 220, 880 등으로 바꿔서 음의 높이가 변하는 것을 확인하자
- number~를 cycle~의 출력에 연결하여 -1에서 1 사이를 오가는 것을 관찰하자
다음 에피소드 예고
다음 에피소드에서는 Max가 다루는 데이터의 종류를 자세히 살펴본다. 정수, 소수, 문자열, 리스트, 시그널 등 각 데이터 타입의 차이와 사용법을 배운다.
자주 묻는 질문
왜 440Hz를 기준으로 쓰나요?
440Hz는 피아노의 A4(가운데 라) 음에 해당하는 주파수로, 1955년 ISO 16에서 표준 콘서트 피치(A=440Hz)로 공식 채택되었습니다. 거의 모든 전자 튜너, 신디사이저, 오케스트라 튜닝의 기준이 이 값이며, Max에서 cycle~의 인자로 440을 자주 쓰는 것도 같은 이유입니다.
ezdac~과 dac~의 차이는 무엇인가요?
ezdac~은 DSP On/Off 버튼이 박스 안에 내장된 "easy" 버전으로 클릭만으로 오디오 출력을 켜고 끌 수 있지만 스테레오(2채널)만 지원합니다. dac~은 인자로 채널 번호를 지정해 멀티채널(서라운드, 다중 출력 인터페이스 등) 출력을 다룰 수 있는 범용 버전입니다. 마이크/입력 측에는 같은 관계로 ezadc~과 adc~이 존재합니다.
DSP를 켰는데 소리가 안 들립니다. 무엇을 확인해야 하나요?
다음 순서로 확인합니다. (1) ezdac~의 스피커 아이콘이 파란색으로 활성화되었는지, (2) gain~ 슬라이더가 0이 아닌지, (3) Options → Audio Status 창에서 출력 디바이스가 실제로 사용 중인 인터페이스로 설정되어 있는지, (4) 시스템 볼륨과 인터페이스의 물리적 볼륨, (5) cycle~의 주파수가 가청 범위(20Hz~20kHz) 안인지. 대부분의 "소리 안 남" 문제는 Audio Status에서 출력 장치 설정으로 해결됩니다.
phasor~와 cycle~은 어떻게 다른가요?
cycle~은 -1과 1 사이를 매끄럽게 오가는 코사인 파형을 만드는 사인 오실레이터로, 듣기 좋은 순수한 톤을 출력합니다. phasor~는 0에서 1까지 직선으로 올라갔다가 0으로 떨어지는 톱니파(unipolar sawtooth)를 만드는데, 들으려고 쓰기보다는 다른 오실레이터의 위상 동기화, LFO, 웨이브테이블 스캔 등 "제어 신호"로 더 많이 사용됩니다. 또한 phasor~는 안티에일리어싱이 적용되어 있지 않습니다.
이 에피소드가 도움이 됐다면 눌러주세요.
실습 패치 다운로드
Max 8 이상에서 열어주세요. 파일을 Max로 드래그하거나 더블클릭하면 실행됩니다.
공식 문서 참조
YouTube
채널에서 더 많은 Max/MSP 예제를 이어서 보세요
튜토리얼의 흐름을 끊지 않고, 실제 영상 데모와 채널 콘텐츠를 연속해서 확인할 수 있습니다.