Global envelope


There is a global envelope that controls volume of all melodies together, and it is defined in config.ini with envelope string as a sequence of 8 numbers in range from 0 to 127. The period of envelope is controlled with F6 and F7 keys and is shown as bpm value in the status bar at the top of the window.

The envelope is shown or hidden by pressing the 'e' key. When shown, the envelope can be controlled from a MIDI controller. The default configuration uses eight first sliders of KORG nanoKontrol.

Note constraints


If you watch the score (press F1 to see it) when a melody is being played, you might notice that some notes are sometimes changed. They are 'harmonized', that is if a random number within 0..100 happens to be below certain threshold then the note made from the image is replaced with the nearest note from the chord matrix specified in config.ini.

The threshold is defined in config.ini as quality. The default value is 50. If the quality is 100 (or higher!), all notes are harmonized. If the quality is zero, none. The quality of a selected melody can be adjusted from a MIDI controller when the envelope (see above) is shown. The default configuration uses the right-most slider of KORG nanoKontrol.

Arpeggio and Chord Matrices


The default configuration contains one set of parameters called Chord Matrix. There are 12 parameters, one for each note: chord0, chord1, ... chord11.
The value is a string of 12 digits like 100010010000. Non-zero values tell which notes to play in arpeggio mode.
It is possible to have more than one matrices. The first value of the first matrix should be called chord0#0, of the second matrix - chord0#1, and so on (note increasing number after the '#').
# Chord matrix
chord0#0=100010010000
chord1#0=100010010000
...
chord11#0=001001000001

chord0#1=100110010000
chord1#1=100110011100
....
chord11#1=001001100001
In order to switch the matrix in runtime, press Esc and then a for the first matrix, b for the second, and so on.

MIDI Devices


The following configuration value specifies input MIDI device(s) - commands from all the devices with the given string in their names will be handled. For example, they can be both nanoPad and nanoKontrol.

midiin=nano

If a device sends Note On/Off events, they are forwarded to the MIDI channel assigned to the currently selected melody.

This is a string that expected to be in the name of the first MIDI out device - note that there is no number in the parameter name. This string matches the default Windows MIDI device.
midiout=Microsoft

All the following MIDI out devices are numbered:
midiout1=Virtual
midiout2=Doepfer
etc.

MIDI CC


MIDI Control Change commands can be sent when
In the former case, the horizontal position of the track centre mapped to the 0..127 range is sent as a parameter to the CC command numbers configured for the MIDI device as following

midiout1track=1,70


midiout1note=10,1
midiout1velo=71,74
midiout1enve=91,93

It is possible to mute the current melody by pressing the 'u' key. Then the playing melody only sends CC events, not sounds. This makes possible that one melody changes parameters of another melody assigned to the same instrument.

Destination Types

The capital 'T' key - that is Shift-t - changes the destination type of current melody playback. Possible destinations are (note the changing letter in the melody status line):
M
MIDI device (the one currently selected with F10, make sure to select an instrument after device)
M+O
Both MIDI and OSC listener
O
OSC listener
S
Serial port
A
Audio, that is pre-loaded sound samples are played by BO itself

Sound Samples

The sample speed settings are assigned per sample directory.
For example if you have:

sampledirs=birds;dogs;cows
smalespeedctl=pitch;duration

then the pitch is applied to birds and cows samples. If you need to change the speed setting during performance, repeat directories twice:

sampledirs=birds;birds;dogs;dogs;cows;cows
smalespeedctl=pitch;duration

Thus you have birds with pitch for instrument 0 and birds with duration for instrument 1, etc.

Duration

Duration is meant to control legato / staccato qualities of a melody playback. When duration is set 1, each following note starts approximately when the previous ends. When duration is below 1, there are silent gaps between notes. When duration is greater than 1, notes overlap.
The duration can be controlled from GUI or by '(' and ')' keys.

Arduino Harmonica

Serial port is used in this Arduino-based prototype
Add a line like following in config.ini:
serialBits=1,1,2,4,4,8,16,16,32,32,64,64


Collaborative Mode

It's possible to run BO in multiple computers in fully synchronized mode. Each performer's actions are distributed to all remote instances. Of course it only makes sence if they play the same image.
In addition, the Windows package includes a control application called BOC. It doesn't generate MIDI and music OSC. It sends commands to control the main BO application remotely. Thus user interface elements don't appear on the main screen which is important for live performance.

More information

Please don't hesitate to ask for more technical details. The only reason why they are not described because nobody would possibly read.
Write to victor(at)victorx.eu.