The main target of the project is to get the real time estimation of the frequency of audio signal. Real time estimation will help in maintaining the data related to changes in the frequency. So we designed two different ways of estimating it. Each one has its own applications and is accurate to different types of audio.The sampling frequency is set to 44100 so that it would be compatible with all the devices.The basic approach calculates the period from the superimposition and deviation analysis of the signal.
The other method is more intelligent with respect to the processing part as it uses note detection. Note detection allows us to recognise the portions of the audio sample where we can apply Fast Fourier Transformation algorithms. So this allows us to scale down the region of analysis for efficient run time. Thus we process the data obtained from the Power Spectrum and calculate the fundamental frequency. The frequency obtained from above estimations is used to evaluate the music note names.
SOFTWARE REQUIREMENTS SPECIFICATION
The project requires you to use MATLAB Software as the operating environment. The User Interface is easy to handle. User needs to enter the audio file name in the input section. This section reads the audio file with the given name in the MATLAB project directory using ’audioread’ function which is only available in the latest releases(after 2011). So the user should make sure that the MATLAB software he/she is running must be up to date. The project is built in MAT-LAB R2014a Windows version. It portrays important graphs for advanced anlaysis if required by the user so it is important that the version also contains the basic libraries which are provided by default by the version on which the project is built.
Input Audio Features:
The program uses auto note detection which operates based on the variations in the intensity of sound. In almost all the cases there is an sudden increase in the intensity i.e proportional to the square of the values in the input array. Thus for efficient note detection the input audio signal must have considerable amount of variation when a note begins. This can be assured when the sound intensity of noise in the signal is considerably less than the note sound intensity.
Test Cases and Test Results:
Frequency estimation of a periodic wave:
We started by calculating the frequency estimation of a periodic wave. The technique did not require us to use Fourier transform so it made things simple. Our approach to this was the rule that frequency of a peridoc signal is proportional to the number of maxima or minima in a fixed finite time interval.
Frequency estimation of a non-periodic wave:
After we were successful in finding the period of a periodic wave,the next challenge was that the audio signals practically are not exactly periodic because of the minute disturbances in the medium which cause considerable fluctuations in the audio signal in the order of period. So we changed the approach and calculated the period by brute-force method i.e varying period within certain limits and checking which value of period satisfied the required conditions the most.
The project follows the following implementation. Input audio file which is in the project directory is taken as read and converted into an array with one or two streams. If it contains two streams then they are merged into one by taking average of the two. The array is further any type of processing or analysis. The array stores the audio signal with sampling frequency 44100 samples per second.
SCREENSHOTS OF PROJECT
CONCLUSION AND FUTURE SCOPE
In our project, we designed and implemented an effective and user-friendly frequency estimation system with Fourier Analysis. The target users of the system are not only the people practicing music, but also professional musicians who cannot waste their time figuring out the notes of an audio sample.
There is still much room for future development that would enhance the system and increase its usage value. The following items are some suggestions:
- Advanced Note Detection:
There are lot of ways we to improve and customise note detection. Most of them use variations in intensity, which is not the right way because strictly speaking a note is said to change when the frequency of the signal changes. It is not easy to keep track of change in frequency because the change is gradual and hence it is an existing challenge. Moreover the frequency estimation for calculating note detection requires note detection in a crude sense which is paves way for development in this area.
- Non Periodic Signal analysis:
The process is relatively simple if the signal were sinusoidal or periodic. But the real life musical notes or vocals are approximately periodic and the frequency itself changes with time because a sample may contain more than one note and that is how music is played. While Fourier Analysis is a nice solution to this problem ,it is not sufficient. Theoretically it may be sufficient but its high level implementation is not as there is resolution and run time limit. There is scope to overcome latter by designing algorithms especially for the purpose of frequency estimation and not focusing on phase detection.
- Multiple Notes at a time:
Our project assumes that only a single note is played at a time. But that is not it. We can develop it further by using Fourier Analysis again. There are existing algorithms which can isolate multiple notes. After splitting the audio sample into individual notes we can apply our own techniques to find the frequency.
Source: IIT Bombay
Authors: Vishal Babu Bhavani | Pushyarag Yadagiri | Divya Somasi