Introduction to C++ (Qt GUI - Part I)

A GUI is a fantastic idea…​ But what should it be - SDL, wxWidgets, or Qt?

Choosing a GUI framework for a C++ audio project is a "fork in the road" moment. Each of these options pulls the project in a completely different architectural direction.

Since your course currently uses SDL, it’s the natural frontrunner, but here is how they stack up for a synth-building context:

Introduction into C++ (CMake interlude)

Introduction to efficient build tools for C++ projects

We now reach a rite of passage by moving from a Make-based build process to a CMake-based workflow.

The traditional "rule of three" (found in many classic open-source projects) — ./configure && make && sudo make install — is gradually being replaced by the CMake approach. This modern workflow typically involves creating a separate build directory to keep the source tree clean (so-called "out-of-source builds"):

Introduction into C++ (Part 6)

Introduction to the topics data structures, algorithms and complexity / computability in C++

Caution - this tutorial is a theory-loaded one - we will discuss a bit of the basics about data structures, algorithms and complexity - all that especially in context with C - so let's get started with the data structures in C

Lists, Dictionaries and Queues

We begin with some basic data structures we already used without going much into the topics; those two are std::vector (basically lists) and std::map (basically dicts).

Introduction into C++ (Part 5)

Beyond the Single Note: Implementing Polyphony

In our previous tutorials, our synthesizer was limited to one note at a time. If you pressed a new key, the old sound simply disappeared. Today, we change that by implementing Polyphony—the ability to play chords and manage multiple "Voices" simultaneously.

1. What is a "Voice"?

In professional synthesizer design, we use the Voice Architecture. A "Voice" is a self-contained unit that holds everything needed to produce one sound: an Oscillator and an Envelope.

Introduction into C++ (Part 4)

From Stateless to Stateful: Filters & Composition

In previous parts, we built an oscillator. It was "stateless"—you give it a phase, it gives you a value. It doesn’t care what happened a microsecond ago. But to make music sound "warm" or "organic," we need objects that have a memory.

1. DSP General: The Concept of State

In Digital Signal Processing (DSP), a filter is stateful. To calculate the current output, a filter needs to know the previous output.

Introduction Course to C++

This course introduces C++ programming through the development of a small audio / synthesizer application.

The goal is to learn the language step-by-step while building a working audio system.

Prerequisites:

  • A Linux system (Debian or Ubuntu recommended)

  • GCC (GNU Compiler Collection)

  • The make build tool

  • Basic familiarity with the command line

  • Some mathematical background (helpful for the audio and signal-processing sections)

Windows users can follow the course using Windows Subsystem for Linux (WSL).

Introduction into C++ (Part 3)

Introduction into C++ (Part 3)

C++ OOP Mastery: The Power of Composition (Has-A)

In software architecture, there are two primary ways to connect objects: Inheritance (Is-A) and Composition (Has-A). While beginners often try to solve everything through inheritance ("An Oscillator is an Envelope"), professionals prefer composition: "A Synthesizer has an Envelope."

1. Why Composition?

Think of our synthesizer as a modular rack. Each module (Oscillator, Envelope) is an independent class. The SynthEngine acts as the chassis where these modules are plugged in.

Introduction into C++ (Part 2)

Introduction into C++ (Part 2)

In this next example / tutorial we will have a look at sound producing program (aka a synth), for which we utilize the SDL library (Simple direct media library). We will go about the program, line for line and explain the different items.

Lets begin…​

First of all we have the includes for the SDL library, we will have a look at the header file later. Also we include cmath for math and iostream for in- and output (but in this example only output).

Introduction into C++

A simple introduction into C++

Hello folks, this time I want to start with a series about programming with C++. While Python is a general purpose programming language, C++ is often chosen when you need tighter control over performance and latency.

We start simple by creating a short program that spits out the limits for the different data types. Install Microsoft code so that have one simple IDE you can work with…​