In one sense, a controller is hardware or software which generates and transmits MIDI data to MIDI-enabled devices.
In the other more technical sense, a MIDI controller is an abstraction of the hardware used to control a performance, but which is not directly related to note-on/note-off events. A slider assigned to open and close a low-pass filter on a synthesizer may be assigned to controller 18, for example. Changes in the position of the slider are transmitted along with "18" so that they are distinguished from changes in the value of other controllers.
Types (hardware and software)
The following are classes of MIDI controller:
The human interface component of a traditional instrument redesigned as a MIDI control device. The most common type of device in this class is the keyboard controller. Such a device provides a musical keyboard and perhaps other actuators (pitch bend and modulation wheels, for example) but produces no sound on its own. It is intended only to drive other MIDI devices. Percussion controllers such as the Roland Octapad fall into this class, as do a variety of wind controllers and guitar-like controllers such as the SynthAxe.