BTDSys PeerChord
Installation
Put BTDSys PeerChord.dll in your Gear\Generators folder.
Overview
PeerChord is a chord/arpeggio player, which can control any other machine in
Buzz (provided the machine supports notes and tracks). Also facilities for
'humanisation' (simulating a human player) are provided.
- Add PeerChord to your song.
- You don't need to connect any other machines to PeerChord.
- Right click PeerChord and select Assign Parameter, then click an unassigned
track.
- In this dialog, choose the machine you want to control, and either a note
parameter, velocity parameter, or both.
- Click OK.
- Add at least six tracks to the target machine.
- Add a pattern to PeerChord, playing notes.
- If you want to control more than one parameter from the same PeerChord, add more
tracks to the machine (Pattern view, Ctrl +). Then assign them as above.
Parameters
- Root - sets the root note (lowest note) of the chord.
- Chord Type - sets the type of chord to use. None plays single notes,
and Custom allows you to define your own chord using the Custom parameters.
- Velocity - the velocity (volume level) of the chord.
- Random Velocity Deviation - sets how far from the set velocity the notes may
stray at random (to simulate the slight variations in velocity of a human player).
- Delay Length - Depending on the Delay Mode used, either sets the time to delay
notes by (simple), the maximum of the random delay (random), or the time
between consecutive notes (strum).
- Delay Mode - Sets the mode used for delaying.
- Off triggers all notes immediately
- Simple delays all notes by a set amount
- Random delays all notes by different random amounts (as if a keyboardist did
not hit all notes at precisely the same time)
- Strum modes simulate a guitarist's strum down or up the strings.
Note that these modes are overridden if any arpeggio mode is set.
- Arpeggio Mode - Sets the type of arpeggio to use.
- Off plays a simple chord (all notes at once)
- Up and Down simply loop up or down the notes in the chord.
- Up/Down and Down/Up swap directions when the first or last note in
the chord is reached.
- Random chooses notes from the chord at random.
- 'Brownian' selects the next note based on the previous note. The next note
will either be one step higher, one step lower, or the same as the previous note. (The
name's in quotes because I'm not sure if it's technically correct, but it sounds cool)
- Arpeggio Steps - Sets the number of notes to use for the arpeggio. If this is more
than the number of notes in the chord, octaves of the notes are used to obtain the required
number of notes.
Note that this is not necessarily the same as the time taken for one complete cycle of the
arpeggio. It is for up and down modes, but for up/down and down/up the length of a complete
cycle is actually 2 x (Arpeggio Steps - 1).
- Arpeggio Step Length - Specifies the duration between consecutive steps of the
apreggio.
- Arpeggio Reset - Sets if the arpeggio is reset to its start point every time a new
note is played (this applies both to tracked notes and MIDI notes). Note that if no note is
currently playing (ie if a note off was played or you lifted your finger from the MIDI key) the
arpeggio is reset anyway.
- First Track - This sets the first track of the target machine to use. At most 6 tracks
will be used, so if you set this to 2 (for example), you should ensure tracks 2, 3, 4, 5, 6 and 7
are available on the target machine.
- Custom Notes 2-6 - Sets the notes used for the custom chord (if the Chord Type parameter is
set to Custom). A chord always contains its root note, and up to 5 other notes above the root. These
parameters set the offsets (in semitones) of these notes.
It is normal to specify these notes in ascending order (lowest to highest), but if you are aiming for
special effects with the strum or arpeggio modes, you may use a different order.
For help in setting these offsets, if you have Microsoft Excel (or compatible) and play guitar, you
may wish to use the included "BTDSys PeerChord Guitar Chord Finder.xls" to convert guitar chords into
offsets.
Attributes/MIDI functionality
The attributes of the machine all relate to MIDI functionality. If you play a note on a MIDI
keyboard, PeerChord will play the current chord type with the MIDI note as root note, and with
whatever delay/arpeggio settings are specified.
- MIDI channel - the MIDI channel the machine listens to, or 0 disables MIDI
functionality.
- MIDI track - the track on the PeerChord machine which receives the MIDI notes.
- MIDI transpose - allows incoming MIDI data to be transposed up or down by upto 2 octaves.
Note that a value of 24 represents no transposition, 0 represents down 24 semitones (2 octaves), and
48 represents up 2 octaves.
- MIDI velocity - if this is set to 1, the Velocity of the chord is taken from the velocity
of the MIDI key pressed. If it is set to 0, the value of the Velocity parameter is used.
- MIDI snap to tick - specifies whether chords are triggered immediately (0), or on the next
tick (1). If Arpeggio mode is active, the arpeggio is always triggered on the next tick.
Note that MIDI support on PeerChord is monophonic, ie only the most recently played note
is used.
Other notes
- PeerChord uses hack methods to trigger notes at times other than on the tick. However, it is
possible that this could cause problems with some machines or with future versions of Buzz. Also
the Record function in Buzz will not record PeerChord's parameter changes into the target machine's
patterns.
If you wish to disable the hack methods, please ensure:
- Delay Mode is set to Off
- Arpeggio Step Length represents a whole number of ticks.
- MIDI snap to tick is set to 1 (on)
Contact
If you have comments or suggestions, or if you find any bugs
please
email me.
This machine is DONATIONWARE, so if you like it and want to use it guilt-free,
send me something cool (eg CDs, hardware, money etc).
Email for details of how to get stuff to me.
Also visit my website (y'know, if you're bored).
Thanks to everyone who alpha tested this machine for me and suggested features/pointed out bugs
(they know who they are, which is good because I've forgotten)
And especially Cameron Bonde (Vectrex) for passing on vital technical info from Oskari, and Raśl
Reales for giving me the original idea.
Docs and code ©Ed Powley (BTDSys), July/August 2002