This list features resources that allow you to learn actual music programming by writing code to generate your own sounds and build your own instruments. Sounds a little intimidating if you are not familiar with coding, but it really isn’t. The companies that build these platforms are very generous about providing tutorials and examples to ease you into the process.
In order to get started you will need to choose a coding language.
jMusic is a programming library written for musicians in the Java programming language. While still developing, this project hopes to achieve a library that is simple enough for newbie programmers but sophisticated enough to enable composers to accomplish real work, whatever form that may take. jMusic is designed to be used as a compositional medium, therefore it is primarily designed for musicians - not computer programmers. However, many people find jMusic a useful API for music software development, in particular for digital instrument making.
For more information about JMusic click HERE.
JythonMusic is an environment for music making and creative programming. It is meant for musicians and programmers alike, of all levels and backgrounds. JythonMusic provides composers and software developers with libraries for music making, image manipulation, building graphical user interfaces, and connecting to external devices, such as digital pianos, smart phones, and tablets. JythonMusic is based on Python programming. It is easy to learn for beginners, and powerful enough for experts.
For more information about JythonMusic click HERE.
PLATFORMS AND SOFTWARE
Csound is often referred to as a sound compiler. A compiler is a software that takes textual instructions in the form of source code and converts them into object code. This object code then gets converted into some kind of executable binary in the form of a computer program. Csound works in more or less the same way, only its object code is a stream of numbers representing audio. In order for us to hear that audio we must play it back through a Digital to Analogue Converter. The DAC converts each of the sequenced numbers to a voltage that causes our speakers to move and vibrate, thus creating sound. Csound can also be implemented into some DAWs and is available for both Windows and Mac users.
For more information and to download Csound click HERE.
SuperCollider is a platform for audio synthesis and algorithmic composition, used by musicians, artists, and researchers working with sound. It is free and open source software available for Windows, macOS, and Linux. A real time audio synthesis engine, and an object-oriented programming language specialized for music. For more information on SuperCollider click HERE.
Sonic Pi is a code-based music creation and performance tool. You can even join the friendly Sonic Pi community, of over 1.5 million, and share your ideas and thoughts with other educators, musicians and live coders. Create everything from Jazz, Grime, Rock and EDM. Available for Windows, Mac and Raspberry Pi. Simple enough for computing and music lessons. Powerful enough for professional musicians. Sonic Pi is free to download and comes with a friendly tutorial. For more information and to download Sonic Pi click HERE.
Alda is a text-based programming language for music composition. It allows you to write and play back music using nothing but a text editor. Easy to understand, markup-like syntax. Designed for musicians who don’t know how to program, and programmers who don’t know how to make music. A score is a text file that can be played using the Alda command-line tool. Interactive REPL lets you enter Alda code and hear the results in real time and supports writing music programmatically (for algorithmic composition, live coding, etc.) and create MIDI music using any of the instruments in the General MIDI Sound Set. For more information on Alda click HERE.
ChucK is a programming language for real-time sound synthesis and music creation. It is open-source and freely available on MacOS X, Windows, and Linux. ChucK presents a unique time-based, concurrent programming model that's precise and expressive (we call this strongly-timed), dynamic control rates, and the ability to add and modify code on-the-fly. In addition, ChucK supports MIDI, OpenSoundControl, HID device, and multi-channel audio. It's fun and easy to learn, and offers composers, researchers, and performers a powerful programming tool for building and experimenting with complex audio synthesis/analysis programs, and real-time interactive music. For more information on ChucK click HERE.
No programming, drag and drop components in a powerful fully modular environment. Connect them your way. There's no royalties, no licensing agreements, no special run time is required, just share your creations with anyone using a major DAW like Cubase, Live or FL Studio. SynthEdit is the only save-as designer with C++ plug-in modules. These are extra functions you can download and add on later. Unlike restrictive built-in code features, or tedious low-level building blocks. C++ is the language professionals use to write high performance audio code. There's over 1000 add-on modules for you to explore and master. For more information on Synth Edit click HERE.
FoxDot was created for users who may be new to programming and want to use it create music quickly and easily. FoxDot is an easy-to-use Python library that creates an interactive programming environment and talks to the powerful sound synthesis engine, called SuperCollider to make music. FoxDot schedules musical events in a user-friendly and easy-to-grasp manner that makes live coding easy and fun for both programming newcomers and veterans alike. For more information on FoxDot click HERE.
TidalCycles (or 'tidal' for short) is free/open source software, that allows you to make patterns with code, whether live coding music at algoraves or composing in the studio. It includes language for describing flexible (e.g. polyphonic, polyrhythmic, generative) sequences. It also has an extensive library of patterning functions, for transforming and combining them. Tidal is highly composable in that pattern transformations can be easily combined together, allowing you to quickly create complex patterns from simple ingredients. Tidal does not make sound itself, but is designed for use with the featureful SuperDirt synth, and can control other synths over Open Sound Control or MIDI. Whether you're using SuperDirt or a synth, every filter and effect can be patterned and manipulated independently with Tidal patterns. Tidal is embedded in the Haskell language, although you don't have to learn Haskell to learn Tidal - most tidal coders have little or no experience in software engineering. For more information on Tidal click HERE.
So if you are into code or not, the outlets do exist to learn, expand your knowledge and enhance your creativity when making electronic music.