godot-sstv/node_3d.gd
2025-04-24 09:11:42 +01:00

30 lines
1,003 B
GDScript

extends Node3D
func encode_sstv():
#var encoder = Martin1.new()
var encoder = RobotBW8.new()
var cameraImage = get_viewport().get_texture().get_image()
#var cameraImage = load("res://checker.png").get_image()
#var cameraImage = load("res://spiral.png").get_image()
#var cameraImage = load("res://testtest.png").get_image()
#var cameraImage = load("res://testtest2.png").get_image()
#var cameraImage = load("res://testtest3.png").get_image()
var audioBuffer = encoder.EncodeSSTV(cameraImage)
# Spew that audio yo.
$AudioStreamPlayer.stream.mix_rate = SSTVEncoder.SAMPLE_RATE
$AudioStreamPlayer.stream.buffer_length = 120
$AudioStreamPlayer.play()
var player = $AudioStreamPlayer.get_stream_playback()
for i in range(0, audioBuffer.size()):
player.push_frame(Vector2(audioBuffer[i], audioBuffer[i]))
# a lil hacky delay so sdfgi can settle lol.
var startTimer = 0
var first = true
func _process(delta):
if startTimer > 10 and first:
first = false
encode_sstv()
startTimer += 1