Of course, an unmodified blink without delay will not fulfill all your requirements, but it is very close:
Lets say you want a frequency of 20Hz.
If you want a 10% duty cycle, that is 5ms ON and 45mS OFF
If you want a 20% duty cycle, that is 10ms ON and 40mS OFF
etc.
etc.
Therefore:
The ON period = ( 10 * DC / Freq ) milliseconds, where DC is duty cycle in % and Frequency in Herz
The OFF period = ( 10 * (100 - DC ) / Freq ) milliseconds.
So all you want is the blink sketch with variable on and off times.
Do you want to be able to vary the frequency, and if so, within what range ?
You've already said the duty cycle is from 15% to 85 %
How do you want to enter these parameters into the sketch, say with a potentiometer ?
How do you want to display the selected parameters (if at all) ? with a 1602 LCD ?