Skip to content

AbdullahOmran/filter-forge

Repository files navigation

Realtime Digital Filter Design

Description

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.

App review

Table of Contents

  1. Features
  2. Installation
  3. Usage
  4. Dependencies
  5. Contributors

Features

Z-Plane Plot

  • 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.

Frequency Response Plot

  • Magnitude and Phase Response: Separate plots for magnitude and phase response corresponding to the placed zeros and poles.

Screenshot 3

Real-time Signal Filtering

  • 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.

    Screenshot 3

Phase Correction with All-Pass Filters

  • 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.

Screenshot 3

Installation

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

Usage

  1. Open the Application: Run main.py to start the application.

  2. Design Filte:

  • Use the z-plane plot to place zeros and poles.
  • Modify or delete placed elements as needed.
  1. Visualize Response: View the magnitude and phase response plots.

  2. 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.
  1. Phase Correction:
  • Select or build all-pass filters for phase correction.
  • Enable or disable all-pass filters as needed.

Dependencies

This project requires the following Python packages listed in the requirements.txt file:

  • PyQt5
  • opencv
  • numpy
  • pandas

Contributors

Abdulrahman Shawky
Abdulrahman Shawky
omarnasser0
Omar Abdulnasser
Ahmed Kamal
Ahmed Kamal
Abdullah Omran
Abdullah Omran

About

digital-filters

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages