Season 03 · EP17 Envelope — 소리에 생명 불어넣기 썸네일
← 튜토리얼Season 03 · EP17 · 소리의 구조

Envelope — 소리에 생명 불어넣기

ADSR 4단계의 동작과 Note On/Off 메커니즘, Envelope vs Modulation의 차이, Max의 function·line~·adsr~로 Envelope을 설계하는 방법을 정리합니다.

난이도: 중급 예상 시간:

이 에피소드에서 배우는 것

  • Attack/Decay/Sustain/Release 각 단계가 음악적으로 무엇을 만드는지
  • Note On과 Note Off의 메커니즘 차이
  • Envelope vs Modulation, Unipolar vs Bipolar의 구분
  • function·line~·adsr~로 Max에서 Envelope 구현

사전 지식

  • EP15: 기본 파형 톺아보기
  • EP16: Noise의 세계

Envelope이란 무엇인가

오실레이터는 켜져 있는 동안 끊임없이 같은 소리를 출력한다. 하지만 현실의 소리는 그렇지 않다. 피아노 건반을 누르면 소리가 즉시 크게 나다가 서서히 줄어들고, 건반에서 손을 떼면 소리가 완전히 사라진다. 기타를 뜯으면 예리하게 시작되어 서서히 감쇠한다. 바이올린을 활로 켜면 부드럽게 시작되어 활을 떼기 전까지 유지된다.

이처럼 소리의 크기(또는 다른 파라미터)가 시간에 따라 변하는 양상을 Envelope이라 한다. Envelope은 소리에 시간적 형태(temporal shape)를 부여한다. 같은 파형이라도 Envelope이 다르면 전혀 다른 악기 소리가 된다. Envelope 없이는 오실레이터가 단순히 “윙~” 하는 연속음을 낼 뿐이다.

ADSR: 네 단계의 시간 여행

가장 보편적인 Envelope 모델은 ADSR이다. Attack, Decay, Sustain, Release 네 단계로 소리의 시간적 형태를 기술한다.

Attack (어택): 소리가 시작되어 최대 레벨에 도달하기까지의 시간이다.

  • 짧은 어택(0~10ms): 타악기, 플럭(pluck) 소리. 즉각적이고 날카로운 시작.
  • 중간 어택(10~100ms): 피아노, 기타. 뚜렷한 시작이지만 약간의 부드러움.
  • 긴 어택(100ms~수 초): 패드, 스트링 앙상블. 서서히 나타나는 소리.

Decay (디케이): 최대 레벨에서 Sustain 레벨로 내려가는 시간이다.

  • 짧은 디케이: 퍼커시브한 느낌. 반짝하고 사라지는 느낌.
  • 긴 디케이: 부드러운 전환. 피아노의 초기 타격감 이후 서서히 안정되는 느낌.

Sustain (서스테인): 키를 누르고 있는 동안 유지되는 레벨이다. 다른 세 파라미터가 시간(ms)인 것과 달리, Sustain은 레벨(01 또는 0100%)이라는 점이 중요하다.

  • Sustain 1.0 (100%): 디케이가 없는 것과 같다. 오르간처럼 일정한 소리.
  • Sustain 0.5 (50%): 초기 타격 후 절반 크기로 유지. 피아노와 유사.
  • Sustain 0.0 (0%): 키를 누르고 있어도 소리가 사라진다. 타악기적 특성.

Release (릴리스): 키에서 손을 뗀 후 소리가 완전히 사라지기까지의 시간이다.

  • 짧은 릴리스(0~50ms): 깔끔한 종료. 스타카토.
  • 긴 릴리스(수백 ms~수 초): 여운이 남는 소리. 리버브적 효과.

Note On과 Note Off의 관계

ADSR의 작동 메커니즘에서 가장 중요한 개념은 Note On과 Note Off의 구분이다.

Note On (건반 누름): Attack → Decay → Sustain 순서로 진행된다. Attack이 끝나면 Decay가 시작되고, Decay가 끝나면 Sustain 레벨에서 머무른다. 키를 누르고 있는 한 Sustain 단계에 계속 머문다.

