오디오 녹음
이 문서는 오디오 녹음 기능에 대해 설명합니다. 이 이벤트는 audio_start_recording
함수에 의해 트리거되며, 다양한 키/값 쌍을 포함하는 DS 맵이 async_load
변수에 저장되어 반환됩니다. 이 맵은 호출한 함수에 따라 다르게 구성됩니다.
DS 맵의 키
다음은 DS 맵에서 사용할 수 있는 키 목록입니다:
키 | 설명 |
---|---|
buffer_id |
오디오 데이터를 가져오는 데 사용할 수 있는 임시 버퍼의 ID |
channel_index |
이 데이터가 온 호출 함수에서 반환된 녹음 채널 인덱스 |
data_len |
수신한 데이터의 길이 (바이트 단위) |
async_load
변수는 비동기 이벤트에서만 유효합니다. 이 변수는 이벤트 시작 시 생성된 DS 맵을 가리키며, 이벤트가 끝날 때 삭제됩니다. 모든 오디오가 저장된 임시 버퍼도 이벤트 종료 시 제거되므로, 나중에 사용하려면 이를 사용자 정의 버퍼에 복사해야 합니다.
사용 예제
아래의 사용 예제에서는 녹음된 오디오를 저장하기 위해 사용자 정의 버퍼를 생성하고, 입력 소스 0에서 녹음하도록 설정합니다.
channel_index = audio_start_recording(0);
audio_buffer = buffer_create(len, buffer_fast, 1);
이제 녹음이 감지될 때마다 게임 스텝이 비동기 오디오 녹음 이벤트를 트리거합니다. 녹음된 입력을 처리하는 방법은 다음과 같습니다:
var channel = async_load[? "channel_index"];
if (channel == channel_index) {
len = async_load[? "data_len"];
buffer_copy(async_load[? "buffer_id"], 0, len, audio_buffer, 0);
}
여기서는 "channel_index" 키를 확인하여 녹음을 시작할 때 반환된 값과 일치하는지 확인합니다. 일치하면, 이 이벤트를 위해 생성된 임시 버퍼의 내용을 사용자 정의 버퍼로 복사합니다. 이후에는 사용자 정의 버퍼로 원하는 작업을 수행할 수 있습니다. 예를 들어, 전용 버퍼 오디오 함수를 사용하여 재생하거나, 처리하여 네트워크로 전송하거나, 디스크에 저장할 수 있습니다. 녹음된 오디오가 버퍼에 저장되면, 기본적으로 원하는 모든 작업을 수행할 수 있습니다.
활용 예제
- 오디오 재생:
gml audio_play_sound(audio_buffer, 1, false);
- 네트워크 전송:
gml network_send(audio_buffer);
- 파일 저장:
gml file_save(audio_buffer, "recorded_audio.wav");
- 오디오 처리:
gml processed_audio = audio_process(audio_buffer);
- 다른 채널로 녹음:
gml channel_index = audio_start_recording(1);
이와 같이 오디오 녹음 기능을 활용하여 다양한 작업을 수행할 수 있습니다.