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!

Concurrent MIDI Changes Scripts

MIDI Changes scripts are naturally multitasking, so they appear to run concurrently. That means that all scripts are processed on each beat. However, scripts are actually handled in sequence, each being processed just before its Voice (or Percussion) sounds are processed. The Percussion script and sounds are handled first, then Voice 1 through Voice 8. Thus, a Voice 1 script can modify a parameter for a later Voice on that same beat. For example, it could insert a chord character into the Voice 2 Chord Pattern at the position for the current beat, and Voice 2 would play that chord on that same beat. On the other hand, if a Voice 2 script modifies a Voice 1 parameter, that change won't take effect until the following beat, since Voice 1 sounds have already been dealt with on the current beat. Nevertheless, there are many cases where this timing is not an issue. Suppose, for example, that you want to change Note Lag randomly (or cyclically) on a beat-by-beat basis to give a more human feel to the performance. The script would have a single Wait, followed by the Lag change:
W=1            ;Wait 1 beat
l1=?(0,5)      ;Update Voice 1 Lag

This script would run completely on every beat, so the Voice 1 Lag value would be different on every beat. That would be true even if this is a Voice 2 or later script... it would simply mean that the Lag used on the current note was set on the previous beat.

On the other hand, if you are using a computer key state to control a parameter, you can minimize latency by acting on the current beat. If the controlled parameter is in Voice 1, you would thus need to test the key state in or before the Voice 1 script.

Since these once-per-beat scripts must necessarily have only a single-beat Wait, they require a bit of planning to be used for controlling slower features of the performance, such as changes that take place once per measure or once per verse.

A good solution is to dedicate one script to all once-per-beat changes, no matter what voices are affected. This should be the Percussion script for the quickest response for the most voices. Note that you can use the Percussion script even if Percussion itself is toggled off. Just make sure that the Changes button in the Percussion dialog is active.

For examples of using the Percussion script to control multi-beat Percussion patterns as well as providing current-beat handling of key states, see the Percussion script listings in AirBand and AirGuitar.

See also Changes Script Tips and Tricks, Changes Script Overview, Changes Script Editor, MIDI Voice Setup Dialogs, Pitch-to-MIDI dialog, Pitch Track Toolbox - Overview


Questions? Comments? Contact us!

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