Currently we are working on a bass guitar trainer project, just want to ask what should we use as a string sensor? We've done some research and found a possible sensor is the piezo film element but there isn't any store that it selling it here in our country.
Any suggestions would be greatly appreciated thanks!
Using arduino mega.
What exactly do you want to sense? The string vibration or how a string is held down.
We've done some research and found a possible sensor is the piezo film element
How would that work then?
Normally they use magnetic coil pickups in an electric bass as the strings are wire wound.
Whenever the string is held down or plucked/strummed by the user.
Arduino with Piezo Film vibration sensor - YouTube here is a video on the net..
Are you talking about something similar to this???
Those are use in the making of guitar pickups. You then use some differential and integral calculus of the output of the sensor and you got it...
Hmm, a piezo sensor needs to be mounted to something and the bass string has to touch it to make something change (which impacts the ability of the bass string to vibrate, and thus its sound) and eventually show up as an electrical signal that you would amplify/filter into something the Arduino could manipulate (ADC or similar).
So why not use guitar's pickups and get the signal more directly to start?
@johnyboy um nope,
kinda got struck on the use of the bass guitar's pickup. If that is the case then, we have to sample each signal produced per string right? We are unsure if we can use the produced signal since haven't got the right resources for that and is arduino capable of handling FFT ?
slashing the FFT part (cause I know it will be hard to program ), how can we use the guitar's pickup directly? and distinguish the string that was strummed?
...how can we use the guitar's pickup directly? and distinguish the string that was strummed?
That's what FFT is for. You have to analyze the sound and pick-out the note. If you look for "audio to MIDI" software, you should be able to find an application that can do that. I believe it works fairly well with a single-note, but not as well with chords or multiple instruments.
But there might be an easier way... If you measure the time between zero-crossings (where the AC signal goes from positive to negative or vice-versa) you should be able to get the fundemental frequency and determine the note (or the nearest note). This might be how tuners work, but I'm not sure...
Because of the harmonics & overtones, you might have to take several readings, take an average, throw-out the readings that are far from the average and re-calculate the average. Or, maybe just throw-out the higher-frequencies (shorter-times) that seem to be overtones.
uhh FFT ( horrible signal processing days) hmm do you have by chance a sample wiring diagram or a code for that?
Suddenly I feel that our project turned out to be more complex than as we thought. There isn't any other way to detect the string that was plucked right? =(
If you rewire the pickup into separate coils you get a separate signal for each string.
That Piezo sensor is never going to work for what you want.
Okay now I need to find a tut or a resource regarding signal sampling in arduino. Thanks again for all the suggestions