Oscillator
Overview
Numerically-controlled oscillator
Discussion
Implements a discrete-time oscillator by using the input signal to adjust the nominal frequency driving a sinusoid generator. The output is \(y[n] = \sin (omega_o nT + \sum_{k=0}^n x[k] + \phi)\) where \(\omega_o\) is the nominal frequency in radians/s, T is the sample period and \(\phi\) is the starting phase in radians (default is 0).
The internal variable freq caches the nominal frequency in units of radians/second. phase maintains the current phase in radians between blocks
Module Pack
Advanced
ClassID
classID = 1300
Type Definition
typedef struct _ModuleOscillator
{
ModuleInstanceDescriptor instance; // Common Audio Weaver module instance structure
FLOAT32 freqhz; // Nominal oscillator frequency in Hz
FLOAT32 startPhase; // Starting phase oscillator in multiples of pi radians
FLOAT32 freq; // Current oscillator frequency
FLOAT32* phase; // Current oscillator phase
} ModuleOscillatorClass;
Variables
Properties
| Name | Type | Usage | isHidden | Default Value | Range | Units |
|---|---|---|---|---|---|---|
| freqhz | float | parameter | 0 | 0 | 0:5000 | Hz |
| startPhase | float | parameter | 0 | 0 | -1:1 | x pi radians |
| freq | float | state | 1 | 0 | Unrestricted | radians/s |
| phase | float* | state | 1 | [1 x 1] | Unrestricted | radians |
Pins
Input Pins
| Name | control |
| Description | Frequency control input |
| Data type | float |
| Channel range | 1 |
| Block size range | Unrestricted |
| Sample rate range | Unrestricted |
| Complex support | Real |
Output Pins
| Name | out |
| Description | Oscillator output |
| Data Type | float |
Matlab Usage
File Name: oscillator_module.m
This module implements a sinusiodal oscillator whose output frequency is
determined by the input signal. It is derived from the sine generator.
Arguments:
NAME - name of the module.
QUAD - true means the output is 2 channels in quadrature
Copyright (c) 2026 DSP Concepts, Inc.