Skip to content

Add port of alex6679/teensy-4-usbAudio (with some OpenAudio-specific additions) - #41

Open
loudifier wants to merge 11 commits into
chipaudette:masterfrom
loudifier:master
Open

Add port of alex6679/teensy-4-usbAudio (with some OpenAudio-specific additions)#41
loudifier wants to merge 11 commits into
chipaudette:masterfrom
loudifier:master

Conversation

@loudifier

Copy link
Copy Markdown

Port teensy-4-usbAudio USB over to OpenAudio

image

I saw that alex6679/teensy-4-usbAudio#7 looked stalled, so I figured it would be helpful to go the opposite direction. Beware this pull request is almost entirely vibe coded, please just close if that is not welcome.

In addition to just porting F32-native versions of the teensy-4-usbAudio core files:

  • Add support for additional USB samples rates, bit depths, channel counts
  • Add USB input .volume() function
  • Implement TDM8/TDM16 I/O
  • Implement I2S sink mode (and name updated from "I2Sslave"). Existing quad I2Sslave stubs left as-is.
  • Add word width settings for I2S clock source mode and expected/auto word width for I2S clock sink mode
  • Updated audio design GUI with new/expanded blocks
  • A few examples for USB<>TDM/I2S and I2S sink mode
  • Scripts for installing OpenAudio, Arduino IDE menu entries, replacing core Teensyduino USB files

I have tested each individual feature, and many of them in combination with each other, using an Audio Precision serial interface as a reference. The full matrix of channels, sample rates, bit depths, and serial audio configs would be unfeasible to cover every possible combination, but I am happy to test any specific config.

@alex6679 for visibility

loudifier added 11 commits July 30, 2026 01:25
all it does is generate a warning about teensy/avr compatibility
Add new blocks (TDM, I2Ssink, etc)
Update some descriptions for new modifications (mostly USB channels and USB in .volume() function)
Add pre-existing I2SQuad to GUI
Add warnings for incompatible blocks (I2S in + TDM out, etc)
fix an bug where data sent to the right channel of an I2S output is actually output on the left channel slot, if no data is sent to the left channel of the I2S output block.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant