오디오 플러그인 개발 - Numerical Representation of Audio Data

도미노디오·2023년 6월 1일
1

오디오 데이터는 어떤 숫자로 표현되는가

오디오 데이터를 표현할 수 있는 숫자의 갯수는 Bit Depth에 의해 정해집니다.
N-bit 의 시스템이라 할 때, N이 클수록 더 자세한 숫자로 데이터를 표현할 수 있습니다.
이는 사진에서 해상도가 높아지는 것과 비슷하다고 할 수 있습니다.

같은 Bit Depth 라도 데이터를 어떠한 형식으로 표현할 지는 크게 3가지로 나눌 수 있습니다.

  1. Bipolar or Unipolar
    데이터를 음수와 양수로 표현할 것인가 or 양수로만 표현할 것인가

  2. Interger or Fractional
    데이터를 정수값으로 표현할 것인가 or 소수값으로 표현할 것인가

  3. Fixed-point or Floating-point
    데이터가 소수값일 때, 정수부분과 소수부분의 자릿수를 고정하는가 or IEEE 규격으로 표시할 것인가

예를 들어,
8-bit Unipolar 시스템은 0부터 255 까지의 정수값으로 데이터를 표현할 수 있습니다.
8-bit Bipolar 시스템은 -128부터 127 까지의 정수값으로 데이터를 표현할 수 있습니다.
16-bit Bipolar 시스템은 -32786부터 32767 까지의 정수값으로 데이터를 표현할 수 있습니다.
Floating-point Bipolar 시스템은 -1.0 부터 1.0 까지의 소수값으로 데이터를 표현할 수 있습니다.

일반적으로 오디오 플러그인 개발에서는 N-bit Bipolar Floating-point 방식을 사용합니다. 이때 값의 범위는 [-1.0, 1.0] 으로 Normalizing 합니다.

Floating-point로 표현하는 데에는 중요한 이유가 있습니다.
이는 바로 데이터의 overflow 를 방지하기 위함입니다.
오디오 프로세싱을 하다 보면 데이터의 더하기, 빼기, 곱하기, 나누기 등 여러 연산을 하게 됩니다.
이때 데이터를 정수값으로 표현하면 연산을 수행 시 순식간에 데이터의 최대 표현 범위를 벗어나게 됩니다.

하지만 Floating-point Bipolar Normalized in [-1.0, 1.0] 표현 방식에는 중요한 특징이 있습니다.
바로 -1.0과 1.0 사이의 아무 소수값이나 서로 곱해도 절대 이 범위를 벗어나지 않는다는 점입니다.

물론 데이터 연산을 어떻게 하느냐에 따라 [-1.0, 1.0] 범위를 초과할 가능성이 있지만, 최소한의 안전장치를 보장하는 오디오 데이터 표현 방식이라고 할 수 있습니다.

profile
오디오 플러그인 개발자

0개의 댓글