Overview
Adds dither to a fract32 signal
Discussion
This module generates uniformly distributed noise in fract32 format and then adds it to an input signal. This type of random noise is often added prior to quantization to change the characteristics of the quantization noise. The module can be configured to generate noise with a uniform distribution (ditherType=1), or a triangular distribution (ditherType=2). For a rectangular distribution, a single random value is used; for the triangular distribution, two uniformly distributed random numbers are added. Setting ditherType=0 causes the input to be passed unchanged to the output.
The shiftBits variable controls how many bits to the right each random value should be shifted prior to being added to the input. Keep in mind that the random values are generated to be full scale (+/-1) and should almost always be shifted to the right. If no shifting occurs with the triangular distribution then the values will often saturate.
Type Definition
typedef struct _ModuleDitherFract32 { ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure INT32 ditherType; // Controls the type of dither used by the module. 0 = no dither. 1 = rectangular distribution. 2 = triangular distribution INT32 shiftBits; // Number of bits to shift random noise UINT32 seed; // Initial seed value for the random number generator } ModuleDitherFract32Class;
Variables
Properties
Name | Type | Usage | isHidden | Default value | Range | Units |
ditherType | int | parameter | 0 | 1 | 0:2 | |
shiftBits | int | parameter | 0 | 16 | 0:32 | |
seed | uint | parameter | 1 | random value | Unrestricted |
Pins
Input Pins
Name: in
Description: audio input
Data type: fract32
Channel range: Unrestricted
Block size range: Unrestricted
Sample rate range: Unrestricted
Complex support: Real
Output Pins
Name: out
Description: audio output
Data type: fract32
MATLAB Usage
File Name: dither_fract32_module.m
M=dither_fract32_module(NAME) Creates a modules which adds dither to a fract32 audio stream. The module can be configured for rectangular or triangular distribution. Arguments: NAME - name of the module.