본문 바로가기
GD's IT Lectures : 기초부터 시리즈/프로세싱(Processing) 기초부터 ~

[프로세싱(Processing) : 중급] 사운드 처리

by GDNGY 2023. 5. 1.

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 라이브러리에서는 다양한 오디오 이펙트를 제공하므로, 원하는 사운드 처리를 적용할 수 있습니다.

반응형

댓글