Note Off (건반 뗌): 현재 어떤 단계에 있든(Attack 도중이든, Decay 도중이든, Sustain 중이든) 즉시 Release 단계로 전환된다. 현재 레벨에서 0까지 Release 시간만큼 걸려 내려간다.

이 두 이벤트의 구분이 핵심이다. 빠른 Attack-Decay 후 키를 금방 떼면 타악기처럼 들리고, 긴 Attack으로 서서히 올라가다가 키를 누른 채 유지하면 패드처럼 들린다. 같은 ADSR 세팅이라도 연주 방식(키를 얼마나 오래 누르는가)에 따라 소리가 달라진다.

Envelope은 ADSR만이 아니다

ADSR은 가장 보편적인 Envelope 모델이지만, Envelope의 개념 자체는 이보다 훨씬 넓다. Envelope은 본질적으로 “파라미터에 시간에 따른 움직임을 부여하는 것”이다.

  • 다단계 Envelope: 5단계, 8단계 등 ADSR보다 복잡한 형태. Yamaha DX7의 FM 합성은 8단계 Envelope을 사용한다.
  • 사용자 정의 곡선: Max의 [function] 오브젝트처럼 자유롭게 꺾은선을 그려 Envelope을 만들 수 있다.
  • 볼륨뿐 아니라 필터 Cutoff, 피치, 패닝 등 어떤 파라미터에든 Envelope을 적용할 수 있다.

Envelope vs Modulation

Ableton Operator의 Envelope 패널 — Loop/Beat/Sync/Trigger 등 모드를 통해 Envelope과 Modulation의 경계가 흐려질 수 있다

Envelope과 Modulation(변조)은 모두 “파라미터를 시간에 따라 변화시킨다”는 점에서 공통되지만, 본질적인 차이가 있다.

Envelope: 특정 시점(Note On/Off)에 의해 촉발(trigger)되어 한 번 실행되고 끝나는 움직임이다. 일회성(one-shot)이다. 키를 누르면 Attack부터 시작하고, 키를 떼면 Release를 거쳐 끝난다.

Modulation: 일정한 주기로 계속 반복되는 움직임이다. LFO(Low Frequency Oscillator)가 대표적이다. 비브라토(pitch modulation), 트레몰로(amplitude modulation), 와와(filter modulation) 등이 주기적 Modulation의 예이다.

정리하면, Envelope은 “이벤트 기반, 일회성”, Modulation은 “주기적, 반복적”이다.

Unipolar vs Bipolar

Modulation 신호의 범위에 따른 구분도 중요하다.

Unipolar: 0에서 1 사이 (또는 0에서 양수 범위)만 움직이는 신호. Envelope은 대부분 Unipolar이다. 볼륨이 0 미만으로 내려가는 것은 의미가 없기 때문이다.

Bipolar: -1에서 1 사이를 오가는 신호. LFO는 보통 Bipolar이다. 비브라토에서 피치가 위아래로 흔들려야 하기 때문이다.

Modulation 소스가 Bipolar인데 Unipolar가 필요하면 [* 0.5][+ 0.5]로 범위를 변환한다(-11 → 01). 반대로 Unipolar를 Bipolar로 바꾸려면 [* 2][- 1]을 사용한다(01 → -11).

function 오브젝트: 시각적 Envelope 설계

Max의 [function] 오브젝트는 꺾은선(line segment)을 시각적으로 그릴 수 있는 UI 오브젝트이다. 마우스로 점을 찍어 Envelope의 형태를 자유롭게 디자인할 수 있다.

기본 사용법: [function] 오브젝트를 생성하면 빈 그래프가 나타난다. Lock 모드에서 클릭하면 점이 추가되고, 점을 드래그하면 위치가 바뀐다. X축은 시간, Y축은 값이다.

setdomain: setdomain 메시지로 X축(시간)의 범위를 설정한다. 예를 들어 setdomain 1000이면 0~1000ms 범위의 Envelope을 디자인한다.

