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
- a track is started
- a note is being played
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.