220 likes | 378 Views
Digital Tuner. EE 113D Fall 2008 Patrick Lundquist Ryan Wong http://weep.wikidot.com/. Background. The notes in the music are distinguished by their frequency The note in each octave is twice the frequency of the same note in the previous octave.
E N D
Digital Tuner EE 113D Fall 2008 Patrick Lundquist Ryan Wong http://weep.wikidot.com/
Background • The notes in the music are distinguished by their frequency • The note in each octave is twice the frequency of the same note in the previous octave. • Ex: C = 32.7 Hz, 65.4 Hz, 130.8 Hz, 261.6 Hz, 523.2 Hz … etc. EE 113D Fall 2008
Background • The frequencies of the C notes are actually 32.7 Hz, 65.4 Hz, 130.8 Hz, 261.6 Hz… etc. • But we use C = 2x Hz, where X = 5, 6, 7, 8, 9… for the sake of simplicity. C = 32 Hz, 64 Hz, 128 Hz, 256 Hz, etc. EE 113D Fall 2008
Background • A tuner can be aplied to anything that can be measured on a specturm analyzer • Ex: instruments, function generator, human voice. • We can start testing our finished product with a function generator and then move onto the more complicated human voice. EE 113D Fall 2008
Background • Human vocal range: 80-1100 Hz • Piano note frequency range: 27.5 – 4186 Hz • Human hearing 20 Hz – 20 KHz EE 113D Fall 2008
The Tuner • We are going to start with the simplest case • Tuning to C (32 Hz, 64 Hz… etc.) • We wish to output high if the input is very close to a C in frequency • Output will be low if input is anything else. • The sampling frequency of the tuner will be 8000 Hz. • We chose this frequency because it is twice the maximum frequency of most instruments. EE 113D Fall 2008
C – 8th octave Output signal magnitude generation is exponential: |2x -2x+a|, -0.5<a<0.5 Since notes are base 2 logarithmic, not linear C – 7th octave Our output signal varies exponentially with the input signal’s relative distance from the tuning frequency. C – 6th octave EE 113D Fall 2008
How it works • Since we are dealing with frequencies, we know a Fourier Transform will be involved. • The rest is just manipulation to get the correct output from various inputs • The result of the Fourier Transform is a delta function at a memory index. • We calculate frequency based on this index:A/B x F = frequency of signalwhere F is the sampling frequency, A is the index location B is the total number of indices EE 113D Fall 2008
Block Diagram EE 113D Fall 2008
Block Diagram Simulation: generated a sine wave Testing: generated sine wave from function generator Real Life: microphone signal input EE 113D Fall 2008
Block Diagram Simulation: generated a sine wave Testing: sample.asm from lab EE 113D Fall 2008
Block Diagram Simulation: FFT function in matlab Testing: RFFT.asm files from experiment 5. Uses a Radix-2, DIT EE 113D Fall 2008
Block Diagram • We calculate frequency based on this index:A/B x F = frequency of signalwhere F is the sampling frequency, A is the index location B is the total number of indices Simulation: Loop through array find max frequency Testing: getfreq.asm file uses finds max frequency index and converts it EE 113D Fall 2008
Block Diagram Simulation: Scaling max frequency to known scale: ~16khz Testing: thold.asm file performs a series of bitwise shifts to scale to reference freq. EE 113D Fall 2008
Block Diagram Simulation: Scaling max frequency to known scale: ~16khz Testing: thold.asm file performs a series of bitwise shifts to scale to reference freq. EE 113D Fall 2008
Block Diagram Simulation: Compare to tuning key and output ratio Testing: thold.asm implements lookup table for comparison and lookup table for result EE 113D Fall 2008
Lookup Table • Lookup .word 11585, 11994, 12417, 12855 .word 13308, 13777, 14263, 14766 .word 15287, 15826, 16384, 16962 … • Magnup .word 16, 32, 64, 128 .word 256, 512, 1024, 2048 .word 4096, 8192, 16384, 8192 … Simulation: Compare to tuning key and output ratio Testing: thold.asm implements lookup table for comparison and lookup table for result EE 113D Fall 2008
Block Diagram Simulation: Scaling max frequency to known scale: ~16khz Testing: thold.asm file EE 113D Fall 2008
Shortcomings • Integrate all modules into one continuous program. • Need to add calling and linking of each module. • Timing issues and assembly syntax problems • Also, nops and @ operator provided initial trouble. • Optimizing program to run in real time. • FFT is a time expensive process that reduces the potential for real time tuning. • Difficult to determine when FFT is finished running. EE 113D Fall 2008
Shortcomings • FFT algorithm does not work with a voice input from microphone. • Further testing required. EE 113D Fall 2008
Extend • Tune to multiple notes • Determine what note is being played • Convert output to sheet music • Play sheet music EE 113D Fall 2008
The End. • Questions? EE 113D Fall 2008