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!

MIDI Buffer Fill Commands

Changes: BFvb.i0=(fill,count), Bfvb.i0=(fill,count)

The Buffer Fill (BF) command allows a MIDI Changes script to initialize or modify a section of an input buffer by replacing each note with a constant value. Typically, you would initialize the buffer using the Buffer Copy command, then replace a few notes with the repeated value... think of adding "cha, cha, cha" to the end of a phrase as an accent.

You can use Set Pointers to set start and end note positions in the buffer, and Input Select to use it as the input stream for a Voice.

The format for Buffer Fill is BFvb.i0=(fill,count), where v is Voice number 1-8, and b is buffer number 1-4. i0 is the index (position) where the fill should start, fill is a the MIDI note number to fill with, and count is the number of notes to be affected.

i0, fill, and count may use any unsigned integer or valid expression, including current MIDI control values, random values, current computer keyboard states or mouse position, input or buffered notes, oscillators, and User Variables.

i0 will be limited to the 0-255 buffer range, fill will be limited to the 0-127 MIDI note range, with the exception that 255 may be used for silence. The count value will be limited such that the 256-note buffer size is not exceeded.

The normal Buffer Fill BF command computes the fill value once, and uses it to fill all buffer positions.

Alternatively, you can use a shortened form to fill only the value at the index position. BFvb.i0=n is equivalent to the above form where count = 1. This simplifies using the buffer as an array of arbitrary MIDI values that you can set individually and later use via Buffer Note Values. (Use Direct Array Access to set individual values for other purposes like random selection from a list, including 8, 16 and 32-bit values.)

There is also a Bf variant that recomputes fill for each position. If fill is an expression that includes oscillators or random values, each position may get a different value. This is useful for creating arbitrary bass, rhythm, or melody lines.

For example, Bf21.0=($a(48,72),8) would fill Voice 2, buffer 1 starting from the 0th position, with 8 points from the oscillator $a output.

The oscillator in this example is scaled such that a full cycle would swing between MIDI notes 48 (C3) and 72 (C5). The actual range covered by the 8 points used here would depend upon the frequency of the oscillator.

A use-based (lower case) oscillator $a to $h is usually best for inclusion in fill, because the current output is computed on every use. A frequency-based oscillator $1 to $8 or a beat-based oscillator $A to $H will act as a constant whose value is the current output of the oscillator at the beat when the command is processed.

Although the constant BF command allows a fill value of 255 to set silence, the Bf version limits to the 0-127 range.

You may use either Buffer Fill command with Velocity, Note, or Chord Patterns, designated by V, N, or C instead of a buffer number.

For a Note Pattern, the fill value is stored as-is. For example, 60 is stored as MIDI note 60, which is C4. This is also the default Pattern Key for each voice. When played, however, the current Pattern Key is used; if it is D4 instead of C4 then all notes will be played 2 semitones higher.

Velocity and Chord pattern fills use Velocity and Chord Maps to translate the fill value into a Velocity or Chord Pattern character. You must provide the relevant Map before the fill. Otherwise, an empty map will cause only nulls to be used for filling the pattern.

You may fill a Percussion Velocity Pattern by using A to F instead of a Voice number.

See also Changes Script Buffer Operations, 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