All Projects → LabSound → Labsound

LabSound / Labsound

Licence: other
🔬 🔈 graph-based audio engine

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Labsound

Waveform analysis
Functions and scripts for analyzing waveforms, primarily audio. This is currently somewhat disorganized and unfinished.
Stars: ✭ 193 (-55.01%)
Mutual labels:  audio, audio-analysis
Chromaprint
C library for generating audio fingerprints used by AcoustID
Stars: ✭ 553 (+28.9%)
Mutual labels:  audio, audio-analysis
Friture
Real-time audio visualizations (spectrum, spectrogram, etc.)
Stars: ✭ 509 (+18.65%)
Mutual labels:  audio, audio-analysis
Bpm
Library and tool for dealing with beats per second detection
Stars: ✭ 57 (-86.71%)
Mutual labels:  audio, audio-analysis
Essentia
C++ library for audio and music analysis, description and synthesis, including Python bindings
Stars: ✭ 1,985 (+362.7%)
Mutual labels:  audio, audio-analysis
Aukit
audio toolkit. 好用的语音处理工具箱,包含语音降噪、音频格式转换、特征频谱生成等模块。
Stars: ✭ 105 (-75.52%)
Mutual labels:  audio, audio-analysis
Ebur128
Implementation of the EBU R128 loudness standard
Stars: ✭ 43 (-89.98%)
Mutual labels:  audio, audio-analysis
Devicehive Audio Analysis
Stars: ✭ 189 (-55.94%)
Mutual labels:  audio, audio-analysis
Gist
A C++ Library for Audio Analysis
Stars: ✭ 244 (-43.12%)
Mutual labels:  audio, audio-analysis
Free Spoken Digit Dataset
A free audio dataset of spoken digits. Think MNIST for audio.
Stars: ✭ 396 (-7.69%)
Mutual labels:  audio
Flexasio
A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME.
Stars: ✭ 403 (-6.06%)
Mutual labels:  audio
Android Openslmediaplayer
Re-implementation of Android's MediaPlayer and audio effect classes based on OpenSL ES APIs.
Stars: ✭ 393 (-8.39%)
Mutual labels:  audio
Pyaudioanalysis
Python Audio Analysis Library: Feature Extraction, Classification, Segmentation and Applications
Stars: ✭ 4,487 (+945.92%)
Mutual labels:  audio
Sushi
Automatic subtitle shifter based on audio
Stars: ✭ 407 (-5.13%)
Mutual labels:  audio-analysis
Dx7 Supercollider
My accurate Yamaha DX-7 clone. Programmed in Supercollider.
Stars: ✭ 395 (-7.93%)
Mutual labels:  audio
Bitmidi.com
🎹 Listen to free MIDI songs, download the best MIDI files, and share the best MIDIs on the web
Stars: ✭ 422 (-1.63%)
Mutual labels:  audio
Mystiq
Qt5/C++ FFmpeg Media Converter
Stars: ✭ 393 (-8.39%)
Mutual labels:  audio
Duckhunt Js
DuckHunt ported to JS and HTML5
Stars: ✭ 390 (-9.09%)
Mutual labels:  audio
Recorder
html5 js 浏览器 web端录音
Stars: ✭ 429 (+0%)
Mutual labels:  audio
Lavalink
Standalone audio sending node based on Lavaplayer.
Stars: ✭ 420 (-2.1%)
Mutual labels:  audio

macOS Windows Linux
Build Status Build status Build Status

LabSound is a C++ graph-based audio engine. LabSound originated as a fork of WebKit's WebAudio implementation, as used in Google's Chrome and Apple's Safari.

LabSound implements many aspects of the WebAudio specification while extending its functionality with an improved API, new graph nodes, bugfixes, and performance improvements.

The engine is packaged as a batteries-included static library meant for integration in many types of software: games, visualizers, interactive installations, live coding environments, VST plugins, audio editing/sequencing applications, and more.

LabSound homepage.

Features

  • Compatibility with the WebAudio API
  • Audio asset loading via libnyquist
  • Binaural audio via IRCAM HRTF database
  • Additional effect & generator nodes (ADSR, noise, stereo delay, and more)
  • Compile-time arbitrary function node for DSP processing
  • Basic signal analysis nodes (time & frequency)
  • Input node (microphone)
  • Non-realtime graph processing & wav export
  • Thread safety model for multi-threaded apps (e.g. gui)
  • SIMD-accelerated channel mixing routines

Platforms

LabSound supports a variety of backends, including RtAudio and CoreAudio.

LabSound is currently tested on

  • Windows 10
  • macOS 10.10 to current
  • Ubuntu 18.04, using the ALSA and Pulse back ends.

In the past, LabSound has been demonstrated to work on iOS, Android, and Linux via JACK.

Building

Users of LabSound are expected to compile LabSound from source. While most dependencies are included as code in the repository, libnyquist is bundled as a git submodule so it is required that new users clone the repository with the --recursive option.

The submodules can be fetched after a clone with git submodule update --init --recursive

LabSound and libnyquist require a C++14 or greater compiler.

Building with Cmake

LabSound has a CMakeLists.txt at the root directory, and all the associated CMake files are in the cmake/ subfolder. In the following examples, the build is done in a nested build directory. This is not required, it's shown for illustrative purposes. You may put the build and the install prefix anywhere you like.

On macOs and Windows:

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=../../labsound-distro ..
cmake --build . --target install --config Release

On Linux, a backend must be selected, using one of ALSA, Pulse, or Jack. To build with ALSA:

mkdir build
cd build
cmake -DLABSOUND_ASOUND=1 ..
cmake --build . --target install --config Release

On Raspberry Pi, as on Linux, a backend must be selected. The currently tested configuration is ALSA. Be sure to install the asound development libraries before building.

sudo apt install libasound2-dev

On iOS:

mkdir build
cd build
cmake -G "Xcode" -DCMAKE_TOOLCHAIN_FILE=../cmake/ios-toolchain.cmake -DCMAKE_INSTALL_PREFIX=../../labsound-distro-ios ..
cmake --build . --target install --config Release

Examples

LabSound is bundled with many samples. Project files can be found in the examples/ subfolder.

Using the Library

Users should link against liblabsound.a on OSX and labsound.lib on Windows. LabSound also requires symbols from libnyquist, although both the Visual Studio solution and the XCode workspace will build this dependency alongside the core library.

On OSX, new applications also require the following frameworks:

  • Cocoa
  • Accelerate
  • CoreAudio
  • AudioUnit
  • AudioToolbox
  • libnyquist.a

On Windows, new applications also require the following libraries:

  • dsound.lib
  • dxguid.lib
  • winmm.lib
  • libnyquist.lib

For convenience, LabSound.h is used as an index header file with all public nodes included for easy application development.

LabSound includes an HRTF implementation. This creates an additional dependency on a folder of impulse wav files when a PannerNode is configured to use PanningMode::HRTF. The constructor of PannerNode will take an additional path to the sample directory relative to the current working directory.

WebAudio Compatibility

LabSound is derived from one of the original WebAudio implementations, but does not maintain full compatibility with the spec. In many cases, LabSound has deliberately deviated from the spec for performance or API usability reasons. This is expected to continue into the future as new functionality is added to the engine. It possible to reformulate most WebAudio API sample code written in JS as a LabSound sketch (modulo obvious architectual considerations of JavaScript vs C++).

License

LabSound is released under the simplified BSD 2 clause license. All LabSound dependencies are under similar permissive licenses. Further details are located in the LICENSE and COPYING files.

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