Free MIDI software rundown
Modular synthesis involves a lot of on-the-fly experimentation with the hardware, but if you're going to make music in a preplanned way, there's a good chance you will end up involving a computer and connecting it to your modular via MIDI. Here are notes on some of the software I like to use for that and related tasks. I'm focusing on stuff that will run under Linux, but many of these packages are cross-platform.
GUI-based sequencer. This is one I've just started using recently. It's still at a relatively early stage of development, but one big win is that it seems to handle MIDI tracks and channels well. I needed that for my Japari Park MSK 007 demo, where I did a lot of channel remapping during the multitrack recording process.
Another GUI-based sequencer. This one has been around a long time, and it includes music-notation editing features for those who find that approach more comfortable. A major flaw is that it will assign tracks to MIDI channels automatically, in a way that screws up synthesizers which need specific channels used for specific purposes, and it is difficult to override this behaviour in any way that will last. Like pretty much all of the "MIDI" sequencers on my list, Rosegarden really wants to have a more general model of a musical "project" and map that into MIDI, rather than just being an editor of MIDI data.
Yet another GUI-based sequencer. All sequencers want to be "digital audio workstations" when they grow up, and all DAWs think they can bolt on a few MIDI features and call themselves sequencers too, so what ends up happening is that each such package is somewhere on a spectrum between focus on MIDI and focus on digital audio. LMMS is nearer the digital audio end than the other two I describe here, and it has a special focus on synthesis plugins. Many people make music on it just sequencing the plugins, and never attempt to attach a hardware synthesizer. I don't like the dark-grey GUI theme of this one, but many people do; it's probably the most popular sequencer-ish package for Linux at the moment.
LilyPond is primarily a music notation program, but it also generates MIDI and that's how I most often use it. I write music by describing notes in a text-based format for input into LilyPond, then when LilyPond runs, it generates both a PDF file of the music notation and a MIDI file of the notes. Usually those get filtered a bit before they're suitable for feeding into a hardware or software synthesizer (see notes below), with the whole workflow managed by a Makefile like a software project.
Virtual MIDI Piano Keyboard - a straightforward piano keyboard that comes up in a window. You can play notes by clicking on the keys, or by pressing keys on your computer (typing) keyboard. Highly configurable; I cut it down to two octaves to make a nice screenshot, but it can be as long or short as desired, with different mappings to the typing keys, control knobs, etc. You might prefer a real keyboard for performances, but this is very convenient for debugging and other purposes where you just need to generate a few MIDI note events. It's sad but maybe predictable that the author had to stop selling this program in "app stores" because it proved completely impossible for buyers to understand that this is only a keyboard - it generates MIDI events to control other things, such as software synthesizers, and will make no sound by itself.
Midish is a "MIDI shell" - a command-line program that can load MIDI files, do simple filtering and remapping, and send events to MIDI hardware. I use it (specifically the "rmidish" version, which has readline support) pretty much every time I want to play pre-written MIDI on my modular synth, because I can run rmidish on my Universal Host module, SSH in, and control the modular conveniently from another computer.
The midicsv and csvmidi programs are simple command-line utilities that translate in both directions between MIDI files and a plain CSV list of MIDI events. They're good any time you need a little more programmatic control over filtering or modification of MIDI data than Midish offers, because the CSV files can be edited with tools like Perl or even a spreadsheet and then translated back to MIDI. Also good for programmatic generation of music, because the CSV format is easier to generate than bit-correct MIDI binary data. I use them in my Makefiles to automatically process Lilypond-generated MIDI data, because Lilypond's own MIDI output is somewhat primitive.
TiMidity++ is a command-line player of MIDI files (usually using Soundfonts). I don't have a lot to say about it, but it does what it does, pretty well.
FluidSynth is another, more recent, software Soundfont-based MIDI synthesizer. It's commonly used running in the background to support sequencers like the ones at the start of this list, while TiMidity++ is more commonly used to play files directly - at least, that's how I use these two programs - but each is also capable of serving in the other role.