Who asked for it? Well, someone must have, or I probably wouldn't have gone to the bother of sorting out all this junk and sticking it here. It's sort of a mess. What worked well as a scheme for a development environment isn't so nice for packaging archives, but hopefully it's all sorted out now. Archives that include source code have this nasty color as their background.

The archives reflect the directory structure of my development environment. With any luck, this will make it easier to sort out the files and plop them into whatever your environment looks like. The makefile and scoptions more or less define my environment hierarchy, but there's a picture of it here. If there are any questions or insights or you just feel the urge to say “Hey!”, there's a mailto: at the bottom of the page.

There is more stuff in the exe directory than is in the table below. Feel free to use stuff, but don't whine if it's broken or you can't figure it out. And really do not use the RandomChords or Lorenz tools if you are afraid to lose work or you get annoyed when the Guru visits.

Things You Really Ought To Know


And, as long as you're here, don't forget to head over to my music page and listen to a tune or two. That's the price you pay for getting code… A lot of them used at least some of these tools, most notably melting(Freud), Mantis, and the 1/f thing, which resulted from testing the 1/f generator.


name size date description
doc dir tool documentation
exe dir compiled tools, ready to use and abuse
BPLibs html link libraries for general more-or-less useful functions & for implementation of real-time configurable tools
essential stuff 33,960 various you will need this stuff: makefile; scoptions; modified toolstart.c, bars.h, debug.c; load of macros; tool id header; common ui structs
AlternateTuning 24,105 01-Mar-99 free yourself from the bonds of 12-tone equal temperament! NB: you'll also need the Tonleitermeister accessory
Tonleitermeister 29,908 01-Mar-99 accessory to create and edit alternate tunings for AlternateTuning.ptool
Bypass 13,854 12-Jan-96 real-time, controllable pipeline tool skipping thing; pipeline processing becomes dynamic
CCrider 13,936 18-May-99 drag a pot and generate control change events
Chopper 15,033 14-Nov-96 new & improved Subdivider replacement/alternative
ClipThing 8559 25-Sep-97 clipboard management accessory: save and load multiple clips. due to b&p limitations, the ultimate goal of retaining their names eluded me.
Crossfade 9334 12-Nov-96 a primitive attempt at what was accomplished with the Space tool (see below), but can be useful for fading between patches on two different channels
Curves 15,928 13-Sep-97 velocity or control change curve generator for the toolpad
DensityFilter 11,672 20-Nov-96 only allow a certain number of some kind of event per time period
Detectrol 9798 27-Nov-96 toggle a controller when some event is detected (to switch something else mostly)
DurationFilter 12,827 03-Sep-97 filter note events based on their duration (which is one reason NewArticulator came into existence)
DurRand 14,133 01-Mar-98 controllable duration randomizer (and it plugs values into event.duration...)
Keyolator 14,807 18-Nov-96 map note events to a new key/mode; this is what Todor meant (cf. LockInKey)
LockInKey 10,068 07-Feb-94 force notes into a different key; I misunderstood what Todor meant when he told me there was a need for tool like not this, but Keyolator
MegaBranch 11,334 03-Mar-98 configurable, controllable alternative/replacement for Branch Out
MIDIDifferenceFilter 11,730 06-Nov-97 filter events based on their difference in value from the previous event
MIDIEventFilter 12,615 31-Mar-99 filter, uh, MIDI events
Modomatic 11,909 04-Dec-97 real-time controllable replacement for Modulator that works correctly from a musical standpoint
Mono 5088 15-Nov-97 gate overlapping note events in a clip (toolpad only)
NewArticulator 5806 12-Nov-96 replacement for Articulator because the original tool didn't change event.duration
Neccococo (NewEcho) 23,280 03-Mar-98 new & improved MIDI echo tool; of course, it's real-time controllable. And, it displays all 3 digits for clock ticks!
Off2CC 6448 17-Aug-01 convert note offs to control changes (I think someone asked for a tool to do this?)
Ornament 20,345 18-Nov-99 seriously-configurable tool for applying ornamentation snatched from arbitrary clips to notes passing through. Also useful for generating melodic material (cf. melting(Freud) elsewhere on this fine website)
PC2CC 6424 18-Apr-00 convert program changes to control changes (another special request, I think)
PitchClassMask 13,717 12-Nov-96 filter based on the pitch class of a note (pitch class is sort of like a note is the octave is disregarded)
Procrastinator 12,628 19-Aug-97 delay events in the pipeline in deference to other events (pipeline only—sorry Mike, now you can flesh out processlist() ;)
RandomChords 21,014 26-Feb-95 real-time random “chord” (actually, sonority) generator; tres fun, but a bit flakey. based initially on code from Computer Music in C by Phil Winsor
RandomNumbers 18,790 14-Sep-97 an accessory that intercepts calls to
functions->random() to allow using different random number generators or distributions; some code based on Computer Music in C by Phil Winsor and Computer Music by Charles Dodge and Thomas Jerse (eww, Fortran)
Ranger 13,208 03-Mar-98 maps input notes to an output range that may be smaller or larger than the input for non-12-tone-equal-tempered craziness, and it's controllable in real-time
Space 19,091 12-Nov-97 emulates panning using two MIDI channels, volume (cc7) messages, and fairly decent math; based on code from F. Richard Moore's Elements of Computer Music, and there's room for additions such as changing the angle of the virtual speakers and their distance from the listener if anyone is interested
StickIt 18,210 02-Sep-97 virtual joystick that generates control change events
SumChange 16,509 27-Nov-95 generates a control change when the sum of received events exceeds a threshold (not terribly useful most of the time)
TimeWarp 9522 22-Oct-97 padtool to make a clip fit into a time span.
it's just a step to the left...
UpIsDown 12,547 11-Nov-97 stupid name, but Invert was taken; this tool does real intervallic inversion and responds to real-time changes in various ways.
V2CC 8481 04-Jan-98 converts velocity to a control change message, in case you need to do that.
wormhole 6180 03-Mar-98 Originally written by the inimitable Ryan Osman, I couldn't leave well enough alone (it was his fault; he sent the code to me). Wormhole sends/receives messages like Transmitter+Receiver, but is way cooler & tighter, and has 32 channels of sheer enjoyment.
wye.zip 838 04-Dec-97 configurable, MIDI-controlled y-valve for your piping pleasure
AccessSkel.c 6456 04-Mar-99 skeleton code for an accessory
aDoSnapshot.c 551 08-Feb-97 boilerplate code for writing a snapshot of a tool
aDoSysEx.c 1394 01-Dec-96 boilerplate code for reading a snapshot of a tool
aDoSysexMenu.c 394 19-Nov-96 boilerplate code for handling a tool's sysex menu
aHiloCCname.c 2493 02-Sep-97 boilerplate code for a proportional gadget callback that displays control change names
aSendSecret.c 559 08-Feb-97 boilerplate code for sending a clandestine Message to a
tool->window->UserPort (used to refresh configuration windows, and not all that exciting)
debug.c 2055 15-Jan-97 originally from Todor, but I added prototypes and stuff, plus writing to a static RAM disk (which I find more useful than writing to console: especially if a tool crashes)
toolskel.c 12,405 04-Dec-97 skeleton code for a tool
toolstart.c 1093 11-Nov-96 nominally modified tool startup code (mostly massaged for the compiler's pleasure)