From f2a9da7ce95dd1125fefde1f20b5d078836b4edd Mon Sep 17 00:00:00 2001 From: Holly Date: Thu, 24 Apr 2025 10:14:10 +0100 Subject: [PATCH] keep phase between tones, for real this time --- node_3d.gd | 8 ++++---- src/Encoder.gd | 14 +++++--------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/node_3d.gd b/node_3d.gd index 45276eb..edd0cae 100644 --- a/node_3d.gd +++ b/node_3d.gd @@ -3,13 +3,13 @@ extends Node3D func encode_sstv(): #var encoder = Martin1.new() var encoder = RobotBW8.new() - #var cameraImage = get_viewport().get_texture().get_image() + var cameraImage = get_viewport().get_texture().get_image() #var cameraImage = load("res://tests/checker.png").get_image() #var cameraImage = load("res://tests/spiral.png").get_image() - var cameraImage = load("res://tests/testtest.png").get_image() + #var cameraImage = load("res://tests/testtest.png").get_image() #var cameraImage = load("res://tests/testtest2.png").get_image() #var cameraImage = load("res://tests/testtest3.png").get_image() - var audioBuffer = encoder.EncodeSSTV(cameraImage) + var audioBuffer = encoder.EncodeSSTV(cameraImage, false) encoder.SaveAsWav("res://../sstv.wav") # Spew that audio yo. @@ -24,7 +24,7 @@ func encode_sstv(): var startTimer = 0 var first = true func _process(delta): - if startTimer > 10 and first: + if startTimer > 20 and first: first = false encode_sstv() diff --git a/src/Encoder.gd b/src/Encoder.gd index a678d36..cc23f69 100644 --- a/src/Encoder.gd +++ b/src/Encoder.gd @@ -47,19 +47,17 @@ func EncodeHeader(vis: Array): outputFloats.append_array(GenerateTone(SYNC_PULSE_FREQ, VIS_BIT_LENGTH)) -var lastPhase = 0.0 +var phase = 0.0 func GenerateTone(frequency: float, duration: float) -> PackedFloat32Array: var samples = PackedFloat32Array() var totalSamples = int(duration * SAMPLE_RATE) - var phase = 0.0 + var timeStep = 1.0 / SAMPLE_RATE for i in range(totalSamples): - var time = float(i) / SAMPLE_RATE - phase = TWO_PI * frequency * time - var sample = sin(lastPhase + phase) + phase += TWO_PI * frequency * timeStep + var sample = sin(phase) samples.append(sample) - lastPhase = phase return samples @@ -68,7 +66,6 @@ func GenerateToneFromCurve(frequencies: Array, duration: float) -> PackedFloat32 var totalSamples = int(duration * SAMPLE_RATE) var points = frequencies.size() - var phase = 0.0 var timeStep = 1.0 / SAMPLE_RATE for i in range(totalSamples): @@ -86,9 +83,8 @@ func GenerateToneFromCurve(frequencies: Array, duration: float) -> PackedFloat32 phase += TWO_PI * freq * timeStep - var sample = sin(lastPhase + phase) + var sample = sin(phase) samples.append(sample) - lastPhase = phase return samples