We design a music mixer on Field Programmable Gate Array (FPGA) using SystemVerilog. Note that all the functions are implemented using the digital circuit in hardware instead of programming languages in software.
Figure 1. The state diagram of the system.
In this project, we design a system for users to create a mixture of music tracks by drawing simple geometry shapes on a whiteboard or a piece of paper. Each geometry shape represents a unique sound/track of music. For example, a circle may generate a soundtrack of a snare drum and a triangle may add on another soundtrack of bass. By drawing different geometry shapes, users can create their own unique piece of music mixture.
The following is an overview of the system. Beginning with the D5M camera, which captures images at about 30 frames per second, sends the captured CCD raw data to camera controller. The camera controller then converts CCD raw data into a black-and-white binary image, which is stored in both SDRAM and SRAM. The former is designed for the VGA controller to display images on the screen in real-time. The latter is designed for the computational purpose of Hough Transform, which is an algorithm that recognizes geometry shapes. After Hough Transform, states of the system will be updated if a particular shape is recognized. The system will then play the corresponding soundtrack to generate a music mixture created by the user. Note that all of the above-mentioned functions are implemented in hardware using digital circuits.
For more information, please refer to our technical report. Also, our code is publically available at GitHub.