C++ Tagged Pages
Saturday, May 10, 2025
A C++ library for professional audio/video/media
I’ve started to collect all my C++ code that pertains to professional audio/video/media into a singular library called libpromeki. It takes its name from the internal library that performed the same functions at my, now defunct video disk recorder company, SpectSoft . In fact, much of this library comes from that earlier library, although the earlier library sat atop Qt and this newer library has all the Qt dependency removed (although keeps a lot of the same design patterns). You can find the library here
Read More...Friday, May 9, 2025
An open source audio (VST/MIDI) plugin to generate euclidean rhythms
Sick Beat Betty is an audio plugin I wrote to make it easy to generate euclidean rhythms . It was the first time used the JUCE audio application framework. I’ve found JUCE a great way to write an audio plugin as it provides all bits you could want to get started: a common way to write the DSP/MIDI processing which plugs into the various plugin frameworks ( VST , CLAP , etc), an OpenGL/Accelerated UI framework, and all the various other bits that you’d want to see to make development a pleasure (and not a hell of dependency management).
Read More...Thursday, May 8, 2025
Sometimes you've got to convert between an enumeration and a string...
Often times in an application, you’ve got to convert between an enumeration value and a string. It’s generally best to wrap this in an object, so you keep all the details of the conversion contained in one place. It also makes the syntax of comparing objects a simple process of a == b or similar.
Read More...Saturday, May 10, 2025
Some ideas on how to keep code common that's used across libraries
It’s usually a good idea to maintain one place for common code that may be used across multiple applications or libraries. This code is often compiled into those items (i.e. not a library itself). Frequently, you’ll want to be able to define the device you’re compile the code for so-as not to have to include any more code than required. Below are some ways to accomplish this. They’re separated by compile time and run time options. The compile time options are less flexible, but offer no runtime impact and smaller compiled sizes. The runtime options are more flexible, but more computationally expensive and larger in compiled size. It’s best to start with compile time solutions until you actually need a runtime one.
Read More...Saturday, May 10, 2025
Keep your list of data abstract, format it at compile time!
This is an oldy, but goody. This pattern allows you to make an abstract list of data and then format it at will during compile time. I’m a big proponent of single source of truth (also known as DRY, or don’t repeat yourself). This is one way to achieve this.
Read More...