The MusicWeaver
For BeOS — PPC and Intel
Latest Release 2.8 — Narch 2007
(Page last modified on )
(Download links later on in the page)
Click here for full size screen shots
Alert!
If the MusicWeaver crashed under BeOS Personal Edition when you, say,
tried to run the Synth Demo, read this.
The MusicWeaver is a real-time MIDI data stream manipulator (call it "MIDI Morphing!"),
using an interlinked net of small processing modules. You build your
desired network graphically as a 'flow-diagram' through simple
drag-and-drop operations. Do simple things like note transposition
or keyboard splits, or more complex operations such as performing different
transformations according to parameters of individual MIDI events
— such as the velocity of notes — or at specific points in
a sequence.
The range of modules is always expanding, and so are the possibilities.
Because the 'diagram' that determines the flow of MIDI data is two-dimensional,
you can have many streams, branching and merging as needed. Each section of
each path can apply its own processing to the notes and so on flowing through
it. You can create several streams from a single input (maybe have some handle
different segments of the keyboard range) or perhaps provide others from
prerecorded sequences — triggered by particular input events.
Much of the capability of the MusicWeaver modules is based on the ability
to 'mark' individual events in a stream, and direct them to separate streams
depending on which marks are set.
The suite is a particular application of the general 'Weaver' scheme,
which is unique in its ability to handle — intermixed but distinguished —
multiple types of data simultaneously. Any data can flow along any path
in a Weaver diagram, but will be processed only by those elements that
recognize it, and passed unchanged by others.
This means, for instance, that in addition to MIDI data the MusicWeaver
has the notion of 'Director' events. Some of these can be used to alter paths
of data flow in your diagram; others can trigger variable MIDI events to
affect pitch bend or controller levels. Director events can be generated
from selected MIDI events (e.g. program change) or from external inputs
such as a joystick.
Release 2.8
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.
Release 2.5
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:
- 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
for more.
These have been updated:
- 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
changes.
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 rest of the modules are outlined below in the History
section.
Requirements
The new Weaver and all the revisions have been built under BeOS R5, so the system
will no longer run in any earlier version of the OS.
There is no need for a special BONE
main program any longer on Intel — the fix has been folded into the standard version.
The PPC version is now (finally!) available as well.
The main program and most of the modules
should work under any such system, but to make the most of MIDI you
will need a suitable MIDI interface and other relevant hardware such as a
Synth and Keyboard Controller.
The packages are available for downloading as zipped archives
(links below — choose the one appropriate to your system); these should
unpack the contents into a single folder with icons and attributes attached.
For the BeOS release 5 and later:
Release 2.8 — March 2007
Still available for the BeOS (PowerPC and Intel):
For release 5 and later (PowerPC and Intel):
v2.2 -- July 2004 -- Update only: must be unpacked over Release 2.1
(Unpack it from the same folder that you did the original.)
v2.1 — January 2001 — release 4.0 and later
Author:
Pete Goodeve
Berkeley, California
e-mail: pete@GoodeveCa.NET
pete.goodeve@computer.org
Back up to my other BeOS stuff
History and Details:
New in Update 2.2
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:
- Metronome
— generates click events; will follow tempo changes in a midifile,
and even attempt to track a rhythm.
- KeyTrack
— adds chord and sounding-keys information to the stream.
- Analyze
— keeps count of notes and chords in a sequence.
- KeySig
— attempts to determine the key signature of a sequence.
- ChordPacker
— adjusts closely-spaced events to have identical timestamps.
- MidiCounter
— keeps count of all MIDI message types.
Revised modules:
- MidiFile
— Rewritten to avoid the MidiKit/MidiStore so it now handles tempo etc.
properly. Generates and records tempo and metaevent packets.
- RePlay
— Fixes to variable-speed playback.
- MidiMon
— Text output format improved. Handles more kinds of packets.
- ChanMarker
— Control Panel indicates channels with activity
- DeGlitch
— Control Panel Reset added.
- SysReset and TimeSort
— got minor fixes
The package also has two updated non-music-specific modules icluded:
StreamView and
WriteFile, so that
extracted textual data can be viewed and saved.
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
('v3.0'),
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. If you need the details, you can find them
here.
The other modules supplied in the suite are:
- 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.
The following 'Universal' Modules are also included as part
of the basic Weaver 3 set.
- 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