오디오 버퍼에서 사운드 생성하기
이 문서에서는 오디오 버퍼에서 새로운 사운드를 생성하는 방법을 설명합니다. 이 함수는 사운드 뱅크를 생성하는 데 필요하며, 생성된 사운드는 다양한 애플리케이션에서 활용될 수 있습니다.
개요
audio_create_buffer_sound 함수
audio_create_buffer_sound 함수는 버퍼의 내용을 바탕으로 새로운 사운드를 생성하는 기능을 제공합니다.
필요한 사항
- 버퍼 생성: 사운드를 만들기 전에 버퍼를 반드시 생성해야 합니다.
- 버퍼 포맷: 현재 지원되는 포맷은
buffer_u8또는buffer_s16입니다. - 샘플 레이트: 샘플 레이트는 8000Hz~48000Hz 사이여야 합니다.
- 버퍼 오프셋: 데이터를 읽기 위한 버퍼의 오프셋이 필요합니다.
- 샘플 수 및 채널: 버퍼의 샘플 수와 필요한 채널도 제공해야 합니다.
채널 정의
| 상수 | 설명 |
|---|---|
| audio_mono | 모노 (단일 채널) |
| audio_stereo | 스테레오 (듀얼 채널) |
| audio_3d | 3D (5.1 채널) |
주의사항
- 사운드를 생성한 후에는 더 이상 사용하지 않을 경우
audio_free_buffer_sound함수를 사용하여 메모리를 해제해야 합니다. 그렇지 않으면 메모리 누수가 발생할 수 있습니다. - 사운드가 생성된 버퍼는 사운드를 해제하기 전까지 삭제할 수 없습니다.
- 한 번 사운드가 생성된 버퍼는 데이터 추가나 크기 조정을 하면 예기치 않은 결과가 발생할 수 있습니다. 주의해서 사용해야 합니다.
문법
audio_create_buffer_sound(bufferId, bufferFormat, bufferRate, bufferOffset, bufferLength, bufferChannels);
인자 설명
| 인자명 | 타입 | 설명 |
|---|---|---|
| bufferId | Buffer | 사용할 버퍼의 ID |
| bufferFormat | Buffer Data Type Constant | 버퍼의 데이터 포맷 (buffer_u8 또는 buffer_s16) |
| bufferRate | Real | 버퍼 데이터의 샘플 레이트 |
| bufferOffset | Real | 샘플 데이터를 읽어올 버퍼 오프셋 (바이트 단위) |
| bufferLength | Real | 버퍼의 길이 (헤더 제외한 오디오 데이터 바이트 수) |
| bufferChannels | Audio Channel Constant | 사용할 채널 |
반환 값
- 생성된 사운드 자산을 반환합니다.
예제 코드
다음 코드는 버퍼를 생성하고 데이터를 프로그래밍적으로 채우고, 이후에 사운드를 생성하는 예제입니다.
var rate = 44100;
var hertz = irandom_range(220, 880);
var samples = 44100;
var bufferId = buffer_create(rate, buffer_fast, 1);
buffer_seek(bufferId, buffer_seek_start, 0);
var num_to_write = rate / hertz;
var length = buffer_get_size(bufferId);
var val_to_write = 1;
for (var i = 0; i < (samples / num_to_write) + 1; i++) {
for (var j = 0; j < num_to_write; j++) {
buffer_write(bufferId, buffer_u8, val_to_write * 255);
}
val_to_write = (1 - val_to_write);
}
soundId = audio_create_buffer_sound(bufferId, buffer_u8, rate, 0, length, audio_stereo);
이 코드는 버퍼를 생성한 후 주파수가 랜덤으로 설정된 사운드를 생성합니다. 생성된 사운드는 soundId에 저장됩니다.
결론
audio_create_buffer_sound 함수는 오디오 프로그램에서 매우 유용하게 사용될 수 있으며, 다양한 사운드를 생성하는 데 기초가 됩니다. 이를 통해 게임 및 멀티미디어 애플리케이션에서 효과음을 만들 수 있습니다.
이 문서의 내용이 오디오 처리에 도움이 되길 바랍니다!