Data AcQuisition And Real-Time AnalysisScope - Spectrum - Spectrogram - Signal Generator
Software for Windows
Science with your Sound Card!
Contact us about
MIDI Changes Script Buffer Operations
Each of the 8 Voice Setups has associated with it 4 general-purpose input buffers, each of which can hold up to 256 notes.
In the simplest case, a MIDI Changes script would use the Buffer Copy (BC) command to capture a series of live input notes to a buffer. You would then use the Input Select command to tell a voice to take its input stream from the buffer, instead of the live input. The voice would then play those captured notes, automatically repeating when it reached the end of the sequence. In essence, this creates a dynamic Note Pattern.
You can use this sequence as a melodic motif or theme, which you can then modify to allow subtle or dramatic changes over time.
You can copy the original to multiple buffers, modify each differently, and then use Input Select to play them each in turn but still keep the original to be able to return to the theme.
Or you can make only one copy which you keep modifying as it plays, periodically refreshing it from the original before embarking on a new series of modifications.
You can take a short original note sequence, and copy it multiple times to different positions in the same or another buffer to make a longer repeating sequence. You can then modify small sections while retaining the overall theme.
You can use the Set Pointers command to cause a single buffer to loop on any section you choose, in either direction. This allows you to treat a single buffer as a collection of smaller buffers, which you can employ as needed during the performance.
Each time a note is read from a buffer, its position pointer is advanced to point to the next note in the sequence, as defined by the start and end pointers. Notes can be read as often or as seldom as desired: Once per beat, once per N beats, on random beats, etc. The pointer only advances as notes are read, not at any specific rate.
If Hold Beats is set higher than 1 for a voice, the pointer only advances at the start of the Hold interval.
You can use Input Select to set multiple voices to use the same buffer. However, the pointer still advances when each voice reads a note; when multiple voices read the same buffer, the note pattern that any one voice gets may be non-sequential due to intervening reads by other voices. This can lead to interesting effects, but if that is not what you want you should make buffer copies so that each voice has its own.
The Buffer Copy command alone can be used for many modifications, by replacing selected sections of buffer notes with new live input notes, or by moving sections around, or by copying sections with the note order reversed.
The Buffer Copy command looks like:
All buffer commands start with B, followed by a single letter telling what sort of command it is; in this case, C is Copy. As in most buffer commands, v is voice number (1-8) and b is buffer number (1-4).
Since this is a copy command, there are voice and buffer numbers on the destination (left) and source (right) sides. These may refer to the same or different voices and buffers. i0 is the starting index in the destination, and i1 and i2 are the start and end positions in the source. (Other buffer commands have different right side formats.)
You can use expressions for i0, i1, and i2, or their equivalents in other buffer commands. Voice and buffer numbers are normally single-digit constants, but if you want to control them via Changes scripts you can replace them with expressions surrounded by carets like <UA+UB>.
Note: Buffer commands do not allow use of "voice" 9 to specify "all voices".
In addition to use with musical notes, you can use buffers for general-purpose arrays via Direct Array Access commands. This is especially useful for creating lists of arbitrary values for random selection.
Besides the 4 general-purpose buffers, some of the buffer commands can operate on Velocity, Note, or Chord Patterns, designated by V, N, or C instead of a buffer number. See the individual command topics below for details.
Percussion instruments A-F don't have general-purpose buffers, but they do have Velocity patterns that can be accessed by using the instrument letter instead of a voice number.
Buffer File Load commands can load MIDI buffers from text files, and also load macro array buffers Buf0-Buf7 for direct access by MIDI scripts. Also included here are commands to load Buf0-Buf7 from text entered into Daqarta's Notes area.
The complete set of Buffer commands includes:
Questions? Comments? Contact us!We respond to ALL inquiries, typically within 24 hrs.
Over 30 Years of Innovative Instrumentation
© Copyright 2007 - 2020 by Interstellar Research
All rights reserved