IX Magic 1.19

Installation

"IX Magic.dll", "IX Magic.html" and the folder "IX Magic" should be placed in your Buzz Generators folder.

What does it do?

It's a Peer/MIDI event sequencer, whatever that is. It's good, go with it. Feed it notes to make cool stuff happen.

It is a little bit complicated though, so it'd probably be a good idea to read some/all of this manual.

Global Parameters

Parameter Description
MIDI Input Enable/disable MIDI input. Note that the MIDI configuration in Buzz must be set up properly for this to work.
MIDI Channel Which channel to receive MIDI messages on. Can be configured to listen to a single channel or all of them.
Velocity Scale Velocity scaling percentage. Sequences, Steps and Events inherit this value by default.
Command See Commands.
Argument Argument for command if present. See Commands.

Track Parameters

Parameter Description
Note Note value. See Triggering and Recording.
Velocity Velocity value. See Triggering and Recording.
MIDI Channel Used in recording to preserve MIDI channel information. See Triggering and Recording.
Sequence Force direct triggering of specific Sequence or all Sequences. If the value is zero, all Sequences will be triggered. Values greater than zero specify a Sequence in the Object List, with the Sequence at the top of the list being 01. Direct triggering bypasses the list of trigger notes allowing a Sequence to be triggered without a note or by a note that it would not otherwise respond to. All other parameters work in conjunction with direct triggering. See Triggering.
Trigger Delay (% of tick) Delay note by percentage of a tick. Allows notes to happen between ticks.
Note Cut (% of tick) Force note-off after percentage of a tick. Allows note duration to be less than one tick.

Machine Attributes

These attributes are per-instance configuration options. You can access them via the Options menu of the main dialog. If you want to change the default setting for new instances you can do so by editing "Buzz/Gear/gear.xml".

Attribute Description Values Default
Default Anti-Flam (ms) Default Anti-flam time (approx.) for objects which don't specify their own value. See Anti-flam. 0-65535 20
Default Anti-flam Mode Default Anti-flam mode for objects which don't specify their own value. See Anti-flam. 0=Common, 1=Notes Notes
Select new machines for state capture Automatically select new machines for inclusion in song state capture. See Machine States. 1=On, 0=Off Off
Capture song state on Page change Whether to capture machine states before changing the active Page. See Machine States. 1=On, 0=Off Off
Restore song state on Page change Whether to restore captured machine states after changing to a different Page. See Machine States. 1=On, 0=Off Off
Restore song state on load Whether to restore captured machine states when the song is loaded. See Machine States. 1=On, 0=Off Off
Restore song state on stop Whether to restore captured machine states when the song is stopped. See Machine States. 1=On, 0=Off Off
CC Prev. Page Sets the MIDI CC message to use for the Previous Page action. Also available from the MIDI Dialog. 0-127 21
CC Next Page Sets the MIDI CC message to use for the Next Page action. Also available from the MIDI Dialog. 0-127 22
CC Set Page Sets the MIDI CC message to use for the Set Page action. The value of the CC is the number of the Page to activate. Also available from the MIDI Dialog. 0-127 24
CC Tap tempo Sets the MIDI CC message used to tap out the Page tempo. Also available from the MIDI Dialog. 0-127 23
CC Reset machine Sets the MIDI CC message to use for the Reset Machine action. Also available from the MIDI Dialog. 0-127 23
Enable Page events Master switch to enable/disable all Page events. See Page events. 1=On, 0=Off On
Enable Page activation events Whether activation events will trigger when changing to a new Page. See Page events. 1=On, 0=Off On
Enable Page play events Whether to activate play events when playback is started. See Page events. 1=On, 0=Off On
Enable Page stop events Whether to activate stop events when playback is stopped. See Page events. 1=On, 0=Off On
Enable Page seek events Whether to activate seek events when playback position is changed. See Page events. 1=On, 0=Off On
Enable Page record events Whether to activate record events when recording is started. See Page events. 1=On, 0=Off On

Pattern Commands

The following can be entered in the command/argument columns of the pattern editor.

Command Description
00 - Set Page Changes the active Page. Argument is Page number (zero based index). Page activation events will be triggered, as will automatic machine state capture/restore if enabled. Warnings related to machine state capture will be issued unless previously disabled.
01 - Reset Resets all Sequences, Steps and Events on the current Page. Any queued Events are cancelled.
02 - Record Mode Zero for replace, non-zero for overdub. See Recording

Machine Context Menu

Command Action
Open Opens the Main dialog.
Resources Opens the Resources dialog.
Machine states Opens the Machine States dialog.
MIDI Opens the MIDI dialog.
Messages Opens the Messages dialog.
Reset Resets the machine to its initial state.
Show PAL Opens BTDSys PAL2

Double-click

By default, double-clicking the machine opens the Main dialog. To access the machine parameters window, hold ALT while double-clicking.

MIDI Triggering

MIDI triggering is fairly simple. When a MIDI note is received, any Sequences set to listen for that note will fire. Events that are activated belong to that note on that channel and will only respond to the corresponding note-off on the same channel.

Pattern Triggering

Pattern triggering is similar but there are some additional things to be aware of. Each track in the pattern editor behaves just like a MIDI channel (internally they are regarded as the same thing), so Events triggered by one track will not be ended by another track (See Recording for the exception to this rule).

Note History

Each track maintains a note history, so each Buzz style note-off will end the most recent note on that track. You can explicitly end a given note by placing a zero in the velocity column alongside the desired note. Tracks will also remember the last values used in the note/velocity columns, so a note without a velocity will use the last (non-zero) velocity entered (or 0x7F) and a velocity without a note will use the last note entered.

Direct Triggering

It is possible to trigger a specific Sequence directly, either with or without a note by using the Sequence column. If the Sequence column contains a valid Sequence index, any note/velocity information will be passed directly to that Sequence and other Sequences will not respond. In this way it is possible to trigger a Sequence using a note which the Sequence would not normally respond to, or even with no note at all.

Recording

When recording incoming MIDI into patterns, Magic will try to keep note on/off pairs together on the same track where possible. The track MIDI Channel parameter is used to store the channel of the incoming note for playback, so notes spread across multiple tracks will behave as if they were on the same channel and the Trigger Delay and Note Cut parameters will be used to maintain the timing and length of notes. Magic will try to keep the recorded data as tidy as possible for easier editing.

Record Mode

The record mode can be set via Options->Record Mode in the Main Dialog or by using pattern command 02. There are two recording modes. "Replace", the default mode, will erase existing pattern data, clearing each row before attempting to store incoming notes. "Overdub" will avoid overwriting existing data.

Magic will issue warnings if either there is no track available to record on, or if the pattern tick resolution is too coarse to recreate the note timing.

Notes

Acknowledgements

Thanks to Ed Powley for his PeerLib upon which this machine is based.

Contact

If you've got any comments, requests, bug reports, whatever, you can find me lurking in the forum (username 'IX') or you can mail me via deenine[at]hotmail[dot]co[dot]uk (but don't expect a quick reply.)

Disclaimer

I'm still not very good at this programming lark, so use this machine at your own risk. If it kills your computer or causes you severe embarrassment, I can't be held responsible.

- IX