Last revision: 2013 09 01.
Note: This manual is not totally up to date
The best way to learn about the program is to use it. Start it up, press
the buttons and pull the sliders and see - and hear - what happens. Come
back here for details. If something is unclear, mail us at
support@musifier.com.
Thank you for your interest in the Musifier
Virtual Orchestra - MVO!
/Jonas Edlund, Musifier
The MVO
morphs
a number of tunes according to their weights. Music morphing means
gradual transitions between tunes. In transition, the MVO composes the
music in real-time. The program supplies
the weights of the tunes by means of one slider per tune in the State View.
The set of tunes played by the Musifier at any one time is called a
session. The program allows you to open, edit and save sessions and their
tunes. You can create new sessions and add new tunes to
existing sessions. Only one session can be open at any one time.
When the Musifier executes the music is played
by software components known as players. There are players of different
types. CHORDS is a silent player that generates the harmonic
framework. Bass, Polyphonic and Percussion are sounding player
types that do pretty much what their names imply. Bass players can as yet play only one note at a time. Polyphonic players
can play as many notes at a time as your synths allow them to.
Percussion players handle percussion instruments on a "one drum
per player" basis. There can be as many sounding players in a
tune as you like.
When MVO loads a session all the
players defined by that session are created. Each player is assigned zero
or one part from each tune. When the orchestra is playing, the players
morphs between their parts according to their weights. Parts are morphed into each other
if they are assigned to the same player.
Sessions are stored as plain directories in the
(MVO home)/sessions directory. The session directories and the tunes
they contain can be copied and deleted with the usual tools of your
computer.
To get acquainted to MVO, open an existing
session, morph it around and check the tune settings. Take a look at the
midi files in your regular sequencer (Cubase, Logic or whatever). Key factors for
understanding the program are the scale and chord tracks and the cycle
signatures. See the 'Tune Editor' section for details.
Before you do anything else with the program
you should take some time to read this section carefully, including
the part about the tune editor settings, and set up the midi
connections of your MVO following a few simple steps. MVO can send
midi to any object visible to the program, capable of receiving midi
messages. MVO uses some MIDI related concepts of our own invention in
order to support session portability across different midi setups.
1. Launch MVO.
2. Navigate to View > Global settings. This brings up the Global settings midi out page.
The Midi-out page contains the
Connections table and the Remotes and connectors tables.
The Receivers table displays four
types of objects: Remotes, Directs, Cables and Unknowns (?). Directs,
Cables and Unknowns are connectors, objects directly connected to the MVO and
capable of receiving midi messages.
Directs are devices that are ready to play midi messages all by themselves.
Examples of Directs are the chip-set GM-synth on Windows (showing up
as 'Microsoft Midi Mapper' or 'Microsoft GS Wavetable SW Synth') or
the Java Sound Synthesizer.
Cables are devices used to
transfer midi to remote receivers on or outside of your computer.
Examples of cables are virtual midi drivers like MIDI Yoke on windows
or physical midi interfaces.
is a sound device
accessed via a cable. You should create a remote for every synth or
sampler you will use together with your MVO. You do that by clicking
the 'New Remote' button under the Receivers table.
Delay
Remotes, Directs and Cables have delay settings. Use the "Delay Synch" session to fine-tune
the delay on your midi connections.
Instrument mode: CHANNEL or PROGRAM
Remotes and Directs have either static or dynamic midi-channels. If
'dynamic' is set the MVO expects the device in question to respond to
program change messages. This allows the MVO to assign midi channels
dynamically to parts if channels are sparse. If in doubt, use 'static'.
New Remote
Creates a new remote.
Delete Remote
Deletes selected remote.
Default General Midi
Connection (DGM)
The selected connection will be used by tunes where the MidiOut option
DGM is selected.
Connections table
The Connections table displays
the midi connections available in the Midi
out panels in the Tune Editors. Each connection in the table represents a
16 channel midi socket. The Directs in the
Remotes and connectors table show up in the as Connections in the Connections
table.
-
Note:
If you want MVO to send midi to other targets you need to create
connections for those targets. Press the 'New Connections' and
follow the instructions. Read the following for details.
New Connection
Creates a new connection.
New Connection Example
Suppose you want to use the Kontakt sampler from Native Instruments.
First you press 'New remote' and enter 'Kontakt' as device
name. Hit return. In the Remotes and Connectors table there now is a remote called Kontakt with zero delay and
Instrument mode set to CHANNEL. Now press the 'New
connection' button under the Connections Table. Choose 'Kontakt' as
remote. Hit return. Enter 'A' as bus name. Hit return. Choose a free
cable. Hit return. Repeat this procedure for busses B, C and D if
needed. Launch Kontakt and connect it to the cables in a way
consistent to the MVO set-up you just made.
Delete
Deletes the selected connection.
In the tune editors, connections are assigned to parts.
State View
When you open a session you get to the state view. This
view has four panels: Transport, Tunes, State events, Event chain and
slider panel. If you open session 'Adaptivity' it would look something
like this:

