Giter Club home page Giter Club logo

real-time-audio-visualizer's Introduction

Real-Time-Audio-Visualizer

Project Description

This project consists of a Sound & Entertainment System to visualize audio input from a microphone and display the signals interactively in different visualizations. The project was built with Verilog, Digilent Basys 3 Board, Pmod OLEDrgb 96 x 64 RGB OLED Display and Pmod MIC3. The notable features include pong game (where audio signals are used to control the pedals), ability to select colour schemes for background, graph & font colour, interactive displays & graphs of voice signals and etc. The frequency detector algorithm implemented was able to achieve an accuracy of over 95%.

For more details, please refer to the Final Report.pdf.

Feature List

No. Features Description
1 Menu Page User will be be directed to a menu page displaying two options, ‘Graphs’ and ‘Pong’ respectively. User will have to press up or down button to toggle between the options and press the centre button to access the option that the user wants
2 Pong Game Upon clicking the ‘Pong’ option in the menu display, user will be directed to the game. User needs to flip SW[2] to ‘on’ to start playing the pong game.To restart the game, player can flip SW[2] off then on. Player 1(P1) uses SW[15] while Player 2(P2) uses SW[3]. The game is a ordinary pong game with a twist: the ball size is tied to the mic input, therefore, to “kill” your opponent, you need to clap when the ball reaches the player paddle. The opponent can defend by clapping right before it reaches the paddle to deflect the ball. If one is unable to clap and defend, he/she can let the computer take over by flipping SW[4] and SW[14] for P1 and P2 respectively. However, note that the paddle moves faster when controlled by player.Game ends when one of the player’s score reaches 30. The user can flip SW[2] at this point to reset the game.
3 Side Menu When BTNC is pressed, a side menu will pop up, allowing the user to exit whichever option they are currently in and directing them back to the menu display stated above in (1). This side menu is in both pong game and graph. For graph there is an additional option for color select and the current graph selected.
4 Basic Voice Visualizer Upon clicking the ‘Graphs’ option in the menu display, user will be directed to the page displaying the real time voice waveform. When SW[0] = 1, the VGA displays the test wave. To display other visual representations of the input waveform(which will be discussed in greater details below, user will have to press either the BTNU or BTND button to toggle between the different visual representations of the input signal until he/she has reach the desired visual representation that he/she wants.
5 Volume Indicator The LEDs from LD0 to LD11 light up with respect to the intensity of the input audio sample.
6 Seven Segment Display The last two segments (AN1 & AN0) will display a numeric value between 0 and 12 with respect to the intensity of the input audio sample.
7 VGA SW[7] hides axis
SW[8] hides ticks
SW[9] hides grid
SW[10] hides waveform
Pressing left and right on the main waveform 8ould scroll through the 5 default color schemes.
8 Colour Select In the unlikely event that the users do not like the color scheme, they are able to change it. SW[13:11] determines which part of the graph is changed. 0 - bg, 1 - grid, 2 - waveform, 3 - axis,4 - ticks.

To change the color, press the BTNC to open up the side menu and select color sel. Once inside, you can preview the selected color on the box next to the side menu, the user can then press the BTNC to confirm the change.
9 Voice Indicator Display Upon pushing the BTND button, user will be directed from the display page to the page which displays the waveform together with the volume indicator boxes which increases in sizes and changes in colour with respect to the input voice waveform. Pushing the BTNU button will direct to the display page.
10 Amplify Voice Signal 10a) Upon pushing the BTND button, user will be directed from the page in (9) to the page displaying the same voice waveform depicted in (4) but now with input signal and grids amplified 2 times to give users a ‘zoom in’ view of the waveform. Pushing the BTNU button will direct to the page in (9).

10b) Pushing the BTND button again displays the same voice waveform in (4) with the input signal amplified 4 times instead. Pushing the BTNU button will direct back to the earlier version of ‘zoom in’ view in (10a).
11 Bar Graph 11a) Upon pushing the BTND button, user will be directed from the page in (10b) to the page displaying a bar graph representation of the input audio sample (see Fig 10). Pushing the BTNU button will direct to the page in (10b).

11b) Pushing the BTND button again will lead to the page representing the same bar graph with different configuration (see Fig 11). Pushing the Fig. 10 & 11 BTNU button will direct to the earlier version of bar graph in (11a).
12 Circular Graph Upon pushing the BTND button, user will be directed from the page in (11b) to the page displaying a circle which increases in size with respect to the input audio sample. Pushing the BTNU button will direct to the page in (11b).
13 Line Graph 13a) Upon pushing the BTND button from the page displayed in (12), user will be directed to the page displaying a line graph representation of the input audio sample. Pushing the BTNU button will direct to the page in (12).

13b) Pushing the BTND button again will lead to the page representing the same line graph with different configuration. Pushing the BTNU button will direct to earlier version of line graph in (13a).
14 Slow Waveform 14a) Upon pushing the BTND button, user will be directed from the page in (13b) to the page displaying the same waveform in (4) but now with the input signal fluctuating and changing slowly. Pushing the BTNU button will direct to the page in (13b).

14b) Pushing the BTND button again displays another variation of the same slow waveform. Pushing the BTNU button will direct to the earlier version of slow waveform in (14a).
15 2 Graphs Display 15a) Pushing the BTND button from the page in (14b) displays the normal waveform in (4) and line-graph representation of the waveform in (13) side by side. Pushing the BTNU button will direct to the page in (14b).

15b) Pressing the BTND button again displays the normal waveform in (4) and bar-graph representation of the waveform in (11) side by side. Pushing the BTNU button will direct to the earlier version of 2 graphs in (15a).
16 4 Graphs Display 16a) Pressing the BTND button from the page in (15b) displays the normal waveform in (4), line-graph representation of waveform in (13), bar-graph representation of waveform in (11) and circle representation of the waveform in (12) side by side. Pushing the BTNU button will direct to the page in (15b).

16b) Pressing the BTND button displays the normal waveform in (4), line-graph representation of waveform in (13), bar-graph representation of waveform in (11) and volume indicator of the waveform in side by side. Pushing the BTNU button will direct to the page in (16a).

real-time-audio-visualizer's People

Contributors

riyas97 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.