Document toolboxDocument toolbox

(8.D.2.5) GranularSynthesisWaveFFS

Overview

Synchronous Granular Synthesis Module Wave FFS

Discussion

This module implements (synchronous) granular synthesis functionality. The module extracts wave samples from AWE Flash File System container on control input pin fsInstance, based on WAVFILE argument. User has to 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.

At instantiation time the output block size and sample rate has to be specified.

The input pin fRatio is a floating-point number and specifies the step size between samples as they are played back. Internally, fRatio is smoothed on a block by block basis using the .smoothingTime variable.

If "playDir" parameter has been selected to "backward" or, if fRatio has a negative value [range 0..-1] and "playDir" parameter has been selected to "auto", the WAV file is played back in backward direction,

The module has input pin named filePos that specifies the starting position of the grains at audio rate. Values in the input pin ranges between 0 and 1, and the actual offset in the file is determined be multiplying it with the file length. The starting offset of each grain is determined internally and the value at that offset is read from filePos.

The module has input pin named panMod that specifies the panning coefficients of the grains at audio rate. Values in the input pin ranges between 0 and 1, the specified value is considered as panning coefficient for left channel. 1-coeff is considered as the panning for right channel.

Optional argument MUTMOD can be used to mute output before changing file in run time.

Optional argument UNMUTEMOD can be used to un-mute output after file is processed in run time.

If any errors occurs in the module, it is captured in the parameter .errorCodes. Please check in Errors.h for the meaning of error code returned.

Type Definition

