~zymon/STFT.jl

Julia package for Short-Time Fourier Transform
README update
README update
README.md update

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~zymon/STFT.jl
read/write
git@git.sr.ht:~zymon/STFT.jl

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

#STFT.jl - Short-Time Fourier Transform

STFT.jl is a small Julia package implementing just Short-Time Fourier Transform (STFT) routines. It provides the following core functionality:

  • signal analysis; transform time-domain signal to STFT-domain signal.
  • signal synthesis; transform STFT-domain signal to time-domain signal.

Check the documentation for more insights.

#Installation

The package is currently available in General, the default Julia package registry. To install this package from General registry, use the following command in Julia REPL:

] add STFT

Alternatively, directly via repository:

pkg> add https://codeberg.org/zymon/STFT.jl

#Examples

Below you can find a few standalone examples with basic usage of the package.

#Show spectrogram

using STFT
using Plots

x = randn(10000)  # Generate mock signal
W = 64            # Window length
w = ones(W)       # Rectangular analysis window
H = 10            # Hop
L = W - H         # Overlap

X = stft(x, w, L)    # Analysis
s = abs2.(X)         # Compute spectrogram
heatmap(10log10.(s)) # Display spectrogram

#Analyse signal, modify, and synthesise

using STFT

x = randn(10000)   # Generate mock signal
W = 64             # Window length
w = ones(W)        # Rectangular analysis window
H = 10             # Hop
L = W - H          # Overlap

X = stft(x, w, L)  # Analysis
X = f(X)           # Modify STFT-domain signal
y = istft(X, w, L) # Synthesis

Alternatively, instead of using STFT, you can import STFT, and use an alternative API, i.e., analysis and synthesis.

import STFT

x = randm(10000) # Generate mock signal
W = 64           # Window length
w = ones(W)      # Rectangular analysis window
H = 10           # Hop
L = W - H        # Overlap

X = STFT.analysis(x, w, L)  # Analysis
X = f(X)                    # Modify STFT-domain signal
y = STFT.synthesis(X, w, L) # Synthesis