Zing - A Simple Audio Integration Library
Zing is an audio integration library designed to get ImGui Apps up and running with audio I/O. It builds cross platform, but has so far only been tested on windows. It's a grab-bag of useful stuff to get you started in audio. The code is simple C++. It needs a helper library submodule containing some useful c++ stuff, and some packages. You can probably drop this code into your app and start playing; mostly it is structs and functions. The built in profiler is useful for seeing where your time is spent; I find it invaluable for threading situations. For the best introduction, see the short video overview below.
The demo lets you tweak parameters and generates a tone sound using the soundpipe library, in addition to the metronome that Ableton link provides (assuming you have sound output enabled). It reads in a simple midi stream and plays it back using the tsf midi renderer library (the midi messages are streamed to the audio pipeline using a concurrent queue).
- Configuration UI for the audio, using the Port Audio library.
- FFT analysis of the incoming audio in seperate threads, and simple display of the spectrum and audio waveform.
- Ableton Link integration, for sharing tempo with other applications.
- Integrates Soundpipe for simple effect/audio processing modules.
- Simple thread profiler so you can see live what the UI and audio threads are doing.
- Basic MIDI data visualization.
- Save/Load of all settings to a TOML file.
- Management of the audio device using port audio.
- Load of Midi and playback
git pull
git submodule update --init --recursive
prebuild.bat OR prebuild.sh
config.bat OR config.sh
build.bat OR build.sh
The included sound font is a small/simple/free general midi sound font from here (233 pop rock bank):
https://www.zanderjaz.com/downloads/soundfonts/pianos/ https://www.zanderjaz.com/soundfonts/pianos/233_poprockbank.sf2
Installing a more powerful soundfont will produce a better result, such as this one:
https://musical-artifacts.com/artifacts/1176
You can change the font loaded in demo.cpp
See prebuilt.bat for the full list