There are quite a number of open source software synthesisers available, that work in a variety of different ways.
CSound in one of the older software synthesis programs, but it is still very active. In its original form it was a non-interactive system using text files both to define instruments by combining primitive modules, and to defines scores (in a similar way to MIDI).
It is also possible to program CSound in other languages such as Python or Java. There are many additional projects based on CSound. One of the main ones is Cabbage, that allows you to to design instruments visually, play instruments live with MIDI, and create VST plug-ins that can be used in a standard DAW.
SuperCollider (SC) consists of a sound server that implements many sound primitives (in a similar way to CSound) and a programming language that sends messages to the server.
It can be used to create sound and music, and to perform algorithmic composition. Since the language sends messages to the server in real time, SC can be used for live coding - that is, creating music by modifying the code in real time. This is sometimes done as a live performance.
ChucK, uses unit generators, similar to CSound and SuperColliderbut with (yet) another special programming language.
Pyo is a Python based system, similar to SuperCollider, but without the need to learn a specialised language. It is worth looking at if you already know Python, or even if you don't but would prefer using a more mainstream language.
PureData (PD) is also a similar to SuperCollider, but it uses a visual programming language. Sound and processing primitives are represented as boxes on a drawing surface, that can be connected by lines to program the behaviour.
PD can also accept MIDI input, and so can be used to define a playable software synthesiser.
VCV Rack uses a totally different approach. It is a software equivalent of a modular synth. You can add virtual modules to a virtual rack, connect output to inputs, and hear the final sound. There are lots of plug-ins available, many free but a some that must be purchased.
This is great is you want to try out modular synthesis, or if you want to experiment with different types of modules before you invest the time and money in either building or buying your own physical modules. Or maybe if you just want to do software synthesis but prefer the modular synth workflow.
Copyright (c) Axlesoft Ltd 2020