From c450d9037271ec163031f8b0cb2dfcd1bfeaf208 Mon Sep 17 00:00:00 2001 From: Holly Date: Thu, 24 Apr 2025 09:41:19 +0100 Subject: [PATCH] keep phase between tones --- node_3d.gd | 25 +++++++++++++------------ src/Encoder.gd | 10 ++++++++-- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/node_3d.gd b/node_3d.gd index a478002..45276eb 100644 --- a/node_3d.gd +++ b/node_3d.gd @@ -3,21 +3,22 @@ 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 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/testtest2.png").get_image() + #var cameraImage = load("res://tests/testtest3.png").get_image() var audioBuffer = encoder.EncodeSSTV(cameraImage) + encoder.SaveAsWav("res://../sstv.wav") # 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])) + #$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 diff --git a/src/Encoder.gd b/src/Encoder.gd index ba89161..a678d36 100644 --- a/src/Encoder.gd +++ b/src/Encoder.gd @@ -47,14 +47,19 @@ func EncodeHeader(vis: Array): outputFloats.append_array(GenerateTone(SYNC_PULSE_FREQ, VIS_BIT_LENGTH)) +var lastPhase = 0.0 + func GenerateTone(frequency: float, duration: float) -> PackedFloat32Array: var samples = PackedFloat32Array() var totalSamples = int(duration * SAMPLE_RATE) + var phase = 0.0 for i in range(totalSamples): var time = float(i) / SAMPLE_RATE - var sample = sin(TWO_PI * frequency * time) + phase = TWO_PI * frequency * time + var sample = sin(lastPhase + phase) samples.append(sample) + lastPhase = phase return samples @@ -81,8 +86,9 @@ func GenerateToneFromCurve(frequencies: Array, duration: float) -> PackedFloat32 phase += TWO_PI * freq * timeStep - var sample = sin(phase) + var sample = sin(lastPhase + phase) samples.append(sample) + lastPhase = phase return samples