Pure Data 키워드 일람
Pd 패치에서 사용하는 오브젝트와 명령의 레퍼런스입니다.
기본 조작
| 조작 | 단축키 |
|---|---|
| 오브젝트의 배치 | Cmd (Ctrl) + 1 |
| 메시지의 배치 | Cmd (Ctrl) + 2 |
| 넘버의 배치 | Cmd (Ctrl) + 3 |
| 심볼의 배치 | Cmd (Ctrl) + 4 |
| 주석의 배치 | Cmd (Ctrl) + 5 |
| 편집/실행 모드의 전환 | Cmd (Ctrl) + E |
| 표시의 확대 | Cmd (Ctrl) + Shift + ; |
| 일시적인 실행 모드 | Cmd (Ctrl) 계속 누르기 |
| 도움말 브라우저 | Cmd (Ctrl) + B |
| bang의 배치 | Shift + Cmd (Ctrl) + B |
| toggle의 배치 | Shift + Cmd (Ctrl) + T |
| 수평 슬라이더의 배치 | Shift + Cmd (Ctrl) + J |
| 배열의 배치 | Cmd + Shift + A |
| 오브젝트의 삭제 | 선택 → Backspace |
| 오브젝트의 도움말(사용법) | 오브젝트를 우클릭 → 도움말 |
| 오브젝트 일람의 표시 | 여백을 우클릭 → 도움말 |
기본 개념
| 용어 | 의미 |
|---|---|
| 패치 | Pd의 프로그램 파일 |
| 인렛 | 오브젝트 위쪽에 있는 데이터의 입력 지점 |
| 아웃렛 | 오브젝트 아래쪽에 있는 데이터의 출력 지점. 인렛과 아웃렛을 선으로 이으면 데이터가 오간다 |
| 값 | 숫자나 문자열을 말함. 인렛과 아웃렛 사이는 가는 실선 으로 표시된다 |
| 시그널 | 오디오 신호를 비롯한 연속 데이터. 인렛과 아웃렛 사이는 굵은 실선 으로 표시된다 |
| 메시지 | 미리 준비한 문자열이나 숫자. 메시지 안에 $1 을 넣으면, 인렛에서 입력된 값으로 치환해서 출력한다 |
| 넘버 | 숫자를 실시간으로 표시・입력하는 GUI |
| 심볼 | 문자열을 표시하는 GUI |
| 배열 | 오디오 데이터 등을 저장하는 곳 |
| DSP | 시그널의 실시간 연산 처리. 콘솔 오른쪽 위의 체크박스를 ON으로 하거나, 오디오 출력의 볼륨을 올리면 처리가 시작된다 |
소리의 생성
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
osc~ | 사인파 오실레이터 | [osc~ 주파수] |
phasor~ | 톱니파 | [phasor~ 주파수] |
noise~ | 화이트 노이즈 | [noise~] |
else/tri~ | 삼각파(ELSE 라이브러리) | [else/tri~ 주파수] |
else/square~ | 구형파(ELSE 라이브러리) | [else/square~ 주파수] |
오디오 입출력
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
output~ | 오디오 출력 | level 값 메시지로 음량 설정 |
else/out~ | 오디오 출력(DSP ON/OFF 스위치 포함) | ELSE 라이브러리 |
dac~ | 디지털-아날로그 변환(오디오 출력) | [dac~ 채널 번호] |
adc~ | 아날로그-디지털 변환(오디오 입력) | [adc~] |
음량・엔벨로프
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
*~ | 시그널의 곱셈(음량 제어에 사용) | 시그널 × 시그널 or 숫자 |
line~ | 값의 자동 변화(시그널) | [목표값 시간(ms)] 의 메시지 |
vline~ | 연속적인 값 변화 | [값1 시간1, 값2 시간2 시작시간, ...] |
delay | 일정 시간 후에 bang 출력 | [delay 시간(ms)] |
else/asr~ | ASR 엔벨로프 | ELSE 라이브러리 |
else/adsr~ | ADSR 엔벨로프 | ELSE 라이브러리 |
else/envgen~ | 자유로운 엔벨로프 | [else/envgen~ -curve] |
연산
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
+, -, *, / | 사칙연산(값) | [+ 숫자] |
expr | 수식으로 계산 | [expr $f1 * 2 + $f2] |
mtof | MIDI 노트→주파수(Hz) 변환 | 가운데 도가 60 |
데이터의 라우팅
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
s (send) | 값의 송신 | [s 수신처명] |
r (receive) | 값의 수신 | [r 수신처명] |
sel | 값의 배분 | [sel 값1 값2 ...](맨 오른쪽 아웃렛은 일치하지 않은 값을 그대로 출력) |
route | 첫 번째 값으로 배분 | [route 주소1 주소2] |
change | 값이 변화했을 때만 출력 | [change] |
t (trigger) | 오른쪽→왼쪽 순으로 값을 보낸다 | [t f b] (f:숫자, b:bang, a:문자열) |
필터
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
lop~ | 로우패스 필터 | [lop~ 컷오프 주파수] |
hip~ | 하이패스 필터 | [hip~ 컷오프 주파수] |
bp~ | 밴드패스 필터 | 가운데:컷오프, 오른쪽:Q값 |
필터의 주의점
lop~이외에는 오른쪽 인렛에vline~의 아웃렛을 직접 연결할 수 없습니다- 값(가는 선)과 시그널(굵은 선)의 차이에 주의해 주세요
딜레이
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
delwrite~ | 딜레이 버퍼에의 기록 | [delwrite~ $0-delay 버퍼크기(ms)] |
delread~ | 딜레이 버퍼로부터의 읽기 | [delread~ $0-delay 지연시간(ms)] |
cyclone/delay~ | 딜레이(cyclone 라이브러리) | cyclone 라이브러리 |
$0 에 대해
$0 은 Pd의 패치 각각에 할당된 ID 번호입니다. $0-delay 처럼 버퍼 이름에 사용하면, 패치를 복제했을 때 이름이 충돌하는 것을 막을 수 있습니다.
시그널과 값의 변환
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
sig~ | 값→시그널 변환 | [sig~] |
snapshot~ | 시그널→값 변환 | bang이 왔을 때의 시그널 값을 출력 |
metro | 정기적으로 bang 출력 | [metro 주기(ms)] |
else/s2f~ | 시그널→값(자동) | bang 없이 항상 출력 |
else/f2s~ | 값→시그널 | ELSE 라이브러리 |
else/numbox~ | 시그널 값의 표시 | 표시용 GUI |
DSP에 주의
시그널 관련 오브젝트는 DSP를 켜지 않으면 동작하지 않습니다. 콘솔 오른쪽 위의 체크박스를 ON으로 하거나, output~ 의 볼륨을 올려 주세요.
음원 파일 처리
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
else/play.file~ | 음원 파일의 재생 | [else/play.file~ 파일명 반복(0/1) 자동재생(0/1)]. start/stop/loop 1 메시지로 재생・정지・반복 |
else/stretch.shift~ | 피치 시프트・타임 스트레치 | [else/stretch.shift~ 버퍼크기 초기피치 초기템포]. 피치: 0=원본, 1200=1oct(왼쪽에서 세 번째 인렛)/템포: 100=원본(%)(왼쪽에서 네 번째 인렛) |
else/xselect~ | 크로스페이드 전환 | [else/xselect~ 채널수 페이드시간(ms)]. 왼쪽 인렛에 채널 번호(0, 1, 2…)를 입력하면 전환된다 |
else/xfade~ | 크로스페이드 | ELSE 라이브러리 |
else/rec.file~ | 녹음 | [else/rec.file~ 파일명]. 파일은 패치와 같은 위치에 저장된다 |
soundfiler | wav 데이터를 배열에 읽어 들이기 | read 파일명 배열명 |
tabplay~ | 배열의 오디오 재생 | [tabplay~ 배열명] |
.wav | 비압축 음원의 파일 형식 | 샘플 음원 등에 사용 |
자동 연주
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
text define | 텍스트 데이터의 정의 | [text define -k 파일명]. 실행 모드에서 클릭하면 텍스트를 편집・저장(Cmd (Ctrl) + S)할 수 있다 |
text sequence | 텍스트의 순차 송출(수신처 값;) | [text sequence 이름 -g], auto:자동, bang:1스텝, line 0:맨 앞으로 |
else/drum.seq | 리듬 머신 GUI. bang으로 한 스텝씩 재생 | [else/drum.seq 행수 열수]. [행번호 on(1)/off(0)] 형식의 값 리스트를 출력 |
else/tempo | BPM 템포 출력 | [else/tempo BPM -mul 배수] |
random | 랜덤 정수 출력 | [random 최댓값] |
micro:bit 연동(OSC)
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
else/osc.receive | OSC 데이터 수신 | [else/osc.receive 포트번호] |
else/osc.route | OSC 주소로 배분 | [else/osc.route /주소1 /주소2] |
netreceive | 네트워크를 통한 데이터 수신 | [netreceive -u -b 포트번호](-u:UDP, -b:바이너리) |
oscparse | OSC 프로토콜에 따라 데이터를 해석 | netreceive 의 출력을 해석. [주소 값] 의 리스트를 출력 |
list trim | 리스트의 맨 앞 셀렉터를 제거 | oscparse 가 출력한 [주소 값] 을 route 등에서 다룰 수 있게 한다 |
list | 여러 값이나 심볼을 묶는다 | [list] |
cyclone/scale | 값의 매핑 | [scale 입력min 입력max 출력min 출력max] |
clip | 값의 클리핑 | [clip 하한 상한] |
else/smooth~ | 평활화(시그널) | ELSE 라이브러리 |
GUI
| 오브젝트 | 설명 | 조작 |
|---|---|---|
| bang | 트리거 송신 | 클릭으로 송신 |
| toggle | 0/1 전환 | 클릭으로 전환 |
| 넘버 박스 | 숫자 표시・입력 | 드래그로 값 변경 |
| 수평 슬라이더 | 값의 연속 입력 | 우클릭→속성에서 상한・하한 설정 |
| V. Radio | 세로로 늘어선 라디오 버튼. 클릭하면 선택 중인 인덱스(0〜스위치 수−1)를 출력한다. 화면 오른쪽의 Options에서 스위치 수를 변경 가능 | Put > New > V. Radio 로 배치. 선택 상태에서 화면 오른쪽 Options에서 스위치 수를 변경 |
그 밖
| 오브젝트 | 설명 | 사용법 |
|---|---|---|
print | 콘솔에 표시 | 디버그용 |
comport | 시리얼 통신 | [comport 디바이스번호 보드레이트] |
pd 서브패치명 | 서브패치 | 패치 안에 서브패치를 만든다 |
clone 패치명 | 패치의 복제 | 같은 패치를 여러 개 생성 |
상식 한 조각
베버-페히너의 법칙
인간의 주관적인 감각량은 물리량의 로그에 비례한다는 법칙. 음량의 변화를 자연스럽게 느끼게 하려면 음량 값을 4제곱하면 좋다.
악음의 구조
악기 같은 소리는 기음(가장 낮은 소리)과 그 정수배의 배음이 합성된 구조를 가진다. osc~ 를 여러 개 조합함으로써 다양한 음색을 만들 수 있다(가산 합성).