Skip to content

This Repository Contains Five Projects Using Python PyQt5 GUI Components to Practice Some of the Main Concepts of Digital Signal Processing

License

Notifications You must be signed in to change notification settings

RamadanIbrahem98/DSP

Repository files navigation

DSP

About the Projects

These Projects are part of the SBE 309 Medical Signal Processing Curriculum at the Faculty of Engineering, Cairo University

Prerequisites

A good Understanding of Python Programming Language and one of its GUI Components (PyQt5)
Some Familarity with some of python third party packages like numpy, matplotlib would be a plus
basic understanding of the main concepts of OOP is a plus

However, you can apply the concepts of the projects with any other prefered programming language

Projects List

# Project Name Status
01 multiChannelSignalViewer ✔️
02 sound-equalizer ✔️
03 kiss-ft-and-fft ✔️
04 image-mixer ✔️
05 Shazam-Clone

This Project is the first project in the semester and does not use any digital signal processing concepts yet. It is just a warm up to get comfortable using the GUI components

Project Description

you are required to design a multi-channel (i.e. three) signal viewer
this application should present the signal in real-time like with the ability to play, pause, zoom in and out, auto pan the signal, move forward or backward in time, and change the speed of the signal
it is also required to have the ability to export the current scene as a PDF report
This PDF should be dynamic, meaning if I'm handling only one channel, it would generate the report for that one channel only. And if I'm using more than one channel, it should extract all of them and try fit them in the PDF as considered best fit

Final requirement is presenting the Spectrogram of the time signal, at this point of time, you are not required to have a broad understading of the subject, just the basics of spectrogram and what it represents

type of signal to use: any open-source medical signal (i.e. ECG, EEG, EMG, ...etc)

progress in first project

# multiChannelSignalViewer Status
01 Download And Filter Some Open-Sourse Medical Signals ✔️
02 Create the GUI ✔️
03 Display the Signal in Real-time ✔️
04 Add Play, Pause Controls ✔️
05 Add Zoom in and out Controls ✔️
06 Add Print PDF ✔️
07 Add Spectrogram ✔️
08 Add Autopan ✔️
09 Add Move Forward, Backward in time
10 Add Speed Control, Speed up and down
11 Refactor the Spectrogram and use the Matplotlib one

This is the second project in the semester and the first project using Fast Fourier Transform (fft) to process audio files (mainly wav)

Project Description

You are required to design a GUI application to load and play audio files. when loaded, you should plot the waveform and move it real-time in sync with the audio and plot the signal's spectrogram.
You have to control this audio signal (play, pause, stop) and manipulate the waveform and spectrogram (zoom in and out, move forward, backward) all of this happen in sync (any movement in audio appear in waveform and spectrogram and vice versa)
Humans can only hear from 20HZ to 20KHZ and that depends on age and other medical factors
You are required to slice the range of frequency into 10 bands, then create 10 sliders to control the magnitude of the signal at those bands. It should goes from [0 to 5] times the magnitude
after any change in the equalizer, an after waveform and spectrogram are generated next to the original ones to show the difference between them

as for the spectrogram, you should have the ability to:

  • choose a color palette from a list of different color palettes
  • control the minimum and maximum magnitude (in db), that controls the color intensity, any value that is less than the minimum or greater than the maximum should be saturated

just like project 1 you should have a generate PDF button to extract the current view of the waveform and spectrogram before and after equalization

The Application should have a signal for creating a new instance (New Window)

progress in the second project

# sound-equalizer Status
01 Download wav samples online ✔️
02 Create the GUI ✔️
03 Create controls to play, pause and stop audio ✔️
04 Sync audio playback with waveform and spectrogram position ✔️
05 Get the signal fft ✔️
06 Manipulate Each pin with the slider equivalent value ✔️
07 Add palettes combobox ✔️
08 Add Print PDF ✔️
09 Add Spectrogram Min and Max decible ✔️
10 Add new window functionality ✔️

Our Team

  • Ramadan Ibrahem - linkedin-shield
  • Muhammad Seyam - linkedin-shield
  • Muhammad Abd-ElAziz - linkedin-shield
  • Yousef Samir - linkedin-shield

Supervision

DR. Tamer Basha
T.A. Christina Adly