Music by Ciro Santilli 40 Updated 2025-07-16
Ciro Santilli took courses once upon a time, maybe that has influenced his passion? Ciro Santilli's musical education.
ABC notation by Ciro Santilli 40 Updated 2025-07-16
A decent way to write diatonic music as plaintext!
Conversion to MIDI with abcmidi.
No bend/vibratto/slides :-(
MusicXML by Ciro Santilli 40 Updated 2025-07-16
Higher level than Csound: describes the notes only, not the exact waveforms it seems.
Therefore also a bit harder to convert to actual sound: stackoverflow.com/questions/33775336/convert-musicxml-to-wav but possibly easier to convert to LilyPond.
Now they need to create a "MusicCSS" that gives the waveforms! :-)
The usual "let's make a standard without a reference implementation" W3C approach.
ALSA can be thought as analogous to physical wires linking up machines.
Except that instead of machines, you have separate programs. One such typical link is:
The advantage of this setup is that separate programs can collaborate to make complex sounds.
The disadvantage of this setup is that it makes it very hard to reproduce results, you basically need a Docker image with the exact same version of everything. And some script to launch and connect all programs correctly.
Some composition systems like LMMS reduce that problem by having synthesizers as plugins, so that you don't have to setup any connections yourself.
Software synthesizer by Ciro Santilli 40 Updated 2025-07-16
Dominating awesome list: https-github-com-nodiscc-awesome-linuxaudio
A large part of these projects are on SourceForge as of 2020, it is scary. They just die.
Bristol (synthesizer) by Ciro Santilli 40 Updated 2025-07-16
Simulates vintage hardware synthesizers, and includes some pretty complex ones!
Aims to show an UI that looks exactly like the synthesizers in question.
For example for the Minimoog on Ubuntu 20.04:
sudo apt install bristol
startBristol -mini -alsa
This is a really good piece of software. You can search on YouTube how some classic synths, work, and the immediately start playing them!
FluidSynth by Ciro Santilli 40 Updated 2025-07-16
Supports only very basic effects it seems: chorus effect and reverberation. The main way to add instruments to it is via SoundFont files.
Scorewriter by Ciro Santilli 40 Updated 2025-07-16
Basically a GUI music editor where you can specifically see and export classical music notation instead of tablature-style notation.
Best open source one found so far as of 2020: MuseScore.
MuseScore by Ciro Santilli 40 Updated 2025-07-16
This software feels amazing. You can really start composing very quickly, lots of features, good keyboard shortcuts.
GPL, and there's a backing company that makes money with an online and mobile version of it.
Can export to:
Ubuntu 20.04: sound preview worked, first hat that trailing Contra-like sound artifacts (like spd-say), but then it went away?
Feels like a lot of effort was put into usability, including keyboard shortcuts by default, seems like a powerful and easy to start using software to compose music!
TuxGuitar by Ciro Santilli 40 Updated 2025-07-16
Just use MuseScore instead.
Can import from: MIDI.
Can export to:
Ubuntu 20.04:
sudo apt install tuxguitar tuxguitar-alsa tuxguitar-jsa tuxguitar-oss
tuxguitar-jsa was needed, otherwise no sound: askubuntu.com/questions/457321/tuxguitar-no-sound-in-14-04
Has OK step sequencer non-realtime up/down/left/right guitar based composition interface.
Has chord insertion.
Has bend editor.
Could be more amazing, but it is OK.
A bit limited by being very "guitar oriented". Shows you guitar strings, and you enter offset to each string. So to enter two adjacent notes you need to use two seprate strings and thing about the offsets. If only it had a more piano based interface.
Drum notation is also atrocious, you have to go to the top chord, and use high numbers starting at 36.
Ardour (software) by Ciro Santilli 40 Updated 2025-07-16
Weight: heavy.
Video 1.
Ardour 6 Quickstart (recording, editing, mixing and exporting) by unfa (2020)
Source. unfa is a helpful Ardour master and open source software junkie at your YouTube service.
LMMS by Ciro Santilli 40 Updated 2025-07-16
Very easy to use and pretty powerful MIDI creator!!!
One of the rare audio applications actually works with PulseAudio on Ubuntu 20.04 out-of-the-box, so you don't have to turn off every other audio application!!!
Has lot's of plugins built-in just working out of the box, e.g. ZynAddSubFX out-of-the-box without doing a gazillion complex setup connections.
Most plugins are just simple toys however, ZynAddSubFX is the only super powerful one. The others are more LMMS integrate however, and seem to use a more dedicated LMMS GUI style.
If you open vmpk, you can then right click on a piano track, and go MIDI, Input and it just shows up there, and it does produce sound as shown at: www.youtube.com/watch?v=NpeP2th08ak
TODO: what about recording the input MIDI? Yes, there is a record button on the piano roll!
Csound by Ciro Santilli 40 Updated 2025-07-16
XML file format (but with 99% of the action of interest in a domain-specific language on the CsInstruments and CsScore elements) that can be played and the reference implementation. Offers complex effects out-of-box apparently.
Allows you to easily define instruments with seemingly arbitrary mathematical functions, and then use them to play notes at given time intervals.
The instrument functions can be parametrized, and each note played can have different parameters.
The instrument definition actually defines a block diagram graph, much like a hardware synthesizer would.
Csound is so not-bloated that it contains an UI system. And it includes an interactive virtual MIDI keyboard that interacts with parameter knobs: www.csounds.com/manual/html/MidiTop.html
But hey, it's fun. And like any other good domain-specific language, debugging it is barbaric of course.
If only it had been written in Python... the array manipulation boilerplate would be likely perfect for NumPy, and this would have been exactly what Ciro Santilli wanted!
CSound states that one of its design goals is backward compatibility, and it shows. Some of the stuff is utterly arcane, e.g. you have to remember what GEN10, GEN11, etc. mean instead of having named enums.
It just worked on Ubuntu 20.04 no questions asked:
sudo apt install csound
git clone https://github.com/csound/csound
cd csound
git checkout 92409ecce053d707360a5794f5f4f6bf5ebf5d24
csound examples/xanadu.csd
which runs this file: github.com/csound/csound/blob/92409ecce053d707360a5794f5f4f6bf5ebf5d24/examples/xanadu.csd and this plays a relly cool sound demo:
Video 1.
Xanadu Csound demo
. Source.
Save to file instead of playing:
csound -o xanadu.wav xanadu.csd
or direct ogg output:
csound --ogg -o xanadu.ogg xanadu.csd
or pipe to stdout to FFmpeg TODO: stackoverflow.com/questions/64970503/how-to-pipe-csound-output-to-ffmpeg-for-conversion-without-an-intermediate-file
TODO find the most amazing set of songs made with it on GitHub? Some examples:
Documentation-wise, it's a bit lacking. The only dude who can explain it really well, Dr Richard Boulanger, made the "The Csound Book" closed source, so, congrats, this will forever hurt the popularity of Csound.

