Richard Hagen's Tools and Accessories

Contents Index Help Prev Next

Richard Hagen's Tools and Accessories: Introduction Tools: Backspace - Allows "backspacing" during recording. CCCC - Generates cyclically varying control changes. CCOP - Applies arithmetic operations to Control Change values. CC Prefix - Prefixes Control Changes with another Control Change message. MIDI Monitor - Monitor MIDI events in detail. Note Mapper Tool - Maps MIDI note, en masse. PC Mapper Tool - Maps program changes to other program changes. PC Prefix - Prefixes Program Changes with a Control Change message. Program Change Suite - Various Program Change Tools Ravenous Bug Blatter - A tool that works around a bug that causes hung notes. RPN - Allows you to generate RPNs or NRPNs. Scaler - A tool for scaling control change messages. Transport Monitor - A tool for monitoring the transport. Accessories: Note Mapper - Maps MIDI notes to other notes, en masse. PC Mapper - Maps program changes in songs. Splitter - Splits one track into many.

Richard Hagen's Tools - Introduction

Contents Index Help Prev Next

Version: 1.0 (29 September)

Author: Richard Hagen
     R.Hagen@mailbox.uq.edu.au

Distribution: Freeware. See the copyright notices in the source code.

     This is an archive of all my tools.

     Full source for each tool and a generic DICE makefile are included
     with each tool.

History:
     1.0 (29 September 1997)
     Initial release.

If you like any of these programs, or find bugs, please drop me a line.

richard
R.Hagen@mailbox.uq.edu.au
29 September 1997

http://www.it.uq.edu.au/~richard/music/bars-and-pipes/index.html


Richard Hagen - Backspace

Contents Index Help Prev Next

Backspace

Version: 2.1 (22 September 1997)

DESCRIPTION: The Backspace Tool allows you to rewind and make corrections as you're recording into a track.

Put Backspace into the track you're going to record into as close to the MIDI input tool as you can.
Now record some stuff. If you make an error, hit rewind on the transport control for a moment and then release it. The transport will go out of record mode; however, when you start playing again (or input any MIDI event), the transport will drop back into record mode from that point. If you don't play anything, the transport will continue in play mode. Stopping the transport will stop all recording.

You can also use the markers to jump to a song position and still continue recording.

Example:
1. Set up a mark at the start of the section you're recording.

2. Start recording.

3. If you slip up, hit the key for the mark (1-4 on the keypad), and you're back at the start of the section, with the transport running and ready to record again as soon as you start playing.

USAGE: Pipeline.

CONTROLS: None.

IMPORTANT: There's a bug in the Bars and Pipes sequencer! If you go into record mode while the transport is running and notes are sounding, notes will almost certainly hang. Since Backspace relies on going into record mode while the transport is running, it's inevitable that you'll get hung notes. However, I've written another tool, the Ravenous Bug Blatter, that fixes this problem. So you should use that as well.

History:
     2.1 (22 September 1997)
     Code improvement.

     2.0 (22 September 1997)
     Major revision.

     1.0 (13 September 1997)
     Initial Release

Richard Hagen - Cyclic Control Change Creator

Contents Index Help Prev Next

CCCC - Cyclic Control Change Creator

Version: 1.3 (22 September 1997)

DESCRIPTION: CCCC has many applications. Use it as a tempo accurate LFO, for instance. Combined with the Event Mapper and the Scaler Tool, you can generate any sort of voice control messages for any purpose: Pitch Bends, Filter Sweeps, Sample Start/Loop Point Modulation, .... Anything!

USAGE: Pipeline.

CONTROLS: The CCCC Tool has several Gadgets.

CC# (proportional gadget, range [0 .. 127])
 This is the Control Change number that you want produce messages for. CC# defaults to 10, the control for panning.

Start (string gadget)
 This is the time (in Measure.Beat.Clock format) when CCCC should start producing messages. If you try to enter a start value that is greater than the finish value, the start value is set to the finish value. Start defaults to 1.1.0 (i.e. time == 0).

Finish (string gadget)
 This is the time (Measure.Beat.Clock) when CCCC should finish producing messages. If you try to enter a finish value that is less than the start value, the finish value will be set to the start value. Finish defaults to the time of the stop marker for the current song.

