commit e17a50a491851c19158b0908102ea81b1c700564 Author: Andrew Kelley <email@example.com> Date: Thu Mar 5 16:34:02 2015 -0700 RingBuffer implementation
mmap to put the same slice of memory in two places so that
each write and read from the ring buffer only takes one
commit f3581e6989e98b8aeddd66d3ad452ec622a713a9 Author: Andrew Kelley <firstname.lastname@example.org> Date: Sat Mar 7 19:13:58 2015 -0700 alright C++ you win. gimme dat inheritance
When working on widget user interface code, I realized that I was implementing inheritence without actually using C++'s inheritance features, and it was more error prone than just giving in and depending on libstdc++.
The core backend and the GUI are decoupled. The core backend is in a shared library called libgenesis which does not link against any GUI-related libraries - not even libstdc++.
Meanwhile, the GUI depends on libgenesis and puts a user-interface on top of it.
libgenesis is intended to be a general-purpose utility library for doing digital audio workstation related things, such as using it as the backend for a headless computer-created music stream.
749f762f34fa6ba207374f8807c1be241810d768 Author: Andrew Kelley <email@example.com> Date: Tue Mar 10 12:45:51 2015 -0700 32-bit floats in memory instead of 64
I'm still not sure about this one. I've read some conflicting things about whether to use 32-bit float or 64-bit float for audio processing.
I made this commit when I found out that JACK uses exclusively 32-bit floats for audio samples.
commit bdaca9bea4fb046cdb7357da7476cb455ab5d5c1 Author: Andrew Kelley <firstname.lastname@example.org> Date: Tue Mar 10 19:37:00 2015 -0700 GLFW instead of SDL2
I experienced 2 issues with SDL:
GLFW has a narrower focus and smaller footprint. I hoped that this meant the bug surface area would be smaller.
Sadly, it has the same bugs. However it is under more active development with a faster release schedule, and less bloat in between Genesis and the hardware is nice.
Next I got a
list_devices example program working:
$ ./list_devices playback device: 44100 Hz GK104 HDMI Audio Controller Digital Stereo (HDMI) playback device: 44100 Hz Built-in Audio Analog Stereo (default) recording device: 44100 Hz Monitor of GK104 HDMI Audio Controller Digital Stereo (HDMI) recording device: 44100 Hz Monitor of Built-in Audio Analog Stereo recording device: 44100 Hz Built-in Audio Analog Stereo (default) controller device: Midi Through Port-0 (default) 6 devices found
normalize_audio example which reads an audio file of any format,
increases the volume as much as possible without clipping, and then saves to any format.
This demonstrates the audio import and export capabilities.
$ ./normalize_audio ~/tmp/quiet.ogg ~/tmp/out.flac Channels: 2 (Stereo) 222208 frames (5.04 seconds) Amplification factor: 18.638 out codec: FLAC (Free Lossless Audio Codec) out sample format: signed 24-bit integer out sample rate: 44100