Pinned article: Introduction to the OurBigBook Project

Welcome to the OurBigBook Project! Our goal is to create the perfect publishing platform for STEM subjects, and get university-level students to write the best free STEM tutorials ever.
Everyone is welcome to create an account and play with the site: ourbigbook.com/go/register. We belive that students themselves can write amazing tutorials, but teachers are welcome too. You can write about anything you want, it doesn't have to be STEM or even educational. Silly test content is very welcome and you won't be penalized in any way. Just keep it legal!
We have two killer features:
  1. topics: topics group articles by different users with the same title, e.g. here is the topic for the "Fundamental Theorem of Calculus" ourbigbook.com/go/topic/fundamental-theorem-of-calculus
    Articles of different users are sorted by upvote within each article page. This feature is a bit like:
    • a Wikipedia where each user can have their own version of each article
    • a Q&A website like Stack Overflow, where multiple people can give their views on a given topic, and the best ones are sorted by upvote. Except you don't need to wait for someone to ask first, and any topic goes, no matter how narrow or broad
    This feature makes it possible for readers to find better explanations of any topic created by other writers. And it allows writers to create an explanation in a place that readers might actually find it.
    Figure 1.
    Screenshot of the "Derivative" topic page
    . View it live at: ourbigbook.com/go/topic/derivative
  2. local editing: you can store all your personal knowledge base content locally in a plaintext markup format that can be edited locally and published either:
    This way you can be sure that even if OurBigBook.com were to go down one day (which we have no plans to do as it is quite cheap to host!), your content will still be perfectly readable as a static site.
    Figure 2.
    You can publish local OurBigBook lightweight markup files to either https://OurBigBook.com or as a static website
    .
    Figure 3.
    Visual Studio Code extension installation
    .
    Figure 4.
    Visual Studio Code extension tree navigation
    .
    Figure 5.
    Web editor
    . You can also edit articles on the Web editor without installing anything locally.
    Video 3.
    Edit locally and publish demo
    . Source. This shows editing OurBigBook Markup and publishing it using the Visual Studio Code extension.
    Video 4.
    OurBigBook Visual Studio Code extension editing and navigation demo
    . Source.
  3. https://raw.githubusercontent.com/ourbigbook/ourbigbook-media/master/feature/x/hilbert-space-arrow.png
  4. Infinitely deep tables of contents:
    Figure 6.
    Dynamic article tree with infinitely deep table of contents
    .
    Descendant pages can also show up as toplevel e.g.: ourbigbook.com/cirosantilli/chordate-subclade
All our software is open source and hosted at: github.com/ourbigbook/ourbigbook
Further documentation can be found at: docs.ourbigbook.com
Feel free to reach our to us for any help or suggestions: docs.ourbigbook.com/#contact