State view of session Adaptivity.
Adaptivity is a simple session
with two tunes, Fast and Slow.
Transport starts and stops the
orchestra. 'Record' allows you to save what the orchestra played once
you hit 'Stop' as a midi-file. <ctrl+space> toggles start and stop.
Tune-list allows you to remove a tune from the
orchestra by un-checking the 'include'-box of that tune. Altering the
value in the volume box affects the levels of all parts of the tune.
Moving the sliders in the sliders-panel affects the
state-vector used to control the orchestra. Make it a habit to move
sliders up, not down and to keep the sliders coupled (menu
Response.Couple).
The events in the State events table can be triggered
by
-
clicking them in the table
-
Pressing <ctrl+key> on the keyboard where 'key' is
the key indicated in the 'key'-column
Events have a duration displayed on the sliders,
indicating the time - in milliseconds - it takes them to reach its state
destination. Events can be partitioned over the players. This means the
'target state' of a tune can be set differently for different (groups
of) players. (menu Reponse.split/merge)
New events can be created from the menu or, when the cursor is in on the
events table, by hitting the '+'-key. Move the sliders to the desired
target state and press '+'. Partitions and durations are copied from the
event currently selected in the table.
Tune Editor
From the state view you can open the
tune editors by clicking the named buttons in the tune-list on the left
hand side of the screen or from the menu Edit.Edit
tune.<tune-name>.
Now click the 'Fast' button in the tunes
list. This opens the
tune editor for Fast.

