Recently I put some work into efficiently generating sine wave data intended for testing 24 bit audio hardware. Here's a quick message about this new work, in case anyone's interested....
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:
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....
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....
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!
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).
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.
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 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...
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:
Click "Read more" for details on these 3 steps.