digital tuner
TRANSCRIPT
EE 113D Fall 2008Patrick Lundquist
Ryan Wong
http://weep.wikidot.com/
The notes in the music are distinguished by their frequency
The note of 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 2
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.
EE 113D Fall 2008 3
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
C – 8th octave
C – 6th octave
Our output signal varies exponentiallywith the input signal’s relative distancefrom the tuning frequency.
EE 113D Fall 2008 4
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 5
Human vocal range: 80-1100 Hz Piano note frequency range: 27.5 – 4186 Hz Human hearing 20 Hz – 20 KHz
EE 113D Fall 2008 6
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 7
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 signal
where F is the sampling frequency, A is the index locationB is the total number of indices
EE 113D Fall 2008 8
EE 113D Fall 2008 9
Simulation: generated a sine wave
Testing: generated sine wave from function generator
Real Life: microphone signal input
EE 113D Fall 2008 10
Simulation: generated a sine wave
Testing: sample.asm from lab
EE 113D Fall 2008 11
Simulation: FFT function in matlab
Testing: RFFT.asm files from experiment 5. Uses a Radix-2, DIT
EE 113D Fall 2008 12
Simulation: Loop through array find max frequency
Testing: getfreq.asm file uses finds max frequency index and converts it
EE 113D Fall 2008 13
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 14
Simulation: Compare to tuning key and output ratio
Testing: thold.asm implements lookup table for comparison and lookup table for resultEE 113D Fall 2008 15
Simulation: Scaling max frequency to known scale: ~16khz
Testing: thold.asm file
EE 113D Fall 2008 16
Sampled signalEE 113D Fall 2008 17
RFFT graphed outputEE 113D Fall 2008 18
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 19
Tune to multiple notes Tune to a wider input frequency Record matches to memory or output file Convert output to sheet music Play sheet music
EE 113D Fall 2008 20
Questions?
EE 113D Fall 2008 21