All Projects → NativeInstruments → Ni Media

NativeInstruments / Ni Media

Licence: mit
NI Media is a C++ library for reading and writing audio streams.

Programming Languages

cpp
1120 projects
cpp14
131 projects

Projects that are alternatives of or similar to Ni Media

Av Converter
[av-converter.com] Audio and Video Converter, and YouTube downloader. Convert to MP3, MP4, AAC, FLAC, AC3, WAV, etc.
Stars: ✭ 97 (-38.61%)
Mutual labels:  wav, audio, music, mp3, mp4, flac
Atldotnet
Fully managed, portable and easy-to-use C# library to read and edit audio data and metadata (tags) from various audio formats, playlists and CUE sheets
Stars: ✭ 180 (+13.92%)
Mutual labels:  wav, audio, mp3, mp4, flac
Music Metadata
Stream and file based music metadata parser for node. Supporting a wide range of audio and tag formats.
Stars: ✭ 455 (+187.97%)
Mutual labels:  wav, audio, mp3, mp4, flac
Mediafile
A unified reader of metadata from audio & video files.
Stars: ✭ 138 (-12.66%)
Mutual labels:  wav, audio, mp3, mp4, flac
Symphonia
Pure Rust multimedia format demuxing, tag reading, and audio decoding library
Stars: ✭ 191 (+20.89%)
Mutual labels:  wav, audio, mp3, mp4, flac
Audioplayer
Audio Player for Nextcloud and ownCloud
Stars: ✭ 179 (+13.29%)
Mutual labels:  wav, audio, mp3, mp4, flac
Minibae
The platform-neutral Beatnik Audio Engine, Mini Edition (miniBAE) is an exceptionally mature, well-rounded, and reliable computer music and sound system specially customized for small-footprint and embedded applications.
Stars: ✭ 82 (-48.1%)
Mutual labels:  wav, audio, music, sound
uos
United Open-libraries of Sound. United procedures for open-source audio libraries. For FPC/Lazarus/fpGUI/MSEgui.
Stars: ✭ 112 (-29.11%)
Mutual labels:  mp3, sound, wav, flac
loudgain
ReplayGain 2.0 loudness normalizer based on the EBU R128/ITU BS.1770 standard (-18 LUFS, FLAC, Ogg, MP2, MP3, MP4, M4A, AAC, ALAC, Opus, ASF, WMA, WAV, AIFF, WavPack, APE)
Stars: ✭ 127 (-19.62%)
Mutual labels:  mp4, mp3, wav, flac
audio-metadata
A library for reading and, in the future, writing audio metadata. https://audio-metadata.readthedocs.io/
Stars: ✭ 41 (-74.05%)
Mutual labels:  mp4, mp3, wav, flac
Libnyquist
🎤 Cross platform C++11 library for decoding audio (mp3, wav, ogg, opus, flac, etc)
Stars: ✭ 311 (+96.84%)
Mutual labels:  wav, audio, mp3, flac
Flacon
Audio File Encoder. Extracts audio tracks from an audio CD image to separate tracks.
Stars: ✭ 252 (+59.49%)
Mutual labels:  wav, audio, mp3, flac
Music Metadata Browser
Browser version of music-metadata parser Supporting a wide range of audio and tag formats.
Stars: ✭ 105 (-33.54%)
Mutual labels:  wav, audio, mp3, flac
Mutagen
Python module for handling audio metadata
Stars: ✭ 760 (+381.01%)
Mutual labels:  music, mp3, mp4, flac
Audio Steganography Algorithms
A Library of Audio Steganography & Watermarking Algorithms
Stars: ✭ 146 (-7.59%)
Mutual labels:  wav, audio, mp3, flac
Miniaudio
Single file audio playback and capture library written in C.
Stars: ✭ 1,889 (+1095.57%)
Mutual labels:  wav, audio, mp3, flac
Axiom
An FFmpeg GUI for Windows
Stars: ✭ 560 (+254.43%)
Mutual labels:  audio, mp3, mp4, flac
Minimp3
Minimalistic MP3 decoder single header library
Stars: ✭ 898 (+468.35%)
Mutual labels:  audio, music, mp3, sound
Soloud
Free, easy, portable audio engine for games
Stars: ✭ 1,048 (+563.29%)
Mutual labels:  audio, mp3, sound, flac
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+696.2%)
Mutual labels:  audio, music, sound

NI MEDIA Build Status codecov

NI Media is a library for reading from / writing to audio streams developed at Native Instruments.

Motivation

The goal is to have a modern C++ library for dealing with audio streams in an idiomatic C++ style.

Modern:

  • a clear separation of concerns (modular instead of fat classes)
  • support for ranges and iterators

Idiomatic:

  • based on std.streams.
  • integrates well with STL algorithms and boost

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
}

Components

  • audiostream: the main library for reading from / writing to audio streams.
  • pcm: a small library to convert pcm data from / to arithmetic types.

Dependencies

  • boost ( algorithm, endian, filesystem, format, icl, iostream, local, program-option, regex, system)
  • flac & ogg, for flac support (CMake option NIMEDIA_ENABLE_FLAC_DECODING)
  • vorbis & ogg, for ogg vorbis support (CMake option NIMEDIA_ENABLE_OGG_DECODING)
  • googletest for building the tests (CMake option NIMEDIA_TESTS)

Platforms

ni-media requires a c++14 compliant compiler and is currently supported and tested on these platforms:

  • Windows ( requires Visual Studio 2015 Update 3 or higher )
  • Mac OS X ( requires Xcode / Clang 7.3 or higher )
  • iOS ( requires Xcode / Clang 7.3 or higher )
  • Linux ( requires GCC 5.0 or higher, Clang 7.3 or higher should also work )

Building

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.12.4 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 . 

Testing

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

Before running the tests some reference test files need to be downloaded using git-lfs:

git lfs pull -X ""

To execute the tests run:

cmake --build . --target test

Contributions

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].