T-DSP - Open Source Modular Audio Platform for Teensy 4.1 | DIY Audio Interface, Digital Mixer, Synthesizer

JayShoe

Well-known member
Hey everyone,

I've been working on an open-source hardware platform called T-DSP built around the Teensy 4.1, and this community has been a huge resource along the way.

Building serious desktop or rack-mounted audio gear from scratch is hard. Not the creative part - deciding what you're building, shaping the sound, the workflow, the controls. That part is fun. It's everything underneath that kills momentum: power, grounding, codec selection, USB host/device, MIDI isolation, analog/digital separation, I/O connectivity. Most existing projects are constrained by audio quality, and designing a full platform that gets all of that right is a serious undertaking. T-DSP solves for that foundation so you can stay focused on building something great. Desktop soundcards, audio interfaces, digital mixers, synthesizers, vocal processors, effects units - without reinventing the wheel every time.

The architecture is a backplane hosting a Teensy 4.1 and an ESP32 with a TDM expansion bus for chaining audio I/O modules via ribbon cable. Teensy runs the DSP via the Audio Library. ESP32 handles the UI layer (display, encoders, buttons, networked control via companion apps or web-served pages) and talks to the Teensy over serial. It also runs Bluetooth Audio A2DP (and WIFI), so wireless audio input is built in. Keeping the two MCUs separate keeps DSP latency clean and the UI responsive.

Current modules:
  • T-DSP Core - 4-layer backplane, the accessible entry point. Teensy, ESP32, MIDI, Ethernet, USB host/device, Optical, and 2 T-DSP Expansion Headers. The Core schematic is based on known working designs from previous revisions, so the foundation is solid. At the time of this post: schematic and placement are finalized, routing is still in progress.
  • T-DSP Desktop Pro - 8-layer stackup because analog and digital are integrated onto one board, requiring more aggressive isolation. At the time of this post: design is complete and ready to build - I've held off due to 8-layer fabrication costs and the current tariff situation on imports into the USA, but the files are there if anyone wants to run it.
  • T-DSP TAC5212 Pro Audio Module - stereo ADC/DAC built around the TI TAC5212 with open-ended IO header for integration into audio backplanes. At the time of this post: previously built and tested, small issues resolved on the current revision. Planning to build it alongside the Core.
  • T-DSP IO 2x2 Combo - balanced XLR/TRS I/O on the TDM bus. Reference design showing what an I/O module looks like on this platform.
  • Mic Array Module - reference design, in progress.
This has gone through a few distinct design generations. Started with stackable modules, moved to ribbon-connected boards with a digital backplane that got too complex, then the Desktop Pro which went 8-layer and ended up being more than it needed to be. The current direction - a leaner digital core with sub-backplanes - feels like the right balance. I'm planning to build one out over the coming weeks and will post progress here.

Older t-dsp prototype on the bench during codec debugging - the ribbon cable connecting the backplane to the module is visible.

*Older t-dsp prototype on the bench during codec debugging - the ribbon cable connecting the backplane to the module is visible.

A few shoutouts to community members who have been part of this journey: @palmerr for his Audio Toy project, probably the closest thing to what I'm building here; @DD4WH for questioning my use of an 8-layer board (which I found out the hard way he was right); @h4yn0nnym0u5e for helping me debug the TAC5212 module (among other things); and @Paul, @houtson, @Bob Larkin, @Blackaddr, @Pio, and @chipaudette for contributions and inspiration along the way. I'm more than likely forgetting others I've communicated with or stalked over the years - thank you to everyone in this community.

If you've worked on something similar or have thoughts on structuring modular, reconfigurable audio systems with the Teensy Audio Library, I'd love to hear how you'd approach it.

Everything is open source (CC BY-NC-SA 4.0), designed in KiCad. Website: t-dsp.com | GitHub: github.com/t-dsp

Happy to answer questions or dig into the hardware decisions in the thread.

Jay
 
Last edited:
Hey everyone,

I have an update! I ordered a set of 5 prototypes of the audio shield adaptor and TAC5212 modules. Built one, fired up Claude Code and referenced all the drivers we had accumulated. As I imagined, AI augmentation made this process a million times easier to get a working prototype. The result is a working soundcard with keyboard shortcut control over input select and volumes.

For some reason this one doesn't accept ADC ch1 (IN1+) . Channel 2 does produce signal input. I suspect something is physically damaged. I will spin up another one and report the results.

All software source code is MIT published here.

