This is going to be a little more technical than I'd like, but it should be concrete enough to implement on a computer.
So, start with the color sphere: a unit sphere, and each point in the volume represents a color. Around the equater is arranged the hues, roygbiv. Moving north or south changes value, by adding white or black, respectively. Moving inwards toward the north-south axis reduces saturation; the exact center of the sphere is a perfectly neutral 50% gray.
Traditionally a set of colors is supposed to be 'harmonious' together if, when one constructs a polyhedron inside the color sphere, with each vertex being one of the chosen colors, the polytope formed has it's center of balance at the center of the sphere.
That is a 'designer' set of colors --- emotionally flat but visually pleasing. Emotional content is added by moving the centroid off center, charging the whole color set with a color 'cast'.
This definition, of course, fails when monochromatic schemes are chosen, but monochromatic schemes are almost always highly emotional unless a suitable accent color is chosen (usually a complementary, so as to move the COB to the center of the sphere).
For more information, read Itten, Keely, Albers, &c.