Calculate disk RPM during burn and verify


I am attempting to write a freeware alternative to the ImgBurn .ibg file plotting capabilities of DVDInfoPro.

LIGHTNING UK! suggested I ask this forum for help with the burn/verify disk RPM calculations.

I currently calculate the RPM of CLV drives this way :

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.

If anyone has an alternate solution based on the data contained in the ImgBurn .ibg files I would be very appreciative.

Thank you.

Your formula confuses the shit out of me… but, I can tell you that:

at 1X speed for CD the disc needs to spin at ~1.2 to 1.4 meters/second.

at 1X speed for DVD single layer the disc needs to spin at ~3.49 meters/second.

at 1X speed for DVD dual layer the disc needs to spin at ~3.84 meters/second.

With the above and a little algebra, you should be able to determine what RPM the disc is spinning at each location on the disc.


Might be worth going to some where like Sourceforge and looking for some OSS that can do the same and look at the code it uses.

[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.
For a case at the start (sector 0);
RPM = Write Speed * (Media Max RPM-Media Min RPM)(1-0)+min RPM.
=Min RPM +Write Speed
Difference 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:

  1. assume that pits are packed with the same density from inner most point to outermost point.
  2. 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 :stuck_out_tongue:

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 piRsquared 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 densityspace between tracks) = 0
The total pits at the end is [pi(De/2)squared- pi(Di/2)squared]/(pit density
space 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.


Just wanted to thank everyone for their responses.

@ [B]RichMan[/B] - Your response lists the 1X linear velocity for CD’s, DVD’s and DL DVD’s. Can you give me a link to a reference for that information and possibly the 1X linear velocity for HD DVD’s and BluRay as well ?

Can you provide the corresponding 1X data rate for those linear velocities ?


@ [B]debro[/B] - It looks like the major change you made to my original formula is “(pits read)[B]squared[/B] / (total pits)[B]squared[/B]” which gives me the sliding scale I was lacking.

Thanks for the suggestion. I have incorporated it into my calculations.

Now, if I can find (Or calculate based on linear velocity and data rate) accurate maximum (Sector 0) and minimum (Last sector) RPM’s for each of the disk types I should be able to accurately calculate the instantaneous RPM of the disk while burning and verifying.

Thanks again.

I have no link since I get these numbers from physical (paper) specs. Here is some more info:

Sector size 2352 bytes
Sectors/second 75
Nominal velocity 1.4 meters/second
Nominal track pitch 1.6µ

Sector size 2048 bytes
Sectors/second 676.1786600496
Nominal velocity (single layer) 3.49 meters/second
Nominal velocity (dual layer) 3.84 meters/second
Nominal track pitch 0.74µ

Sector size 2048 bytes
Sectors/second 2230.56964721
Nominal velocity 6.61 meters/second
Nominal track pitch 0.40µ

Bluray 1X
Sector size 2048 bytes
Sectors/second 2195.1158671955
Nominal velocity (23.300GB) 5.28 meters/second
Nominal velocity (25.025GB) 4.917 meters/second
Nominal velocity (27.020GB) 4.554 meters/second
Nominal track pitch 0.32µ

I believe these numbers are correct but no guarantee.

Thank you [B]RichMan[/B] !

You provided the missing information I had not been able to find while scouring the Internet.

Using [B]debro’s[/B] contribution to my original formula I will be able to more or less accurately determine my instantaneous diameter (or radius) and then calculate the circumference.

From your information I can derive the 1X sectors/meter for each type of media.

The ImgBurn plotting file provides elapsed time and sectors read.

Given all this I should be able to fairly accurately calculate the RPM required to write/read the number of sectors in the elapsed time.

I will let you know when I get it done.

Thanks again.