Future Improvements and Lessons Learned

Mechanical

One problem with the fixturing is the inconvenience of adjusting the slides to move the motor to the next peg. To do this, the user must loosen a series of screws, slide the motor into position and re-tighten the screws. Using some type of fastener that does not require a tool to loosen or tighten, such as a wing bolt or a bolt with a cam or a handle on it would help decrease this hassle. Another inconvenience is the size of the slide, and the fact that you cannot hold the guitar while you tune it. A handheld drill-like version could alleviate these problems, but brings up questions of variability and accuracy which would then have to be resolved.

Electrical

The frequency calculation circuit was highly successful in calculating the frequency of the function generator, where the input a frequency of a wave could be controlled and compared the output of the circuit to the input frequency. The circuit was moderately successful in calculating the frequency of the resonating string of the instrument. Problems due to fluctuation of the strings frequency, especially the moment after the string was plucked were difficult to remedy (attempted to place a pause in the code before calculating frequency, but could not fix it with hardware). Other problems that were faced include, ambient noise, the lack of frequency range the tuner could operate in, and the resolution the frequency calculation possessed. A problem that was not thought of was the ambient noise level and how it affects the tuner. Normally this would not be a problem, since instrument pickups operate on a magnetic principle, outlined in the proposal. This project used an acoustic bass, which uses a microphone to pick-up the resonating string frequency. When used in a loud room the tuner would not keep a stable frequency due to the increased ambient noise. Another problem is credited to the timer/counter chip. It does not have a carryover; so only 255 counts can be used. This reduces the range of frequencies the tuner can operate in, meaning we could only tune a bass or a standard guitar, but not both without changing the circuitry. Overall the tuner did successfully tune the bass. Looking back at the design of the frequency circuit, a better way to obtain a more dynamic range of frequencies and more stable output would be to use a separate micro-controller to calculate the frequency. This would decrease the amount of IC chips needed, and give the programmer more control over the entire system.

Software

The code of the software was designed to be very simplistic. Our code uses polling so we did not want calculations and code bogging down the microprocessor. Also, a simple implmentation would be quicker and easier. However, we also had to give up some of the features we initially wanted. We cut down the number of notes the tuner could tune and recognize to exactly match standard 4-string bass tuning. This limited what we could display and tune. We also eliminated planned "safety" features to make sure a string couldn't be too far out of tune or to make sure the right string was plucked because these proved too complex at the time. We considered doing the note identification processing with math, but this was possible too slow. However, using math would make the code shorter, more elegant, and more adaptable. These lost features would have made the tuner more user friendly and adaptable.

We also could have used software to address some of our problem areas. Motor control could have been more precise by adding variable speeds. Also, under automatic tuning if the right frequency is found everything stops. A few extra checks after finding an "in tune" note would reduce premature stoppage. Checks for lack of signal or aberrant signals would also make the tuner more stable. Input frequency fluctuations could be filtered out using an algorithm to check the amount/speed of variation between consecutive frequency readings. Currently, the motor driving and frequency matching codes are indepedent. Synchronizing them would improve consistency and make the display more reliable. Using interrupts for certain parts of the code, like detecting an in tune note, may be a way to make the tuning more precise. Finally, the code could have been made shorter and possibly more efficient by breaking down the tasks into more subroutines. Many of these improvements would probably require different equipment though.