Weekly Status Report #11: 12/1

Kevin

Done this week

This week, I implemented and tested the beamforming algorithm described last week in Matlab.  After finishing the matlab code, I was able to run preliminary tests to approximately see what signal attenuation we got.  With one noise signal, we were able to achieve approximately 30 dB attenuation.  I also worked with Bobbie on translating it to C.

Goals for next week

  • Finish translation to C
  • Test C-code on pre-recorded microphone inputs (until we get real-time microphone input working)
  • Help finish wearable microphone array setup
  • Play around with # of filter taps and array
  • Create poster for demonstration

Bobbie

Done this week

This week I have put our old mic input problems to rest and now have new and exciting mic input problems.

I found that some of the input selection functions actually returned status codes; we were getting I2C write errors (status code 4: other unknown error). In a long story short, after much de- and re-soldering and purchasing a new Teensy in case our first one had some flaw, I resolved the I2C error, but mic input still did not work.

This entire search for audio input in the last few weeks came to an abrupt halt when I read all the Teensy documentation I could find and realized that the audio jack we were trying to use on the audio shield was never meant to take input (only headphone-level output).

On this realization I bought a few breakout boards for splitting out audio jack line-in into individual pins. While I did not get the lapel mic to work, using the boards and the line-in holes on the audio shield I was able to use my computer as an audio source to send audio to the Teensy.

The resulting output audio had interesting properties: it worked perfectly on a pure sine wave besides being inaudible for all but the few highest ticks of my computer’s output volume; for speech, microphone loopback, and music it was completely inaudible; and for sine wave + other audio, it produced a recognizable sine wave with added unrecognizable distortion from the other audio.

This suggested to me that the voltage ranges that the Teensy was looking for were not correct for the mic-level input. Line-out at headphone level is a far higher voltage range than line-in at mic level. However, when I tried to adjust the audio chip to a smaller voltage range using sgtl_5000.lineInLevel(N), this produced the same results.

To summarize the current mic issues:

  • Pure sine wave playable via computer line-out with high volume settings
    • I interpret that the audio shield ADC is looking in the wrong voltage range
  • But can’t play speech or music at the same volume settings
    • Which is just strange. I didn’t measure the voltages at line-out generated by the speech/music, but I would expect them to be similar.
  • When playing sine wave + music, get sine wave + distorted when the music plays
    • I interpret that the (base?) voltage needs to be high, yet the range around that voltage is actually very low.

I have not resolved the input issues yet and if I don’t in the next few days, I will probably pivot to working on code for moving 4-channel audio on and off the board via USB or SD card, to run the signal processing there and output the result via the (working) headphone jack.

I also worked with Kevin on translating his Matlab code to C.

Goals for next week

  • Get everything working

Sean

Done this week

I spent a significant amount of time, along with Bobbie, trying to get four-channel audio through the board using the audio shields. Bobbie discovered that the Shields weren’t meant to take input through the audio jack,

This week I hooked up mobile power using a battery to the Teensy. I did this by connecting a lithium ion battery to an Adafruit micro-USB charging port, then connecting the charging port to the external power pins on the Teensy.

Goals for next week

  • Get everything working

 

Leave a Reply

Your email address will not be published. Required fields are marked *