목표
wav 파일을 불러오고 처리하며, 메모리 상에 데이터를 담을 수 있도록 한다. 오디오 버퍼를 저장하고 추후 UI 작업에 용이하도록 처리자를 만든다.
Classes
AudioData
기존 AudioData는 하나의 오디오 데이터를 담을 것으로 예상했지만, 실제 Wav 파일의 경우 여러 채널이 존재하고 이를 동적으로 로드 및 관리해야 할 필요성이 있어 별도의 AudioStream의 클래스를 만들어 구현했다. 지금 당장은 모노~채널 2까지만 지원하지만, 추후 확장 개발 및 업데이트를 할 때 용이하도록 하는 것이 목표이다.
AudioStream
AudioStream 내에서는 Wav 파일을 로드하고 메모리상에 담을 수 있도록 initialization 을 진행한다. 이 대 MonoAudioStream을 통해 wav 파일 내의 PCM data (채널 별 PCM Stream)을 분리 보관하여 배열에 차곡 처리 해 담는다.
AudioFloatWrapper
AudioFloatWrapper 은 추후 UI 상에서 PCM 오디오 데이터를 시각적인 정보로 구성해야 할 때 사용할 수 있다. WAV 파일의 PCM data는 Audio 의 소리 진폭 정보 및 각 위상 정보를 소수나 퍼센트 형태로 그대로 저장하는 것이 아니라 비트 데이터로 변환하여 엔디안 처리를 진행한 뒤 저장하는 것으로 보인다. 즉 PCM 데이터를 Audio 위상 정보로 변환하기 위해서는 채널 별로 Sample 데이터를 비트 단위로 쪼개서 부호 있는 double 형태로 변환하는 작업이 필요하며 그 작업을 이 클래스에서 진행할 수 있도록 구현하였다.
다음 목표
다음 목표는 자잘하게 미완성된 PD-Layer 부분을 수정하고, 오디오를 합성하거나 재생하고, 렌더할 수 있도록 클래스를 구현하는 것이 목표이다. 비로소 이 작업까지 완료 되었을 때 UI 작업을 시작할 수 있을 것으로 보인다. 끝