typedef struct _ModuleGranularSynthesisWaveFFS { ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure INT32 grainSize; // Sets the length of each grain, denoted in milliseconds INT32 grainDensity; // Sets the number of grain samples per second INT32 playDir; // Playback direction, 0=Forward, 1=Backward, 2=Auto (derived from fRatio input pin) FLOAT32 gain; // The peak level of the window INT32 smoothingTime; // Time constant of the pitch smoothing process INT32 windowLength; // Number of coefficients for current window INT32 waveLength; // Number of samples in currently loaded file INT32 fsInstance; // AWE flash file system instance pointer INT32 errorCode; // Captures errors that could arise in the module C code. Appears on the inspector INT32 isReady; // Boolean that indicates the module is not ready to output data INT32 waitForMuteDone; // Internal flag to check if the smooth mute is done INT32 maxGrainSize; // Maximum grain size in ms INT32 maxDensity; // Max density in grains per sec FLOAT32 normRate; // Rate of data used to compute the ratio for normalized players FLOAT32 maxRate; // Highest allowed rate of playback that can be specified UINT32 pinID; // Specifies which control pins are available INT32 maxOverlapGrains; // Number of max. overlapping grains per maxGrainSize INT32 grainSizeSamples; // Length of each grain in samples INT32 interonsetTime; // Time between temporally adjacent grain onsets FLOAT32 waveRatio; // Sample ratio of the wave samples FLOAT32 windowRatio; // Sample ratio of the window coefficients INT32 waveSampleRate; // Actual sample rate of the wave file. INT32 waveNumChannels; // Number of channels in the wave file. INT32 waveBit; // Wave data sample bit resolution. FLOAT32 scaleFactor; // Scale factor for playback rate FLOAT32 smoothingCoeff; // Smoothing (pitch) coefficient INT32 grainIndex; // Current used vector index INT32 interonsetCnt; // Current interonset counter FLOAT32 smoothedFRatio; // Current (smoothed) rate at which audio is read from the input buffer INT32* wavFileName; // Name of wave file to playback FLOAT32* window; // Window coefficients FLOAT32* window_coeffs; // Window coefficients INT32* wavFileNamePrev; // Name of wave file to playback INT32* GrainWavIndex; // Curr wave index of the intermediate vector element FLOAT32* GrainWavIndexF; // Curr wave index fract of the intermediate vector element FLOAT32* GrainWavFStep; // Curr wave step size of the intermediate vector element INT32* GrainEnvIndex; // Curr envelope index of the intermediate vector element FLOAT32* GrainEnvIndexF; // Curr envelope index fract of the intermediate vector element FLOAT32* GrainEnvFStep; // Curr envelope step size of the intermediate vector element INT32* GrainOffset; // Curr grain offset of the intermediate vector element FLOAT32* GrainPanCoeff; // Curr panning coefficient of the intermediate vector element INT32* GrainStatus; // Curr status ("active"/"inactive") of the intermediate vector element void * muteModPtr; // Internal pointer to mute module to mute before reconfiguration void * unMuteModPtr; // Internal pointer to mute module to unmute after reconfiguration UINT32 * fsInstancePtr; // AWE flash file system instance pointer UINT32 * waveBuffer; // State variable holds the start address of the wave file in filesystem. } ModuleGranularSynthesisWaveFFSClass;

Variables

Properties

Name

Type

Usage

isHidden

Default value

Range

Units

grainSize

int

parameter

0

100

1:100

msec

grainDensity

int

parameter

0

10

1:100

 

playDir

int

parameter

0

0

0:2

 

gain

float

parameter

0

1

0:1

 

smoothingTime

int

parameter

0

100

0:1000

msec

windowLength

int

const

0

32

Unrestricted

 

waveLength

int

derived

0

0

Unrestricted

 

fsInstance

int

state

0

0

Unrestricted

 

errorCode

int

state

0

0

Unrestricted

 

isReady

int

state

0

0

Unrestricted

 

waitForMuteDone

int

state

0

0

Unrestricted

 

maxGrainSize

int

const

1

100

0:100

msec

maxDensity

int

const

1

100

0:100

grains per sec

normRate

float

const

1

1

Unrestricted

 

maxRate

float

const

1

5

Unrestricted

 

pinID

uint

const

1

1

Unrestricted

 

maxOverlapGrains

int

const

1

10

Unrestricted

 

grainSizeSamples

int

derived

1

4800

Unrestricted

 

interonsetTime

int

derived

1

4800

Unrestricted

 

waveRatio

float

derived

1

1

Unrestricted

 

windowRatio

float

derived

1

1

Unrestricted

 

waveSampleRate

int

derived

1

0

Unrestricted

 

waveNumChannels

int

derived

1

0

Unrestricted

 

waveBit

int

derived

1

0

Unrestricted

 

scaleFactor

float

derived

1

1

Unrestricted

 

smoothingCoeff

float

derived

1

0.05194

Unrestricted

 

grainIndex

int

state

1

0

Unrestricted

 

interonsetCnt

int

state

1

0

Unrestricted

 

smoothedFRatio

float

state

1

1

Unrestricted

 

wavFileName

int*

parameter

1

[14 x 1]

Unrestricted

 

window

float*

parameter

1

[35 x 1]

Unrestricted

 

window_coeffs

float*

parameter

0

[32 x 1]

Unrestricted

 

wavFileNamePrev

int*

state

1

[14 x 1]

Unrestricted

 

GrainWavIndex

int*

state

1

[1 x 10]

Unrestricted

 

GrainWavIndexF

float*

state

1

[1 x 10]

Unrestricted

 

GrainWavFStep

float*

state

1

[1 x 10]

Unrestricted

 

GrainEnvIndex

int*

state

1

[1 x 10]

Unrestricted

 

GrainEnvIndexF

float*

state

1

[1 x 10]

Unrestricted

 

GrainEnvFStep

float*

state

1

[1 x 10]

Unrestricted

 

GrainOffset

int*

state

1

[1 x 10]

Unrestricted

 

GrainPanCoeff

float*

state

1

[1 x 10]

Unrestricted

 

GrainStatus

int*

state

1

[1 x 10]

Unrestricted

 

muteModPtr

void *

state

1

0

Unrestricted

 

unMuteModPtr

void *

state

1

0

Unrestricted

 

fsInstancePtr

UINT32 *

state

1

 

Unrestricted

 

waveBuffer

UINT32 *

state

1

 

Unrestricted

 

Pins

Input Pins

Name: fsInstance

Description: AWE file system instance pointer

Data type: int

Channel range: Unrestricted

Block size range: 1

Sample rate range: Unrestricted

Complex support: Real

 

Name: fRatio

Description: Specifies playback ratio

Data type: float

Channel range: 1

Block size range: 1

Sample rate range: Unrestricted

Complex support: Real

 

Name: filePos

Description: Start point of the grain, located relative within the samples between 0(start)..1(end)

Data type: float

Channel range: 1

Block size range: 256

Sample rate range: Unrestricted

Complex support: Real

 

Name: panMod

Description: Controls panning for each grain; relative distribution between 0(max left)..1(max right)

Data type: float

Channel range: 1

Block size range: 256

Sample rate range: Unrestricted

Complex support: Real

Output Pins

Name: audio

Description: Output data

Data type: float

Scratch Pins

Channel count: 1

Block size: 256

Sample rate: 48000

 

Channel count: 1

Block size: 256

Sample rate: 48000

 

Channel count: 1

Block size: 256

Sample rate: 48000

MATLAB Usage

File Name: granular_synthesis_wave_ffs_module.m