The MusicWeaver— Revision History
Here is a (mostly unedited) record of the various releases over the
years. It might give a picture of the way the suite has developed.
Release 2.8.4 for HAIKU — August 2014
In the fourth update, aside from a couple of bug fixes (to Splitter
and Karaoke) the main enhancements were to MidiPlay and MidiFile. The former now
preloads files in the queue so they are played without delay; the latter now allows
setting a start event. Documentation was also updated a bit where necessary
Release 2.8.3 for HAIKU — July 2013
This is the third Haiku update. It mainly fixes a few bugs that turned up,
and bad layout in some of the module panels (left over from BeOS). The main
Weaver program and its Supported Types have gained new (vector) icons,
a couple of modules have been upgraded, and one new one was added.
See the README included in the package for details
Release 2.8.2 for HAIKU — January 2012
This is the second major update for use under Haiku. Just about all the modules
have now been updated in one way or another to suit them for Haiku and remove the
— mostly cosmetic — deficiencies in their control panels.
There is one major new module — Synth — that gives you control over
Haiku's built-in synth library ('fluidsynth') to play instrument sounds directly,
with no need for external synth hardware. It provides much more flexibility than,
say, MidiPlayer, allowing you to choose your own soundfonts — several
if you wish — and set all the Reverb and Chorus parameters that fluidsynth
The old BeOS-era 'WvrSynth' has been removed as superfluous.
Both the heavily-used Program and Controller modules have been extended
to permit custom lists for their control panels, making things much more convenient
for your own particular soundfonts, or even external sound sources. One other module
is new here, though it really only has a specialized use or two — Polyphony.
It restricts the number of notes that can sound at once, which can be necessary for
some software synthesis schemes.
Release 2.8 — rebuild (Oct 2009, released August 2010)
This was an interim upgrade so that the BeOS version would at least run
on Haiku as well. The release 2.8 modules described below were rebuilt
to remove dependencies on BeOS R4 conventions, but the code was not changed
in any way. It runs on BeOS exactly like the previous release, but for
Haiku is now superseded by the above.
This March 2007 release has a few more fixes and enhancements, and two additions
to the StreamWeaver set. These latter, 'PipeStream_PTY' and 'GetFile' are actually
modifications to PipeStream and ReadFile respectively, but are sufficiently variant
that they have been added to the set rather than replacing the others.
'RePlay' now saves System Exclusive sequences properly (a SysEx would corrupt the
saved file), and 'DeGlitch' no longer has a crash under certain conditions.
'Transpose' now can be told not to transpose events on channel 10, so that percussion
doesn't go weird. 'SysExGen' is now able to calculate checksums for sequences if
required. 'Notator' is better at displaying closely spaced notes that previously
might overlap, and will use "Melodic Minor" conventions if desired.
Release 2.6 and 2.7
These two January 2007 releases have some fixes of varying importance, one more
new module — 'Notator' —, and a largely rewritten 'MidiPlay'.
Notator will show you the notes (currently) being played, on a standard
musical staff, with accidentals displayed according to the selected
key-signature (no timing or sequence representation, just the current notes).
MidiPlay now transmits more of the data contained in the midifile, and has
more flexible queueing of files to be played. In the way of fixes, FilePanels
now understand symbolic links(!).
2.7 fixes some glitches either added or not noticed in 2.6 (!) and has
documentation that matches reality a bit better. The ChordSelect module
has been improved, as have KeySig and Analyze.
This August 2006 release has updates to only two components, but one of
these is the Weaver program itself (now v3.2), which has had a couple of
long-lurking bugs tracked down and fixed (it would sometimes crash on loading
a diagram, and an element could 'vanish' sometimes when a move failed).
The other updated module is Replay, which has also had a bug or two fixed
— it would crash if a loaded sequence had 'scaled' timing. There
are a couple of added features as well. A sequence can now be sent out
in 'steps' by successive external triggers, and a new Record mode lets
you create sequences suitable for stepped output.
The downloadable archive is the full suite. (Simpler for me than trying
to maintain update packages.) Unless you've moved things around in the
folders, it should unpack over an already installed Weaver folder.
Release 2.4 (May 2006)
This release added a few new (hopefully) useful modules:
These have been updated:
- SysExGen —
At long last the MusicWeaver can generate arbitrary System Exclusive sequences.
This element accepts text packets defining the desired output.
(The initially-provided x86 copy of this module had a coding error that
may cause it to fail to send on occasion. As of May 23 this is fixed.)
- MasterVolume —
This sends the special System Exclusive "Master Volume" message to set the
output level of all channels of a sound source.
- ValueAdjust —
This is much like the old "VelAdjust" element, excepts that it adjusts the
value byte of any MIDI event that has a value. It is intended, for
example, to modify the response of a "D_Controller" to "GamePort" input.
- D_Aftertouch — (In the "Experimental" folder)
This accepts e.g. "GamePort" element signals to generate Aftertouch ("Channel
Pressure") events. (And of course has a slider to generate them directly.)
- RanDelay —
Similar to "MidiDelay", except that the delay applied to each packet is random
within the set maximum.
- ChordSelect —
This is a rather complex module that extracts chords from a MIDI stream
(with the help of 'KeyTrack') and separates the notes in some way —
either to different channels or by MusicWeaver 'marks'. See the README
- MidiMon —
Now shows the MusicWeaver 'marks' attached to an event.
- Analyze —
Fixed a typo in the sourcefile that prevented it seeing its Help file.
[And apologies to those who would rather see it spelled with an 's'!]
- Controller and D_Controller —
Have a fix to initialization message generation that was important to me
but probably nobody else.
Release 2.3 (February 2006)
This time there is actually a revision to the Weaver main program [the first
in six years!]. Weaver 3.1 allows configuration parameters (element settings)
to be saved and restored alone, rather than only as part of a full configuration
file. This should make it easier to reset diagrams to a desired state after
There are a couple of new (or newly released) modules. MidiLink provides
connection to external MIDI producers and consumers via the R5 MidiKit.
SysExMon lets you look at the contents of System Exclusive messages
(as hex sequences).
RePlay has some enhancements, as does the Controller module.
Others have had minor updates and/or bug fixes. Most of the StreamWeaver
modules are now included too, for convenience.
The new modules are mostly concerned with extracting information, such
as chord identification and key signature from a MIDI stream;
only the Metronome actually generates events. They are:
— generates click events; will follow tempo changes in a midifile,
and even attempt to track a rhythm.
— adds chord and sounding-keys information to the stream.
— keeps count of notes and chords in a sequence.
— attempts to determine the key signature of a sequence.
— adjusts closely-spaced events to have identical timestamps.
— keeps count of all MIDI message types.
The package also has two updated non-music-specific modules icluded:
WriteFile, so that
extracted textual data can be viewed and saved.
— Rewritten to avoid the MidiKit/MidiStore so it now handles tempo etc.
properly. Generates and records tempo and metaevent packets.
— Fixes to variable-speed playback.
— Text output format improved. Handles more kinds of packets.
— Control Panel indicates channels with activity
— Control Panel Reset added.
- SysReset and TimeSort
— got minor fixes
All licensing restrictions introduced in 2.0 have now been removed.
All modules are freely useable.
These modules were new in 2.1 and 2.0:
- SysReset — A convenient way to send MIDI System Reset
- Stepper — a 'Universal' module that accepts Switch events to generate
a different sequence of Switch events.
- GamePort — generates 'Switch' and 'Parameter' type Director events
from device activity.
- D_PitchBend — accepts Parameter events and generates MIDI Pitch Bend events.
- D_Controller — accepts Parameter events and generates MIDI Controller events.
RePlay — Records and plays back MIDI sequences; also records
MusicWeaver-unique stream control information.
- MidiFile — Simple standard Midifile recorder.
- AcceptMidi — Will import a MIDI stream from another application
that uses the new R5 MidiKit.
- ProduceMidi — Exports a MIDI stream
to another application that uses the new MidiKit.
The 2.0 release added recording and playback of MIDI,
and provided new-Midikit access to and from other applications.
You might use it in conjunction with a sequencer, such as Sequitur,
for example, to pre- or post-process a recording.
The previous release to that (1.3) had a considerably upgraded Weaver main program
with hierarchical diagrams ('Composite Elements'), on-line help,
graphical routing and naming of paths, direct replacement of elements in
a diagram, and so on. The MusicWeaver modules all had on-line
help included as well, a few were been upgraded, and a couple of new
ones were added.
The other modules supplied in the suite are:
The following 'Universal' Modules are also included as part
of the basic Weaver 3 set.
- MidiConn — MIDI Hardware Interface
- Controller — Sends MIDI Controller Events
- SetRPN — Sends 'Registered Parameter Number' setting sequences
- ControlMarker — Marks events targeted at a specific Controller Number
- IndexRange — Marks all (2 or 3 byte) events according to their 2nd byte
- ValueRange — Marks all 3 byte events according to their 3rd byte
- UseIndex — Generates Director messages from MIDI index byte
- MidiPlay — Reads standard Midifiles
- WvrSynth — Drives internal BeOS Synth
- MidiChannel — Sets the channel of events passing through
- Transpose — Shifts notes up or down a set amount
- VelAdjust — Changes Note Velocity value
- NoteOff — Turns Note-Ons into Note-Offs (special purpose)
- NoteOffType — converts between the two types of Note Off
- OneNote — Reduces all Note events to a single set note (special purpose)
- Program — Sends Program-Change events
- PitchBend — Sends Pitch-Bend events
- KeyMarker — Marks selected notes of the scale
- KeyRange — Marks range of notes
- ChanMarker — Marks events on selected channels
- VelMarker — Marks Note-On events above selected velocity
- MsgMarker — Marks selected types of MIDI events
- ClearMarks — Removes unwanted marks
- Splitter — Diverts events onto second path according to marks
- MidiDelay — Advances time value of events by set amount
- TimeSort — Sorts and delivers events according to their time value
- DeGlitch — Prevents "re-triggering" of note events when streams are merged
- MidiMon — Outputs a text description of each event (StreamWeaver
format). Must be passed to e.g. StreamView for viewing.
- StreamView — imported from the StreamWeaver suite for those
who don't have it.
- JoinPaths — Null element for merging
- Switcher — Sends event streams to different paths as directed
- TriggerSwitch — Generates 'Director' messages for the Switcher
- BridgeIn — Connection into Composite Element sub-diagram
- BridgeOut — Connection out of Composite Element sub-diagram