setrange: setrange 메시지로 Y축(값)의 범위를 설정한다. setrange 0. 1.이면 0에서 1 사이의 값을 출력한다. 주파수를 제어한다면 setrange 200. 2000. 같은 범위를 쓸 수 있다.

line 오브젝트와의 연동: [function]의 출력을 [line~]에 연결하면 오디오 레이트의 Envelope 신호가 된다. [function]을 bang으로 트리거하면 저장된 꺾은선 데이터가 리스트로 출력되고, [line~]이 이를 받아 부드러운 곡선으로 변환한다.

[function] → [line~] → [*~] ← [오실레이터]

                       [gain~] → [ezdac~]

이 패치에서 [*~]는 오실레이터의 출력에 Envelope 신호를 곱하여 볼륨을 제어한다. Envelope이 0이면 무음, 1이면 원래 볼륨이다.

adsr~ 오브젝트

[adsr~]는 ADSR Envelope을 전용으로 생성하는 MSP 오브젝트이다. [function] + [line~] 조합보다 간편하게 ADSR을 구현할 수 있다.

사용법:

  • [adsr~ attack decay sustain release] 형태로 초기값을 설정한다. 예: [adsr~ 10 100 0.7 200]
  • 왼쪽 inlet에 0이 아닌 값(예: 1)을 보내면 Note On → Attack 시작.
  • 왼쪽 inlet에 0을 보내면 Note Off → Release 시작.
  • 출력은 오디오 신호(0~1 범위)로, [*~]를 통해 오실레이터에 곱한다.

각 파라미터는 우측 inlet들로 실시간 변경할 수 있다.

Ableton Operator의 Envelope 모드

참고로, Ableton Live의 Operator 신시사이저는 ADSR Envelope에 네 가지 모드를 제공한다. 이는 ADSR의 기본 개념을 확장한 좋은 예이다.

  • Trigger: 가장 기본적인 ADSR. Note On에서 시작, Note Off에서 Release.
  • Sync: Envelope이 항상 처음부터 시작되도록 동기화. 이전 노트의 Release 중에 새 노트가 들어오면 Envelope을 리셋.
  • Loop: Sustain 단계에서 Attack-Decay 구간을 반복. Envelope이 주기적 Modulation처럼 동작하게 된다.
  • Beat: Loop와 유사하지만, 반복 주기가 템포에 동기화된다.

이 모드들은 Envelope과 Modulation의 경계가 명확하지 않을 수 있다는 것을 보여준다. Loop 모드의 Envelope은 사실상 LFO와 유사한 역할을 한다.

핵심 오브젝트 정리

오브젝트역할비고
[function]시각적 꺾은선 Envelope 편집기setdomain, setrange로 범위 설정
[line~]리스트를 받아 오디오 레이트 램프 생성function과 조합하여 Envelope 출력
[line]Control 레이트 램프 생성오디오가 아닌 제어 신호용
[adsr~]ADSR Envelope 생성기Note On/Off로 트리거
[*~]신호 곱셈Envelope * 오실레이터 = 볼륨 제어

직접 해보기

  1. [adsr~ 10 100 0.7 300][saw~ 220][*~]로 곱하고, [toggle] 또는 [kslider]로 Note On/Off를 보내 소리를 확인하자. Attack과 Release 값을 극단적으로 바꿔(1ms vs 2000ms) 소리가 어떻게 달라지는지 비교하자.
  2. [function] 오브젝트를 만들고, setdomain 1000, setrange 0. 1.을 설정한 뒤 자유롭게 Envelope 형태를 그려보자. [line~]에 연결하여 [cycle~ 440]의 볼륨을 제어해보자.
  3. Sustain을 0으로 설정한 ADSR([adsr~ 5 200 0. 50])로 퍼커시브한 소리를 만들어보자. 오실레이터를 [noise~]로 바꾸면 어떤 소리가 나는지도 실험하자.

다음 에피소드 예고