Project software readme is here.

KiCad source is here.

Images below:
tac5212-audio-shield-top.jpg

tac5212-audio-shield-stack.jpg


I'll keep everyone posted with any additional updates on this project.

- Jay Shoemaker
 
I'm going to answer here for a question in another thread.

Jay, today I found some time to work through and try to understand the documentation on your Audio Shield adaptor (https://github.com/t-dsp/t-dsp_tac5212_audio_shield_adaptor)
However, I was unable to find a pdf with a schematic explaining the connections of the TAC5212 codec with the Teensy pins. The schematic-pdf given in the release is not understandable for me, I am sorry for that. There are a lot of crossed out components, there is reference to ESP32, but no reference to the Teensy 4.1 and the pin numbers and names of the data lines do not match the names I would have expected. Also, there are optical connectors that are not present on the PCB?
Maybe you can clarify the schematic of the adapter and/or provide a simple list, which pin of the TAC5212 is supposed to be connected to the Teensy 4.1?

Also, maybe you can point me to an explanation of the pin numbers of this figure: https://github.com/t-dsp/t-dsp_tac5...b/main/documentation/t-dsp-tac5212-pinout.jpg
I do not know what these numbers mean and whether they are the Teensy pin numbers?

I am sorry if I missed some information that is already there, maybe you can just point me to the right place where I can find this.

Thank in advance!

Hello DD4WH,

The Audio Shield Adaptor schematic is a bit sloppy because of the way I designed this project. I started with the main "T-DSP Core" schematic and ripped out parts until I got the project I wanted. Therefore, the audio shield adaptor schematic still has all the other components in it, just not on the PCB. I need to clean it up to make it more clear.

For the project you are looking at the Teensy 4.1 connects to the Audio Shield Adaptor backplane, and the backplane connects to the TAC5212 audio module. The crossed out components are simply "do not populate" / "exclude from board" -- those parts are just disabled, not errors. Same story with the optical connectors.

The pinout you mentioned is the TAC5212 Pro Audio Module pinout. You can drop the schematic and footprint into a project and build around it like it's a component. Grab the footprint from the Audio Shield schematic and board file to copy and paste or just start editing the project. Think of it as a "Chip-On-Board" or breakout module, although I hate calling it that because in my mind it's more than just a breakout, it's a building block for larger systems.

Take a look at the core t-dsp audio project to see the bigger picture. The core schematic has nearly everything I can envision a synth, soundcard, or mixer needing that the Teensy can theoretically support, just no analog inputs or outputs. The core connects to sub-modules with buffered I2S using the pre-defined expansion header shared with the TAC5212 Pro Audio Module. Therefore backplanes are easily conceived, designed, and developed as a sub-panel to the core, or their own dedicated systems.

The TAC5212 Pro Audio Module is the TAC5212 and all supporting components to produce high quality audio, minus the large capacitors required for headphones to sound good. There are footprints on the TAC5212 Pro Audio Module for simpler line out architecture (single ended or balanced). The Audio Shield Adaptor is a straight connection from the Teensy to the TAC5212 Pro Audio Module with two PDM mics, USB host and some other supporting components (capacitors and resistors) for bus management and 32 ohm headphone support.

I'll clean up the schematic when I get a chance. Thanks for digging in! I might have a few of these for sale pretty soon now that I've confirmed it mostly works.

- Jay
 
Last edited:
Hi, I had seen various bit of this project whilst working on mine and hats off to you. Something I think is missing here is a base board that just works.

I got frustrated after may designs works but broke so I flipped over my code to use the microdexed teensy as that was very well put together and had almost everything I needed to get the code finished.

I’m at the point now where I either do my own board again or get something that I can make in to something resembling a jp8080.

I’ve recently found the notes and voltz and since found that he has a pretty good library for doing the midi so thinking I might go hybrid.

So for me I simply need access to the teensy, drive a 3.2 touch screen. Read a good few pots and switches.

So what you have looks like something I’d try. Do you have any boards for sale or do I just get some made using the files?

I see me needing a desktop pro, ribbon to pro audio. I’ll design the display and midi controller section and feed that in to the esp32.

I can wire my stuff up on a board I have and get set up so no rush. But like the look and feel the teeny community would benefit from having a piece of modular hardware like this to save hassle getting started.
 
Hello Teensy Warriors,

@bk40, I can relate to broken devices and code. Hardware is incredibly unforgiving, and requires money, time, and patience. I've been at this for a long time and I've failed to finalize many designs. I'm hoping my momentum continues.

I originally designed the Desktop Pro with 3.2" touchscreens in mind. I liked that design, but ultimately I've abandoned it. Having both analog and digital on one board forced me into 8 layers, which was just too expensive to produce. I ripped out the analog section and moved it off-board, and that's when I wound up with the Core. I just need to finish routing it. I believe that version will be my best seller because it's a wonderful starting point for projects like yours with the 3.2" touchscreen.

I finalized the T-DSP TAC5212 Audio Shield Adaptor because I also wanted a model that "just works". Fortunately, it does. There are only two features not yet confirmed: USB Host and the Power LED. I believe the latter is positioned incorrectly (diode anode reversal) in the last build. For the USB Host test, I ran out of USB connectors and need to order more. The design uses a short wire lead between the Teensy 4.1 and the adaptor board, intended as direct wire-to-board with maybe 1.5" leads. That said, I'm happily listening to it right now and it sounds great.

Here is the feature list for the TAC5212 Audio Shield Adaptor and the TAC5212 Pro Audio Module:
  • USB Audio, USB Serial, USB MIDI
  • Stereo line level input via 3.5mm jack
  • Stereo headphone output via 3.5mm jack
  • Dual PDM microphones for "speakerphone-like" input
  • USB Host intended for either MIDI or USB-HD applications*
  • Browser-based mixer control surface with full loopback routing
  • Power LED*
*Not yet confirmed in current build.

I can confirm that the TAC5212 Audio Shield Adaptor is working quite well (minus those two items yet to confirm). The source files and manufacturing package are available in the repo, so you can order directly from a fab house. I'll also be setting up my Tindie store so I can start selling them there. In fact, I have 5 of these devices on hand (the same build shown in the video) and I'll probably list them soon.

Here is the software repo:

I also sent a PR for the Teensy core to enable monitoring of the input level on the USB host device:

Demo video:

Jay
 
Last edited:
Hello Rolfdegen, thanks! I enjoy your work too.

Quick update on what's working and what's not.
  • The entire system is now 24-bit, 48 kHz USB to F32, built on the OpenAudio_ArduinoLibrary (Chip Audette's F32 fork). The 24-bit USB transport is informed by alex6679's teensy-4-usbAudio work.
  • Everything in the path beyond that is F32, except a few synths that are 16-bit upsampled to 32-bit.
  • To get there, I built an F32 TDM input/output and a USB 24-bit to F32 object. I did this to get more headroom and it worked.
  • The web-based control surface is not tidy but it works.
  • USB Host works great. Tested with a Yamaha PSS-A50 MIDI keyboard. LinnStrument (MPE) testing coming soon.
  • I have Dexed FM, Piano Sampler (salamander_piano), Plaits, MPE VA, Neuro, Acid, Supersaw, and Chip instruments all working within the same project.
  • I also have a TLV320ADC6140 module working with an SM58 dynamic mic at reasonable quality. The 6140's onboard preamp is decent, but adds some noise when turned up, which is part of why I'm working on a dedicated preamp module.
  • Drivers for both the TAC5212 and TLV320ADC6140 are in the software repo.
  • The power LED is assembled with reversed polarity (either JLCPCB or my schematic/footprint messed this up).
  • On headphones with lossless audio files it sounds terrific to my ears. Finally, good clean audio from this project.
  • On a powered speaker (EV ELX112P) with the Audio Adaptor running single-ended, there's a ground loop and some noise.
    • A ground loop isolator solved about 95% of it.
    • Some of the remainder is coming from the speaker itself.
    • I'm still trying to determine if I'm being too picky for an ELX112P, I need to do a little more digging.
  • All of the above is on my most recent TAC5212 Audio Shield Adaptor design (adaptor + module).
  • All my code is in the t-dsp_software repo.
More updates as I keep moving.
 
Thank you. I place great importance on a good and attractive GUI. Separating the output onto two MCUs was necessary because the 300KB frame buffer and audio on a Teensy 4.1 consume too many resources, making the display output very slow. I think I'll stick with Paul Stoffregen's 16-bit audio library because I want to include more features and more voices in Jeannie 2. In Jeannie 1, I had eight voices and a small display. The Teensy 4.1 MCU's resource consumption was over 80% with 8-voice polyphony and 8x ladder filters.

Wavetable sound from Jeannie 1

Link : Jeannie 2 DIY project
 
Last edited:
Back
Top