Period: (string gadget)
 This is the length (Measure.Beat.Clock) of the oscillation of the control change value (ie the time it take to complete a full cycle). The period can't be set to less than one clock. Period defaults to 1.0.0 (i.e. 768 clocks).

Wave (cycle gadget)
 This is the function that generates the oscillation. Currently, you can choose one of TRIANGLE, SAW, SQUARE, RANDOM or TRIANGLE2 waves. The best way to understand these waveforms is to watch them in action! Wave defaults to TRIANGLE.

Direction (cycle gadget)
 This is the initial direction of the wave function, UP or DOWN. Direction defaults to UP.

Granularity ("pop up note" gadget)
This defines how often control change messages are output by CCCC. The valid granularities are 1/4, 1/8, 1/16, 1/32 and 1/64 notes.

NOTE: Whole (1/1) and Half (1/2) note granularities are difficult to generate, due to the timing of Bars and Pipes transport messages, so if you select them they're automatically translated down to 1/4 note granularity.

When a CCCC window is open, and CCCC is producing control change messages, the control change value of the last message generated is displayed in the top right hand corner. Since CCCC generates batches of messages before their output time, values will be shown a little ahead of the their actual passage through the pipeline. Don't be alarmed: this is how the Bars and Pipes transport works - by creating batches of events ahead of time, and sorting out their exact timing only when needed.

History:
     Version 1.3 (22 September 1997)
     Added TRIANGLE2 waveform. Made it a TOOL_NORMAL tool.

     Version 1.2 (13 September 1997)
     Redrew icon. Added the tool type NOTPAD.

     Version 1.1 (9 September 1997)
     Made sure the period couldn't be zero clocks.

     Version 1.0 (8 September 1997)
     Initial release.

Richard Hagen - CCOP

Contents Index Help Prev Next

CCOP

Version: 1.1 (19 October 1999)

DESCRIPTION: The CCOP Tool processes control change events and outputs new control change events. It is used to apply arithmetic operations to the values of control change events. For instance, you can add two the values of two control change events to get a final value and output this as another control change event.

USAGE: PipeLine, ToolPad.

CONTROLS: Several gadgets control the functioning of CCOP:

Operand 1 Proportional Gadget (Range: 0..127):
 Selects the CC number or value that corresonds to operand 1 of the arithmetic operation.

Operand 1 Type Cycle Gadget (CC Num, CC Val):
 When this cycle gadget has CC Num selected, the value of operand 1 is the value of incoming messages with the value selected by the proportional gadget.

 When this cycle gadget has CC Val selected, the value of operand 1 is the vale selected by the proportional gadget (i.e. a constant).

Operator Cycle Gadget (+, -, *, /, %, +], [-, +|, |-, *]):
 +, -, * should be self explanatory, except that the results are taken modulo 128. E.g. 127 + 1 = 0, 0 - 1 = 127.

 / is integer division.

 % is the remainder (modulus) function. E.g. 19 % 5 = 4.

