There is a way you could have more control but it is going to take a little more than hand tweaking a Photoshop curve to do it—It won't much more, but it will take all that trial and error out of it. I used to go about this the same way—trial and error, hand tweaking curves, etc. Then I learned some of the math being used here and created a couple tools that make this stuff so much easier.
What are you scanning the 21-step targets with? If you don't do any contrast adjustment at the scanner level then it is pretty easy to use the eye-dropper to get measurements that can be used with my digital negative gray curve correction tool.
Here is what you need to do.
First, start using the black ink to create a single channel partitioned profile so you can use the gray curve and linearization functions. Start with a ink descriptor file like this:
##BEGIN INK DESCRIPTOR FILE
N_OF_INKS=8
DEFAULT_INK_LIMIT=0
LIMIT_K=20
BOOST_K=
LIMIT_C=20
LIMIT_M=20
LIMIT_Y=20_
## These inks with such low limits are not really doing anything for you
LIMIT_LC=0.5
LIMIT_LM=0.5
LIMIT_LK=0.5
LIMIT_LLK=0.5
GRAY_INK_1=K
GRAY_VAL_1=100
GRAY_HIGHLIGHT=0
GRAY_SHADOW=0
##The Gray Curve is where you will enter the values from the spreadsheet
GRAY_CURVE=
N_OF_UNUSED=0
##The copy curve function below is going to use the K curve that has been linearized taking into consideration all the inks below so these need to always be used and not turned off or have the limits changed. If you do change the limits, delete the gray curve line and go through the correction curve process again.
Copy_CURVE_LK=K
Copy_ CURVE_LLK=K
Copy_ CURVE_C=K
Copy_ CURVE_M=K
Copy_ CURVE_Y=K
Copy_ CURVE_LC=K
Copy_ CURVE_LM=K
##END INK DESCRIPTOR FILE
Then print a 21-step target without any corrections to the image or to the profile.
Get the image into Photoshop and select the eyedropper tool.
In the Info pallet, change the secondary color readout to Lab and change the bit depth to 32 bits. That will give you L* values on a 0-100 scale.
Write them into new lines in a text file, save it, and drop it onto the linearize-data droplet (you do not need the Lab a or Lab b values). You will get a graph (nice) and the Lab values will be converted to Density values that can be pasted into my digital negative correction curve spreadsheet (I made this for someone who only used a densitometer and I haven’t updated it to take lab values, which is why you need to go through the whole linearize-data step, just ignore the linearize= info at the bottom of the -out.txt file).
Copy the highlighted graycurve= "NUMBERS:NUMBERS " line and paste it into the gray_curve= line in the ink descriptor file and reinstall the profile and make a print. It should be linear. if not, then you can hand tweak a Photoshop adjustment layer on the image, but you will get very predictable results from QTR curves.
--
If you don't want to go through the linearize data step I do have a 21 step Density to Lab conversion tool that that includes a single Lab to Density conversion (but it only does one value at a time right now). I still need to create a new one that converts 21 steps of Lab to Density (or update my digital negative conversion tool to use density inputs but I locked the template and misplaced the key…) I don’t have time this week, but here are dropbox links to both tools as they are now. (let me know if doesn't allow you to download these. Something might have changed with the public dropbox stuff...)
Hope that helps,
Richard Boutwell
http://www.richardboutwell.com/
http://www.bwmastery.com/