Free software + patience = music
Compose, record, compress
A MIDI (Musical Instrument Digital Interface) file is like source code for music. It contain instructions for reproducing all the notes and nuances of a musical performance.
While MIDI is a digital communication protocol for music equipment, the General MIDI (GM) standard goes further and defines things like what instrument (sound, patch) to associate with a certain code.
Just like with source code for software you want to use a dedicated editor. The type I suggest you start with is called a 'MIDI sequencer' with a 'piano roll' view. My favorite back in the days was the fabulous Voyetra MIDI Orchestrator series but that is long gone. Similar editors, that come even close in usability, are hard to come by. Most modern music software is insanely advanced and might or might not have the 'piano roll' view but they will also know how to make you breakfast.
It is all about finding a workflow that allows effortless improvisation while also a quick and robust way of capturing those lucky strikes. Do not get distracted by the bells and whistles of your toolbox
Just like with software, the usefulness of source code comes from how it is built and run (played). The actual sounds need to be generated by a MIDI compatible hardware or software synth.
I composed the majority of my music with a Sound Blaster AWE 32 sound card. Whatever device you are reading this page on would have blown that card out of the water.
Even with the GM standard there is no way for me to know how the MIDI song sounds for you. It depends on what you play it with. There is a huge variety in how a piano can sound, not to mention a 'Glockenspiel' or 'Timpani'. And if the MIDI is not GM compatible there is no way at all to know what is being played.
For a MIDI file to be useful for you I try to stick to GM but sometimes I use the extended GS standard (with twice the predefined instruments). I also test them with a readily available synth, the basic Microsoft GS Wavetable Synth available in all modern versions of Microsoft Windows, but also other ones using the setup behind button.
You cannot ask people to acquire synths, virtual or not, just to listen to a song. The remaining option for ensuring intended experience of song is then to record it and then digitally.
Sound is an analog thing and to digitally capture it faithfully requires huge files. No one wants to spend time downloading huge files however, and that is where MP3 comes in.
The MP3 (formally MPEG-1 Audio Layer III or MPEG-2 Audio Layer III) compresses the file by approximating or deleting details you probably will not notice missing. The higher the compression rate, the smaller the file but also the further away from the original. Much like JPEG for images.
Back in the days I used an MP3 encoder from the legendary Fraunhofer Institute in Erlangen. With my 200Mhz Pentium it took ages to process it. Now it it is a breeze, especially if you already installed VirtualMIDISynth as it comes with an integrated converter of your MIDI to MP3! It means recording and then compressing it in one single step.
Sample rate, bit depth?
We have learned that MIDI is not sound. MIDI files contain instructions for generating sound using some (hardware or software) synth(s). Recording the audio that comes out from the synths is a way to capture the sound.
Sound, as captured by our ears, are continuous undulating (analogue) waves. When going digital the wave needs to be captured and boxed into packages that can be stored as numbers. The frequency at which we sample the waves, for example 44,100 times per second (44.1 kHz), and the amount of data we use per sample, bit depth, determines how many details that are kept and how many errors are introduced in what is stored.
And then we learned that the result can be (depending on sample rate and bit depth used) huge files that are not fit for Internet. Therefore we need to compress the files, knowing that even more of the original data will be lost when choosing a format like MP3.
Most of my recordings from the 90s are of poor quality, compared to the sound from say a CD. Recording them again in higher sample rate, higher bitrate and then less of compression would not only be time consuming but require me to recollect and configure the synths back into the state they were at the time of recording. I did not note down all details.
If I re-record any song now, it will most likely be using a setup with virtual synths like described above. But then you can do the same.
See More info (external site) about audio formats and bit rates.