NOTE: Both / and % detect if the second operand is 0, in which case no events are output.

 +] is the same as +, except results are truncated at 127 rather than taken module 128. E.g. 127 +] 1 = 127.

 [- is the same as -, except results are truncated at 0 rather than taken module 128. E.g. 0 [- 1 = 0.

 +| is the same as +, except results greater than 127 are ``mirrored'' around 127. E.g. 127 +| 1 = 127, 127 +| 2 = 126.

 |- is the same as -, except results smaller than 0 are ``mirrored'' aronnd 0. E.g. 0 - 1 = 1, 0 - 2 = 2. (The asymmetry between +| and |- is intentional! I like the way this feels better than the alternatives.)

 *] is the same as *, except results are truncated at 127.

Operand 2 Proportional Gadget (Range: 0..127):
 Selects the CC number or value that corresonds to operand 2 of the arithmetic operation.

Operand 2 Type Cycle Gadget (CC Num, CC Val):
 When this cycle gadget has CC Num selected, the value of operand 2 is the value of incoming messages with the value selected by the proportional gadget.

 When this cycle gadget has CC Val selected, the value of operand 2 is the vale selected by the proportional gadget (i.e. a constant).

Result CC Proportional Gadget (Range: 0..127):
 This gadget determines the control change number of the result of the operations.

If both operands are set to CC Val, then an output is only sent when the sequencer is started or resumed.

If one operand is set to CC Val and one is set to CC Num, then an output is sent when the appropriate control change event arrives for the operand set to CC Num. When the sequencer is started or resumed, the last control change event sent by the tool is resent.

If both operands are set to CC Num, then an output is sent only when appropriate control change events have arrived for both operands. When the sequencer is started or resumed, the last control change event that was sent by the tool is resent.

When the operand or operator values are changed, the last control change event that was went is forgotten.
	
*TIP* Fiddle around with control change values to generate more complex LFOs using the CCCC and Scaler Tools.

History:
     Version 1.1 (19 October 1999)
     Added bounded multiply operator. Altered loading behaviour.
     Tidied up documentation a little.

     Version 1.0 (18 October 1999)
     Initial release.

Richard Hagen - CC Prefix

Contents Index Help Prev Next

CCPrefix

Version: 1.1 (22 September 1997)

DESCRIPTION: The CC Prefix Tool waits for a user-defined Control Change message and then prefixes it with an additional user-defined Control Change message.

It is useful for generating control change messages for controlling certain sorts of MIDI->CV converters. 

USAGE: Pipeline, ToolPad.

CONTROLS: The CC Prefix Tool is controlled by 4 gadgets:

Input CC#(proportional gadget, range [0 .. 127])
 This is the control change number that CC Prefix watches for.

Output CC# (proportional gadget, range [0 .. 127])
 This is the control change number that CC Prefix will prefix the input control change message with.

Value (proportional gadget, range [0 .. 127])
 This is the value of the control change message that CC Prefix generates.

Delay (proportional gadget, range [1 .. 8])
 This specifies a small delay (in clock ticks) between the prefix control change message and the input message.

History:
     Version 1.1 (22 September 1997)
     Code improvement.

     Version 1.0 (14 September 1997)
     Initial release.

Richard Hagen - MIDI Monitor

Contents Index Help Prev Next

MM - MIDI Monitor

Version: 1.1 (22 September 1997)

DESCRIPTION: Put the MIDI Monitor Tool into a pipeline. It will monitor MIDI events.

Each event is accompanied by its time, any relevant data fields, and in the case of MIDI_NOTEON events, the duration. The information for each type of MIDI event is described in the Rules for Tools documentation.

USAGE: PipeLine.

CONTROLS: The MIDI Monitor Tool has no controls other than it's monitor window.

History:
     1.1 (22 September 1997)
	Code improvement.

    	1.0 (15 September 1997)
	Initial Release

Richard Hagen - Note Mapper Tool

Contents Index Help Prev Next

Note Mapper Tool

Version: 1.1 (13 October 1999)

DESCRIPTION: The Note Mapper Tool uses a Note Map to map from one MIDI note to another. You can edit the map from within the Note Mapper Tool.

Note Mapper maps all MIDI events that specify a note number:
 MIDI_NOTEON  - Note on events.
 MIDI_NOTEOFF - Note off events.
 MIDI_PTOUCH  - Poly aftertouch events.

*TIP* This Tool is useful for converting GM drum tracks into something nicer.

USAGE: PipeLine.

CONTROLS: The Note Mapper Tool is controlled by stacks: of gadgets!

The button gadgets should be fairly easy to figure out.

The first proportional gadget selects the range of notes to display. For instance, to display the mapping for notes 32 to 47, you move this gadget to show this range.

The 16 gadgets below this edit the individual note mappings in the selected range.

History:
     1.1 (13 Octover 1999)
     Fixed file problem.

     1.0 (6 October 1997)
     Initial release.

Richard Hagen - PC Mapper Tool

Contents Index Help Prev Next

PC Mapper Tool

Version: 1.2 (13 October 1999)

DESCRIPTION: The PC Mapper Tool uses a Program Change Map (PC Map) to map from one program change to another. You can edit the Program Change Map from within the PC Mapper Tool. It is useful for mapping a collection of patches to another.

USAGE: Pipeline.

CONTROLS:The PC Mapper Tool is controlled by stacks of gadgets.

Load PC Map File loads in a previously save PC Map. Save PC Map File saves the current PC Map settings, and Clear PC Map resets the current PC Map back to the default (ie no mapping).

The first proportional gadget selects the range of patches to display. For instance, to display the patch mapping for patches 32 to 47, you move this gadget to show this range.

The 16 gadgets below this edit the individual patch mappings in the selected range.

History:
     1.2 (13 October 1999)
     Fixed file problem.

     1.1 (6 October 1997)
     Changed name to PC Mapper Tool.
     Added "Randomise" gadget and rearranged the interface.

     1.0 (29 September 1997)
     Initial release.

Richard Hagen - PC Prefix

Contents Index Help Prev Next

PC Prefix

Version: 1.2 (29 September 1997)

DESCRIPTION: The PC Prefix Tool prefixes a PC message with a CC message. This is useful for controlling certain types of GM/GS devices.

USAGE: PipeLine, ToolPad.

CONTROLS: The PC Prefix Tool is controlled by 3 gadgets:

Output CC# (proportional gadget, range [0 .. 127])
 This is the control change number that CC Prefix will prefix the input program change message with.

Value (proportional gadget, range [0 .. 127])
 This is the value of the control change message that CC Prefix generates.

Delay (proportional gadget, range [1 .. 8])
 This specifies a small delay (in clock ticks) between the prefix control change message and the input message.

History:
     1.2 (29 September 1997)
     Bug fix.

     1.1 (22 September 1997)
     Code improvement.

     1.0 (22 September 1997)
     Initial release.

Richard Hagen - Program Change Suite

Contents Index Help Prev Next


   This file documents the Bars and Pipes Program Change Suite Version 2.8, 5 November 1999.


  Background                  Why the Program Suite was written.
  Accessories                 A description of Accessory functions.
  Tools                       A description of Tool functions.
  Operation                   Extra information about the Accessories and tools.
  Programmer                  Information for programmers.
  Bugs                        Known problems with the suite.
  History                     When each new version was released.
  Acknowledgements            Heartfelt thanks.



Richard Hagen/Program Change Suite - Background

Contents Index Help Prev Next


Background to the Bars and Pipes Program Change Suite
*****************************************************

Bars and Pipes, possibly the premier MIDI sequencing package for the Amiga, has been out of development for several years. Unfortunately, development ceased just as a new generation of MIDI devices became popular. These new devices used extended sequences of MIDI messages in the selection of sound patches.  This suite of Accessories and Tools is intended to extend the capacities of Bars and Pipes so that these new devices can be accommodated.

The types of extended patch selection conventions and the Tools and Accessories that deal with them are:

1. PC + PC [PC2]
 A Bank is selected by an initial program change; the Patch is then selected by a second program change.

 This sort of patch change sequence is handled by the PC2 Accessory and Tool.

2. (CC + CC) + PC [PC3]
 A Bank is selected by two control change messages; the Patch is then selected by a program change.

 This sort of patch change sequence is handled by the PC3 Accessory and Tool.

3. CC + PC [PC4]
 A Bank is selected by a control change message; the Patch is then selected by a program change.

 This sort of patch change sequence is handled by the PC4 Accessory and Tool.

The suite is built of paired Accessories and Tools. Each Tool generates the appropriate MIDI messages for changing patches on the target devices, while the corresponding Accessory is used to build lists of patch names. If loaded at the same time, the Tool can read any information currently loaded in the Accessory, thus allowing song writers to use PC List, Bank and Patch names when selecting patch changes, rather than uninformative control change (or patch change) numbers.

The patch change information stored by the Accessories is structured into three levels: PC Lists; Banks; and Patches. A PC List is a named list of distinct Banks. A Bank is a named set of Patches. A Patch is a single named patch change number.

Any number of PC Lists can be stored by the Accessory at any time. The number of Banks stored within each PC List depends on the patch change convention of the Accessory (PC2, PC3 or PC4). Each Bank contains 128 Patches.

These program change Accessories and Tools were written by Richard Hagen.
Richard's Bars and Pipes Web pages can be found at
`http://www.it.uq.edu.au/~richard/music/bars-and-pipes/index.html'.

Richard Hagen/Program Change Suite - Accessories

Contents Index Help Prev Next

Patch Change Accessories

A patch change Accessory is used for the construction of patch name lists and is intended to be similar to the `Windows/Define.../Patch Lists' menu selection of Bars and Pipes.

  PC Lists                    PC List information.
  Banks                       Bank information.
  Patches                     Patch information.
  Menus                       Menus.

Richard Hagen/Program Change Suite - PC Lists

Contents Index Help Prev Next

PC Lists

A PC List is a named group of Banks.  Each Bank in a PC List has a distinct Bank number.  The number of Banks within a PC List depends on the patch change convention (PC2, PC3 or PC4) that it uses.

A patch change Accessory provides the following gadgets for manipulating PC Lists:

PC List Name (String gadget)
 This gadget displays the name of the currently selected PC List. You can also use it to edit the name of the currently selected PC List.

PC List Select (Boolean gadget + scrolling pop up menu)
 This gadget allows you to select a PC List from those in memory. If there is only one PC List in memory, it is automatically selected by clicking this gadget.

Richard Hagen/Program Change Suite - Banks

Contents Index Help Prev Next

Banks

A Bank is a named collection of 128 Patches. Each Bank in a PC List has a distinct number.

A patch change Accessory provides these gadgets for manipulating Banks:

Bank (String gadget)
 This gadget displays the name of the currently selected Bank. You can also use it to edit the name of the currently selected Bank.

Bank Select (Boolean gadget + scrolling pop up menu)
 This gadget allows you to select a Bank from those associated with the current PC List. If there is only one Bank associated with the current PC List, it is automatically selected by clicking this gadget.

Bank PC (Prop gadget, Range: 0 .. 127) [PC2 Accessory only]
 Selects the program change value for the Bank.

Bank CC1 Number (Prop gadget, Range: 0 .. 127) [PC3 Accessory only]
 Selects the number of the first control change for the Bank.

Bank CC1 Value (Prop gadget, Range: 0 .. 127) [PC3 Accessory only]
 Selects the value of the first control change for the Bank.

Bank CC2 Number (Prop gadget, Range: 0 .. 127) [PC3 Accessory only]
 Selects the number of the second control change for the Bank.

Bank CC2 Value (Prop gadget, Range: 0 ..  127) [PC3 Accessory only]
 Selects the value of the second control change for the Bank.

Bank CC Number (Prop gadget, Range: 0 .. 127) [PC4 Accessory only]
 Selects the number of the control change for the Bank.

Bank CC Value (Prop gadget, Range: 0 .. 127) [PC4 Accessory only]
 Selects the value of the control change for the Bank.

Richard Hagen/Program Change Suite - Patches

Contents Index Help Prev Next

Patches

A Patch is a single named MIDI patch change.

These gadgets are provided by the patch change Accessory for dealing with Patches:

Patch Name (String gadget)
 This gadget displays the name of the currently selected Patch. You can also use it to edit the name of the currently selected Patch.

Patch Number (Prop gadget, Range: 0 .. 127)
 Select the Patch number within the current Bank.

Patch Select (Boolean gadget + scrolling pop up menu)
 Displays a pop up scrolling list of all 128 Patches in the current Bank.

Patch Copy (Boolean gadget)
 Copy the current Patch to the one next higher.

Patch Clear (Boolean gadget)
 Clears the name of the current Patch.

Richard Hagen/Program Change Suite - PC File Menu

Contents Index Help Prev Next

PC File Menu

New
 Creates a new PC List.

Copy
 Copies the current PC List.

Open...
 Displays a requester and loads a PC List from a file on disk.

Save as...
 Displays a requester and saves the current PC List to a file on disk.

Save
 Saves a PC List to disk.

Delete
 Deletes the current PC List

Richard Hagen/Program Change Suite - Bank Menu

Contents Index Help Prev Next

Bank Menu

New
 Creates a new Bank. A new Bank can only be created where there isn't a Bank already.

Copy
 Remembers the current Bank for a later Paste operation. A Bank can be copied and pasted within a PC List, as well as between PC Lists. You can only paste a Bank into an empty slot.

Paste
 Pastes a previously copied Bank.

Delete
 Deletes the current Bank.

Richard Hagen/Program Change Suite - Tools

Contents Index Help Prev Next

Patch Change Tools

A patch list Tool is intended to be similar to the Quick Patch tool. It interacts with a patch list Accessory, if it's loaded, but can survive on its own if the Accessory isn't around.

PC List Name (Boolean gadget + scrolling pop up menu)
 Displays the name of the currently selected PC List, as provided by the Accessory (if loaded).

 If it is selected while the Accessory is loaded, it displays a scrolling pop up menu of the PC Lists currently held in the Accessory.

Bank Name (Boolean gadget + scrolling pop up menu)
 Displays the name of the currently selected Bank, as provided by the Accessory (if loaded).

 If it is selected while the Accessory is loaded, it displays a scrolling pop up menu of the Banks within the currently displayed PC List.

Bank PC (Prop gadget, Range: 0 .. 127) [PC2 Tool only]
 Selects the PC value of the Bank.

Bank CC1 Number (Prop gadget, Range: 0 .. 127) [PC3 Tool only]
 Selects the number for the first control change message for the Bank.

Bank CC1 Value (Prop gadget, Range: 0 .. 127) [PC3 Tool only]
 Selects the value for the first control change message for the Bank.

Bank CC2 Number (Prop gadget, Range: 0 .. 127) [PC3 Tool only]
 Selects the number for the second control change message for the Bank.

Bank CC2 Value (Prop gadget, Range: 0 .. 127) [PC3 Tool only]
 Selects the value for the second control change message for the Bank.

Bank CC Number (Prop gadget, Range: 0 .. 127) [PC4 Tool only]
 Selects the number of the control change message of the Bank.

Bank CC Value (Prop gadget, Range: 0 .. 127) [PC4 Tool only]
 Selects the value of the control change message of the Bank.

Patch Name (Boolean gadget + scrolling pop up menu)
 Displays the name of the currently selected Patch as provided by the Accessory (if loaded).

Patch Number (Prop Gadget, Range: 0 .. 127)
 Displays the number of the currently selected Patch.

Delay (Prop Gadget, Range: 0 .. 127)
 Selects the delay (in clock ticks) between the MIDI events that make up the patch change.

Last Received Bank (Read Only Button Gadget)
 This displays the bank in the current PC list corresponding to the most recently received bank change messages.

Last Received Patch (Read Only Button Gadget)
 This displays the patch in the last received bank that corresponds to the most recently received patch change message.

Write to Track (Boolean gadget)
 Writes the currently selected program change into the Tool's Track at the current position. Note: You cannot write a program change into a track when it is open for editing.

Test (Boolean gadget)
 Sends the currently selected program change down the Pipeline.

Richard Hagen/Program Change Suite - Operation

Contents Index Help Prev Next

Tool and Accessory Operation

Here are some notes about the operation of the patch change suite Accessories and Tools.

Tool update
 The tool is designed to check with the corresponding Accessory whenever a gadget is selected or changed. If you load the Accessory after the Tool, selecting the Tool gadgets will automatically synchronise the Tool and the Accessory. Similarly, if you change the patch change data with the Accessory, you can resynchronise the Tool by selecting the appropriate gadget on the Tool.

Accessory state
 The names of the PC Lists that the Accessory has in memory are stored often.  This means that you can rely on PC Lists to be loaded for the songs that they are used in. The state is saved in a file in the s: directory, in one of the files pc2_accessory.state, pc3_accessory.state or pc4_accessory.state.

Gadget activation
 Accessory gadgets have been programmed so that they are only active when it is sensible to use them.

Menu item activation
 Menu items are active only when it is sensible to use them as well.

Backwards compatibility
 The Tools should be backward compatible with the earlier Tools with the same name. Users shouldn't have to do anything special to make the new Tools work correctly.

Bank Select
 The Tool will always send the Bank select part of a patch change, even though it isn't always necessary to do this. Some MIDI devices mightn't remember Bank selections.

String Gadgets in the Accessories
 The string gadgets in the Accessories are always in overwrite mode. This makes it easier to deal with strings of fixed length.

Write to track in Tools
 You cannot use the "Write to Track" gadget when the Tool's track is open (or locked by Bars and Pipes for any other purpose).

Last Received Bank and Patch gadgets
 These display the last received bank and patch. The information is set to "Undefined" when the sequencer is started, stopped or repositioned (to keep it in line with the Quick Patch tool).  You have to have the Tool on the right hand side of the pipeline for this feature to work.

Richard Hagen/Program Change Suite - Programmer

Contents Index Help Prev Next

Programmer Information

Adding new program change types
 All the Accessory and Tool code uses conditional compilation very heavily.  If you want to add a new program change type, just search in the source for places that use the strings PC2, PC3 or PC4. Don't forget the dmakefile!

Richard Hagen/Program Change Suite - Bugs

Contents Index Help Prev Next

Bugs

If the accessory is removed, the tool will continue to show the last PC name, bank name and patch name. I have no immediate plans to fix this as people aren't normally going to be removing the accessory.

Richard Hagen/Program Change Suite - History

Contents Index Help Prev Next

History

2.8 (3 November 1999)
     Added the last received bank and patch gadgets.

2.7 (18 October 1999)
     Changes to GUI behaviour.

2.6 (13 October 1999)
     Changes to GUI behaviour. Fixed bug in file code.

2.5 (12 October 1999)
     Removed semaphore locking. Removed "nice" proportional gadgets and
     replaced direct rendering of prop gadget labels. Rearranged
     gadgets and made the menus more important. Fixed memory leak.

2.4 (18 September 1999)
     Fixed bugs with semaphores and display.

2.3 (8 April 1999)
     Fixed delay slider problem; write to track now works.

2.2 (7 April 1999)
     Fixed bugs in GUI.

2.1 (23 February 1999)
     Fixed problem caused by misunderstanding of qevent() function.

2.0 (1 February 1999)
     Integration with new PC2 accessory.

1.2 (29 September 1997)
     Bug fix.

1.1 (22 September 1997)
     Output of note on patch change. Added Test button.

1.0 (22 September 1997)
     Initial Release



Richard Hagen/Program Change Suite - Acknowledgements

Contents Index Help Prev Next

Acknowledgements

My heartfelt thanks go to Wayne Harrison, who has spent many hours downloading and testing these Tools and Accessories. It would be no exaggeration to say that these programs would not have been completed without his help. Thanks!

Richard Hagen - Ravenous Bug Blatter

Contents Index Help Prev Next

RBB - Ravenous Bug Blatter

Version: 1.0 (22 September 1997)

DESCRIPTION: The Ravenous Bug Blatter Tool overcomes a bug that causes hung notes when the transport is switched to record mode while a note is sounding.

Put it in the right side of the pipeline, as close to the MIDI Out as you can.

USAGE: PipeLine

CONTROLS: None.

History:
     1.0 (22 September 1997)
     Initial release.

Richard Hagen - RPN

Contents Index Help Prev Next

RPN

Version: 1.0 (29 September 1997)

DESCRIPTION: The RPN Tool is used to generate RPN/NRPN messages.

USAGE: PipeLine.

CONTROLS: The RPN Tool is controlled by several gadgets:

CC #1 (proportional gadget, range [0 .. 127])
 This is the number of the first control change message that is sent.

Value 1 (proportional gadget, range [0 .. 127])
 The value of the first control change.

CC #2 (proportional gadget, range [0 .. 127])
 This is the number of the second control change message that is sent.

Value 2 (proportional gadget, range [0 .. 127])
 The value of the second control change.

CC #3 (proportional gadget, range [0 .. 127])
 The third control change message that is sent.

Value 3 (proportional gadget, range [0 .. 127])
 The value of the third control change.

Delay (proportional gadget, range [1 .. 8])
 This specifies the length of the delay (in clock ticks) between sending each of the control change messages.

Write To Track (boolean gadget)
 This causes the patch change selected to be written to the track at the current Song Position flag's position.
Test (boolean gadget)
 Sends out some note messages over a few octaves to test the selected patch.

NOTE: Write To Track doesn't function if the transport is running.

History:
     1.0 (29 September 1997)
     Initial Release.

Scaler

Contents Index Help Prev Next

Scaler

Version: 2.0 (22 September 1997)

DESCRIPTION: Scaler takes control change messages and scales them into a user-defined range. It is very useful when used in conjunction with the CCCC Tool.

USAGE: PipeLine, ToolPad.

CONTROLS: It is controlled by five gadgets:

CC# (proportional gadget, range [0 .. 127])
 Selects the control change number that is to be scaled.

Input min (proportional gadget, range [0 .. 127])
 The minimum end of the range of the input CC values.

Input max (proportional gadget, range [0 .. 127])
 The maximum end of the range of the input CC values.

Output min (proportional gadget, range [0 .. 127])
 The minimum end of the range of the output CC values.

Output max (proportional gadget, range [0 .. 127])
 The maximum end of the range of the output CC values.

History:
     2.0 (22 September 1997)
     Added input range.

     1.2 (22 September 1997)
     Code improvement.

     1.1 (13 September 1997)
     Redrew icon. Ensured that tool was properly initialised.

     1.0 (8 September 1997)
     Initial release.

Richard Hagen - Tranport Monitor

Contents Index Help Prev Next

TM - Transport Monitor

Version: 1.2 (22 September 1997)

DESCRIPTION: The Transport Monitor Tool show the commands being issued by the Bars & Pipes Transport in real-time. This is mainly of use to programmers who write their own tools.

USAGE: PipeLine.

Place it in a track. Open TM's window, then watch the commands stream by as you play with the transport!

CONTROLS: The Transport Monitor Tool has no controls other than it's display window.

History:
     1.2 (22 September 1997)
     Made it a normal tool.

     1.1 (15 September 1997)
     Improved efficiency of the code.

     1.0 (13 September 1997)
     Initial release.

Richard Hagen - Note Mapper

Contents Index Help Prev Next

Note Mapper Accessory

Version: 1.2 (13 October 1999)

DESCRIPTION: The Note Mapper uses a Note Map to map from one MIDI note to another. You can edit the map from within the Note Mapper.

Note Mapper maps all MIDI events that specify a note number:
 MIDI_NOTEON  - Note on events.
 MIDI_NOTEOFF - Note off events.
 MIDI_PTOUCH  - Poly aftertouch events.

*TIP* This Accessory is useful for converting GM drum tracks into something nicer.

USAGE: PipeLine.

CONTROLS: The Note Mapper is controlled by stacks: of gadgets!

The button gadgets should be fairly easy to figure out.

The first proportional gadget selects the range of notes to display. For instance, to display the mapping for notes 32 to 47, you move this gadget to show this range.

The 16 gadgets below this edit the individual note mappings in the selected range.

History:
     1.2 (13 Octover 1999)
     Fixed problem with files.

     1.1 (12 October 1999)
     Fixed memory leak.

     1.0 (6 October 1997)
     Initial release.

Richard Hagen - PC Mapper

Contents Index Help Prev Next

PC Mapper Accessory

Version: 1.3 (6 October 1997)

DESCRIPTION: The PC Mapper uses a Program Change Map (PC Map) to map from one program change to another. You can edit the Program Change Map from within the PC Mapper. It is useful for converting GM files into something nicer.

CONTROLS:The PC Mapper is controlled by stacks of gadgets.

Load PC Map File loads in a previously save PC Map.

Save PC Map File saves the current PC Map settings.

Clear PC Map resets the current PC Map back to the default (ie no mapping).

Map Track will map a group is you have a group selected, otherwise, it will map the selected track.

Randomize could give some fun results.

The first proportional gadget selects the range of patches to display. For instance, to display the patch mapping for patches 32 to 47, you move this gadget to show this range.

The 16 gadgets below this edit the individual patch mappings in the selected range.

History:
     1.3 (13 October 1999)
     Fixed file problem

     1.2 (12 October 1999)
     Fixed memory leak

     1.1 (6 October 1997)
     Changed name to PC Mapper Tool.
     Added "Randomise" gadget and rearranged the interface.

     1.0 (29 September 1997)
     Initial release.

Richard Hagen - Splitter

Contents Index Help Prev Next

Splitter Accessory

Version: 1.2 (22 September 1997)

The Splitter is a Bars and Pipes accessory for splitting one track into many. It useful, for example, for splitting a drum track into individual instruments for separate processing.

It is used in the following manner:

Load a song.
Select a track to be split.

Install the Splitter in the Accessories window.
Open the Splitter.
Click "Split Selected Track".

Your track will be split into a number of tracks, each containing the events for a single MIDI note number. Tracks will only be created for MIDI note numbers that occur in the original track. Each new track of MIDI note events is named for the note that it contains.

Another track for non-note MIDI events will be created if needed.

If you prefer, you can use a "note map" to supply names to the newly created tracks. Note maps are created by the Pattern tool when you're using Drum Map mode. These can be saved to disk, and then be loaded into the Splitter using the "Load Notemap from File" gadget. Load the note map before splitting the track.

History:
     1.3 (29 September 1997)
     Removed dynamically allocated strings.

     1.2 (22 September 1997)
     Improved the code a bit.

     1.1 (19 August 1997)
     Added ``Clear Note Map'' button.
     Tidied up some silly code.

     1.0 (12 August 1997)
     Initial Release.