– 원문 링크: https://blogs.embarcadero.com/audio-recorder-and-player-component-for-delphi-c-firemonkey-applications/
– 원문 제목: Audio Recorder And Player Component For Delphi/C++ FireMonkey Applications
– 원문 작성자: Anbarasan
파이어몽키(FMX) 애플리케이션에 오디오를 녹음하고 재생하는 기능을 구현하려고 한다며, 이 글을 읽기 바란다. WINSOFT의 Audio Component Suite는 델파이/C++/라자루스 개발자가 오디오 녹음기와 재생기를 쉽고 빠르게 개발할 수 있도록 해준다. 이 오디오 컴포넌트는 웨이브폼 오디오 즉 .wav 윈도우의 표준 API를 사용한다. 그리고 녹음기와 재생기 컴포넌트도 들어있다.
기능
– 생데이터인 PCM 오디오 데이터와 PCM 오디오 Wav 파일을 지원한다. 보다 자세한 내용은 PCM 웨이브 사운드 파일 포맷을 참고하기 바란다.
– 32비트/64비트 윈도우 지원
– PC에 설치된 오디오 입력/출력 디바이스를 유연하게 선택하고, 녹음, 재생, 일시정지, 녹음재생
– 선택한 오디오 입력/출력 디바이스의 지원 능력 조회 가능
– 녹음을 위해 샘플링 비율(Samples per second), BPS(Bits per second), 채널을 구성 가능
– 선택한 디바이스의 왼쪽 볼륨과 오른쪽 볼륨 조정 가능
지원 버전(2020년 8월 기준)
– 델파이/C++빌더 XE7부터 10.4 파이어몽키(FMX) 애플리케이션
플랫폼
– 윈도우(Windows), OS X, 안드로이드, iOS
설치 과정
– (빈 공간이 3.7MB 이상 시스템에 있는지 미리 확인)
– FAudioCS 설치 파일을 다운로드하고 오른쪽 클릭하여 열기 선택
– 정보 창에 표시된 기능, 설치, 카피라이트 내용을 읽고 Next 클릭
– 설치한 폴더를 지정하고 Next 클릭
– 시작 메뉴 폴더를 지정하고 Next 클릭. Don’t create a Start Menu folder 옵션을 선택하면 이 단계 생략 가능
– 폴더 설정을 확인하고 Install 클릭. (Back을 클릭하면 폴더 설정을 다시 변경 가능)
– 설치가 완료되면 Finish 클릭
– 윈도우 시작 메뉴를 클릭하여 설정한 시작 메뉴에 Audio Component suite이 있는지 확인
설치 과정 데모:
Audio Suite Component를 가지고 애플리케이션 만드는 법
1. RAD스튜디오 10.4를 열고, Components로 가서 > System 선택. 아래 그림처럼 Components Audio Suite Component가 설치되어 있는지 확인

2. FTRecorder와 FTPlayer 컴포넌트를 드래그 드롭, (또는 FAudioCS.pas 유닛 파일을 uses 구역에 추가하고 코드로 이 컴포넌트들을 코드로 직접 생성
FTRecorder;

FRecorder 속성
Active: Waveform-audio 입력/출력 디바이스 열기 또는 닫기
Device: 시스템에 있는 Waveform-audio 제공자 식별자를 Audio 입력/출력 디바이스 목록에 표시 (0 ~ N). 디펄트 값은 MapperDevice (예: 해당 포맷을 녹음/재생할 수 있는 Waveform Audio 입력/출력 장비). DeviceCount 속성은 오디오 디바이스 전체 갯수.
DeviceName[Device: Integer]: 제품명을 표시
Capabilities: 읽기전용 속성, 디바이스 제조사, 제품 식별자, 제품명, 메이저 버전, 마이너 버전, 표준 포맷, 채널 (스테레오 또는 모노)에 대한 정보 제공
OnBufferNeeded: 오디오 녹음/녹음재생을 위해 새 버퍼가 필요 할 때 (이 버퍼에는 녹음된/녹음재생 웨이브폼 데이터가 들어가게 됨)
OnBufferReleased: 녹음된/녹음재생 웨이브폼 오디오 데이터를 사용할 수 있게 되었을 때
Save: PCM 데이터를 특정 파일에 기록
Load: 특정 파일에서 PCM 파라미터와 데이터 추출
3. 파일 크기가 커지면, OnBufferNeeded를 사용하여 고정 크기 버터를 생성하고 버퍼 목록에 추가하고, onbufferReleased를 사용하여 크기 증가
4. DeviceCount 목록에서 Device를 선택
5. FRecorder.Open //녹음할 Recorder 디바이스 활성화
6. FRecorder.Start //녹음 시작
7. FRecorder.Stop //녹음 중지
8. FRecorder.Reset // 현재 위치를 0으로 리셋, 대기중인 모든 버터는 애플리케이션에 저장됨, 새로 녹음을 하려면 버퍼를 리셋하고 비우고나서 녹음 시작
9. Save 프로시저 //녹음된 버퍼를 사용자가 지정한 파일에 저장
여기까지 잘 진행하여 오디오 녹음 잘되었다면, 이제 녹음된 파일을 재생해보자

FPlayer 속성
10. Load 함수를 사용하여 녹음된 오디오 불러오기 (파일 열기 창을 열고 버퍼 목록에 저장)
11. DeviceCount 목록에서 Audio Output Device 선택
12. FPlayer.Open // 재생할 오디오 출력 디바이스 활성화
13. FPlayer.Play // 버퍼 목록에서 오디오를 가져와서 재생 (onbufferneeded를 사용하고 onbufferReleased 크기 증가)
14. FPlayer.Pause // 특정 지점에서 오디오 재생 일시정지
15. FPlayer.Resume // 최신 일시정지 지점부터 다시 재생
16. FPlayer.Stop // 오디오 재생 중지
17. FPlayer.LeftVolume/RightVolume // 해당 볼륨 조정 (0 ~ 65535)
기타 기능: 오디오 디바이스에서 지원하는 Pitch, PitchValue, PlaybackRate, PlaybackValue 값 조정
팁: Samples, Milliseconds,Bytes, Midi Time를 통해 녹음/재생 지점을 업데이트 할 수 있음
샘플 애플리케이션 코드 작성 데모:
결론: 이렇게 쉽게 녹음과 재생 기능을 애플리케이션에 구현할 수 있다. WINSOFT는 윈도우API를 직접 다루는 시간을 줄여주어서 생산성을 높인다.