다음 에피소드에서는 필터(Filter)를 다룬다. Lowpass, Highpass, Bandpass, Notch 필터의 원리와 Max의 lores~, reson~, svf~ 오브젝트를 배우고, Envelope으로 필터를 제어하는 감산합성의 핵심 테크닉을 알아본다.

자주 묻는 질문

  • Sustain만 단위가 다른 이유는 뭔가요?

    Attack/Decay/Release는 모두 '시간'(ms)을 나타내지만 Sustain은 '레벨'(0~1 또는 0~100%)이라는 게 핵심입니다. Note On 후 Attack과 Decay가 끝나면 Sustain 레벨에서 머무르는데, 이 머무는 시간은 '키를 얼마나 오래 누르는가'에 의해 정해지므로 Envelope 자체에는 시간 파라미터가 없습니다. Sustain 1.0이면 Decay가 무의미해지고(오르간처럼 일정), 0.0이면 키를 누르고 있어도 소리가 사라져 타악기적 특성이 됩니다. 같은 ADSR 세팅이라도 Sustain 값에 따라 악기의 성격이 완전히 달라지는 이유입니다.

  • Envelope과 LFO(Modulation)는 어떻게 다른가요?

    둘 다 파라미터를 시간에 따라 변화시키지만 트리거 방식이 다릅니다. Envelope은 특정 이벤트(Note On/Off)에 의해 촉발되어 한 번 실행되고 끝나는 일회성(one-shot) 움직임입니다. 키를 누르면 Attack부터 시작, 키를 떼면 Release를 거쳐 종료. Modulation(LFO)은 일정한 주기로 계속 반복되는 움직임으로, 비브라토(pitch mod), 트레몰로(amplitude mod), 와와(filter mod) 등이 예입니다. 정리하면 Envelope은 '이벤트 기반·일회성', Modulation은 '주기적·반복적'입니다. Ableton Operator의 Loop/Beat 모드처럼 두 경계가 흐려지는 경우도 있습니다.

  • Unipolar와 Bipolar는 무엇이고 어떻게 변환하나요?

    Unipolar는 0에서 1(또는 양수 범위)만 움직이는 신호로 Envelope이 대부분 여기에 속합니다(볼륨이 음수가 될 수 없으므로). Bipolar는 -1에서 1을 오가는 신호로 LFO가 보통 여기에 속합니다(비브라토는 피치를 위아래로 흔들어야 하니까). Bipolar → Unipolar 변환은 [* 0.5] → [+ 0.5]로 -1~1 → 0~1, 반대 변환은 [* 2] → [- 1]로 0~1 → -1~1입니다. Modulation 신호의 폴라리티가 맞지 않으면 변조가 비대칭으로 걸리거나 의도와 다른 결과가 나오므로 항상 확인해야 합니다.

  • function 오브젝트와 adsr~는 어떻게 다른가요?

    [function]은 시각적으로 점을 찍어 자유로운 꺾은선 Envelope을 디자인할 수 있는 UI 오브젝트로, ADSR 4단계에 얽매이지 않고 5단계, 8단계, 또는 임의의 곡선을 만들 수 있습니다. setdomain으로 X축 시간 범위, setrange로 Y축 값 범위를 설정하고 [line~]에 출력해 오디오 레이트 신호로 변환합니다. [adsr~]는 ADSR 전용 MSP 오브젝트로 [adsr~ attack decay sustain release] 형태의 인자를 받고 왼쪽 inlet에 0이 아닌 값(=Note On)이나 0(=Note Off)을 보내 트리거합니다. 표준 ADSR이 필요하면 adsr~가 간편하고, 자유로운 형태가 필요하면 function+line~ 조합이 유연합니다.

실습 패치 다운로드

Max 8 이상에서 열어주세요. 파일을 Max로 드래그하거나 더블클릭하면 실행됩니다.

공식 문서 참조

YouTube

채널에서 더 많은 Max/MSP 예제를 이어서 보세요

튜토리얼의 흐름을 끊지 않고, 실제 영상 데모와 채널 콘텐츠를 연속해서 확인할 수 있습니다.

카톡 문의