With MIDI, you do not generate frequency, you generate a chromatic notes on some instrument, using 12-pitch-per-octave,
equal temperament tuning system.
On top of this, you can use some effects like wheel effect ("bending" like on guitar is imitated by a special wheel on some controllers). With such effect, the frequency deviates from its chromatic value, but you cannot generate arbitrary frequency, so the effects you can generate are really limited.
Main MIDI commands are like "play note start" and "stop playing a note", like a key down/up in a organ-type controller, and the number passed to the MIDI interface is just a "number of a note" in a half-tone step, like in modern European equal temperament based notation. You also control volume and tempo throughout a play. A MIDI-encoded play closely matches the piece of scores written in traditional modern
musical notation as it is described here:
http://en.wikipedia.org/wiki/Musical_notation[
^].
There are number of software products rendering MIDI files using traditional modern musical notation; they may support editing of music play in this or some alternative notations, play it, save/open resulting document and, ultimately, export the document to the MIDI file format. You can also record the play using all kinds of (hardware) MIDI-controllers.
See
http://en.wikipedia.org/wiki/Midi[
^].
What do you use for MIDI implementation?
You can read these articles and try:
Wrapper Library for Windows MIDI API[
^],
C# MIDI Toolkit[
^].
In my opinion, as you cannot produce really unique sound, all this is not really good to create real "analog" music good for performance, say, for writing and distributing audio CDs. If you listen MIDI music for a long time you may feel irritated by its "mechanical" sound, because all the sounds are essentially repeated many time without having unique sounds typical for life music.
Rather, this is the excellent machinery for working with "musical calculus" (and only in one equal temperament), for composers, exchange of musical compositions without participation of life musicians, presenting them in the form any musician can understand and reproduce and also for learning music and training.
Using the libraries found through the libraries I referenced above, you can create software with all of the features I mentioned above; you just need to understand very elementary basics of music theory and have programming experience.
Good luck,
—SA