マイクでの録音¶
Godotは、Windows、macOS、Linux、Android、およびiOSのゲーム内オーディオ録音をサポートしています。
簡単なデモが公式デモプロジェクトに含まれており、このチュートリアルのサポートとして使用されます: https://github.com/godotengine/godot-demo-projects/tree/master/audio/mic_record。
デモの構造¶
デモは単一のシーンで構成されています。このシーンには、GUIとオーディオの2つの主要部分が含まれます。
オーディオ部分に焦点を当てます。このデモでは、オーディオ録音を処理するために、Record
エフェクトを持つ Record
という名前のバスが作成されます。録音には AudioStreamRecord
という名前の AudioStreamPlayer
が使用されます。


var effect
var recording
func _ready():
# We get the index of the "Record" bus.
var idx = AudioServer.get_bus_index("Record")
# And use it to retrieve its first effect, which has been defined
# as an "AudioEffectRecord" resource.
effect = AudioServer.get_bus_effect(idx, 0)
オーディオ録音は、get_recording()、is_recording_active() および set_recording_active() の3つのメソッドを持つ AudioEffectRecord リソースで処理されます。
func _on_RecordButton_pressed():
if effect.is_recording_active():
recording = effect.get_recording()
$PlayButton.disabled = false
$SaveButton.disabled = false
effect.set_recording_active(false)
$RecordButton.text = "Record"
$Status.text = ""
else:
$PlayButton.disabled = true
$SaveButton.disabled = true
effect.set_recording_active(true)
$RecordButton.text = "Stop"
$Status.text = "Recording..."
デモの開始時には、録音エフェクトはアクティブではありません。ユーザーが RecordButton
を押すと、エフェクトは set_recording_active(true)
で有効になります。
次のボタンを押すと、effect.is_recording_active()
は true
なので、effect.get_recording()
を呼び出すことで、記録されたストリームを recording
変数に保存できます。
func _on_PlayButton_pressed():
print(recording)
print(recording.format)
print(recording.mix_rate)
print(recording.stereo)
var data = recording.get_data()
print(data)
print(data.size())
$AudioStreamPlayer.stream = recording
$AudioStreamPlayer.play()
録音を再生するには、録音を AudioStreamPlayer
のストリームとして割り当て、play()
を呼び出します。
func _on_SaveButton_pressed():
var save_path = $SaveButton/Filename.text
recording.save_to_wav(save_path)
$Status.text = "Saved WAV file to: %s\n(%s)" % [save_path, ProjectSettings.globalize_path(save_path)]
記録を保存するには、ファイルへのパスを指定して save_to_wav()
を呼び出します。このデモでは、パスは LineEdit
入力ボックスを介してユーザーが定義します。