Music Tech

[컴퓨터 음악 Computer Music] 컴퓨터로 음악을 다루는 방법 - 1

SsojuX2 2022. 1. 30. 17:29

COCRE 1기 회원으로서 작성한 글입니다.

COCRE!

COCRE가 궁금하다면!  클릭!

 

0. 컴퓨터와 음악

오늘날 우리는 음악을 들을 때 대부분 컴퓨터를 이용해서 듣습니다. 여기서 '컴퓨터' 라는 것은 PC, 노트북, 스마트폰 등을 포함한 전자 기기를 의미합니다. 

 

iPod [출처 : 이미지 클릭]

 

하지만 원래 음악은 소리의 성질을 가지고 있는 연속적인 데이터입니다.

자 여기서 문제가 발생합니다. 음악과 소리는 연속적인 데이터이지만, 컴퓨터는 연속적인 데이터를 표현하지 못합니다. 모든 데이터를 이산적으로 처리하죠. 아래 그림을 한 번 봅시다.

 

Is my data is continuous or discrete? [출처: 이미지 클릭]

 

연속적이란 것은 데이터가 연결되어 있다는 것이고, 이산적이라는 것은 데이터가 연속적이지 않고 분리되어 있다고 볼 수 있습니다.

여기서 소리, 음악 같은 데이터들은 파동의 형태이기 때문에 연속적인 데이터 형태를 가집니다. 따라서 위 그래프의 선이 연속적인 데이터에 해당 되죠.

하지만, 이런 데이터를 컴퓨터로 표현할 때는 이산적으로 저장해야합니다. 위 그래프에서 화살표가 이산적인 데이터에 해당됩니다.

이렇게 보면 아무래도 느낌이 안오니까 우리가 자주 보던 그림으로 바꿔 봅시다.

 

Apple loop [직접 캡쳐]

 

위 그림은 여러분들이 많이 보던 화면 일 것이라고 생각됩니다.

휴대폰으로 녹음을 진행하거나 TV 등에서 녹취록을 보여줄 때 자주 보던 화면입니다. 위 데이터는 소리의 진폭을 그대로 보여주고 있는 상태입니다.

그렇다면 이 데이터를 확대해 볼까요?

 

Apple Loop [직접 캡쳐]

 

조금 더 확대해 봅시다.

 

Apple Loop [직접 캡쳐]
ablenton 상에서의 데이터 [직접 캡쳐]

 

자 이제 어떻게 보이시나요? 점으로 보이는 부분들은 각 실제 연속 데이터가 이산 데이터로 표현되어 있는 부분이라고 보셔도 됩니다. 

이제 위에서 봤던 그래프와 비슷한 모양으로 보입니다.

 

Is my data is continuous or discrete? [출처: 이미지 클릭]

 

자, 이제 이 개념을 알고나면, 주변의 음향장치들이 연속적인 데이터로 동작하는지 이산적인 데이터로 동작하는지 확인해볼 수 있습니다.

초기의 음향 장치일수록 연속 데이터로 소리를 재생했지만, 이 후로 부턴 두 가지 방법들이 혼용되어 소리를 재생합니다.

예를 들어 아래 사진을 보시죠.

 

현미경으로 본 Vinyl [출처 : 이미지 클릭]

 

우리가 흔히 알고 있는 LP(Vinyl)을 확대하면, 위와 같은 이미지를 확인 할 수 있습니다.

턴테이블에 있는 카트리지의 바늘소리골을 따라 진동하며 소리를 내고, 그 소리를 증폭하면 우리가 LP에 녹음된 소리를 들을 수 있게 됩니다.

이 방식의 경우에는 연속적인 진동 신호를 소리로 바꾸는 방법을 사용해 재생합니다.

 

이 방식을 기본으로 우리가 자주 사용하는 전자기기는 이산 데이터로 소리 데이터들이 저장하고, DAC(Digital to Analog Converter)를 이용해 스피커로 소리를 재생하는 형태로 변화합니다.

아래 그림을 참조해봅시다.

 

소리가 전달 되는 형태 [출처 : 이미지 클릭]

 

DAC의 성능, 스피커의 성능에 따라서 재생되는 사운드의 품질이 달라지다보니, 고가의 음향 장비에 대한 수요가 많이 있는 편입니다.

개인의 선택이지만, 가성비 좋은 장비들도 많으니 직접 들어보고 결정해보는 것도 재미있는 경험입니다.

 

 

1. 연속 신호에서 이산 신호로

 

우리가 전자 기기에서 소리를 재생할 때 위에서 본 것과 같이 연속 신호를 이산 신호로 샘플링 해야 합니다. 이때 샘플링의 간격에 따라서 문제가 발생할 수도 있습니다. 

아래 그래프를 봅시다.

 

비행고도 예시 [출처 : 이미지 클릭]

 

비행기가 시간 가격에 따라서 위와 같은 고도를 보내왔다고 가정해봅시다. 이때 우리가 65분때의 비행기 고도를 알 수 있을까요? 단순히 두점을 이어서 고도가 31000이라고 대답할 수 있을까요?

 

정답은 '아니다' 입니다.

 

우리가 각 지점의 정보를 가지고 있다고 하더라도 중간 데이터를 확신할 수 없습니다. 예를 들어 아래처럼 그림이 그려질 수도 있습니다.

 

실제 비행고도 예시 [출처 : 이미지 클릭]

 

총 4개의 각기 다른 비행 고도 데이터가 있을때, 주어진 데이터로는 어떤 경로로 비행했는지 우리가 알 수 없습니다. 지금은 위에 보이는 모든 데이터가 주어진 데이터를 기반으로 봤을 땐 같은 신호로 볼 수 있습니다.

따라서 우리가 조금 더 정확하게 고도를 측정하려면, 데이터를 선택하는 시간 간격을 줄여야합니다.

이번엔 10분이 아니라 5분으로 다시 그래프를 그려보겠습니다.

 

실제 비행고도 예시 [출처 : 이미지 클릭]

 

다시 그래프를 보면 5분 간격으로 데이터를 가져왔을 때, 파란선만이 정확히 데이터와 일치하고, 나머지 데이터들은 파란색 데이터와 다른 것이 확인되게 됩니다.

이렇게 우리가 신호의 샘플링 간격을 조정했을 때, 샘플링 간격이 너무 길면 다른 신호와 구분할 수 없기 때문에 aliasing이 발생하게 됩니다. 반대로 샘플링 간격을 줄이게 되면, 원래 신호와 비슷해지기 때문에 샘플링하기 이전의 신호를 복원할 수 있게 됩니다.

 

샘플링을 진행할 때의 간격을 Sampling rate라고 하는데, 원래 신호를 완벽하게 복원 가능한 Sampling rate를 Nyquist rate라고 하며, 입력 신호의 최고 주파수의 2배가 되도록 Sampling rate를 사용합니다.

 

우리가 흔히 CD에서 볼 수 있는 44.1kHz는 보통 CD를 제작할 때, 사용하는 Sample rate이며, 사람의 가청 주파수가 20 ~ 20,000 Hz (20kHz) 이기 때문에 음악을 제작할 때 사용하는 Sample rate 입니다.

 

다음 글에서는 aliasing, sample rate 등 이런 신호들에 대해서 조금 더 자세히 알아보겠습니다!