How to perform a CD ripping session with tracks Normalization
An important feature of CD ripping is the capability to set the overall volume of tracks to a certain target volume, a process known as Normalization. Due to volume differences between audio tracks, normalization allows you to set the volume consistent between tracks during the encoding process. In this process, the level of each track is adjusted so that the loudest moment (technically the largest sample value) is adjusted to peak at the largest allowed value by turning up the gain the required amount.
On the graphic below you can see the waveform of a CD track ripped without normalization enabled
while on the graphic below you can see the waveform of the same CD track ripped with normalization enabled
As already seen inside the How to perform a CD ripping session tutorial, Active Sound Recorder supports CD ripping of single tracks and CD ripping automation which allows ripping multiple tracks in one single shot. As a further feature it allows performing normalization of CD tracks by applying a slightly different procedure to ripping sessions. Respect to the majority of normalization algorithms, Active Sound Recorder allows configuring not only the highest peak to reach a specified level (expressed in percentage) but also to apply normalization only to peaks belonging to a specified range of volume levels.
When normalization is not enabled, the ripping session is performed through one single operation: CD track's raw sound data is extracted from the CD and sent directly to the encoder in charge; when normalization is enabled through the CdRippingNormalizationEnable method, each time a CD ripping session is started through the CdRippingStart method (for ripping of single tracks) or through the CdRippingAutomationExec method (for ripping of multiple tracks) the control will perform three distinct operations for each track:
|1.||extraction of the CD track's raw sound data into a memory buffer|
|2.||normalization of sound levels inside the memory buffer|
|3.||encoding of normalized sound data to the final destination (file on disk or memory buffer)|
As you may understand, respect to normal ripping sessions the container application will need to synchronize itself with a different set of events; CdRippingStarted and CdRippingStopped events (for ripping of single tracks) and CdRippingAutomationStarted and CdRippingAutomationStopped events (for ripping of multiple tracks) will be still fired in order to inform about the start and end of the ripping session then, during ripping, the following events will be fired:
|•||CdRippingTrackExtractPercentage event informs the container application about the advancement of extraction of the CD track's raw sound data into a memory buffer (see point 1. above)|
|•||CdRippingNormalizePercentage event informs the container application about the normalization advancement (see point 2. above)|
|•||CdRippingEncodePercentage event informs the container application about the encoding advancement (see point 3. above)|
A sample of usage of CD ripping with normalization in Visual C++ 6 and Visual Basic 6 can be found inside the following sample installed with the product's setup package: