Summary
| Mentor(s): | Prof. Megan Hickman Fulp Dr. Mike Murphy |
|---|---|
| Project Type: | Software development |
| Technologies: | Python, Qt (PySide6 and Qt Designer), NumPy, Git |
| Undergraduate Credit: | CSCI 399, CSCI 490 |
| Graduate Credit: | IST 659 |
| Locality: | Main campus and/or remote |
Purpose
Many popular media players provide some kind of audio visualization, typically in the form of animated graphics, while a song is playing. At the moment, TealPlay does not have any visualization capabilities. Instead, its current song display simply shows the song title, album, playlist position, and time. Lyrics can also be displayed as subtitles if they are available.
Proper audio visualization is a desired feature. Access to the audio data via Qt Multimedia isn't entirely straightforward, but it does appear to be available with the correct API calls in Qt for Python (PySide6). Once decoded, the audio data will be in the form of raw bytes containing the low-level pulse-code modulation (PCM) data representing sound power. In order to visualize these data beyond a simple power display, Fast Fourier Transforms (FFTs) will be required to extract frequency information from the PCM data. This frequency data can then be used to generate nicer visualizations, such as sound wave and power-at-frequency output. The popular NumPy library can produce the FFTs.
Scope of Work
Add audio visualization to TealPlay by first extracting the decoded audio and then performing Fast Fourier Transforms to extract useful information to visualize. Draw various visualizations using the graphics capabilities provided in the Qt toolkit. If NumPy or a third-party library is used, ensure that it remains an optional dependency: TealPlay should be able to start and run (though perhaps lacking audio visualization support) without it. Once the first visualization has been developed, additional projects will be available to create additional visualization choices. Some user interface work will be needed to allow the user to set the default audio visualization and switch between visualizations.