~signal_processor/tfft

A terminal+JACK/pipewire program for displaying spectrograms
Update and fix depdendencies
Start a gui version
Add a wrapper around audio_backend that inits an fft for our purposes. Make fft processing generic over num::Floats

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~signal_processor/tfft
read/write
git@git.sr.ht:~signal_processor/tfft

You can also use your local clone with git send-email.

tfft (terminal FFT) is a command line program that displays the spectrograph of a given audio signal. Currently, tfft is a jack client, though in the future it should work with pipewire as well.

Building:
    tfft is written in Rust, and so can be built like any other Rust program (i.e. cargo build --release). You will need headers and libraries for jack (seems to be included in whatever package your distro supplies for jack2), and a c compiler/linker.

Testing:
    tfft does not have any tests, however it does have test signals. These can be enabled by compiling with --features test_signal.

Arguments:
    tfft can take several command line arguments. There are three flags, that both expect arguments: -z for zoom, -o for offset, and -b for the number of bins.
    The zoom and offset arguments expect a string with a single number, or 2 numbers separated by an x. If a single number is supplied, it sets both the horizontal and vertical zoom or offset to that number. If no number is supplied on either side of the x, the value defaults to 1 for zoom, or 0 for offset.
    The zoom values are clamped between 1 (the default) and 30. The offset is clamped between 0 (the default) and 1- the amount the offset offsets is relative to the zoom.
    The number of bins is not clamped, but powers of 2 between 256 and 8192 are common.

    If test signals are enabled, the flag -s can be passed along with an argument of "dc", "sin", "noise", or "sweep" (all case-insensitive) to output that particular signal.

Controls:
    Pressing l and h zoom in and out in the horizontal direction, respectively.
    Pressing k and j zoom in and out in the vertical   direction, respectively.

    Pressing a and f offset left and right respectively.
    Pressing s and d offset up   and down  respectively.

    Pressing r resets the zooms and offsets to their defaults.
    Pressing ctrl+c quits.

Updates:
    see the TODO file for a list of planned features.