Sign in to follow this  
Followers 0
TK.

MBSEQ V4 MIDI Out Performance

9 posts in this topic

Only one word: tight!

Thanks to USB!!! :)

Following impressive example shows, how fast MIDI events can be sent via USB interface in comparison to UART based MIDI with and without running status optimisation:

mbseqv4_tight_timings.png

So, the thin red bar at the left side are 128 Note On and 128 Note Off events sent via the STM32 internal USB interface.

The transfer of 256 MIDI events takes 1.9 mS

The second bar in the middle shows 128 Note On and 128 Note Off events with running status optimisation (highest throughput by ommiting the status byte - works only if Note events are sent over the same MIDI channel)

The transfer takes ca. 164 mS

The third bar at the right side shows the common UART based MIDI timing without running status optimisation.

The transfer takes ca. 245 mS

This test shows, that the usage of an integrated USB peripheral is the perfect solution for controlling software synthesizers, especially drum synths or percussive sounds which should be played synchronously. :)

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

Impressive! :o

Share this post


Link to post
Share on other sites

neato  :)

mmm software synthesizers *nudge nudge*

Share this post


Link to post
Share on other sites

Sweet!

Can the same performance work the other way? i.e. software sequencers controlling (STM32-based) hardware synths via a virtual MIDI interface across USB?

Share this post


Link to post
Share on other sites

As far as I can tell, yes. (Software sequencer controlling and stm32 based software synth).

Share this post


Link to post
Share on other sites

Yes, MIDI IN should be superfast as well. :)

Here some impressions from a similar test, this time MIDI events are sent over ethernet by using the OSC protocol. At the Mac side I'm using an OSC->MIDI proxy, so that Note On/Offs can be recorded with Logic Audio.

mbseq_osc_timings.png

First bar: 256 MIDI events via USB-MIDI for comparison (ca. 2 mS)

Second bar: 256 MIDI events sent with 256 separate OSC datagrams (ca. 46 mS)

Third bar: 256 MIDI events sent in 32 OSC bundels (ca. 11 mS)

The STM32 was extremely busy while sending OSC messages. Timestamps are not used - they could help to trigger events synchronously, but they would also lead to a higher latency.

The OSC Proxy was busy as well, it consumed ca. 10% CPU while processing the packages - bad if the same computer is used to play virtual instruments.

This article gets a FAQMARKER, so that I can quickly find it if somebody should argue again, that OSC is faster than MIDI ;)

Best Regards, Thorsten.

Share this post


Link to post
Share on other sites

awesome.  i had some problems with osc and ethernet on the liveapi side of things for my midibox live project, so i made a protocol over midi instead.  i guess midi is the way to go anyway. :)

Share this post


Link to post
Share on other sites

Awesome!!!  My SEQ is anxiously awaiting his upgrade!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0