Interactive exercises and solutions for Digital Signal Processing concepts
Interaktive Übungen und Lösungen für Konzepte der digitalen Signalverarbeitung
Get Started / Erste Schritte »
View Exercises
·
Report Bug
·
Request Feature
Table of Contents
This repository contains interactive solutions and exercises for the German course "Digitale Signalverarbeitung" (Digital Signal Processing). All solutions are implemented in Python and made interactive using Streamlit, allowing you to explore signal processing concepts directly in your browser.
🇩🇪 Deutsch: Dieses Repository enthält interaktive Lösungen und Übungen für den Kurs "Digitale Signalverarbeitung". Alle Lösungen sind in Python implementiert und mit Streamlit interaktiv gestaltet, sodass Sie die Konzepte der Signalverarbeitung direkt im Browser erkunden können.
To get the interactive exercises running locally, follow these simple steps.
- Python 3.11 or higher
- uv (recommended) or pip package manager
We provide multiple installation methods. uv is recommended for faster and more reliable dependency management, but traditional pip methods are also supported.
uv is a fast Python package installer and resolver. If you don't have it installed:
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# or
pip install uvThen install the project:
# Clone the repository
git clone https://github.com/AGBV/DigiSiV.git
cd DigiSiV
# Install all dependencies
uv install
# Run exercises directly with uv
uv run streamlit run exercise00/app.py
uv run streamlit run exercise01/m1.py# Clone the repository
git clone https://github.com/AGBV/DigiSiV.git
cd DigiSiV
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install from pyproject.toml (recommended)
pip install -e .
# OR install from requirements.txt
pip install -r requirements.txt
# Run exercises
streamlit run exercise00/app.py
streamlit run exercise01/m1.py# Clone the repository
git clone https://github.com/AGBV/DigiSiV.git
cd DigiSiV
# Install globally from requirements.txt
pip install -r requirements.txt
# Run exercises
streamlit run exercise00/app.py
streamlit run exercise01/m1.pyOnce installed, choose your exercise and run it:
For complex number visualization:
# With uv (recommended)
uv run streamlit run exercise00/app.py
# With pip (in activated venv)
streamlit run exercise00/app.pyFor audio signal processing:
# With uv (recommended)
uv run streamlit run exercise01/m1.py
# With pip (in activated venv)
streamlit run exercise01/m1.pyThe application will open in your default web browser at http://localhost:8501 🚀
For development with automatic reloading when files change:
# With uv
uv run streamlit run --server.runOnSave true exercise00/app.py
# With pip
streamlit run --server.runOnSave true exercise00/app.py💡 Tip: Use the sidebar controls in each application to adjust parameters and explore different scenarios!
DigiSiV/
├── exercise00/ # 🎨 Introduction: Complex number visualization
│ └── app.py # Interactive Mandelbrot Set explorer
├── exercise01/ # 🎵 Audio Signal Processing
│ ├── m1.py # Interactive audio analysis app
│ ├── M1.ipynb # Jupyter notebook with detailed analysis
│ └── audio01.wav # Sample audio file
├── MA2/ # ⚙️ Parameter effects on discretization
│ ├── app.py # Main Streamlit application
│ ├── functions.py # Signal processing helper functions
│ └── requirements.txt# Exercise-specific dependencies
├── pyproject.toml # 📦 Project configuration and dependencies
├── LICENSE # 📄 MIT License
└── README.md # 📖 This file
- File:
exercise00/app.py - Topic: Complex number visualization through fractals
- Concepts: Iterative algorithms, complex plane, mathematical visualization
- Features:
- Interactive Mandelbrot Set exploration with customizable parameters
- Real-time parameter adjustment (max iterations, pixel resolution)
- High-performance computation with Numba JIT compilation
- Beautiful fractal visualization using Plotly heatmaps
- Smooth color gradients and zoom capabilities
- Run:
streamlit run exercise00/app.py
- Files:
exercise01/m1.py(Streamlit app),exercise01/M1.ipynb(Jupyter notebook) - Topic: Time and frequency domain analysis of audio signals
- Concepts: Digital audio processing, FFT, frequency spectrum analysis, sampling
- Features:
- Interactive audio file upload or use default sample
- Time-domain signal visualization with adjustable time windows
- Frequency spectrum analysis using Fast Fourier Transform (FFT)
- Half/full spectrum display options
- Real-time parameter adjustment for signal analysis
- Sample Audio: Includes
audio01.wavfor testing - Run:
streamlit run exercise01/m1.py
# With uv (recommended)
uv run streamlit run exercise00/app.py # Complex number visualization
uv run streamlit run exercise01/m1.py # Audio signal processing
# With pip (in activated virtual environment)
streamlit run exercise00/app.py # Complex number visualization
streamlit run exercise01/m1.py # Audio signal processingFor automatic reloading when files change:
# With uv
uv run streamlit run --server.runOnSave true exercise00/app.py
# With pip
streamlit run --server.runOnSave true exercise00/app.py💡 Tip: Use the sidebar controls in each application to adjust parameters and explore different scenarios!
-
Create exercise directory
mkdir exercise02 cd exercise02 -
Create Streamlit app
# exercise02/app.py import streamlit as st import numpy as np st.title("Your Exercise Title") # Your exercise implementation
-
Test your new exercise
# With uv uv run streamlit run exercise02/app.py # With pip (in venv) streamlit run exercise02/app.py
-
Update this README with exercise description
This project supports devenv for reproducible development environments:
# Enter the development environment
direnv allowDependencies:
- NumPy: Numerical computations and array operations
- Plotly: Interactive plotting and visualization
- Streamlit: Web application framework for Python
- Numba: Just-in-time compilation for performance optimization
- SciPy: Scientific computing functions
Configuration files:
pyproject.toml: Modern Python project configuration (preferred)requirements.txt: Traditional pip requirements (auto-generated from uv)uv.lock: Exact dependency versions for reproducible installs
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingExercise) - Commit your Changes (
git commit -m 'Add some AmazingExercise') - Push to the Branch (
git push origin feature/AmazingExercise) - Open a Pull Request
Ideas for contributions:
- 📚 Add new signal processing exercises
- 🐛 Fix bugs or improve existing implementations
- 📖 Enhance documentation or add German translations
- 🎨 Improve visualizations and user interface
- ⚡ Performance optimizations
Distributed under the MIT License. See LICENSE for more information.
Resources and inspiration that made this project possible:
- 📚 Course: Digitale Signalverarbeitung (Digital Signal Processing)
- 🐍 Python - The foundation of our implementations
- 🚀 Streamlit - Making Python apps beautiful and interactive
- 📊 Plotly - Powerful interactive visualizations
- 🔢 NumPy - Fundamental package for scientific computing
- ⚡ Numba - High-performance Python compiler
- 🎨 Shields.io - Beautiful README badges
- 📖 Best README Template - Inspiration for this README