录音

Audio Recording Event此事件只能由audio_start_recoring() 函数触发,并将返回存储在变量 async_load 中的 DS映射,它包含不同的键 / 值对,具体取决于触发该事件的函数的回调

ds_map中将提供以下密钥:

注意:如本页开头所述,变量 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" 键以确保它与我们开始录制时返回的值匹配,如果匹配,我们将为此事件创建的临时缓冲区的内容复制到我们的自定义缓冲区中。之后你就可以用自定义缓冲区做你想做的 —— 你可以使用专用的缓冲区音频功能播放它,你可以处理它并通过网络发送它,你可以把它保存到磁盘上…一旦你在缓冲区中录制了音频,你基本上可以做到任何你想要的。