Data AcQuisition And Real-Time Analysis
Scope - Spectrum - Spectrogram - Signal Generator
Software for Windows
Science with your Sound Card!
The following is from the Daqarta Help system:



Spectrum Analyzer

Signal Generator

(Absolutely FREE!)


Pitch Tracker


DaqMusiq Generator
(Free Music... Forever!)

Engine Simulator

LCR Meter

Remote Operation

DC Measurements

True RMS Voltmeter

Sound Level Meter

Frequency Counter
    Spectral Event

    MHz Frequencies

Data Logger

Waveform Averager


Post-Stimulus Time
Histogram (PSTH)

THD Meter

IMD Meter

Precision Phase Meter

Pulse Meter

Macro System

Multi-Trace Arrays

Trigger Controls


Spectral Peak Track

Spectrum Limit Testing

Direct-to-Disk Recording



Frequency response

Distortion measurement

Speech and music

Microphone calibration

Loudspeaker test

Auditory phenomena

Musical instrument tuning

Animal sound

Evoked potentials

Rotating machinery


Product test

Contact us about
your application!

Synth Macro

Macros: Synth#B, Synth#R, Synth#M


The Synth macro command provides options that are not included in the Synthesizer Control Dialog. Although it consists of only the single Synth key word, you specify the desired option via # followed by a single character, as in Synth#B=UB to set Pitch Bend (below).

MIDI supports multiple simultaneous voices or "channels". The Synth dialog assumes a default MIDI channel of 0 for all controls, but these macros allow you to specify channels up to 9 by adding a single digit to the command. For example, to apply Pitch Bend on channel 5 you would use Synth#B5=UB instead of just Synth#B=UB.

Pitch Bend:

When the Synth is playing a continuous MIDI note, Pitch Bend can be applied via Synth#B=UB, where UB can be any value or expression. The value will be limited internally to the range of 0-16383, where 8192 gives no bend; the note will be played at its standard frequency. A value of 16383 shifts the pitch up to the maximum specified by the Pitch Bend Range (below), which defaults to 2 semitones up or down. A Pitch Bend value of 0 will shift the pitch down by the same amount.

Pitch Bend thus has a resolution of 1/8191 of the equivalent Range. Even if Range is set to give +/-24 semitones, Bend still has a resolution of 24 / 8191 or about 0.003 semitones, or about 0.3 cents. This is far better than the resolution of the human ear, which is more like 2 cents.

If you change the Synth MIDI Note number of an ongoing tone after setting Pitch Bend Range and Pitch Bend, the relative shift remains. For example, bending the current tone an octave low then changing the note number gives new tones that are all one octave below standard.

You can use Pitch Bend in a macro loop or with multitasking macros to provide vibrato. This is a form of frequency modulation, but realize that it is not like the normal linear frequency modulation provided by the Modulation dialog.

For example, consider a typical FM signal at 220 Hz with a deviation of +/-110 Hz that will thus swing from 110 to 330 Hz. If instead we set Synth MIDI Note to 57 (A3 = 220 Hz) then a bend of 7 semitones upward to 64 will give E4 = 329.628 Hz, while 7 semitones downward to 50 will give D3 = 146.832 Hz. This is symmetrical in pitch but not frequency.

Pitch Bend Range:

Pitch Bend Range is set via Synth#R=UR, where UR can be any value or expression. The maximum Range is limited internally to 24 * 128 = 3072, which gives a Bend range of +/-24 semitones. The default is 2 * 128 = 256 or +/-2 semitones.

Direct MIDI Command:

MIDI synthesizers have many more commands and options than are supported by controls in the Synth dialog. The Synth#M=UM macro supports every command that your synth can handle, although it is not especially convenient to use.

This is essentially a macro implementation of the M Direct MIDI command used with MIDI Changes scripts for the Pitch-to-MIDI dialog. See the relevant Help topic for more details.

As a simple example, consider the "Note On" command. This consists of 3 sequential data bytes 9c, nn, vv, where c represent the channel number, nn is the note number, and vv is the velocity. For the default Synth channel 0, note number 60, and maximum velocity (127), the hexadecimal values would be 90, 45, 7F. However, the Synth#M requires the bytes to be combined into a single value, with the low byte being the one sent first. So the full command would be Synth#M=h7F4590.

See also Synthesizer Control Dialog.


Questions? Comments? Contact us!

We respond to ALL inquiries, typically within 24 hrs.
Over 35 Years of Innovative Instrumentation
© Copyright 2007 - 2022 by Interstellar Research
All rights reserved