Session Adaptivity, Tune Editor
for tune Fast
Name is the name of the tune. Can be
changed freely.
Midi in
Midi file: points to a midi-file in
that defines the
musical content of the tune.
Pitch transpose: the interval in
semitones that non-percussion parts are transposed when loading the file.
Time-tranform: the factor multiplied to
every timestamp. (2/1 equals 'half-tempo'; 1/2 equals 'double tempo')
Admin track points to the track in the midi file that defines the bounds of the tune by its first
and last note-on event.
Tempo as 1/4-notes per minute. Same as "Beats Per
Minute" - BPM - as long as
your tune is 1/4-note based
If the checkbox is cleared, the tempo of the midi file is set.
Accelerando as tempo-shift per 1/4-note expressed as
the quota newTempo/oldTempo. Ritardando uses the invers value. The
setting needs to stay close to '1', for tempo changes not to appear to be
instantaneous.
Chord sequence
The chord sequence is laid out by the CHORDS player before the sounding
players generate music.
Include: Unchecking this box removes the chord sequence
from the CHORDS player.
Scale/Chord track
Provides the harmonic analyses of the tune. Points to the track
in the midi file defining the scale/chord. Notes with the same note-on-time
define the same chord or scale. The harmonic analyses affects how the
sounding players morphs your music.
Modulation strategy has
two flags, Prefer absolute and Allow relative. A tune
that prefers absolute will pull the Chord Sequence to its own key when
it's heavy enough. A tune that allows relative and does not prefer
absolute will pull the Chord Sequence to its own chord structure in
the current or a related key. One of these properties is always
checked. Prefer absolute and not allow relative is the recommended
default.
Cycle Signature controls the metric properties of the
tune when morphed. The signature is a
sequence of whole numbers (integers) and defines the metrical
hierarchy of the Chord Sequence. The Musifier uses the cycle signatures to
manage similarities between positions in time: Two points in time are
considered similar if they are at the same tick in some cycle and more
similar the bigger that cycle is. This has consequences for how the
CHORD player chooses its material.
The first number in the signature is the number of
smaller cycles of length a into which the Chord Sequence part is
divided*. The next number is the number of still smaller cycles of
length b that each of the a-cycles are divided into, etc. Thus a cycle
signature '4, 2, 3' defines a part divided into four smaller cycles,
each of which is divided into 2 still smaller, each of which is
divided by 3. You might consider it to be divided into 4 bars of
6/8 time or 8 bars of 3/4 time.
For
more on cycle Signatures, check slides in PowerPoint presentation Cycle
Signatures.pps.
Position Preferene is a setting normally of little
importance. Let it stay on "Random".
Auto fade
When morphing between tunes with different sets of players a volume
fade-in/out is added to the odd players.
Auto fade has a value f such that 0 < f ≤ 1. '1' means 'no fade'.
Player Cardinality shows the current number of sounding
parts currently in the orchestra, i.e the number selected sounding parts.
Rank defines the order in which players start or stop playing
when morphing between different sets of players. When morphing from a
solo to a quartet the players in the quartet not in the solo will come
in one by one. Players with higher weight have precedence over lighter
players. The precedence of equally heavy players is defined by their
rank. Higher ranked players are found in the beginning of the rank
string.
Midi out offers three distinct midi-out configurations
for the tune, Pref, Alt and DGM. When MVO is shipped, all tunes are set to "DGM",
meaning that all midi output is sent to the 'Default GM Connection'
selected at global settings.
From the state view you can change midi
connection for all tunes in the whole session in one go from menu Edit > Midi
out connections.
Sounding parts
The sounding parts are defined at the bottom of the editor. Polyphonic, bass and
percussion parts have their own boxes. Each sounding part has the
following properties:
Include If checked, the part will be with its player in the
orchestra.
Name
The name of the part. Can be changed freely.
Player
The player that will play this part.
Track
points to the midi-file track of the part.
Compl. track
is a complementary track in polyphonic type parts that points to a track in the midi
file with extra notes for the player to choose from. The notes in the
comp track is typically a superset of the part in the regular track. The
complementary track is only included if the checkbox is checked.
SP.Cycle
signature defines the cycle signature of the part, defined as in Chord
Sequence above.
Percussion
player.Pitch points to the pitch that defines that player in the
percussion track.
SP.Midi
connection has three rows: Pref, Alt and GM, each defining a
"sounding destination" for the material of the part. Pref is
the intended - preferred - midi connection, Alt is an alternative and
GM is a General Midi version. The reason there are three alternatives
is to support portability. I have done my little demo songs for the
Reason soft synth and you might not use Reason - but you probably have
a GM synth available.
After the radio-button in each row is the midi
connection. Click on it to open it, and you can choose from the
available connections. Next is a Cha/Prg checkbox. If checked, the
entered value overrides that on the midi track. The Instr field is a
convenience feature to support your overview of all the parts in the
orchestra. If entered they show up in the Orchestra window. The
Percussion parts also have a Pch checkbox where a
"write"-pitch can be entered to override the pitch on track.
The Vol offset is for turning the volume of the track up/down.
The Polyphonic parts, has an extra
>>-button at the lower end of their settings panel. Clicking it
brings up some "advanced settings" for the leading voice of the part:
Register
categories defines the number of “register distinctions”. This affects how the musifier
conceives of register (high – low). If this is set to 1, the
algorithms do not distinguish between different registers. Recommended
settings are 2 or 3.
DPI
(Depth Per Index) settings affect the way the player searches for
matches in the material of its parts when choosing pitch for the top
note of a new strike. There are three settings, lo and hi, and border.
If the state weight of a part is below the border the lo value is
used, else the hi value. When searching for matches, a part can relax
constraints in two directions, either by relaxing the depth of musical
properties at the time position where the part considers itself to be,
or by searching at similar time positions, according to the
similarities defined by the cycle signatures. A high dpi setting leans
towards the former, a low towards the latter search strategy.
Register
OOB. A part considers the leading voice of its player to be
"Register Out Of Bounds" when the top note is more that
range semitones away from the part itself. Only the heaviest part has
a say in this, and only if its weight is higher than threshold. If a
player is OOB for some reason it seeks a position where it can perform
a strike to resolve whatever property that is OOB. Weights are never
higher than 1. Forcing a player to be Register OOB a lot by a low
threshold and a small range will cause the player to perform a lot of
strikes. This can help a part to converge fast, but it can also make
the player "stutter". Set threshold to 1 and the part will
never be register OOB.
Creating tunes
When you make your own tunes you will need to make
your own midi-files. Use your regular midi-sequencing software and
export standard midi-files to the (MVO home)/sessions/(session
name)/midi directory.
Pressing the mouse inside a "Sounding Part
Type Area" brings up a popup menu for creating new parts.
Pressing the mouse inside a part area brings up a menu for deleting
and renaming that part.
Sounding parts can be created,
renamed and deleted by popup-menus in the Tune Editor. Popup-menus
appear when pressing the mouse inside of one of the Bass-, Melody-,
Polyphonic- or Percussion 'Part Panels'.
Tune Editor Menu
File
Save
Saves the current settings of the tune editor
to disk. You don't really need this command as you are prompted for
saves when opening another session or leaving the program.
Save as
Saves the tune to a new name in the same
session.
Delete
Removes the tune completely.
Edit
Global Connection Preference
Changes connection settings for every part in
the tune.
Clear Slider Controller
Clears any previously assigned external midi
controller.
-
Note:
Changes made in the tune editors do not always "write
through" to a running Musifier - it might have to be rebuilt. If
this happens - that the current musifier is inconsistent with tune
editor data - the Musifier-menu turns yellow, and the Musifier will
be rebuilt the next time 'Play' is invoked.
State view menus
Session
New
Creates a new empty session.
Open
Opens an existing session.
Save as
Saves the current session to a user named
directory in (MVO home)/sessions directory. All tunes are saved to
the new session directory.
Quit
Quits the program. You are asked for
"save/no save" if changes have been made.
Edit
Connection pref
Changes the connection settings for all parts
in all tunes of the current session. What this means is explained in
the Tune Editor section.
Clear slider controllers
Removes all external slider control bindings
from the current session. See also the section on Slider menu.
New tune
A new empty tune is created and added to the
current session. Tunes can be deleted from their tune editor.
Note: Sessions are just plain
directories, stored in the '(MVO home)/sessions' directory. You can
use the usual tools on your computer to create, delete and rename
session directories.
Sliders
Assign Control
The sliders in the slider panel can be moved by
midi messages sent to the program. To explore which devices MVO has
found in the environment, go to the Windows.Global settings.Midi in
explore tab, check the section on the windows-menu for details.
There are two ways to control sliders with
midi: 1. with controller messages or 2. with note-on messages.
'To assign a midi controller control to a
slider, do as follows:
- Invoke
'Assign Control'
- If the
musifier is running, choose device in the combo box dialog.
- Click on
the slider.
- Send a
midi control messages from a device. If the musifier is not running,
this can be any found input device.
The next time a midi controller message from
the same device, with the same channel and controller number, the
slider will move accordingly. A controller message will not move the
slider if its value is more than 5 away from the last sent value (or
the current position of the slider interpreted as a controller value).
The rationale for this is to avoid "jumping sliders". This
means that you may have to turn your controller knob a bit before the
slider catch on. This is true both when assigning the controller and
using it.
'To assign a note-on control to a slider, do as
follows:
- Invoke
'Assign Control'
- If the
musifier is running, choose device in the combo box dialog.
- Send a
note-on message from a device.
The next time a note on message from the same
device, with the same channel and pitch and with a non-zero velocity,
the sliders will position themselves as they were when the assignment
were made. You can assign transition durations for these events at
Windows.Edit slider control, see the section on the windows menu for
details.
Couple
Affects how "untouched" sliders move
in the slider window. When coupled, raising a slider to the top puts
the others to the bottom.
Musifier
This menu turns yellow when the musifier needs
to be rebuilt.
Play
Starts a musifier with the tunes that are
checked in the tune list. Builds a new musifier if needed.
Stop
Stops the musifier.
All notes off
Makes silence.
Record
Starts the musifier and records the session as
it is played. When invoking 'stop' you get to choose where to save the
generated midi-file.
Is strike: heaviest/random
Affects the algorithm for deciding for the next
note-on moment for the players. Random gives more of the lighter
options. Try morphing triplets to eighths and see what happens.
Dump states
Writes the values of all the state variables
for all players to the log.
Windows
Tune List
Checked tunes will be included the next time
the Musifier is launched. The edit buttons opens the Tune Editor. If
'Tune List' is invoked when no session has yet been opened, the 'Open
session' dialog is displayed. When a session is opened you are
presented with the Tune List. Tunes that are checked will be
included when the session is played. Clicking the 'edit' button next
to a tune name opens the Tune Editor for that tune. If the program
detects a tune definition as incomplete or inconsistent the edit
button is marked with a red border and the tune becomes
'unselectable'.
Tune Editors
Opens the tune editors.
Orchestra
The orchestra window gives you a view of all
the players in the orchestra and their parts. This view is useful to
get an overview of which parts morph into each other. A click on a
"tune-button" opens the tunes editor.
If 'Orchestra' is invoked when no session has
yet been opened, the 'Open session' dialog is displayed. If you
change connection pref-settings from the "global" edit
menu with the orchestra open, it will not get updated. Open another
window and get back to see the updates.
Sliders
Opens the slider window. You move the sliders
directly with the mouse, with the arrow keys (you may have to click
one of the sliders first, or hit tab a few times) or with external
midi controllers, see slider menu for details.
Edit slider control
Opens a table with all assigned note on
controls. You can edit the transition time in milliseconds, open with
a click, close with return.
Transport
Allows you to choose
where the transport panel will show up: 'Inside' at the top of your
working window or 'floating' in a window of its own.
Log
The program occasionally writes text to the
log-area that might be useful for tracking its behavior. The content
of the log can be cleared and saved from the Log-menu. If you
encounter strange behavior, please send log files to
support@musifier.com.
Global Settings
Midi
out
The options of this page is explained in the Midi Setup section.
Midi
out explore
Here you can send midi messages to any registered connection. Compose
the message by clicking the arrows; send it by clicking 'send'. For
note-on/off messages, data 1is pitch and data 2 is velocity. Note-on
messages with to low/high pitch (data 1) or to low velocity (data 2)
will not be heard.
Midi
in explore
Here you can monitor midi messages received to MVO from external
devices. The devices must be connected and turned on before MVO is
launched. You can control the sliders from external midi controller
devices such as M-Audio O2, see Sliders menu for details.
Time
Producer lead is the delay between
slider changes and Musifier sounding reality.
Max accelerando/ritardando in
BPM/quarter note. Later versions will morph tempo changes as they show
up in the tunes, for now each tune has just one static tempo and you
set the global value for accelerando/ritardando between tempos here.
Chord Sequence
Settings for the Chord Sequence generator.
Position Preference affects how the
Chord Sequence-player input parts choose from possible time positions.
There are three possible values: Early, Late and Random. Random is the
recommended setting.
Similarity scaling constants are used to
asses the degree of likeness between scale-chords. A low value for
scale will result in that differences in scale between two
scale-chords makes them "more different". These assessments
are used when managing chord progressions in morphs between tunes
with no common chords.
GUI
Transport location determines where the transport panel will
show up.
Log level and Write log to
affects how much is logged and where. In order to see the log written
to std out you need to launch MVO from a command line by "java
-jar MVO.jar"
Help
Welcome/Quick Start
Opens the Welcome window.
User Manual
Opens this user manual in the default web
browser.
Musifier home page
Opens
www.musifier.com in the default browser.
License agreement
Displays the license agreement.
About
Displays version and legal info and a
description of the current Java Virtual Machine.
Log
In the Global Settings.GUI
tab you can direct logging messages to the log window or std out.
Clear
Clears the log window.
Save
Saves the content of the log window to file.
Known bugs and missing features
The program is now quite stable. We know of no
"lethal" bugs. If the program does not meet your
expectations, please contact
support@musifier.com.
ChordPlayers sometimes get a weird melody line,
specifically arpeggios seem to suffer. We will fix it.
The Musifier’s sense of tonality is not totally
satisfactory. We would like to have more (configurable) grace in the
modulations between different keys.
Fast morphs with timbre changes within the same
part can appear a bit strange. In future versions it might be possible
to apply a damper on the timbre changes.
Percussion instruments will get a
"Velocity Auto Fade".
Also on our To-Do-list: A graphical "state
client" other then the slider window where you can morph between
tunes by moving the cursor over an open area.
One issue that needs to be addressed is how and
where players stop playing. For now this is controlled by the 'Rank'
property. It should be possible to control where in the music players
stops or drops out by marking possible endings in the midi-file, and
it should be possible to "turn players on and off" from the
user interface (and from the Musifier API).
Quite a few settings will in future versions be
available to tune the algorithms of the players, as settings in the
user interface and as Musifier API.
Using MVO
For installing, please see the file ReadMe.txt
in the download bundle.
An orchestra sounds like the music it performs
- good or bad. When working with MVO you will find that tunes that
sound OK on their own do not always result in good morphs. Not
surprising, the more similar the tunes, the smoother the morph. And
then again, smoothness may not always be what you want.
Should you use Melody or ChordPlayer for single
note melodies? The algorithms are a little different. I always use
ChordPlayer. A comp track can be useful, specifically for adding notes
to a chord that is used only on specific notes in the single note
line; The comp track can add more notes to use for that specific
chord.
Comments on the enclosed sessions:
Adaptivity
Illustrates the next to immediate response to
state change.
Bad Bach
This session contains the tunes from Bach
Waltz plus a number of variations of ‘Still xxx’. Morphing between
Jesu Bleibet and Still Waltzing G works fine with Reason. When a part
does not play the same instruments in all tunes and the morph is to
fast, the change of timbre becomes a problem. This, in my mind, is
true in most cases regardless of other aspects of the tunes.
Morphs between different keys and meters works fine if the tunes are
similar.
Calypso
Melody, bass and brass morphs quite well. The tunes are quite similar;
the percussion is identical.
Dance
We never met, but here M.J. and I seem to
get along fine.
Fight
The timbre of the recorder morphs well with the
trumpet, both in my default Windows GM-synth and the reason_1.rns
patches. Hi strings in Fight morphs into the guitar in Light. All in
all, this one works fine.
TechOrale
Works OK.
San José
The bass does sometimes not behave well. The
"new model" will help here. The brass riffs morph fine, for
the most part. Depending on the cycle signature settings of the brass
part, you can some stutter in
San
José
2. Try it (use divisions with 2 all the way down). I have some ideas
for further development of the Musifier to handle this kind of
stutter.
Warm Soft
The tunes here are meant to be morphed
"by numbers".
Stars
For fun. The change of meter creates quite
freakish effects.
Twinkle
This one demonstrates how you can create a
"transposing quicksand" with a continuously changing state.
Support and Feedback
You are welcome to contact us at any time for
support or any type of feedback:
E-mail:
support@musifier.com
Thank you for using the Musifier Virtual
Orchestra.
Jonas Edlund
Musifier AB
www.musifier.com