paul's blog

Audio Workshop at Hackaday Supercon

The audio workshop at Hackaday's Supercon was a huge success.

The FFT part was used by "most over the top" badge hacking winner!

Here's a walkthrough of the workshop:

Sturdy Pots on Breadboards

Often I throw together a quick demo for the bi-weekly DorkbotPDX meetup, usually involving one or more pots to adjust parameters.  Finally, I've come up with a pretty good way to put pots on solderless breadboards.

Click "Read more" for details and the shared PCB....

Teensy Audio Library Gets S/PDIF Support

Thanks to the amazing effort of Frank Boesing, the Teensy Audio Library now has native S/PDIF output.

Using a $1 TOSLINK connector, or just a red LED, you can get optical S/PDIF digital audio output.

Optical output is useful for projects where Teensy connects to grounded equipment.  There are lots of ways to simply play sounds, but the Teensy Audio Library gives you Arduino-sketch controlled synthesis, mixing, effects & filters, analysis and much more.  Sketch controlled sound is most useful when you connect more hardware to Teensy & use other Arduino libraries for inputs.  But often that other hardware comes with ground connections that cause audio-corrupting ground loop problems with analog audio, like the DAC pin or the audio shield.  Optical S/PDIF give you perfect digital audio output for those projects!

Click "Read more" for much more detail about the S/PDIF development....

Ten Watt RGB LEDs

Spent a good portion of the weekend fiddling with insanely bright 10 watt RGB LEDs.

Trying to make very low-cost DMX protocol control, of course for a Burning Man project that's planning to use 150 of them!

Control Voltage (CV) to Analog Input Pin

Often I've been asked how to get synth control voltage (CV) into an analog input pin.  Teensy 3.1 has 13 bits effective analog resolution, good enough for many CV applications, but the stable internal reference is only 1.2V with analogReference(INTERNAL).

This simple circuit converts the -5V to +5V CV signal range to the 0 to 1.2V ADC input range.

Edit: here's a discussion about this circuit's details and limitations (fancy opamp-based circuits can be better).

VS1053 Troubleshooting

Last night, I looked into why Adafruit's VS1053 only works with Teensy 3.1 at 24 MHz, but not 48, 72 or 96 MHz.

Turns out, the library depends SD.begin() to reconfiguring SPI.  It also runs data transfer code from both main program & interrupt context (causing havoc if the interrupt occurs at the wrong moment).  Pretty amazing it's worked on AVR for so long, but apparently it does crash sometimes.  Faster processors increase the opportunity for the problem to strike.

Hopefully my edits from last night will fix these problems for good.

Improving Arduino's Serial Monitor Performance

Today I worked on the toughest Arduino bug... keeping the serial monitor from locking up or crashing with maximum speed printing from Teensy 3.1 and Arduino Due.

Here's Technical details and mini rant about Java performance.  Hopefully this (and other good work) will lead to future Arduino versions with a serial monitor that doesn't suck.

Six Years of USB Development

Six years ago, in early Deceber 2008, I left the simple world of serial-based development behind and went native USB, releasing Teensy 1.0.  So much has happened and I've learned a lot in just 6 years.  I used to do everything by 9 pin RS-232 serial ports.  Those days seem so distant.

I'm now working on new and really awesome USB features for 2015...

Better SPI Bus Design in 3 Steps

Most Arduino SPI tutorials show this simple but poor SPI bus design:

A much better SPI bus design can prevent conflicts.  3 simple improvements are needed:

  1. Use pullup resistors on all chip select signals.

  2. Verify tri-state behavior on MISO: use a tri-state buffer chip if necessary.

  3. Protect bus access with SPI.beginTransaction(settings) and SPI.endTransaction().

Click "Read more" for details on these 3 steps.

Making nRF8001 (Bluetooth LE) and SD cards play nice together

Been working on making Adafruit_nRF8001 and the SD library work together.  Details are on this forum thread, and also this one.

Syndicate content