• ||
    Mixing & Volume 조절 ( )
  • 2009/09/05
  •  

  •   Ring My Bell팀의 이용희회원입니다.

      이번 글에서는 PCM 데이터의 Mixing Volume에 대해 설명 드리겠습니다.

     

      일단 글 본론에 대해 설명하기 전에 PCM이 무엇인지 먼저 알아보겠습니다.

      PCM(Pulse Code Modulation)은 아날로그 데이터 전송을 위한 디지털 설계로, PCM 내의 신호들은 바이너리(1 0)로 표현되는 두 가지 상태만 가능합니다. 아무리 복잡한 아날로그 파형이라도 이 사실은 변하지 않습니다. PCM을 사용하여 동영상, 비디오, 음성, 음악, 원격측정, 가상 현실 등을 포함한 모든 형태의 아날로그 데이터를 디지털화하는 것이 가능합니다.

      아날로그 신호를 PCM화 시키는 데에는 표본화, 양자화, 부호화의 과정을 거칩니다.

      표본화(Sampling)과정은 필요한 정보를 취하기 위해 원 신호를 시간 축에서 일정한 주기로 추출하는 것을 말합니다. 따라서 표본 값으로 이루어진 펄스 열은 펄스진폭변조(PAM, Pulse Amplitude Modulation)가 됩니다. 표본화는 일정시간 간격으로 아날로그 신호의 순시치를 취하는 과정으로 표본화의 주기가 짧을수록 원래의 신호를 충실히 재현할 수 있습니다. 신호의 최고 주파수 2배 이상으로 데이터를 표본화하면 원래 데이터 신호를 거의 재현할 수 있습니다.

    [##_Gallery|1087444404.jpg||width="400" height="300"_##]양자화 과정은 표본화 과정을 통해 얻은 펄스진폭변조신호를 디지털화하기 위해 부호화에 필요한 비트 수를 정하고, 해당 비트 수에 의해서 표현이 가능한 독립적인 개수만큼의 양자화 레벨을 선정하여 표본의 크기를 그와 가까운 크기의 양자화 레벨에 근사화 시키는 것입니다. 양자화 비트수가 많으면 원 신호를 충실히 부호화할 수 있으나, 부호-복호기(CODEC)와 중계기 등의 고속화가 필요합니다. 따라서 품질의 경제성을 고려하여 비트 수를 결정해야 합니다. 양자화 과정에서는 아날로그 신호를 디지털 신호로 변환하면서 반올림 절차를 거치게 됨으로 약간의 오차가 생길 수 있습니다. 이로 인해 생기는 잡음을 양자화 잡음이라고 하며, 이를 줄이기 위해서는 양자화 레벨을 증가시켜 양자화 레벨 사이의 간격을 적게 하거나, 신호의 크기에 따라 양자화 간격을 달리 취하는 비선형 양자화 방법을 취할 수 있습니다.

    [##_Gallery|1386273367.jpg||width="400" height="300"_##] 부호화 과정은 양자화된 값을 이진수로 표현하는 것입니다. 4Bit의 양자화라면 1 0001, 2 0010, 나머지 값들도 앞과 같은 방식으로 저장하게 됩니다.

    [##_Gallery|1139551892.jpg||width="400" height="300"_##] 위와 같은 방식으로 아날로그 데이터를 PCM Data로 변환하여 저장할 수 있습니다.

     

    이제 본론으로 들어가겠습니다.

    첫 번째로 다룰 것은 Mixing입니다. Mixing이란 두 개 이상의 소리를 합쳐 하나의 소리로 만드는 것을 의미합니다.

    직접 음악을 들으면서 이해해보도록 하겠습니다. 여기 A B라는 각각 독립된 소리가 있습니다.

     [##_Jukebox|1280558985.mp3|A|autoplay=0 visible=1|_##][##_Jukebox|1334804880.mp3|B|autoplay=0 visible=1|_##]

    이 두 개의 소리를 Mixing하면 다음과 같이 C라는 소리가 됩니다. [##_Jukebox|1105970212.mp3|C|autoplay=0 visible=1|_##]

    이것을 그래프로 표현하면 다음과 같습니다. Sin X, Sin 2X, Sin 3X의 그래프가 있습니다. 각각의 파형을 독립된 개체로 표현하면 다음과 같습니다.

    [##_Gallery|1403540973.jpg||width="400" height="300"_##]이 그래프를 합치면 다음과 같이 변하게 됩니다.[##_Gallery|1026815767.jpg||width="400" height="300"_##]

     결과적으로 Mixing이란 결국 아날로그 파형이 합쳐져 진폭이 커지는 것을 의미합니다. 디지털로 표현된 PCM데이터에서는 같은 시간에 같은 주파수를 가지고, 같은 양자화 레벨을 가진 데이터의 경우 서로 합하는 것으로 표현할 수 있습니다.

    Music Is My Life 프로젝트의 경우 PCM 데이터를 동일한 규격으로 Decoding하기 때문에 별다른 데이터 변환 없이 각 표본 값을 합하는 것으로 Mixing을 할 수 있었습니다.

     

    두 번째로 다룰 것은 Volume 조절입니다. Volume 조절은 파형의 진폭을 조절하는 것으로 구현할 수 있습니다. 파형의 진폭을 조절하는 것은 의외로 간단합니다. PCM 데이터에 일정 값을 곱하는 것으로 구현이 가능합니다. 1보다 큰 값을 곱하면 볼륨이 증가하는 것이고, 작은 값을 곱하면 볼륨이 감소하게 되는 것입니다.

    Music Is My Life 프로젝트의 경우 Volume을 조절하는 기능을 Fade In/Out기능에 사용했습니다. Fade In/Out은 서서히 볼륨을 높이거나 낮추는 기술입니다. 결국 원하는 시간 동안 Volume을 서서히 높이거나 낮추면 Fade In/Out이 되는 것입니다.

     

    마지막으로 위의 두 가지 과정에서 아직 말하지 않은 중요한 과정이 있습니다. 바로 수정한 값에 대한 범위를 체크하는 것입니다. Mixing이나 Volume를 조절하는 경우 PCM의 각 데이터 표본 값이 범위를 넘어가는 경우가 생기게 됩니다. 이런 경우 범위를 넘지 않도록 최대/최소 값을 적용시켜야 합니다. 또한 이런 값이 많아져 최대/최소 값이 많이 적용되면 음이 왜곡되어 찌그러지는 소리가 생깁니다.

    Mixing의 경우, 혹은 단순히 Volume을 많이 높이거나 많이 낮추는 경우 이런 현상이 많이 발생할 수 있습니다. 하지만 Music Is My Life에서는 이런 현상을 다음과 같이 해결했습니다.

    1.     Mixing의 대상이 되는 A B가 있을 때.

    2.     같은 시간 동안 A에는 Fade In효과를, B에는 Fade Out효과를 적용합니다.

    3.     Fade In/Out효과가 적용된 A B Mixing합니다.

    이렇게 함으로써 Mixing되는 각 음의 최대범위를 자연스럽게 맞춰 음이 왜곡되는 현상을 막고, 소리의 연결을 자연스럽게 만들 수 있었습니다.

     

    이것으로 이번 프로젝트의 블로그 포스팅을 마치겠습니다.

    더 궁금한 사항이 있으면 따로 문의해주세요! ^^


  •  
  • TRACKBACK : http://www.swssm.org/trackback.php?id=340
  •  
  •  
  • [prev] ... 1 ... [next]
 
삼성전자 소프트웨어 멤버십
과제 Tech Note 입니다.

최근 글