This project involves implementing a desktop application to help users design custom digital filters through the placement of zeros and poles on the z-plane. The application visualizes the filter's frequency response and allows for real-time filtering of signals.
- Unit Circle Display: The plot includes a unit circle where users can place zeros and poles.
- Interactive Modifications:
- Drag and Drop: Modify placed zeros/poles by dragging them.
- Deletion: Click on a zero or pole to delete it.
- Clear Options: Clear all zeros, all poles, or both.
- Conjugate Addition: Option to add conjugates for complex elements.
- Magnitude and Phase Response: Separate plots for magnitude and phase response corresponding to the placed zeros and poles.
-
Signal Application: Apply the designed filter on a lengthy signal (minimum 10,000 points).
- Time Progress Visualization: Graphs showing the time progress of the signal and the filtered signal.
- Speed Control: Slider to control the speed/temporal resolution of the filtering process.
-
Real-time Signal Input: Input an arbitrary real-time signal via mouse movements.
- Frequency Variation: Faster mouse movements generate higher frequencies, slower movements generate lower frequencies.
- All-Pass Filter Library: Visualize and select from a library of all-pass filters.
- Custom All-Pass Filter: Build a custom all-pass filter by providing an arbitrary value.
- Enable/Disable All-Pass Filters: Enable or disable added all-pass elements via a drop-menu or checkboxes group.
To install the project, clone the repository and install the requirements:
# Clone the repository
git clone https://github.com/omarshaban02/filter-forge.git# Navigate to the project directory
cd filter-forge# Install the required packages:
pip install -r requirements.txt# Run the application:
python index.py-
Open the Application: Run main.py to start the application.
-
Design Filte:
- Use the z-plane plot to place zeros and poles.
- Modify or delete placed elements as needed.
-
Visualize Response: View the magnitude and phase response plots.
-
Apply Filter:
- Apply the designed filter on a lengthy signal and observe the real-time filtering process.
- Input a real-time signal via mouse movements.
- Phase Correction:
- Select or build all-pass filters for phase correction.
- Enable or disable all-pass filters as needed.
This project requires the following Python packages listed in the requirements.txt file:
- PyQt5
- opencv
- numpy
- pandas
|
Abdulrahman Shawky |
Omar Abdulnasser |
Ahmed Kamal |
Abdullah Omran |



