Toolbox for tech guys who are into music and more
This project provides real-time tools for learning musical theory with accompanying visualization plugins through your microphone with set of simple UI applications. Perfect for musicians, music students, and developers interested in audio understanding and processing.
- 📏 Measurement tools: decibel meter
- 🎵 Real-time detection tools: note recognition and chord detection
- 📊 Training tools: live jamming with backing music
- Python 3.7 or higher
- PyAudio (for audio input)
- NumPy (for numerical computations)
- Matplotlib (for waveform visualization)
- Aubio (for pitch detection)
- SciPy (for signal processing)
- Clone the repository:
git clone https://github.com/danorel/mustream.git
cd mustream-
Create and activate a virtual environment (recommended)
-
Install the required packages:
pip install -r requirements.txtBefore moving on, let's setup Python project folder:
export PYTHONPATH=.
The project provides set of musical applications:
Decibel meter tool, which supports monophonic voice or instrument, analysing sound level.
python src/ui/tool/measurer/decibel_meter.pyThis will open a window showing:
- Frequency of sound
- Detected note
- Live decibel visualization
Note detection tool, which supports monophonic voice or instrument playing single dominant tone.
python src/ui/tool/detector/note.pyThis will open a window showing:
- Frequency of sound
- Detected note
Chord detection tool, which supports monophonic voice or instrument playing multiple dominant tones or harmonics.
python src/ui/tool/detector/chord.pyThis will open a window showing:
- Frequency of sound
- Detected chord
- Individual notes being played
- Live audio waveform visualization
Jamming with backing jazz music.
python src/ui/training/jam.pyThis will open a window showing:
- Frequency of sound
- Detected chord
- Individual notes being played
- Live audio waveform visualization
- Music library
- Jam controls
The project uses several development tools to maintain code quality:
blackfor code formattingisortfor import sortingflake8 for lintingpre-commithooks for automated checks
To set up development tools:
pip install pre-commit
pre-commit installContributions and feature proposals are welcome! Please feel free to submit a PR.