diff --git a/ui/main_scene/main_scene.tscn b/ui/main_scene/main_scene.tscn index 1696a98..48786f4 100644 --- a/ui/main_scene/main_scene.tscn +++ b/ui/main_scene/main_scene.tscn @@ -2,7 +2,6 @@ [ext_resource type="Script" path="res://ui/main_scene/scripts/microphone.gd" id="2_h65el"] - [sub_resource type="SystemFont" id="SystemFont_dukv4"] font_names = PackedStringArray("JetBrains Mono NL") font_weight = 425 diff --git a/ui/main_scene/scripts/Microphone.gd b/ui/main_scene/scripts/Microphone.gd index 8db04bb..22fad9e 100644 --- a/ui/main_scene/scripts/Microphone.gd +++ b/ui/main_scene/scripts/Microphone.gd @@ -14,11 +14,33 @@ func _ready(): func _process(_delta): var frames: PackedVector2Array - if effect.can_get_buffer(1024): - frames = effect.get_buffer(1024) - playback_voip.rpc(frames) - + frames = effect.get_buffer(effect.get_frames_available()) + if frames.size() > 0: + var mono_frames: PackedFloat32Array = stereo_to_mono(frames) + playback_voip.rpc(mono_frames) @rpc("any_peer", "call_remote", "unreliable_ordered", 1) -func playback_voip(frames: PackedVector2Array): - playback.push_buffer(frames) +func playback_voip(packed_frames: PackedFloat32Array): + playback.push_buffer(unpack_mono(packed_frames)) + +func stereo_to_mono(frames: PackedVector2Array) -> PackedFloat32Array: + var float_array = PackedFloat32Array() + float_array.resize(frames.size()) + + var i: int = 0 + for frame: Vector2 in frames: + float_array[i] = (frame.x + frame.y) / 2 + i += 1 + + return float_array + +func unpack_mono(packed_frames: PackedFloat32Array) -> PackedVector2Array: + var frames: PackedVector2Array = PackedVector2Array() + frames.resize(packed_frames.size()) + + var i: int = 0 + for packed_frame: float in packed_frames: + frames[i] = Vector2(packed_frame, packed_frame) + i += 1 + + return frames