4. 사운드 처리
프로세싱에서 사운드 처리를 위해 사용되는 라이브러리들을 소개하고, 사운드 재생 및 제어, 오디오 분석 및 시각화, 그리고 사운드 합성 및 처리 방법을 배웁니다.
4.1. 사운드 라이브러리 소개
프로세싱은 사운드 처리를 위한 여러 라이브러리를 제공합니다. 대표적인 라이브러리로는 'Minim'과 'Processing Sound Library'가 있습니다. 'Minim'은 사운드 재생, 오디오 분석 및 시각화, 그리고 사운드 합성을 위한 기능을 제공합니다. 'Processing Sound Library'는 좀 더 간단한 API로 사운드 재생 및 합성을 위한 기능을 제공합니다.
4.2. 사운드 재생 및 제어
먼저, 사운드 파일을 재생해 봅시다. Minim 라이브러리를 사용하여 사운드 파일을 불러오고 재생하는 방법은 다음과 같습니다.
import ddf.minim.*;
Minim minim;
AudioPlayer player;
void setup() {
size(400, 200);
minim = new Minim(this);
player = minim.loadFile("your_sound_file.mp3");
player.play();
}
void draw() {
background(0);
// 여기에 시각화 코드를 작성합니다.
}
void stop() {
player.close();
minim.stop();
super.stop();
}
4.3. 오디오 분석 및 시각화
오디오 신호를 분석하여 시각화하는 방법을 배워봅시다. Minim 라이브러리를 사용하여 사운드 파일의 주파수 스펙트럼을 구하고 시각화해 봅시다.
import ddf.minim.*;
import ddf.minim.analysis.*;
Minim minim;
AudioPlayer player;
FFT fft;
void setup() {
size(640, 360);
minim = new Minim(this);
player = minim.loadFile("your_sound_file.mp3");
fft = new FFT(player.bufferSize(), player.sampleRate());
player.play();
}
void draw() {
background(0);
fft.forward(player.mix);
for (int i = 0; i < fft.specSize(); i++) {
float x = map(i, 0, fft.specSize(), 0, width);
float h = map(fft.getBand(i), 0, 100, 0, height);
rect(x, height - h, width / (float) fft.specSize(), h);
}
}
void stop() {
player.close();
minim.stop();
super.stop();
}
4.4. 사운드 합성 및 처리
프로세싱에서 사운드 합성을 위한 간단한 방법은 Processing Sound Library를 사용하는 것입니다. 예를 들어, 사인파를 합성하려면 다음과 같은 코드를 사용할 수 있습니다.
import processing.sound.*;
SinOsc sine;
float freq;
void setup() {
size(400, 200);
sine = new SinOsc(this);
sine.play();
}
void draw() {
background(0);
freq = map(mouseX, 0, width, 20, 2000);
sine.freq(freq);
}
void mousePressed() {
sine.amp(0.5);
}
void mouseReleased() {
sine.amp(0);
}
이 코드는 마우스가 클릭된 상태에서 마우스의 X 위치에 따라 사인파의 주파수를 변경합니다. 누르면 사운드를 재생하고, 떼면 중지합니다.
사운드 처리의 경우, Minim 라이브러리를 사용하여 기본적인 오디오 이펙트를 적용할 수 있습니다. 예를 들어, 리버브(Reverb) 효과를 적용하려면 다음과 같은 코드를 사용할 수 있습니다.
import ddf.minim.*;
import ddf.minim.effects.*;
Minim minim;
AudioPlayer player;
Reverb reverb;
void setup() {
size(400, 200);
minim = new Minim(this);
player = minim.loadFile("your_sound_file.mp3");
reverb = new Reverb(0.9, 2000); // 믹스 비율과 콘볼루션 크기 설정
player.addEffect(reverb);
player.play();
}
void draw() {
background(0);
}
void stop() {
player.close();
minim.stop();
super.stop();
}
이 코드는 사운드 파일에 리버브 효과를 적용하고 재생합니다. 이 외에도 Minim 라이브러리에서는 다양한 오디오 이펙트를 제공하므로, 원하는 사운드 처리를 적용할 수 있습니다.
'GD's IT Lectures : 기초부터 시리즈 > 프로세싱(Processing) 기초부터 ~' 카테고리의 다른 글
[프로세싱(Processing) : 중급] 데이터 시각화와 인터랙티브 디자인 (0) | 2023.05.01 |
---|---|
[프로세싱(Processing) : 중급] 입출력과 통신 (0) | 2023.05.01 |
[프로세싱(Processing) : 중급] 애니메이션과 입체 공간 (0) | 2023.05.01 |
[프로세싱(Processing) : 중급] 고급 그래픽 기법 (0) | 2023.05.01 |
[프로세싱(Processing) : 중급] 객체지향 프로그래밍 (OOP) 기본 (0) | 2023.05.01 |
댓글