CCWT library for C and Python
Did you ever wanted to easily generate a spectrogram like this one?
Take the Tutorial with lots of examples and all features being explained.
Features
Complex continuous wavelet transformation
- with a gabor wavelet
- interfaces for C99, python2.7 and python3.5
- using libFFTW for performance
- and libPNG as possible output
- 6 render modes
- parallelization / multithreading support
- customizable frequency bands
- helper method for linear and exponential frequency bands
Dependencies
Ubuntu
sudo apt-get install libfftw3-dev libpng-dev
Arch Linux
sudo pacman -S fftw libpng
Mac OS
brew install fftw libpng
Installation
[sudo] pip[3] install ccwt
Documentation
ccwt.fft()
- input_signal: Numpy 1D float32, float64, complex64 or complex128 array
- padding: Zero samples to be virtually added at each end of the input signal, default is 0
- thread_count: Default is 1 (no multi threading)
ccwt.frequency_band()
- height: Height of the resulting image in pixels and number of frequencies to analyze
- frequency_range: Difference between the highest and the lowest frequency to analyze, default is height/2
- frequency_offset: Lowest frequency to analyze, default is 0.0
- frequency_basis: Values > 0.0 switch from a linear to an exponential frequency scale using this as basis, default is 0.0 / linear mode
- deviation: Values near 0.0 have better frequency resolution, values towards infinity have better time resolution, default is 1.0
ccwt.numeric_output()
- fourier_transformed_signal: Numpy 1D complex128 array generated by ccwt.fft()
- frequency_band: Numpy 2D float64 array generated by ccwt.frequency_band()
- width: Width of the resulting image in pixels, can be the length of the input signal or less for downsampling
- padding: Same value as passed to ccwt.fft()
- thread_count: Default is 1 (no multi threading)
ccwt.render_png()
Same as ccwt.numeric_output() but with these additionally at the beginning:
- file: File object to store the resulting PNG image
- render_mode: indicating the color scheme for rendering, see include/render_mode.h for possible values
- logarithmic_basis: Values > 0.0 switch from a linear to a logarithmic intensity rendering using this as basis