Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sahandevs/dsp-blocks
my DSP playground
https://github.com/sahandevs/dsp-blocks
Last synced: about 12 hours ago
JSON representation
my DSP playground
- Host: GitHub
- URL: https://github.com/sahandevs/dsp-blocks
- Owner: sahandevs
- Created: 2024-08-26T20:09:49.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2024-09-13T07:42:12.000Z (about 2 months ago)
- Last Synced: 2024-09-13T21:56:27.601Z (about 2 months ago)
- Language: Rust
- Size: 194 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DSP Blocks
my DSP playground
![demo](./demo.png)
# Todo List
## Phase 1: Foundational DSP and Audio Processing
### Basic Signal Processing
- [x] Blocks Core
- [x] Vis Core
- [x] Implement and visualize basic waveforms (sine, square, sawtooth)
- [ ] Implement them using fourier approximation
- [ ] Create interactive controls for frequency, amplitude, and phase
- [ ] Implement signal addition, multiplication, and scaling
- [x] [Visualize envelope detection](https://youtu.be/rlypsap6Wow?list=PL-wATfeyAMNqIee7cH3q1bh4QJFAaeNv0&t=995)
- [ ] Implement Discrete Fourier Transform (DFT) from scratch
- [ ] Visualize frequency spectrum
- [ ] Compare your DFT with numpy's FFT
- [ ] Create interactive spectrogram visualization
- [ ] Implement simple FIR filters (low-pass, high-pass)
- [ ] Visualize filter frequency response
- [ ] Implement convolution from scratch
- [ ] Create interactive filter design tool### Advanced DSP Concepts
- [ ] Implement common window functions (Hann, Hamming, Blackman)
- [ ] [Extra-wide window functions](https://signalsmith-audio.co.uk/writing/2021/extra-wide-windows/)
- [ ] Visualize their effect on spectral leakage
- [ ] Implement Short-time Fourier Transform (STFT) from scratch
- [ ] Create interactive spectrogram with adjustable window size and overlap
- [ ] Basic implementation of Wavelet transform
- [ ] Visualize time-frequency resolution differences between STFT and Wavelets
- [ ] Implement basic reverberation
- [ ] Create a simple delay effect
- [ ] Visualize stereo signals## Phase 2: Music-Specific DSP and Feature Extraction
### Music Fundamentals and Low-Level Features
- [ ] Implement autocorrelation-based pitch detection
- [ ] Visualize pitch over time for monophonic audio
- [ ] Implement energy-based onset detection
- [ ] Visualize onset strength function
- [ ] Implement tempo estimation using autocorrelation
- [ ] Visualize beat locations on waveform
- [ ] Compute and visualize Mel-frequency cepstral coefficients (MFCCs)
- [ ] Implement and visualize chromagram### Advanced Music Features and Analysis
- [ ] Implement chord recognition using template matching
- [ ] Visualize chord progressions
- [ ] Implement novelty-based segmentation
- [ ] Visualize song structure
- [ ] Implement simple harmonic/percussive source separation
- [ ] Visualize separated components
- [ ] Experiment with unsupervised feature learning (e.g., k-means on spectrograms)
- [ ] Visualize learned features## Phase 3: Machine Learning for Music
### Basic ML Models for Music Tasks
- [ ] Extract features from a dataset (e.g., GTZAN) for genre classification
- [ ] Implement and evaluate simple models (k-NN, Decision Trees) for genre classification
- [ ] Visualize decision boundaries
- [ ] Collect and preprocess a dataset for mood classification
- [ ] Implement and evaluate SVM for mood classification
- [ ] Visualize feature importance
- [ ] Implement a content-based music recommendation system using extracted features
- [ ] Visualize similarity between songs### Deep Learning for Music
- [ ] Implement a CNN for genre classification using spectrograms
- [ ] Visualize learned filters and feature maps
- [ ] Implement an LSTM for melody generation
- [ ] Visualize generated melodies
- [ ] Implement a simple autoencoder for audio compression
- [ ] Visualize reconstructed spectrograms## Phase 4: Advanced Topics and Research
### State-of-the-Art Models and Techniques
- [ ] Implement a basic pitch tracking system for music transcription
- [ ] Visualize transcribed notes on a piano roll
- [ ] Experiment with VAEs or GANs for audio generation
- [ ] Visualize the latent space of generated samples
- [ ] Fine-tune a pre-trained model (e.g., VGGish) for a music task
- [ ] Visualize the activation of different layers## Phase ?: Random topics to implement
### Effects
- [ ] [Waveshapers](https://signalsmith-audio.co.uk/writing/2022/warm-distortion/)
- [ ] [Limiter](https://signalsmith-audio.co.uk/writing/2022/limiter/)
- [ ] [Reverb](https://signalsmith-audio.co.uk/writing/2021/lets-write-a-reverb/)
- [ ] [Signal Stretch](https://signalsmith-audio.co.uk/writing/2023/stretch-design/) [Vid](https://www.youtube.com/watch?v=fJUmmcGKZMI&feature=youtu.be)
- [ ] [Peak-hold](https://signalsmith-audio.co.uk/writing/2022/constant-time-peak-hold/)
- [ ] [Interpolation](https://signalsmith-audio.co.uk/writing/2021/monotonic-smooth-interpolation/)
- [ ] [Box filter](https://signalsmith-audio.co.uk/writing/2021/box-sum-cumulative/)
- [ ] [Cascaded box-filter smoothing filters](https://signalsmith-audio.co.uk/writing/2022/cascaded-box-filter-smoothing/)
- [ ] [crossfade](https://signalsmith-audio.co.uk/writing/2021/cheap-energy-crossfade/)### Synthesis
- [ ] [Analytic pluck synthesis](https://signalsmith-audio.co.uk/writing/2021/analytic-pluck/)
### Visualization Stuff
- [ ] Implement a better colored connections