Musifier Virtual Orchestra v.0.9.9beta
User Manual

Last revision: 2013 09 01.
Note: This manual is not totally up to date

Introduction

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

Overview

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.

Note:
If you hear no sound, read the section Midi Setup

Midi Setup

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.

Mac:
This screenshots in this manual is from the Windows version of the program.

1. Launch MVO.
2. Navigate to View > Global settings. This brings up the Global settings midi out page.

Global settings.Midi out

The Midi-out page contains the Connections table and the Remotes and connectors tables.

Remotes and connectors

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. 

Note:
The program cannot distinguish Directs from Cables by itself. You need to edit the objects in the table.

Mac:
On Apple you might need to install software like Mandolane MIDI SPI to make your midi connection software visible to Java programs.

Windows:
Windows users are recommended to install Midi Yoke as cable software. Follow this link to install Midi Yoke NT 1.74 that works fine under Windows XP/Vista/7. Users of Logic Audio Sequencers that install Midi Yoke need to check the Midi Yoke FAQ and learn how to avoid midi feedback before starting Logic.

A Remote 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

  1. clicking them in the table

  2. 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:

  1. Invoke 'Assign Control'
  2. If the musifier is running, choose device in the combo box dialog.
  3. Click on the slider.
  4. 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:

  1. Invoke 'Assign Control'
  2. If the musifier is running, choose device in the combo box dialog.
  3. 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