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, Audio 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, Audio 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 a normal ripping session, the container application not only needs to be synchronized with the start and stop of the session through the CallbackForRecordersEvents delegate invoked with the nEvent parameter set to the following values:
• | EV_CD_RIPPING_START (for ripping of single tracks) or EV_CD_RIPPING_AUTOMATION_START (for ripping of multiple tracks) invoked once at the beginning |
• | EV_CD_RIPPING_STOP (for ripping of single tracks) or EV_CD_RIPPING_AUTOMATION_STOP (for ripping of multiple tracks) invoked as soon as the ripping session is completed |
but also with the following events:
• | EV_CD_RIPPING_EXTRACT_PERC 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) |
• | EV_CD_RIPPING_NORM_PERC event informs the container application about the normalization advancement (see point 2. above) |
• | EV_CD_RIPPING_ENCODE_PERC 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# and Visual Basic.NET can be found inside the following sample installed with the product's setup package:
- CdRipperAutomation