SampleAndHold
Overview
Sample and hold module
Discussion
An audio rate sample and hold module for use with the Audio Weaver environment. The module has two input pins: trigger and data. The trigger signal block size must be either 1 or the same block size as the input signal. If the trigger signal block size is 1 then the trigger applies to all the samples.
The output samples follow the input samples whenever the trigger sample is not zero. The first zero sample in the trigger holds the prior input sample for output until the next non-zero trigger sample. The module is designed to work with multichannel data.
There are two operating modes. If the trigger pin has a single channel, then the trigger is applied to all of the interleaved data channels. Otherwise, if the trigger has the same number of channels as the data, then a separate trigger is applied to each channel.
Internally, the module stores the sampled data within the value array. This array has 1 sample per input channel.
Module Pack
Advanced
ClassID
classID = 1316
Type Definition
typedef struct _ModuleSampleAndHold
{
ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure
FLOAT32* value; // Holds the last data value which was sampled. This is an array so that multiple channels can be supported.
} ModuleSampleAndHoldClass;
Variables
Properties
| Name | Type | Usage | isHidden | Default Value | Range | Units |
|---|---|---|---|---|---|---|
| value | float* | state | 0 | [1 x 1] | Unrestricted |
Pins
Input Pins
| Name | trig |
| Description | trigger signal |
| Data type | int |
| Channel range | Unrestricted |
| Block size range | Unrestricted |
| Sample rate range | Unrestricted |
| Complex support | Real |
| Name | in |
| Description | input data |
| Data type | {float, int, fract32} |
| Channel range | Unrestricted |
| Block size range | Unrestricted |
| Sample rate range | Unrestricted |
| Complex support | Real |
Output Pins
| Name | out |
| Description | output data |
| Data Type | {float, int, fract32} |
Matlab Usage
File Name: sample_and_hold_module.m
M=sample_and_hold_module(NAME)
Creates a sample and hold module for use with the Audio Weaver
environment.
Arugments:
NAME - name of the module.
Copyright (c) 2026 DSP Concepts, Inc.