¬¬
name
jmmcd Peer Meta-I (copyright © James McDermott 2004)
¬¬
purpose
controlling "layers" of synthesizers; triggering envelope controllers automatically; controlling several things from one place; triggering pitch-shiftable delay lines.
¬¬
installation
put the .dll and the .html in your gear/generators directory, and the .bmx in your recycle bin. the rest is for developers.
¬¬
menu options
¬¬ layers: assign the note, and optionally the volume, note-length, and slide-note parameters of generators. notes entered in the Peer Meta-I patterns will be sent to these generators. delayed notes can also be sent to these generators. a note-off in a track in a Peer Meta-I pattern causes a note-off to be sent to the assigned generators, and any delays currently running in the track to be removed.
¬¬ triggers: assign any parameters of any machines. every note-on in the Peer Meta-I patterns will cause an on-value (1 by default) to be sent to these trigger parameters. a note-off will cause a 0 to be sent. an on-value will also, by default, be sent on delayed notes (but see attributes). this feature was originally intended to send a 1 to (eg) Peer ADSR; but some machines, eg drum-machines, can use volume-values as triggers - so you can specify the on-value to be sent using the TrigVal parameter.
¬¬ controls: assign any parameters of any machines. these parameters can be controlled from the Peer Meta-I patterns in the normal way, possibly allowing you to delete some machine columns in the sequencer view.
¬¬ about: instantly regret the presence of an about box.
¬¬
global parameters
¬¬ length: the length of the delay line. 0 indicates no delay.
¬¬ feedback: the factor by which volume is multiplied at each new delayed note.
¬¬ threshold: the volume level below which the delay ceases to generate new notes.
¬¬ shift: the pitch shift, in semitones, applied to each delayed note.
¬¬ inertia: the time, in ticks, it takes one of the para* parameters to reach a new value.
¬¬ trigger value: the value to send to trigger parameters on note-on.
¬¬ para*: the values sent to the assigned parameters.
¬¬
track parameters
¬¬ note: the note sent to each assigned generator.
¬¬ volume: the value sent to the volume parameter of each assigned generator.
¬¬ flags: the subtick-delay and -retrigger values. the first byte (0-F) indicates delay. the second byte (0-E) indicates retriggering. for example, "23" indicates that the note should be first triggered after 2 subdivisions, and retriggered every 3 subdivisions after that. note that the number of subdivisions per tick is set by an attribute with default value 12.
¬¬ note length: the length of note to be played. many machines don't have note-length parameters - in these cases, just don't bother assigning the parameter. note that the target machine is responsible for interpreting the value - so one machine might give you a 4-tick note when sent "4", while another might give a note 4% of the maximum length, or something. if the target machine doesn't have a note-length parameter, but does have a sustain-length parameter, you can control that from here instead.
¬¬ slide note: the note to slide to or from. again, many machines don't have slide-note parameters, and those that do don't all interpret them in the same way.
¬¬
attributes
¬¬ number of subtick divisions: see flags above.
¬¬ trigger on delayed notes: when set to 1, an on-value will be sent to the assigned trigger parameters on every note and every delayed note. when set to 0, nothing will be sent on delayed notes.
¬¬
usage hints
you don't have to use all the features at once! if you just want pitch-shiftable delays, just assign a single layer and set the delay time. if you just want to trigger envelopes with Peer ADSR, just assign a single trigger parameter.
tracks don't work the same way in Peer Meta-I as they do in most peer machines. adding a new track doesn't allow you to control an extra machine. instead, adding an extra track just allows you to play more than one note at the same time - though you have to add extra tracks to the target generators too of course.
when assigning generators, you can assign things to the volume, note-length, and slide-note parameters which aren't volumes, note-lengths, or slide-notes. it's up to the target machine to interpret them!
it's possible to set the delay section up so that some notes from your tracks coincide with notes generated by the delay lines - so that two or more notes try to play through the same generator at the same time. this might be a major source of clicking, non-deterministic melodies (a feature or a bug, depending on your point of view), wasted cpu, and "missing" notes which are cut-off by other, very quiet notes. avoid all these problems by deciding how many delays you want and adjusting the length, feedback and threshold accordingly.
¬¬
known bugs
i don't know anything about midi. does this machine work with midi? should it work differently?
any suggestions or comments are welcome.
¬¬
source code
the source code for this machine is included for educational and collaborative purposes. feel free to work with it. if you make an improvement to the existing machine, please contact me so we can integrate our changes and make an official release. if you want to base a new machine on this code, go ahead (but release the source code for that too). avoid passing off my work as yours, or vice versa.
a small addition was made to btdsys' Peer Library to enable sending note, volume, note-length, and slide-note all at the same time. contact me if you'd like to talk about it.
¬¬
thanks
thanks to oskari, cyanphase, btdsys, and all the devs for making buzz what it is. thanks to btdsys, 7900, usr, and kodream for answering peer questions. thanks to everyone who has released source code. but mostly, especially, many thanks to btdsys for the peer library: it's the best thing that ever happened to buzz.
if you like this machine, and want to thank me for making it, please go and thank other more important developers first. when you're finished, if there is still gratitude in you, you can send me a cd of your music, or a postcard, or an email (jamesmichaelmcdermott@eircom.net), or you can visit www.skynet.ie/~jmmcd, where you'll find out about my band, the moral majority. listen to the songs there and tell me how good they are.