Blog Posts

Teensy Polyphonic Synth

Otemrellik made a nifty polyphonic synthesizer with a custom 3D printed case.

This portable, compact, synth includes a portable speaker and can run off 2 AA batteries or use USB for power.  It features 8 note polyphony with each note having 2 voices.  This little synth is packed with features.   Oh, and the LEDs on the buttons respond to the speed and shape of the low frequency oscillator (LFO)

Code for the project can be found on GitHub

Plans for the 3D printed case can be found on Thingverse

Burning Man Art – Ethereal Fleeting

Lukas Truniger, Itamar Bergfreund and Bruce Yoder along with a team of artists and makers created Etheral Fleeting, a beautiful art installation at Burning Man this year.

This beautiful installation generates a series of clouds that are held in place by a machine-like sculpture, lit up with different colors, then released into the desert at the whim of the winds.

 

The code and lighting team included Sophi Kravitz, Adelle Lin, and Matt Pinner.  Each of the 4 towers had 6 strips of addressable LEDs, controlled by 2 Teensy 3.2s with Octo boards.  They also used the Megapixel Contoller board (featured on our blog back in August).  Cat5 cable connected everything to a central computer (Intel Nuc) and communicated using art-net.

Code for the project can be found on GitHub.

DIY DSP audio filter for Radio Hams

Forum user gi1mic has released a DIY DSP audio project for radio hams.  It takes advantage of the processing power of the Teensy and implements finite impulse response (FIR) filters that are configurable in software and default to an impressive 200 taps.

For this project a Teensy 3.2 was added to a Yaesu FT-817 transceiver and is powered from the FT817.

Some of the other features include:

  • Act as multiple DSP filters based on hi pass, lo pass, band pass or band stop (filter points can be defined in Hz within the code)
  • It uses voice messages to describe which filter has been selected
  • It is a USB to CAT interface
  • It emulates a USB sound card for receiving rig audio on a computer
  • Performs Morse to voice decode and Morse to USB serial decode
  • It can speak the radio config to assist the visually impaired (FT817 only)

More details about the project as well as the open source code can be found here.

LED Sync’d with MIDI Player Tutorial

Forum user NewLinuxFan designed an LED strip that is synced with MIDI song files.

The strip takes MIDI notes and translates them to assigned colors – C = Red, C#/Db = red-orange, D – orange, D#/Eb = yellow, etc.  The project uses an APA102 LED strip, however the code can be adapted to use other types of LED strips such as the ever popular neopixels (WS2811/WS2812/WS2812B).

There is a great tutorial with code provided on the Lights4Music website.

 

 

 

LED Display with Irregular LED Spacing

Bill Tubbs wrote software to map an image onto LEDs at irregular spacing.

This software solves the often heard question of how to deal with LEDs that are not perfectly aligned to a rectangular grid.  This software solves that problem.  In this project 2 Teensy 3.2s, controlled by a Raspberry Pi, are connected to and controlling strips WS 2811 LEDs.

Code of the project can be found in these GitHub repositories – Irregular LED Display Project and Display 1593.

Persistence of Vision with Teensy 3.2

Greg Valvo made a persistence of vision (POV) project using a inexpensive box fan and 36 DotStar LEDs (APA102).

Greg wrote the library for the POV display using Teensy 3.2 board and Adafuit DotStar LEDs (APA102).  The library is configured to support up to 48 LEDs in the string and up to 512 angular positions (~0.7 degree resolution).

Code and schematics for the project can be found on GitHub.

 

 

 

Pinball Tribute to “A Place to Bury Strangers” Band

The Death By Audio Arcade group took a vintage, non-functioning pinball table and turned it into a working game in tribute to the band A Place to Bury Strangers.

This impressive table features  a small video screen that plays video of the band, blacklights, a glow-in-the-dark ball, and a VFD score display. There’s even a fog machine and brightly flashing strobe lights to truly show off the table’s rock and roll lifestyle.

The build required extensive retrofitting – gutting most of the mechanical relays, replacing the coils and other parts, and designing new PCBs to add microcontrollers.  They ended up using 4 controllers – 2 Teensys and 2 Arduino boards, as well as a Raspberry Pi.

The Death by Audio Arcade blog has a great write up of the project.

 

 

DIY USB MIDI Controller

Liam Lacey made a DIY MIDI controller that looks to be a really good introductory project for those wanting to get started building their own controller.

The controller features 8 arcade style push buttons and a switch to toggle between sending note or CC messages.  While it may seem limited in capability, it serves as a good introduction to MIDI controllers.

Liam’s tutorial gives a good description of the build process and only requires soldering to connect wires to the push buttons and switch.  Connections to the Teensy can be made using a breadboard or a strip board if you’re up for more soldering.

Any MIDI software can be used.  In the demo video Liam uses Abelton Live and the Sugar Bytes Turnado plugin.

 

 

 

TréPhonos

Matthew Fries, Jeanette Degollado, and Julian Luna created TréPhonos – payphones that have been turned into sculptures that play snippets of spoken history, music, and ambient field recordings captured at significant locations in the neighborhood.

