Digital Tuner

Preview:

Citation preview

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

Recommended