This project implements a multi-function multimedia system that allows the user to sing with the music video and generate some fancy sound effects.
In recent decades, multimedia becomes quite popular in our daily life. In fact, multimedia system has existed for a long time. People enjoy the time viewing photos, listening to music, and watching movies. With the development of technology, we are able to create, modify and edit multimedia data. Also, thanks to the emergence of the digital era, we have more tools that help us to achieve these goals. For example, we could store the analog data in digital format to make it more robust and lasting. Besides, we are able to synthesize the data and generate some amazing effects.
Our final project is to design an intelligent multimedia system. This system allows users to use the microphone as the analog input to speak and sing. Besides, since it is not only a multimedia system but an “intelligent” multimedia system, we have implemented several features that help the users to modify, synthesize, and create a multimedia record. For example, we could adjust the volume of the voice and music. Besides, we could generate the echo of our voice as if we are in a theatre. Furthermore, since we could transform the analog signal into digital format, we are able to manipulate the audio data. In this project, we used several popular mathematical models in the field of Audio Signal Processing that help us to simulate specific sound effects. All the audio data could be recorded in real time by passing to the PC via the RS232 COM Port.
The kernel of the system is controlled by the ATMega32 microcontroller, same as the one we used in the regular lab sections. The voice signal input is generated from the microphone, and the music signal is generated from any music application such as a MP3 player or PC. We passed both of the audio signals through a pre-amplifier to boost its signal strength. Then, we used an analog-to-digital converter chip (ADC0801) to transform the analog signal into digital data. The digital data can then be propagated to the microcontroller. Besides, we use the RS232 serial port to communicate between the microcontroller and the PC. This design allows us to transfer the music data to the PC from this multimedia system in real time. In the microcontroller, we could capture both of the voice signal and music signal and mix them to generate special effects. The output signal can then be propagated to a digital-to-analog chip (DAC0808) to transform the digital data to analog signal. Finally, the signal will be passed to the speaker and generate a wonderful melody. In order to provide user with a friendly graphic user interface (GUI), we integrate the technology of JAVA and Visual C++ in Windows programming. User could apply the featured effects to the voice signal via this GUI.
High Level Design The final project is a good experience for us to integrate all the knowledge that we gained in this course and some other related courses. We chose this topic because we are all interested in multimedia signal processing. Also, we thought that this topic would be a good chance for us to combine our knowledge in various fields. For example, we applied the knowledge that we gained in this course to process the voice and music signal utilizing the optimal capacity of all the components to generate the amazing effects. Also, we could understand more about the analog circuit when we integrated all the hardware components. Furthermore, we had integrated various programming languages such as C, C++ in Windows programming, and Java into our multimedia system. During the process of development, we overcame the challenge of incompatibility between C++ and JAVA. Finally, to process the audio signal, we did some research in the field of Digital Signal Processing and combined some mathematical models to generate proper effects that we applied in this project.
The overall design block of this system is shows as follows. In this project , we used two different channels for our audio signal inputs: one is a microphone and the other is a music application such as MP3 player or PC. Initially both of the signals are in analog format, so we needed two analog-to-digital converters to transform the analog signal into digital format before feeding into the microcontroller. Since there is only one analog-to-digital converter embedded in ATMega32, we used the internal analog-to-digital converter for the voice channel and an external analog-to-digital converter chip (ADC0801) for the music channel. The signal could be manipulated in the microcontroller. The signal will be propagated to the digital-to-analog converter chip (DAC0808) to be transferred into analog format. Finally, the processed signal is passed to a speaker to generate the sound. In this project, we use the GUI in Windows XP as our system control. It provides a user-friendly graphical interface to allow the users to control the system by a mouse click. The mouse click is then turned into a command to the microcontroller via the COM Port.
There were so some minor changes we made in the system architecture while we were working on this project. Some of the changes were made since we encountered some limitation in the hardware. For example, in a common karaoke system, we need at least two channels for one voice input and one music input. However, there is only one internal analog-to-digital converter in ATMega32. If we use it for both voice and music signals alternatively, the sample rate will be reduced to less than half of the original one. This would lower the sound quality. In order to solve this problem, we decided to use an external analog-to-digital converter chip (ADC0801) for the music channel. In this way, the microcontroller can sample both the voice and music signals in 8KHz in maximum concurrently which the produces a higher sound quality. Besides, initially we decided to output the processed signal to the speaker in the same approach that we learned in Lab 2. However, we found that the sound quality was pretty bad since this approach used PWM mode of the microcontroller to generate an approximate signal and hence the accuracy of signal output was lowered. To cope with this problem, we used a digital-to-analog chip (DAC0808) to transform the digital output to an analog output that makes the sound more dulcet. For the choice of user interface, we initially decided to use the buttons on the STK-500 board as the control panel. However, we found that using a PC can provide a much flexible and user-friendly control interface. Hence, we decided to use a GUI running on the PC as the software control panel. All the changes we made help improving the performance of the multimedia system on the whole.
Our project not only has the industrial potential but also is suitable for academic research. In the point of view of the multimedia industry, the application of audio processing is very important. For example, it is an apparent trend that the digital TV will replace the traditional TV in the future. I am sure that our project has the commercial value. In the point view of academic, we can apply many mathematic models our system to give a realistic result to support the theoretical proposition of audio processing. We think that our project can contribute to the multimedia industry as well as the academia.
Conclusion The quality of our music is pretty good. In the part of voice, the quality is even better than our expectation since the frequency of human voice is lower that the sampling frequency of our project. In the part of music, since the music contains so much high frequency audio signal, the sample rate of our project could not capture those signals perfectly. Therefore, we did not expect the quality can be as high as the CD players. However, with the limitation of hardware, we think that we have optimized our system performance for the best quality, and we feel really satisfactory on our result. Besides, our program allows us to transfer the audio signals from the microcontroller to the PC at a baud rate of 115.2 Kbps. This design allows us to transfer audio signal and record them in the PC in real time. This result is also really satisfactory and reaches our expectation. Finally, since we spent so much to search for some extensively used algorithms in digital audio signal processing, the simulation of sound effects is really successful. We think that we did a good job for this final project.
In the beginning, we also wanted to apply more components to our project. For example, we could record music in real time into an SD card. However, there is not enough internal memory, which is only 2 Kbytes that we decided not to apply this component. I think if we could integrate our project with an external memory, we could have this function in the future. Besides, we also wanted to integrate this project with a wireless remote control that allows us to control our program anywhere in the effective range. However, since the wireless signal is not stable due to interference with other groups that we did not apply it eventually. Moreover, we wanted to use USB interface to communicate between the microcontroller and the PC. This design will not remove the data transfer bottleneck since the speed of serial port is high enough in our design, but it will make our project more compatible to all the PCs since USB is common interface nowadays. We think we could accomplish this part if we have more time to implement the USB device driver. Finally, we think the quality of music could also be improved if we use better external ADC chip with higher conversion rate. We also believe that with a higher budget, we could accomplish this part in the future to improve our system.
In this project, we use the pre-amplifier circuit of the previous project , "Sound Effect Processor". Also, we referenced a open-source website,"Music DSP Source Code Archive". Those algorithms that we found are well suitable for our sound effects.