NTP-Timeturner/ltc_probe.py
Chris Frankland-Wright e3f4efe93e ltc probe
2025-06-24 20:16:25 +01:00

43 lines
1.2 KiB
Python

#!/usr/bin/env python3
"""
ltc_probe.py
Probes audio input to detect LTC-like signal characteristics.
Reports zero crossings and estimated frequency.
"""
import numpy as np
import sounddevice as sd
DURATION = 1.0 # seconds
SAMPLERATE = 48000
CHANNELS = 1
EXPECTED_FREQ = 2000 # Approx LTC edge rate at 25fps
def count_zero_crossings(signal):
signal = signal.flatten()
signs = np.sign(signal)
return np.count_nonzero(np.diff(signs))
def verdict(freq):
if freq < 100:
return "❌ No signal detected (flatline or silence)"
elif 1800 <= freq <= 2200:
return f"✅ LTC-like signal detected (freq: {freq:.1f} Hz)"
else:
return f"⚠️ Unstable or non-LTC signal (freq: {freq:.1f} Hz)"
def main():
print("🔍 Capturing 1 second of audio for LTC probing...")
audio = sd.rec(int(DURATION * SAMPLERATE), samplerate=SAMPLERATE, channels=CHANNELS, dtype='float32')
sd.wait()
crossings = count_zero_crossings(audio)
estimated_freq = crossings / DURATION
print(f"Zero crossings: {crossings}")
print(f"Estimated frequency: {estimated_freq:.1f} Hz")
print(verdict(estimated_freq))
if __name__ == "__main__":
main()