Technical Information-
Data analysis
SYSTEM ARCHITECTURE

DATA OBTAINED
While collecting data, the conductor holds the phone facing upwards like a baton. Then, the conductor conducts 10 measures with a metronome playing in the background. We used a sampling rate of 10hz, however that value can be customized in our program.
We found that we only need to use the acceleration data in the x and z directions because y movement is minimal. We assumed that we would need to use the eigenvector analysis to classify time signatures, but that prediction was incorrect.
We obtained acceleration data in the x,y and z directions while conducting using the MATLAB phone app. For each data set, we assigned the intended time signature and tempo. We tested the same time signature and tempo several times to make sure there weren't any flukes. We then proceeded to test different time signatures and tempos.
Conducting in 4/4
DATA ANALYSIS
data formation
In order to more easily interpret and analyze the motion data, we first use the fast fourier transform to convert the data to the frequency domain. We noticed that each time signature would have a different number of frequency peaks and different frequency values.
data filtration
We isolated the meaningful data, getting rid of excess data and noise. We first wanted to remove the negative frequencies because they are the same magnitude as the positive frequencies. We did this by finding the largest peak near 0 Hz and removing all data points with a frequency under that value. We used the sort function in MATLAB to sort the frequencies by their amplitude. Then we eliminated all frequencies greater than that of the highest non-zero peak. This left us with all the relevant frequencies necessary for time signature and tempo calculations.
tempo calculation
In order to calculate the tempo we look at the frequency related to the highest nonzero peak. By multiplying this frequency by 60 we get the tempo in beats per minute. This makes sense, because the frequency is measured in Hz, which is equivalent to 1/seconds. In order to get beats per minute we simply multiply the beats per second frequency by 60 seconds.

time signature
To find the time signature we can look at the cleaned frequency domain data. Since each time signature motion is different, each has its own unique frequency domain graph, with peaks in magnitude corresponding with the number of beats per measure. The peaks are evenly distributed in the cleaned data. In order to determine the time signature we check for peaks at predetermined intervals. It is considered a peak if the magnitude of the specified frequency is over some threshold value. We used a threshold value of 0.3. We first checked if the frequency 3/4 of the way through our cleaned data was a peak, if so we could safely assume the time signature of the data to be 4/4. For 6/8 time we checked for a peak at 5/6 of the way through the cleaned data. We checked 2/3 of the way through for 3/4 time, and 1/2 way through for 2/4 time. If none of the frequencies we checked are peaks, we assumed the time signature had not been implemented in our program.
DATA &
RESULTS
Conducting in 2/4 Time



Conducting in 3/4 Time



Conducting in 4/4 Time



Conducting in 6/8 Time



DISCUSSION
From the graphs, it is noticeable that the frequency data is very clean. This allowed us to analyze the data without a lot of filtering. The reason this may be the case is that the motion is repeatable with very strong frequencies. Music relies heavily on steady beats and these steady beats help make data analyses into neat patterns.
​
We were correct in assuming that we didn't need to use the y acceleration. However, we were incorrect in assuming we would need to use eigenvalues to compare data. We are actually able to analyze the data without comparing new data with base data sets. We can simply use a Fourier transform and analysis of the patterns within each time signature. We believe this makes our model more robust since it does not rely on the quality of base data.