[QUOTE=Daystrom M5;2296745]

RPM = Write/Verify Speed * (Media Type Max RPM - Media Type Min RPM) * (1 - (Current Sector / Media Sectors)) + Media Type Min RPM

This gives me a percentage of the maximum to minimum RPM range of the media type based on the current sector.

[/QUOTE]

For a case at the start (sector 0);

RPM = Write Speed * (Media Max RPM-Media Min RPM)*(1-0)+min RPM.*

=Min RPM +Write SpeedDifference between Max&Min RPM’s …

Definately not right.

For a case at the end:

RPM=Write Speed* (Max RPM-Min RPM)*(1-1)+Min RPM = Min RPM

definately not correct.

First you need to make a few assumptions:

- assume that pits are packed with the same density from inner most point to outermost point.
- Assume that the difference between any adjacent tracks is insignificant, and therefore 0.

Lets take innermost diameter as “Di” and outermost (end) diameter "De"

The formula for the number of pits in any section of the disc is piD/density. however, because this is a linear formula, and density does not change, we can safely ignore the density,

Without (having a disc in front of me, nor a ruler and therefore without) measuring, I’d suggest that the outermost diameter is 3x diameter of the innermost.

Therefore your pit count on the outermost edge is

piDe = 3*piDi

Start = piDi, end = 3piDi - your sectors are not spread evenly across the disc, it’s a sliding scale.

Using the pit length from the CD/DVD/Bluray specification, you can divide the first & last circumferences of the disc, and the actual data read rate to determine the RPM’s at those points.

What we have found from the above is the CHANGE between start and end, and the RPM’s at those points on the disc. The actual reading position on the disc is the integral of the formula for the change - urgh

Now for the fun part -

Assuming the tracks are constantly the same distance apart, and having assumed that the pits are spread consistently.

the formula for a area in a circle is pi*Rsquared or pi*(D/2)squared.

Since we don’t start at the centre of the disc, we have to remove the centre area (which is conveniently the start).

The total pits at the start is [pi(Di/2)squared-pi(Di/2)squared]/(pit density*space between tracks) = 0*

The total pits at the end is [pi(De/2)squared- pi(Di/2)squared]/(pit densityspace between tracks)

pi(3Di/2)squared-pi(di)squared)-pi(di/2)squared]/(pit density*space between tracks)

So now, your actual progress through the discs diameter (between the lowest & highest RPM) is actually (pits read)squared / (total pits)squared.

Unfortunately, this method requires the program to have calculated the RPM at both start & end of the readable areas before calculating the RPM, which assumes the same read characteristics each time the disc is read, which may or may not be the case.

So now your current/instantaneous RPM = Progress*(Max RPM-Min RPM) + Min RPM.