keep phase between tones, for real this time

This commit is contained in:
Holly Stubbs 2025-04-24 10:14:10 +01:00
parent c450d90372
commit f2a9da7ce9
2 changed files with 9 additions and 13 deletions

View file

@ -3,13 +3,13 @@ extends Node3D
func encode_sstv(): func encode_sstv():
#var encoder = Martin1.new() #var encoder = Martin1.new()
var encoder = RobotBW8.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/checker.png").get_image()
#var cameraImage = load("res://tests/spiral.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/testtest2.png").get_image()
#var cameraImage = load("res://tests/testtest3.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") encoder.SaveAsWav("res://../sstv.wav")
# Spew that audio yo. # Spew that audio yo.
@ -24,7 +24,7 @@ func encode_sstv():
var startTimer = 0 var startTimer = 0
var first = true var first = true
func _process(delta): func _process(delta):
if startTimer > 10 and first: if startTimer > 20 and first:
first = false first = false
encode_sstv() encode_sstv()

View file

@ -47,19 +47,17 @@ func EncodeHeader(vis: Array):
outputFloats.append_array(GenerateTone(SYNC_PULSE_FREQ, VIS_BIT_LENGTH)) 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: func GenerateTone(frequency: float, duration: float) -> PackedFloat32Array:
var samples = PackedFloat32Array() var samples = PackedFloat32Array()
var totalSamples = int(duration * SAMPLE_RATE) var totalSamples = int(duration * SAMPLE_RATE)
var phase = 0.0
var timeStep = 1.0 / SAMPLE_RATE
for i in range(totalSamples): for i in range(totalSamples):
var time = float(i) / SAMPLE_RATE phase += TWO_PI * frequency * timeStep
phase = TWO_PI * frequency * time var sample = sin(phase)
var sample = sin(lastPhase + phase)
samples.append(sample) samples.append(sample)
lastPhase = phase
return samples return samples
@ -68,7 +66,6 @@ func GenerateToneFromCurve(frequencies: Array, duration: float) -> PackedFloat32
var totalSamples = int(duration * SAMPLE_RATE) var totalSamples = int(duration * SAMPLE_RATE)
var points = frequencies.size() var points = frequencies.size()
var phase = 0.0
var timeStep = 1.0 / SAMPLE_RATE var timeStep = 1.0 / SAMPLE_RATE
for i in range(totalSamples): for i in range(totalSamples):
@ -86,9 +83,8 @@ func GenerateToneFromCurve(frequencies: Array, duration: float) -> PackedFloat32
phase += TWO_PI * freq * timeStep phase += TWO_PI * freq * timeStep
var sample = sin(lastPhase + phase) var sample = sin(phase)
samples.append(sample) samples.append(sample)
lastPhase = phase
return samples return samples