LMMS/lmms — pull request #813 by diizy (2014-06-05 18:01:12+00:00)
Title: Ringbuffer

Implements a ring buffer class for LMMS, which is designed to be flexible, efficient and thread-safe.
Due to flexible design, it supports various methods of operation:
- set delays/sizes in absolute frame values, ignoring samplerate
- set delays/sizes in milliseconds with samplerate-awareness
- multiple inputs -> single output
- single input -> multiple outputs
Efficiency is achieved by working in buffers and using memcpy/memset for audio data moving operations, except when additive mixing is needed: then MixHelpers are used
Thread-safety is guaranteed with QMutex

I was thinking, down the line, this could be used to implement latency compensation for instrument/sample tracks, but also, it can be used for various effects: line delays, filters, maybe even convolution?