NI Media is a library for reading from / writing to audio streams developed at Native Instruments.
The goal is to have a modern C++ library for dealing with audio streams in an idiomatic C++ style.
Modern:
Idiomatic:
The following example demonstrates how to stream an entire audio file into a vector:
#include <ni/media/audio/ifstream.h>
#include <vector>
int main()
{
auto stream = audio::ifstream("hello.wav");
auto samples = std::vector<float>(stream.info().num_samples());
stream >> samples;
// use samples
}
NIMEDIA_ENABLE_FLAC_DECODING
)NIMEDIA_ENABLE_OGG_DECODING
)NIMEDIA_TESTS
)ni-media requires a c++14 compliant compiler and is currently supported and tested on these platforms:
First, build and install boost filesystem
, iostream
, system
and program-option
to path/to/dependencies
. Optionally install any codecs that you want to use, for example flac and ogg-vorbis.
Now configure ni-media with CMake (version 3.16.0 or higher is required)
cmake -G YOUR-PROJECT-GENERATOR -DCMAKE_PREFIX_PATH=path/to/dependencies/ path/to/ni-media
Specific codecs can be enabled / disabled by passing additional CMake options.
We can now build ni-media:
cmake --build .
googletest is required for testing and needs to be installed to path/to/dependencies
. The unit tests can be enabled with CMake option NIMEDIA_TESTS
.
cmake -G YOUR-PROJECT-GENERATOR -DCMAKE_PREFIX_PATH=path/to/dependencies/ -DNIMEDIA_TESTS=ON path/to/ni-media
To execute the tests run:
cmake --build . --target test
We very much appreciate your contribution! If you want to contribute please get in touch with the maintainers:
Please run clang-format with the provided .clang-format file and if possible add some tests when opening a pull request.