import serial
import numpy as np
import wave
import time

SERIAL_PORT = '/dev/ttyACM0'   # Adjust if needed
BAUD_RATE = 1500000
CHUNK_SIZE = 256               # frames per block
RATE = 16000                   # sample rate
CHANNELS = 2                   # stereo

# open serial
ser = serial.Serial(SERIAL_PORT, BAUD_RATE)

print("Recording 3 seconds of audio...")

frames = []
start = time.time()

try:
    while time.time() - start < 3.0:
        # 2 channels × 2 bytes per sample = 4 bytes per frame
        data = ser.read(CHUNK_SIZE * 4)
        if not data:
            break
        frames.append(data)

finally:
    ser.close()

# write to wav
with wave.open("capture.wav", "wb") as wf:
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(2)          # 16‑bit samples = 2 bytes
    wf.setframerate(RATE)
    wf.writeframes(b"".join(frames))

print("Saved capture.wav")
