Max/MSP
Max.MSP is the most amazing program for arranging sound or MIDI. The sheer raw data routing capabilities are astounding, especially when you take into account all of the third-party objects that independent people make and upload onto the net. Of course, in the hands of anyone but a very proficient programmer, it’s nearly impossible to use.
I would frankly not suggest this program for anyone who doesn’t have some sort of technical background. Musicians who know just enough about computing to use sequencers and samplers will drown in this program. At minimum, a potential user should have a bit of programming and/or signal processing, a reasonable understanding of algebra, and an excellent command of the MIDI spec. Otherwise, the programmer will be limited to only the most basic functions of the program, which renders using the program in the first place pointless.
One thing that one can do (which I did) is to use Max.MSP as a MIDI middleman between hardware controllers and more user-friendly software such as Ableton Live. In my case, I used Max.MSP to accept my incoming MIDI, interpolate/process/split the channel data, and send out considerably more and more complex commands to Live. Basically, it was taking input from only 6 buttons and an 8-way joystick and converting that into nearly 100 unique commands.
So if you’re thinking about getting into Max, first decide if you really want to take the plunge into a cold object-based programming language. If so, do the tutorials until you really understand each object, and start making some patches!
Good luck!