Ability to change audio buffer size to different values within software settings. (Currently 512)

Useful for reducing latency.

Component: 

Notes from Team Vuo

Vuo Pro: 

No — available with both Vuo and Vuo Pro licenses

Complexity: 

●●○○ — A few weeks of work

Comments

Just a question @Steve, would

alexmitchellmus's picture
Submitted by

Just a question @Steve, would this be best as a node or a preferences item? If we export Apps there may be pros and cons for each implementation?! For example you may want your app to be able to check the hardware of computer then assign a buffer value. (maybe check hardware node could be future node request?)

Also if its a menu item then people can change manually (in app).

Possibly it should be both?! Or at least preferences item first.

would this be best as a node

smokris's picture
Submitted by

would this be best as a node or a preferences item?

I envision this being a port on nodes that receive or send audio data (e.g., Receive Live Audio, Play Audio File, Play Movie, Send Live Audio). Then the composition can statically or algorithmically decide which buffer size to use (or expose it as a preference for the person using the composition, using Make Button or other forthcoming UI widgets).

Is that to say you could mix

smokris's picture
Submitted by

Is that to say you could mix audio buffer settings? A small size for midi computations and control inlets- yet a large buffer for summing etc?

Yes, this would enable a single composition to have multiple independent audio event streams with different buffer sizes. (I'm not yet sure whether OS X allows opening the same device with different buffer sizes though.)

Is there an easy way to make this happen without changing all audio nodes?

(Not that I know of.)

@Steve are we sure multiple

alexmitchellmus's picture
Submitted by

@Steve are we sure multiple size buffers is the best road to take? Are there any examples of other software that has this solution? I can imagine that they may get out of time?

Considering that each buffer needs to be computed before handing it to the next node- it sounds complex.

Maybe simply allow a user to set the block size and buffer multiples in the .vuo file?

That way someone could then make a composition a node and simply change that #define (or however it is encoded)

Yes it is. It may also be

alexmitchellmus's picture
Submitted by

Yes it is. It may also be interesting to instead of having a buffer size per node, to allow audio nodes to split their buffer when a new event occurs.

This would mean there would be a Vuo buffer preference, (where we set the value), and internally the buffer can't go longer than that value.

IIRC both VST & LV2 pass the buffer size to the audio function. Thus allowing those plugins to compute different buffer sizes on the fly.

That sounds slick. So by

Mechanica's picture
Submitted by

That sounds slick. So by setting your buffer size, you’re setting a maximum length, but the buffer you end up with is dynamically set by the demands of the incoming data, right? Glorious.

I bought Vuo specifically for an upcoming project which will have visuals that are triggered by live audio. If I can't get latency down to much smaller margins, it just ain't gon' look good! As it stands now the lag is... palpable. Definitely hoping we get this feature on a forthcoming release.

Ardour is a GPL DAW that has

alexmitchellmus's picture
Submitted by

Ardour is a GPL DAW that has ability to split buffers. Hence why all LV2 plugins always need to know the buffer size (not the sample rate, that's set).

This allows as you said, a buffer to work with timming that are between buffers.

I don't know how this would work in a live context, as Vuo would need to know in advanced where when to split the buffer. Which would mean that all incoming data (MIDI/OSC/controll) would need to be delayed by one buffer cycle.

I think that would be ok, given the benefit it would bring.

Hmm. Delaying anything by a

Mechanica's picture
Submitted by

Hmm. Delaying anything by a buffer cycle would be okay in certain circumstances but very much not in others. It would certainly be great to have as an option, but I wouldn’t love being stuck with no option to disable it. For some things you just need as low a latency as possible, ya know?

Feature status

When we (Team Vuo) plan each release, we try to implement as many of the community's top-voted feature requests as we have time for. Vote your favorite features to the top! (How do Vuo feature requests work?)

  • Submitted to vuo.org
  • Reviewed by Team Vuo
  • Open for community voting
  • Chosen to be implemented
  • Released

Votes

30 votes so far!

Who voted?

Kewl's picture
Mechanica's picture
alexmitchellmus's picture
timwessman's picture