Daisy as Audio USB device

Looks like there is some STM32 Cube example code that enables USB audio streaming.

I might be messing with this soon too. Will update if I get anywhere :slight_smile:

2 Likes

@tenkai I’ve run some of the discovery board usb audio examples before with sucess, and I think I got a few really basic tests running on one of the first daisy prototypes. Excited to see what you come up with when you start messing around with it.

I’m planning on getting around to adding some libdaisy support (for Audio and for MIDI) in the next few months. It’s just after rounding out the basic peripheral support, and adding better support for QSPI (as storage, or extra code-space) on my list of features-to-get-to. :smile:

3 Likes

A few months sounds way too optimistic. I can believe that it would appear in second half of next year or so.

That said, I’ve got USB audio working on OWL port for Daisy Patch. If truth to be told, I’ve only added support for using 2 separate audio buffers for Patch, the rest was done in upstream branch. This still hasn’t been released for any Rebeltech devices, because there are several unresolved minor issues.

I would expect libDaisy to get a MIDI-only USB endpoint support first for device and host before trying to get a working composite audio + MIDI support. Audio interface support would take more time to get working on every OS and may require changes to audio processing (i.e. for sharing DMA buffer with codec).

2 Likes

Admittedly, I do have a habit of underestimating how long things will take. What I probably should have said is that I plan on starting work on it in a few months, once I’ve gotten through the other stuff I mentioned first.

Good points, though, and interesting note on having it it working on the OWL port already. I may take a look at that a bit before digging in for libdaisy.

And your expectation is accurate; the plan will be to add MIDI-only first, and then flesh out a composite class after that.

3 Likes

How we can speed up this?
What the community can do for help?
Thanks!

Unless you’re an expert in USB stack on microcontrollers, all you can do is wait till it’s ready.

@shensley, was going to let you know that implementing sync audio device would not work for everyone, in case if you’ve considered it as good enough.

1 Like

I definitely anticipate the actually audio-interface implementation to take a little while, and don’t have enough experience to have a clear idea of what hurdles we may or may not face yet. Audio class based MIDI, will be tackled first (as mentioned previously). And once that is stable, actual Audio will begin getting worked on.

That said, before we get back to USB, QSPI, and SDMMC we will be doing a few things to libdaisy to create a clear versioning system and a dev branch with experimental or in-progress features.

That way while some of these things are being worked on we can have a better way for community users to test, and play with features that are not completely polished. This will also make reporting bugs, and announcing any API-breaking changes a much clearer process as well as making it a bit easier for users to plan when they want to upgrade, and be able to access previous versions (as right now the only way to do this is keep track of the commit hash you’re using).


We are a fairly small team, and are working hard to bring these features to fruition but we have a lot going on. However, we are always happy to see community based contributions to the library from anyone that does have experience, and it’s often easier to make time to review content then to add additional new features to our own plates while still resolving existing issues.

2 Likes

this was obvious to me

Thanks for the reply,
but these were the hot spots of the kickstart campaign, and I honestly believed that audio and usb midi were a high priority feature, but i understand the complexity of making it.

1 Like

(Update) Edited the post to remove the assumption on whether it’s possible to make Daisy Seed support USB High-speed mode for high quality USB audio.

Hello all,

Thanks @antisvin for providing some information regarding USB support limitation on Daisy in this thread, which I think should be highlighted in this thread for anyone interested in utilizing USB audio support with Daisy:

  1. The USB port on Daisy seed board only supports full-speed operations (12Mbit/s) with on-chip PHY.
  2. USB 2.0 High-speed operation (480Mbit/s) is possible with external USB PHY, but none of the current daisy boards provide it.

References:

  1. AN4879 Application note: USB hardware and PCB guidelines using STM32 MCUs
  2. STM32H7 - USB OTG HS

In short, the USB audio support out of current Daisy boards are limited / crippled (despite Daisy boards provide 96k/24bit DAC chips, it’s limited to USB FS bandwidth). Not totally sure if a custom PCB with external PHY can make Daisy support USB HS but it doesn’t seem that Daisy Seed exported all the ULPI pins for USB OTG HS support.

Hope that helps!

HS PHY can be connected on USB host peripheral, so it won’t help with lack of bandwidth for audio devices.

Btw, the codec supports 192kHz too, not that I expect it to be particularly useful. And it would require changing clock settings for SAI for this to be usable in Owlsy (ignoring the USB audio issue).

Just wondering if there is any more progress on this?

Happy to beta test if there is a repo available.

Progress in what exactly? If you mean USB audio support in libDaisy, there’s been no changes in this direction AFAICT. Even plain USB MIDI hasn’t been done yet and it will certainly happen before audio. As for OWL, it can be used as an USB audio interface to capture input channels.

Thanks for the info that pretty much covers it.

I have been using the ELK pi hat but its quite limiting on the UI front. Essentially I am looking for a dc-coupled USB audio interface solution for the rpi.

Oh you’ve managed to snatch that unobtainable device, it’s out of stock every time I bother checking their store!

But beware that Daisy Patch inputs are not DC coupled. If you can live with just 2 channels, Rebel Technology modules are DC coupled and should be usable as audio interfaces with recent OWL versions. If you need more channels, there are a few options from Expert Sleepers (ES-8, ES-9).

Yeah it’s a very nice bit of kit. I managed to get one in the very first presale. I think they have kind of dropped the ball a bit with the elk hats while they work on some sort of remote music jamming hardware, like zoom for bands.

The main issue myself and my project partner are having with it is that UI stuff is limited by what you can do with OSC or the gRPC interface. It is possible to use QT but to get the kind of deep integration between UI and plugin that we want there’s a lot of hoops to jump through. When I finally have some time (that most precious resource) I would like to attempt to build my own yocto image with RASPA and the RTDM driver.

I will check out the rebel stuff, it sounds like it might be the ticket.

Edit: I forgot to mention that the reason I thought the daisy seed could be quite good for us is that if it could behave as an usdio interface the idea would be to plug it in to the PI. The pi could do some of the work and the daisy could behave a bit like a sound card with all its other bells and whistles included.

Hi Guys,

Did anything get further with the USB Audio?

Cheers

Andy

Hi All,
It would be for me very useful to use Daisy as audio and MIDI device (interface) to be connected to iPad, for example.

Let me share the idea. The iPad (USB host) run SW plugin (AUv3 synth for example), a Sync signal (clock for a drummer) and Midi processing function.

So, this would need 2 output audio channels, first as main, second used just to provide beat signal.
Second input audio channel could be just mixed with USB audio bus.

For MIDI it would be useful to have two ports, the first tied to a secondary USB and second one tied to classic 5 pin MIDI Port.

Would it be possible?
Has someone tried to do something similar solution?

Thanks
Domenico

Time for the regular ping :slight_smile: Has anyone successfully managed to get USB audio streaming on the seed? I would gladly take any kind of poc, in any state.

Hello :slight_smile: ! I’m very interested in this topic too. As a FAUST dabbler and a newcomer to modular, having as generic a module as the patch.Init() that can act as basically anything to quickly add some CV modulations without having to buy 3 new ADSR/LFO modules is godsend. But to be really space & cost-efficient, I’d really like to be able to use it too as an Audio USB device, notably for sequencing CV controls from the DAW (Bitwig in my case), instead of having to add an extra ES-8/9 to the mix.