Wave One Shot Player
About This Guide
This application note describes the Wave One Shot Player module in AudioWeaver and demonstrates its uses.
The Wave One Shot Player module is a WAV file player. The module plays out the .wav file when triggered in an awd. The module can be found in Sound Design->WavePlayer-> WaveOneShotPlayer in the Module Bar on the left-hand side of the AudioWeaver Designer.
Figure 1: WaveOneShotPlayer module location
Module Functional Description
The WaveOneShotPlayer module is WAV file player. This module three different variants along with their Fract32 versions.
Wave One Shot Player RAM
Wave One Shot Player RAM Fract32
Wave One Shot Player Flash
Wave One Shot Player Flash Fract32
Wave One Shot Player FFS
Wave One Shot Player FFS Fract32
Wave One Shot Player RAM & Fract32
The RAM based Wave One Shot Player reads the audio data embedded from samples stored within the module.
Figure 2: Wave One Shot Player RAM
Input/Output Pins:
The Wave One Shot Player RAM has two input and one output pins.
Trigger input pin is a control value and is used to trigger the audio playback file. It is a Boolean value pin and requires a Low to High input for the playback to start and continues until the end of the WAV file and then stops. Retrigger while being in the middle of the playback has no effect and is ignored.
In the Figure 1 shown below the module is being triggered by an Impulse Source module which generates an impulse every 5msec.
Figure 3: Trigger to Wave One Shot Player module.
fRatio is the second input pin and is a float data type. This input pin is used to specific the sample rate ratio or the pitch factor that can be applied on the wave samples to produce the output audio. In the above example the fRatio is being controlled by a DC source which acts as a pitch controller for the module.
Audio output pin is the first output pin in this module and produces the processed audio samples from the wave files.
isPlaying is the second optional output pin which is a Boolean flag indicating the playback state. The value is set to 1 if playback is ongoing and 0 if not.
Variables:
The variables are the first tab in Module properties which is Rt Click on the module View Properties.
Figure 4: View Properties
Variables | Description | Default Value |
smoothingTime | The smoothing time in milliseconds is applied on the pitch factor per block. | Default value is 10msec. |
smoothingFactor | Is for updating the rate for the smoothing coeffs (per block). | Default value is 4. |
Arguments:
Arguments can be found Rt Click View Properties second tab in the properties as shown. The following table shows the list of arguments in the Wave One Shot Player RAM module, explanations’ along with their respective default values.
Figure 5: Argument Tab for WaveOneShotPlayerRAM
Arguments | Description | Default Value |
numChannels | Number of interleaved channels in the audio output pin. | By default, numChannels = 1. |
blockSize | Number of samples per output channel. | By default, blockSize = 256. |
sampleRate | Sample rate of the output signal, in Hz. | By default, SAMPLERATE = 48000. |
fileName | Name of the wave file to be played. | By default, WAVFILE = ''. |
InterpolationMode | interpolation method. Linear Cubic | By default, INTERP = linear. (Only in floating point variant) |
normalizedPlaybackRate | normalized playback rate. | By default, NRATE = 1. |
maxPlabackRate | Maximum playback rate (relative to NRATE). | By default, MRATE = 1. |
isplayingpin | Boolean that provides the current playback state (PLAYING=1, STOPPED=0) |
Workings
The RAM module starts playback of a wave file provided by the user which is stored as a buffer array. The example below describes the workings of a wave one shot player RAM module. In this example we are taking two RAM modules and have stored two short wav files. The two RAM modules are working alternatively in a Ping-Pong manner. DC sources named PitchA and PitchB are used to vary the pitch of RAM1 and RAM2 respectively. In this example we are using an Impulse source for both the wave modules as a trigger to start playback of the wave files respectively. RAM2 has been given a delay of 2 msec which in turn creates the Ping Pong effect. The wav file used here is a Bell sound.
Figure 6: Wave One Shot Player RAM Example
Wave One Shot Player FFS & Fract32
Figure 7: Wave One Shot Player FFS
Input/Output Pins:
The Wave One Shot Player FFS has three input and one output pins. The added input pin is explained below whereas the the rest remain the same as for RAM.
fsInstance is the second input pin and is an integer data type. This input pin provides the instance address of the flash file system wrapper and must be valid to be ready to use.
Variables:
The variables are the first tab in Module properties which is Rt Click on the module View Properties. In this case the variables are the same as in the case of RAM module.
Arguments:
Arguments can be found Rt Click View Properties second tab in the properties.
Arguments | Description | Default Value |
numChannels | Number of interleaved channels in the audio output pin. | By default, numChannels = 1. |
blockSize | Number of samples per output channel. | By default, blockSize = 256. |
sampleRate | Sample rate of the output signal, in Hz. | By default, SAMPLERATE = 48000. |
fileName | Name of the wave file to be played. | By default, WAVFILE = ''. |
InterpolationMode | interpolation method. Linear Cubic | By default, INTERP = linear. (Only in floating point variant) |
normalizedPlaybackRate | normalized playback rate. 1 corresponds to 1x playback rate. | By default, NRATE = 1. |
maxPlabackRate | Maximum playback rate (relative to NRATE). | By default, MRATE = 1. |
fracbits | Number of least-significant bits for the *fractional* part of the NCO word (word size: 32). | By default: 12 bits. (Only in fixed point variant) |
isplayingpin | Boolean that provides the current playback state (PLAYING=1, STOPPED=0) | By default: False |
muteMod | Used to mute output before changing file in run time. | By default: Blank |
unMuteMod | Used to unmute after reconfiguration. | By default: Blank |
Workings
We are using the same Ping Pong example as in case of the RAM variant of the module. In FFS module variant we have another input which is the fsInstance. In our example we are using the native mode as a target. We are using the SourceInt module with numChannels 2 and blockSize 1 to place the RAM address where the bin file is stored.
Rt Click on the SourceInt module --> Properties --> Array: value Tab --> Column 1 value is the Lower 32 bit that we input, and the Column 2 value is the Upper 32 bit. On a 32-bit system, the user must place the RAM address in Column 1 of the Array: value and column 2 will have the 32-bit address.
Output from SourceInt module with the above configuration is connected to the FFSWrapper module. The instance address of the flash file system wrapper is being provided by an FFS Wrapper module (for more details about the FFS Wrapper module link). The Bin file containing the wave file/files are uploaded in the FFSWrapper which in turn is connected to the fsInstance of the Wave One Shot Player FFS module.
The Output remains the same as that of the Wave One Shot Player RAM modules.
Figure 8: Wave One Shot Player FFS Example
Wave One Shot Player Flash & Fract32
This Wave One Shot Player variant extracts wave data from AWE Flash File System container on the target Flash device, based on wave file argument. User must specify the file name as an argument and can also change file name directly into fileName array as 32-bit packed data during run time.
Figure 9: Wave One Shot Player Flash
Input/Output Pins:
The Wave One Shot Player FFS has three input and one output pins. The added input pin is explained below whereas the rest remain the same as for RAM.
fsValid is the second input pin and is an integer data type. Boolean indicates flash file system is ready.
Variables:
The variables are the first tab in Module properties which is Rt Click on the module View Properties. In this case the variables are the same as in the case of RAM module.
Arguments:
Arguments can be found Rt Click View Properties second tab in the properties.
Arguments | Description | Default Value |
numChannels | Number of interleaved channels in the audio output pin. | By default, numChannels = 1. |
blockSize | Number of samples per output channel. | By default, blockSize = 256. |
sampleRate | Sample rate of the output signal, in Hz. | By default, SAMPLERATE = 48000. |
fileName | Name of the wave file to be played. | By default, WAVFILE = ''. |
InterpolationMode | interpolation method. Linear Cubic | By default, INTERP = linear. (Only in floating point variant) |
normalizedPlaybackRate | normalized playback rate. | By default, NRATE = 1. |
maxPlabackRate | Maximum playback rate (relative to NRATE). | By default, MRATE = 1. |
fracbits | Number of least-significant bits for the *fractional* part of the NCO word (word size: 32). | By default, 12 bits. (Only in fixed point variant) |
isplayingpin | Boolean that provides the current playback state (PLAYING=1, STOPPED=0) | By default, False |
muteMod | Used to mute output before changing file in run time. | By default, Blank |
unMuteMod | Used to unmute after reconfiguration. | By default, Blank |
maxWaveChannels | Max number of channels a wave file can have. | By default, maxWaveChannels = 10. |
maxRatio | Max pitch factor supported. | By default, maxRatio = 10. |
Workings
We are using the same Ping Pong example as above. The only difference here is that the Flash module extracts wave data from AWE Flash File System container on the target Flash device, based on WAVFILE argument. User must specify the file name as an argument and can also change file name directly into fileName array as 32-bit packed data during run time.
Figure 10: Wave One Shot Player Flash Example