Skip to content
A thread-safe non-allocating circular RingBuffer type
Julia Shell
Branch: master
Clone or download

Latest commit

ssfrr Merge pull request #16 from JuliaAudio/project_toml
switches to Project.toml, drops 0.6 support
Latest commit cf7aae3 Sep 16, 2019


Type Name Latest commit message Commit time
Failed to load latest commit information.


Build Status Build status

This package provides the RingBuffer type, which is a circular, fixed-size multi-channel buffer.

This package implements read, read!, and write methods on the RingBuffer type, and supports reading and writing NxM AbstractArray subtypes, where N is the channel count and M is the length in frames. It also supports reading and writing from AbstractVectors, in which case the memory is treated as a raw buffer with interleaved data.

Under the hood this package uses the pa_ringbuffer C implementation from PortAudio, which is a lock-free single-reader single-writer ringbuffer. The benefit of building on this is that you can write C modules for other libraries that can communicate with Julia over this lock-free ringbuffer using the portaudio.h header file. See the PortAudio library for an example of using this to pass data between Julia's main thread and an audio callback in a different thread.

You can’t perform that action at this time.