Tuesday, October 26, 2010

What happens if I only get the positive part of the signal?

I bought a Microphone and Amplifier eletronic brick, which came with the LM386 AmpOp.
The problem was that the Vin (pin 2) of this IC was grounded, thus the output renders only the positive part of the signal.
Instead of this:
I had then 2 solutions:

1. Either I could modify the hardware to input into the Vin a Vcc/2 voltage.
2. Or I could deal with the distortion via software.

To see if I could restore the signal I analysed its spectrum of the distorted signal:



And I had to restore it to look like this:

For such a simple signal a simple low pass filter would do. But I realized that it would be impossible for more complex signals.

Here is the Matlab/Octave code that I used to generate the plots above:

Fs = 44100;
time = linspace(0, 1, Fs + 1);

sine = sin(2 * pi * 440 * time);
plot(time, sine);
figure;
player = audioplayer(sine, 44100);
play(player);

positiveOnly = (sine + abs(sine)) / 2;
plot(time, positiveOnly);
figure;
player = audioplayer(positiveOnly, Fs);
play(player);

sineSpectre = fft(sine);
plot(time, sineSpectre);
figure;

positiveOnlySpectre = fft(positiveOnly);
plot(time, positiveOnlySpectre);

No comments:

Post a Comment