and I was pretty disappointed to find out that the recordings made with it are more noise than anything. After many attempts and lots of searching I was able to reduce the noise to some background "wubbage" as they call it. I can hear what I say in the recordings but the wubs are still clearly audible. It seems to be related to the writing process of the SD card reader, I use an external one because that was the trick (found it in another forum) to get the noise down to the wubs. The higher the audio quality the more wubs and the SD LED indicates that the wubs occur whenever the SD module writes.
I understand the whole issue has to do with PSRR. So I was wondering if there was some sort of filter module to reduce or even cancel the wubs? maybe there's also a clever way of wiring & soldering? Or maybe someone knows an affordable (around 10 bucks) shield that deals much better with recordings than this one which is absolute crap.
I was able to reduce the noise to some background "wubbage" as they call it.
I've never heard of that and Google doesn't help...
I understand the whole issue has to do with PSRR
What are you using for a power supply? Power supply noise is usually power line hum (from an "analog" power supply) or whine form a switching supply or from a computer's USB port. USB power from a computer is notoriously noisy but it's usually only a problem with low-level microphone signals.
Noise is usually constant and most noticeable with quiet signals or with "silence" and it's usually drown-out by louder signals. Distortion only exists when there is a signal and the most common type of distortion (clipping) happens with "loud" sounds.
Are you you directly driving speakers? The VS1053 is capable of driving headphones (down to 30 Ohms) but speakers require an amplifier (or you can use regular-amplified computer speakers.)
you mean "wubbage"? that was on the Adafruit forum, don't remember the link, can look it up if you need it.
with noise I meant the more colloquial meaning. In fact it was an almost endless line of hums in the beginning. Only when I blew directly into the microphone or shouted you could make out something beyond the hums. With the external SD reader it was reduced to about 1 hum every few seconds or so and I can hear my voice clearly.
As a power supply I've tried several: laptop USB (hub), external power supply (plug), batteries. I observed no obvious difference, the humming occurs with each of them. Btw, I remember having had a couple of camcorder models that would show SD reader "noise" in the recordings as well.
The speakers are okay, they are the same ones I use with my laptop. The humming is also clearly visible in the diagrams (with Audacity)
I didn't realize there was a microphone involved... I assumed you were playing pre-recorded MP3s.
I can't help with that... I don't know anything about that chip except I took a quick look at the specs.
Microphones put out millivolt signals and preamps have gain in the range of 100 - 1000 and that makes them "noise sensitive" (because any noise gets amplified a lot).
Electret condenser mics need power which "computer mics" get from the soundcard. The odds are, that board is designed to work with a computer microphone but I'm not sure.
Stage & studio microphones use a balanced connection and they do not interface properly with a laptop or soundcard and I assume your board is not designed for those either. Studio condenser mics need 48V "phantom power" so that kind of mic isn't going to work with your board (and you probably don't have a studio mic.)
the mp3 playback is ok, at least I didn't notice any noise/ hums/ wubs. The shield has a built-in mic (see ali link in my #1 post) and a line-in for external mics. I only have a couple of small external mics but the line-in recordings are much worse than the ones I make with the built-in mic. Originally I had hoped that it would be possible to use the KY-037 microphone with the VS1053 because I had seen a guy here:
Build a spy device. When the sound reaches a specific threshold, the device starts storing the sound automatically. (You can use modules such as VS1053 to store audio.)
may be it is possible but elsewhere they said the KY-037 was nothing but a sound sensor - not an actual real mic.
Since the recording quality increased quite a bit when I used an external SD reader I was hoping that the cause for that (which I don't know) could be further built upon to further enhance recording quality. But so far, everything I've tried (I even tried to power the SD reader separately with another plug power supply) didn't yield any improvement.
from what I've read in the last couple of days I think it's a digital / analog lines interference problem and that people apply all sorts of electronic tricks and configurations to reduce the interference. But without a guiding hand / manual how to I won't succeed with that I guess.
Also, I have seen that the very same shield has caused many other people the same kinds of trouble and nobody seems to have an answer. Maybe because there is none, maybe it's just impossible to use the shield for proper recordings.
I have an idea - though I'm not sure if it's a wise one. As I noticed that the hums/ wubs occur whenever data is written to the SD card, I wonder if it is not the writing process itself but actually the flickering of the LED that indicates SD card activity. So.. if I remove it, would that perhaps be the solution to the problem? And if I remove it will there be any damage to the shield (besides the damage that could be caused by damaging the shield physically in the process of removing the LED).
may be it is possible but elsewhere they said the KY-037 was nothing but a sound sensor - not an actual real mic.
That is true all you get is a DC level based on the peak amplitude of the sound if you use the Do output. But if you use the Ao output you get the microphone output.
It is likely that your problem is caused by lack of decoupling in the components power supply wiring, or the messy layout of your circuit.
Removing the LEDs would not cause any damage.
Grumpy_Mike:
That is true all you get is a DC level based on the peak amplitude of the sound if you use the Do output. But if you use the Ao output you get the microphone output.
I had already connected it to the A0 as in the schematics on that site. Only question would be how to get the audio from there to the SD card because I have no idea how that is done. Not to mention the possiblity that this would not work any better.
It is likely that your problem is caused by lack of decoupling in the components power supply wiring, or the messy layout of your circuit.
I think the layout is ok. I have tried all sorts of configurations of wiring - with/without breadboard, wiring istead of putting the shield on the arduino etc. - always the same issue.
Removing the LEDs would not cause any damage.
sounds good. but would/ could that make the recordings also sound good, any idea?
edit: I mean, before I alter that thing (and destroy it in the process as is often the case when I try to solder/ desolder stuff) I would like to have some optimism that this might work
edit: I mean, before I alter that thing (and destroy it in the process as is often the case when I try to solder/ desolder stuff) I would like to have some optimism that this might work
no, it doesn't. just desoldered the resistor of the LED and still the same. :o
step1:
I have an idea - though I'm not sure if it's a wise one. As I noticed that the hums/ wubs occur whenever data is written to the SD card, I wonder if it is not the writing process itself but actually the flickering of the LED that indicates SD card activity.
Writing an SDcard takes surprizingly large current spikes - perhaps 100mA to 200mA - which
is going to cause substantial power rail noise if not heavily decoupled, try 470uF or so. The LED
is unlikely to be much compared to that.
MarkT:
Writing an SDcard takes surprizingly large current spikes - perhaps 100mA to 200mA - which
is going to cause substantial power rail noise if not heavily decoupled, try 470uF or so. The LED
is unlikely to be much compared to that.
where do I place the capacitor? in the plus wire leading to the SD reader?
ok, thank you I will try that as soon as I get my hands on such a capacitor (prolly have to order it first). Btw, I found your webpage (I suppose it's your's ):
De-coupling (edit: lol, you have the link in your profile, I just noticed :D)
so I've soldered a 470µF elco to the SD reader. I get the same output as without the elco. The wubs are of same kind and volume, could not make out any difference.
did I do something wrong or is it the wrong type of capicitor?
edit: I've also tried 10µF and 4.7µF - both to no avail. maybe it cannot be improved this way as there seem to be already several capacitors in-built on the module.
Yes that should cover it for position. The actual value does not matter much, normally I would also try a 0.1uF ceramic capacitor in parallel to the large one. This act to take out the higher frequencies. However, looking at that picture that board already has one in the form of C2.
I did try a similar board to yours back in 2017 from SpatkFun. The circuit they used needed mending before I could get any sound out of it. Unfortunately when it was there was so much noise from it, the board was not usable and I ended up getting an Adafruit Music maker Feather Wing board instead.
However I have never come across the term wubbage before.
as for the ceramic capacitors, I don't have those, I removed the elcos from an old VHS/DVD recorder. I think there are also several caps on the VS1053 shield near the mic. I had thought maybe I could place some there but it wouldn't make much sense if they are already there.
yes, it appears more sensible to look for another module for recordings. I'll have a look into that Feather Wing board of yours and also check for others or other versions of the VS1053 like this one:
it's interesting that they mention the noise issue explicitely there:
A note about microphone circuits:
Microphones, by their nature, are very sensitive devices. They are prone to picking up all sorts of noises (both electrical and acoustic) in addition to what you are trying to record. A microphone circuit built on a breadboard is not likely to sound good at all. For good sound, you will want to review the spec sheet recommendations and build this on a good quality circuit board.
I have made a test recording and attached it (replace .pdf with .ogg). The first 10 seconds without sound (just background noise with the wubs/ hums) and then with sound. That's as good (bad) as it gets.
edit: I may try and use one of my Intel Galileo Gen 2 boards and save the data to its 256 MB DRAM. Prolly there will be not so much noise. But that would be like using tractor for pulling a handcart
If you get the free application Audacity you can do some recording and filtering. Attached is your recording filtered with a High Pass filter from 300Hz with a roll off rate of 48 dB/ octave. Unzip it to get a wav file of it.
The interference appears to be bursts of 8 cycles of 17Hz pulses.
thanks for the hint. I'm using Audacity already and I had applied the noise reduction filter. It was almost as good as your edit. I was thinking that by removing the noise I would also remove too much of the useful information (namely words in the sentences being spoken). I don't know how much "voice" is lost below 300 Hz. Btw, how can I see at which frequency the noise is occuring. I can see where you got the 17 Hz and 8 pulses (17 Hz because 7 pulses in .4 seconds) but where is the 300 Hz visible?
edit: ah, I believe I can see where things are happening. The pulses are modulated with voice and sound in the part where I have recorded the sound. I don't understand though why 300 Hz.
the 8 cycles prolly originate from this piece of code:
uint16_t wordswaiting;
uint16_t addr;
uint16_t t;
uint16_t x;
uint16_t saveRecordedData(boolean isrecord) {
wordswaiting = musicPlayer.recordedWordsWaiting();
while (wordswaiting > 256) {
for (int x=0; x < 512/RECBUFFSIZE; x++) {
// fill the buffer!
for (addr=0; addr < RECBUFFSIZE; addr+=2) {
t = musicPlayer.recordedReadWord();
//Serial.println(t, HEX);
recording_buffer[addr] = t >> 8;
recording_buffer[addr+1] = t;
}
recording.write(recording_buffer, RECBUFFSIZE);
}
recording.flush();
wordswaiting -= 256;
}
the for loop has 4 writes (with RECBUFFSIZE = 128). So each write voltage goes up and down or so. 4x2 = 8. I guess
The voiced speech of a typical adult male will have a fundamental frequency from 85 to 180 Hz, and that of a typical adult female from 165 to 255 Hz.[2][3] Thus, the fundamental frequency of most speech falls below the bottom of the voice frequency band as defined above. However, enough of the harmonic series will be present for the missing fundamental to create the impression of hearing the fundamental tone.
thus: as long as I don't try to record baritone or bass singers there will be no major issues
ok, I'll leave it at post-processing with Audacity for the time being. Thanks again for your help!
edit: just tested, the KY-037 is unsuitable for recording, at least if you directly plug it into the analog pin of the Arduino. No issues with SD this time but lots of noise. Just for those who think about trying it.