This incredible project was done with Project Row Houses, a Houston arts organization.  Each of the TréPhonos uses a Teensy 3.6, an Audio Adapter Board, and a 20W audio amplifier. They run on solar power and  have custom 3D printed parts for the Teensy and other components to mount to the interior of the payphones. Whenever you pick up the handset the phone begins playing instructions. Whenever you press one of the buttons #1-9 the phones will play either a song, story, or sound form the neighborhood Third Ward where they are installed. When you hold * whatever you say is recorded into the handset and can be played back by pressing 0. # plays information about the project. The Change Return slot conceals an Easter Egg switch.

Teensyduino 1.44 Released

Teensyduino version 1.44 has been released.

The 1.44 installers are available at the downloads page.

Arduino 1.8.7 Support

Only a few weeks after 1.8.6, Arduino released 1.8.7.  With a new Arduino comes a new Teensyduino release to support it.

Arduino 1.8.7 fixes several rare but serious bugs, including issues with the IDE being able to start up.  1.8.7 adds no new features, so there’s no need to upgrade from 1.8.6, unless you’ve encountered issues.

Wavetable Synthesis

A little over 1 year ago, a group of students at Portland State University (Ryan Mellmer, Nicholas Craig, Joshua Bucklin, Aida Keifer, Jonathan Jensen, Yu Tang, Connor Delaplane) completed their capstone project to perform wavetable sound synthesis, for playing of musical notes from sound samples.  PJRC provided hardware and Paul “sponsored” the group.  Dr. Bart Massey advised.

The complete code was published on github.  Now with 1.44, this project has been integrated into the Audio library.  It’s now available in the design tool, and the examples can be accessed in Arduino by clicking File > Examples > Audio > Synthesis > Wavetable.

Wavetable data is stored in Teensy’s internal flash memory.  To create the data, Ryan’s team create a Python utility to import and convert Soundfont format files.

A version of their SoundfontDecoder updated for the Audio library is also available on github.

Faster Ports Menu

Teensyduino 1.42 greatly improved how Teensy is shown in Arduino’s Tools > Ports menu.  But under some circumstances on Macintosh and Windows, a noticeable lag could occur when clicking the Tools menu.  1.44 eliminates this interactive delay, so the Tools menu responds quickly.

The Teensy specific Ports menu is implemented by a native helper program called “teensy_ports”, which Arduino automatically runs at startup.  Because this is a native program, it can gain detailed info about USB devices which isn’t available to Java code in the Arduino IDE.  In 1.42 & 1.43, when you clicked the Ports menu, a query was sent to this program.  When it responded, the info would be put into the Ports menu.  But if anything caused a delay in the response, you would see that delay in the appearance of the Tools menu.

Version 1.44 changes teensy_ports to always send USB device changes as they occur.  A dedicated Java thread listens for the incoming USB info and keeps a list of devices in the IDE updated.  When you click the Tools menu, rather than requiring communication back-and-forth, the list already in the IDE’s memory is copied for use by the menu.

This improvement was partially motivated by a conversation with the Arduino developers.  They intend to eventually allow boards like Teensy to provide their own port “discovery” tools, using a JSON-based format.  This is one of the major missing features which requires Teensy to have a special installer, rather than using Arduino’s Boards Manager.

Another benefit of switching to the JSON format, which allows communicating all info Arduino uses, is the Tools > Get board Info menu now works with Teensy.

The multithreaded JSON-based Ports menu was developed on 1.8.6 and ported to 1.8.7 and back-ported to 1.8.5, so you get this speedup on any of those versions.

Linux 64 bit ARM (AARCH64)

Arduino 1.8.7 is the first non-beta Arduino release which supports Linux on 64 bit ARM, also known as “AARCH64”.  Jetson TX1, Jetson TX2 and Odroid C2 are the main platforms needing AARCH64 support today.

However, Arduino’s downloads page still has ARM64 only on the hourly build and beta build sections.  The Arduino 1.8.7 ARM64 file is actually on their server and can be accessed by copying the link to the ARM32 version, and replace “arm” with “aarch64”.

The final hold-up is due to Oracle’s Java runtime environment (JRE) for 64 bit ARM.  It is “headless”, meaning it only supports command line programs.  Unlike the other Linux copies, there is no “java” folder with the correct Java runtime.  As a result, the IDE will use whatever Java runtime exists on your Linux system, which may or may not be compatible.

Here is a copy of Arduino 1.8.7 with a compatible copy of OpenJDK added in the “java” folder.  Other this this addition, it is identical to the Arduino 1.8.7 file on Arduino’s server.

https://www.pjrc.com/teensy/td_144/arduino-1.8.7-linuxaarch64.tar.xz

Just extract this file, then download and run the Teensyduino 1.44 installer.  Like all Linux systems, Teensy’s udev rule file must be installed to access the USB device files.

The default kernel that ships with Jetson lacks the cdc_acm driver needed for USB serial communication.  You can still use Teensy without this this driver, because Teensy Loader uses HID protocol, and the new Ports menu is able to natively detect USB devices even when their drivers don’t load.  But to use the serial monitor with a Teensy programmed to be USB serial, you will need to install the cdc_acm driver.  If following those instructions, you may need to type “./installCDCACM.sh” to run the script, rather than “./installCDCACMModule.sh” as the instructions say.

Obviously AARCH64 support is very new.  If you encounter issues, please report them on the forum.