Skip to content

Rezonality/zing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 15, 2025
372f384 · Jan 15, 2025
Sep 14, 2023
Jan 15, 2025
May 11, 2023
Jun 20, 2023
Jan 15, 2025
Jun 7, 2023
Jun 10, 2023
Oct 2, 2023
May 12, 2023
Jan 15, 2025
May 19, 2023
May 11, 2023
May 25, 2023
May 8, 2024
Jan 15, 2025
May 11, 2023
Jun 10, 2023
May 11, 2023
May 11, 2023
May 11, 2023
May 11, 2023
May 21, 2023
May 11, 2023
Jan 15, 2025
Oct 2, 2023
May 11, 2023
May 19, 2023
Jun 22, 2023

Repository files navigation

Zing - A Simple Audio Integration Library

Builds GitHub license

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

Video Overview

Zing Overview

Screenshot

ImGui

Building

git pull
git submodule update --init --recursive
prebuild.bat OR prebuild.sh
config.bat OR config.sh
build.bat OR build.sh

Sound Font

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

Libraries Used

See prebuilt.bat for the full list

Sound

SoundPipe

PortAudio

EarLevel

Ableton Link

Other

ImGui

Concurrent Queue

TomlPlusPlus