1. A
few notes on BP2
BP2
is able to interact simultaneously with three environments:
MIDI,
QuickTime
Music
and
Csound.
The latter is presented in §17.
To
produce MIDI or QuickTime music with BP2 you need either of the following setups:
- a
MIDI interface connecting the 'modem' or 'printer' serial port of the Macintosh
to a
MIDI
synthesizer, sampler or expander
.
This interface is a cheap item available in music or computer shops. A few
expanders have built-in MIDI interfaces and can be hooked directly to the
serial port. If your Mac has a unique serial port connector (e.g; PowerMac
6500 or a cheap PowerBook) you may be forced to install OMS (see below) to
enable communication with MIDI. On some PowerBooks (such as my 5300cs) this
serial port becomes a valid 'modem' port when either EtherTalk or IRTalk is
active, but old PowerBooks such as the PB 150 will remain dumb unless OMS is
properly installed.
- This
setup will allow you to produce musical pieces with a high sound quality
depending on external hardware.
- Opcode
OMS
(Open Music System)
installed and an OMS-compatible
software
synthesizer
(such as SoftSynth) running on the same machine as BP2. The MIDI output of BP2
will be routed to the synthesizer via an
Inter-Application
Communication (IAC)
bus
handled by OMS. (See OMS documentation) Beware that your Mac is powerful
enough, and has enough RAM, to run BP2 simultaneously with the synthesizer.
- This
solution also produces high sound quality. It is recommended to connect the
audio output to an external amplifier.
- QuickTime
Music
and Opcode OMS installed. QuickTime Music is a standard extension of MacOS.
Run the "Extension Manager" control panel to make sure that QuickTime
extensions are enabled at startup. In system versions below MacOS 8.0, you
will also need an extension named "QuickTime® Musical Instruments"
in the Extensions folder.
- Opcode
OMS is free of charge and supplied with many music software packages. You may
download it from <
http://www.opcode.com>.
You must use a version equal or greater to 2.0.
- With
this setup you will be able to play BP2 music on the Mac's loudspeaker, using
the soft synthesizer imbedded in QuickTime.
- If
you connect the Mac to an amplifier and speakers you will notice that the sound
quality is far from that of a professional synthesizer. However, this quality
is bound to improve with each upgrade of QuickTime Music.
The
preceding setups may of course be combined. Once OMS has been installed you
will be able to use its setup to direct BP2's output to the device of your
choice in a MIDI studio, or to the internal loudspeaker via QuickTime Music.
Again, installing OMS is highly recommended if you plan to spend some time with
this and other MIDI music software.
Once
you have understood what BP2 is about you will also be able to
export
music
in two formats:
- MIDI
files
that may imported and manipulated by any MIDI software (including BP2 itself).
Check "MIDI files"
and uncheck "MIDI" in the "Devices" menu;
- Csound
scores
that may be used to produce sound files in the Csound environment. BP2 has
advanced features enabling you to handle sophisticated Csound instruments in
the most flexible and user-friendly way. If you are already conversant with
Csound and your Mac has a 16-bit sound editor you may check "Csound scores"
in the "Devices" menu and proceed immediately to §17.
MIDI
instruments (keyboard, guitar, drum, etc.) may optionally be used to control BP2.
Conventional
sounds like cello, piano, flute, drums, etc., will be good enough for
experimenting with BP2. Some of the supplied examples will indeed sound
bizarre unless they are performed on the MIDI device they were designed for: a
Roland® D-50 or D-550 synthesiser with patch data ROM PN-D50-02 and
Musitronics Multitimbral Expansion card (phew!).
BP2
is designed to run on a 14-inch monitor, i.e. minimum 640 x 480 pixels, with at
least 16 gray or color levels.
1.1 Install
BP2
BP2
is a stand-alone application running on Macintosh® configurations using a
68020, 68030, 68040 processor, PowerMac or G3. It does
not
require an arithmetic coprocessor. It is currently being developed and checked
under MacOS 8.1 and will not run with system versions below 7.1. The PowerMac
optimized version is called "BP2.9.3 (ppc)"
and the 680x0 one "BP2.9.3 (68k)".
We check every version under MacOS 8.1 on a "slow" Mac (PowerBook 5300cs) and
a "fast" one (G3 / 333MHz).
To
run "BP2.9.3 (ppc)" on a PowerMac, first drag the file "OMSLibPPC.slb" to the
System folder, unless it has already been put there when installing another
MIDI program
.
This file is supplied with BP2 in a folder named "Drag content to System". It
is the shared library of OMS which BP2 requires even when it is not using OMS.
The file will reside in the "Extensions" folder.
BP2
requires no other system extension or control panel. Its default settings file
"-se.startup"
and its on-line help file "BP2 help"
must reside
in
the same folder
as the program,
not
in the System folder.
If
you still own an old version of BP2 you should trash it, install the new one
and restart the computer holding down the 'command' (cmd) and 'option' keys
down to rebuild the desktop. Keeping several versions of BP2 may lead to
unpredictable situations. Do not hesitate to trash obsolete versions because
files get automatically upgraded to the new version.
1.2 Try
it
If
you wish to run BP2 under OMS, first launch the
OMS
Setup
utility and make sure that the required output runs fine. When you setup OMS
the external MIDI device(s) must be plugged to the Mac and switched on, so that
OMS will sense them automatically and create the appropriate studio setup
document accordingly. Needless to say, the MIDI interface should also be
powered on.
If
the IAC Driver used for Inter-Application Communication is not displayed on the
document, you should include it. For this, quit OMS Setup and run the
customized
installation
of OMS.
The
studio document should also display the
QuickTime
Music
icon. If the icon is crossed, double-click it and check the box of QuickTime
Music. Clicking the icon also allows you to set the pitchbend range to 2
semitones, the value used in examples of this document.
If
a MIDI device (keyboard, synth...) is connected to the MIDI interface attached
to a serial port, the icon of the port ('modem' or 'printer') should be
dispayed along with a line connecting it to the icon representing the device.
Type
cmd-T (command-T) to activate "Test studio" and click the icons of QuickTime
Music and other output devices. You should hear chords sent by OMS to these
devices. Playing a MIDI keyboard should similarly produce a visual effect on
the studio document.
If
there is no communication, select "
OMS
MIDI setup"
in the "Edit" menu to select the proper serial port.
In
OMS MIDI setup you shoud also check "Run MIDI in background" as BP2 may be used
as a server.
When
done with all this, save the studio document and quit OMS Setup.
Users
of MIDIshare should make sure that messages are routed via OMS. BP2 does not
recognise MIDIshare and will communicate with it only via OMS.
If
you try BP2 to use OMS while OMS is not active on your system, you will get an
explicit error message and BP2 will switch to its own built-in driver, which
has limited features.
At
startup, BP2 reads information about the default OMS input and output stored in
the "-se.startup"
file. This file is supplied by default with the setting of QuickTime Music as
the output, and no input.
Double-click
BP2.9.3 (68k) or BP2.9.3 (ppc), depending on the type of computer you are
using. In the welcome alert, click "Data", then click the button "Check MIDI"
on the Control panel, and take the option "Check output." A dialog with 16
buttons resembling a calculator is displayed. Click button '1' to play random
music on channel 1.
You
may not hear anything at all. No panic! Try the following procedures:
- If
BP2 displayed a message telling that it failed to sign in with OMS, you must
install and activate OMS, unless you wish to use the in-built MIDI driver. If
BP2 did not complain about anything, it means that the MIDI interface, the
synthesizer and/or the amplifier are wrongly connected, not powered,
communicating via the wrong MIDI channel, or set to volume zero... Some MIDI
interfaces such as
Opcode
MIDI Translator II
have input/output lights that keep flashing when data is transmitted. This
helps tremendously.
- By
the way, don't forget to check the volume pedal on the synthesizer! I have
spent hours finding it...
- OMS
may be installed and yet inactive because the "OMS" extension or the "OMS
Preferred Device"
(plus perhaps more extensions and control panels in future versions of OMS) are
inactive. Check this in the "Extension Manager" control panel and restart your
Mac.
- If
OMS is active you won't get any warning at startup and OMS items will become
active (displayed in black) in the "Devices" menu. Select "OMS input-output"
and pull down the output menu to activate "QuickTime Music".
If you have gone this far it generally works.
- If
OMS is active but you cannot find "QuickTime Music"
in the output list, select "OMS Studio setup".
If "QuickTime Music" appears crossed out on the studio document, double-click
it and switch in on.
- If
you expected BP2 to play sounds on an external MIDI device, and OMS is active,
select "OMS input-output"
and check the name of your MIDI device. If it is not in the list, run "OMS
Studio setup".
If you still don't hear it, run "OMS MIDI setup"
to select 'modem' or 'printer'. This may require entirely switching off the
MIDI interface, the synth and the Mac, including disconnecting the power supply
from a PowerBook... because the serial port, the interface or the input of the
synthesizer might be stuck.
- If
OMS is not active, you are using the in-built MIDI driver. All you need is to
check either 'modem' or 'printer' in the "Devices" menu, assuming, on certain
Macs, that you run IRTalk or EtherTalk instead of LocalTalk. (See the
"AppleTalk" or "Network" control panel.) Remember, this will not work on some
old PowerBooks such as the PB 150, which cannot communicate with MIDI unless
OMS is installed.
- If
OMS is active and BP2 runs in background, for example you launch it from a
FileMaker Pro database such as "TryAppleEvents.fm",
you will not hear any sound unless "Run MIDI in background"
is checked on the "OMS MIDI setup"
panel that is accessible from the "Devices" menu. Since it is an
application-independent setup this option will remain set until you decide to
change it.
Once
you have performed changes in the "OMS input-output"
menus, these may not work immediately. In any case you should store these
changes to the default settings file. Select "
Modify
'-se.startup'"
in the "File" menu. BP2 remembers where it found the startup settings file and
will replace it with the updated one. If communication is not working, quit
and restart BP2.
If
the MIDI output is still dumb... There are bad days like this, notably when a
group of enthusiasts or a person you invited for a candle dinner is sitting
around waiting for a demo! Check cables, power supplies, amplifiers, speakers
and the synthesiser's MIDI set-up until you hear sounds. (Maybe your device is
not receiving on the proper MIDI channel? Check the channel number, set OMNI ON,
or else, just call your little brother who knows all about such things...)
Et
voilà
! Don't
invite your 'windoze' neighbour over a show until you can manage to make
sounds. Otherwise s/he'll feel like saying something silly, for instance "my
SoundBlaster card works better!"...
1.3 Run
a script
(You
can send your brother back to his video game now. Here comes some substantial
stuff.)
Quit
BP2 and double-click the "+sc.TryMe"
file. BP2 will run this demo script which plays a short burst of music on the
MIDI device (channel 1) or the loudspeaker (via QuickTime music) and prompts
the user to hit a key of the MIDI keyboard or click the mouse.
You
may skip the rest of this section if you are not enthusiastic about AppleScript
and any programming stuff. Instead you might try working with simple notes (see
§1.4), performance controls (§1.5), sound-objects (§2) or
grammars (§3-4).
Type
cmd-– or select "Script" in the "Windows" menu. The following script is
displayed:
//
This is a script for Bol Processor BP2
Show
messages OFF -- avoid useless display
Note
convention = English
Show
graphics ON
Play
{2,G4,E4,C4,- C5 - C5 {C5_-,A#4_ _}}
Show
messages ON
Activate
window Scrap
Type
Welcome to Bol Processor BP2...
Type
<return>
Type
<return>
Type
Hope you enjoyed the music!
Type
<return>
Type
<return>
Type
If you didn't hear anything, select 'QuickTime Music' for the output in 'OMS
input-output', then 'Modify -se.startup' in the 'File' menu. If Opcode OMS is
not installed, or you don't know what OMS stands for, read the documentation...
Type
<return>
Type
<return>
Type
The documentation is in the 'bol-processor-xxx-doc' folder, and examples in
'bol-processor-xxx-data'. ('xxx' is the version number) You must download
these folders to use BP2.
Type
<return>
Type
<return>
Type
<return>
Type
BP2 is now waiting for you to play 'C4' on the MIDI keyboard, or click the
mouse...
Wait
for C4 channel 1
Script
instructions can be created in three ways:
- typing
them directly into the "Script" window;
- "pulling
down" an instruction from the "Script" menu
and filling arguments between “ quotes ” with acceptable values.
(Use sticky menus in MacOS 8.0 to facilitate the selection)
- recording
actions in script form while they are being performed in BP2, a feature similar
to AppleScript. To set the script manager to recording mode, check the "REC"
button on top of the "Script" dialog.
Instructions
obtained by pulling down the "Script" menu
are hilited below. The remaining instructions were recorded in the "REC" mode.
//
This is a script for Bol Processor BP2
Show
messages OFF
-- avoid useless display
Note
convention = English
Show
graphics ON
Play
{2,G4,E4,C4,- C5 - C5 {C5_-,A#4_ _}}
Show
messages ON
Activate
window Scrap
Type
Welcome to Bol Processor BP2...
Type
<return>
Type
<return>
Type
Hope you enjoyed the music!
Type
<return>
Type
<return>
Type
If you didn't hear anything, select 'QuickTime Music' for the output in 'OMS
input-output', then 'Modify -se.startup' in the 'File' menu. If Opcode OMS is
not installed, or you don't know what OMS stands for, read the documentation...
Type
<return>
Type
<return>
Type
The documentation is in the 'bol-processor-xxx-doc' folder, and examples in
'bol-processor-xxx-data'. ('xxx' is the version number) You must download
these folders to use BP2.
Type
<return>
Type
<return>
Type
<return>
Type
BP2 is now waiting for you to play 'C4' on the MIDI keyboard, or click the
mouse...
Wait
for
C4
channel 1
The
first line is a comment preceded by the double slash // familiar to C
programmers. The first instruction (second line) contains a remark preceded by
"--", as in AppleScript or HyperTalk. The next instruction tells BP2 that
simple
notes
shall be notated in the English convention. (See other conventions §1.11)
The
instruction "Play..." tells BP2 to play a musical item on the selected output.
Here the item is polyphonic and notated as a
polymetric
expression.
You will learn more about polymetric expressions in §4.2 of this
introduction, or §4.10 of the reference manual. In brief, the digit "2"
indicates that the expression's length is 2 beats, while other
fields
separated with commas denote the four "voices". We have a chord {G4, E4, C4}
sustained throughout the entire item, as well as a more complex melodic phrase
"- C5 - C5 {C5_-, A#4_ _}" which contains another polymetric expression.
Symbols '-' and '_' indicate
silences
and
note
prolongations
respectively. Thus, "C5_" could be worth a half-note and "C5" a quarter-note.
Other
instructions in this script are self-explanatory.
1.4 More
notes
The
"+sc.TryMe"
script demonstrated BP2's ability to deal with "
simple
notes"
in the same way most MIDI programs do. BP2 was initially designed to handle "
sound-objects"
containing arbitrary sequences of elementary events (MIDI messages or Csound
score lines), and it still handles them. You will learn about sound-objects
very soon. Meanwhile, here is an overview of things you can do with simple notes.
Type
cmd-d or select "Data" in the "Windows" menu. Then type cmd-j or select "Type
from MIDI"
in the "Misc" menu. The cursor changes to a small keyboard:
.
From now on, any note played on a connected MIDI input device will print the
note name at the current cursor position. It uses the convention selected in
the "Misc" menu: English, French-Italian, Indian or Key numbers.
Notes
may be transposed if "Transpose input notes"
has been checked on the Control panel and a non-zero number of semitones has
been entered near the check box.
In
the "
"
mode, pushing the "hold" pedal inserts a one-beat prolongation '_'. There is a
smarter way of entering durations: see the end of §4.3.
1.5 Performance
controls
MIDI
folks are primarily interested in controlling all sound parameters in a
flexible and acurate way. A Japanese company is already offering direct
control of MIDI by brainwaves! Perhaps the reverse -- controlling the brain
from MIDI -- would make more sense, but this is what music is about after all.
Access
to fine control may be compared with skills at playing an instrument. In BP2
the term
performance
control
is used to name an access to such parameters.
Enter
a sequence of notes using the MIDI keyboard, then select it with the mouse and
type cmd-p, or select "Play selection" in the "Action" menu. You will hear the
sequence just entered. Durations and velocity information are ignored. They
can be specified afterwards. Notes are played with the current metronome
setting (mm = 60 by default). Type cmd-m to change the speed.
Readers
who never heard, and don't want to hear, about pitch benders and other MIDI
torture
instruments might jump to §1.11.
Let
us now edit the sequence. Suppose that you entered "C5 D5 F5 G5 C6 A#5 A5 G5".
Type cmd-j once again to return to text editing mode (the blinking cursor).
Then try the following performance controls: (These
examples belong to file "-da.SomeNotes"
that may be opened from the "Data" window.)
- Silences
and prolongations:
C5
- D5 F5 G5_ C6 A#5 A5 G5
- Polyphony
(see §1.12):
{C5
D5 F5 G5 C6, A#5 A5 G5}
- Imbedded
script instruction:
_script(Beep)
C5 D5 F5 G5 C6 _script(Wait for space) A#5 A5 G5
- Performance
control (velocity):
_vel(60)
C5 D5 F5 G5 _vel(127) C6 A#5 A5 G5
- Performance
control (crescendo):
_volumecont
_volume(20) C5 D5 F5 G5 _volume(127) C6 A#5 A5 G5 _volume(80)
- Performance
control (pitchbend):
_pitchcont
_pitchrange(200) _pitchbend(0) C5___ _pitchbend(150)___ _pitchbend(-180)
- Program
change:
_script(MIDI
program 1) C5 D5 F5 G5 _script(MIDI program 5) C6 A#5 A5 G5
The
last example deserves a comment: "_script(MIDI program x)"
selects MIDI program
x
on the MIDI device, with the effect of changing the timbre (the "patch"). This
generally requires a set-up time on the synthesiser, roughly 0.5 second on my
D-50 and much more with QuickTime Music. It is therefore not advisable to
insert this instruction in a fast movement. It is generally better to use a
multitimbral patch able to assign a different instrument to each MIDI channel.
QuickTime Music
does it fine; see "MIDI orchestra"
in the "Devices" menu and follow on-line help.)
Performance
control "_script(MIDI program...)" may be recorded by BP2 in the same way notes
are entered: type cmd-j and change the patch manually on the MIDI device. This
will paste the instruction to the current edit window.
Instead
of typing performance controls
you may pick them from a predefined list: select "Pick performance control"
in the "Edit" menu.
If
you want to know everything about
performance
controls
in BP2, you may activate the "Data" window and load "-da.checkControls".
(Type cmd-o or select "Open" in the "File" menu.) There is a line
"-gl.GeneralMIDI"
on top of the window, meaning that BP2 is going to use a
glossary
comprehensible to synthesisers based on General MIDI.
To
hear all examples, type cmd-a or select "Select all" in the "Edit" menu, then
type cmd-p or select "Play selection" in the "Action" menu. BP2 skips remarks
and plays all items in the window.
1.6 What
else can be controlled?
MIDI
specifications make it possible for BP2 to handle
continuous
changes of the following parameters:
- Pitch,
modulation,
channel
pressure
(polyphonic aftertouch),
volume
(default controller 7) on all synthesisers;
- Panoramic
(default controller 10) on synthesisers complying with
General
MIDI;
- Up
to 250 parameters with arbitrary names
that are only recognised by Csound instruments. See "_value(param,x)",
"_step(param)",
"_cont(param)"
and "_fixed(param)"
in §17.5.
The
sampling rate (default 50 messages per second) can be adjusted to compromise
between accuracy and MIDI bandwidth. Keep in mind that BP2 creates messages in
real time, sometimes resulting in hundreds of messages being sent to MIDI every
second. Some of them might get lost notably if other MIDI devices are active
on the same network. When this happens it is necessary to reduce sampling
rates to the minimum values required for smooth movements. Ten messages per
second would be enough in many cases.
Velocity
is not controlled continuously: a unique velocity value is assigned to every
note or sound-object.
(In the case of sound-objects it is possible to instruct some objects to ignore
this velocity assignment.) Velocity values may be interpolated between two
pre-set values along the sequence. This is done using instruction "_velcont"
(or equivalently "_velstep")
which may be cancelled by "_velfixed". Transposition
is supported by the "_transpose(x)"
command in which
x
is the number of semitones up (down if negative). Note that transpositions may
be cumulated, using curled brackets (i.e. polymetric expressions).
For instance,
_transpose(-3) { A4 _transpose(+7) C3 D3}
is
interpreted as:
A4 _transpose(+4) C3 D3 [ ... since -3 + 7 = 4 ]
Controls
are limited by MIDI specifications. For instance, it is not possible to assign
different pitchbend corrections to several notes on the same MIDI channel.
Fanatics of microtonal intonation must either content themselves with monodic
music or distribute notes on separate channels.
Each
MIDI implementation has its own limitations: for instance, Roland D-50 does not
distinguish volume controls on separate MIDI channels, even though BP2 produces
the correct messages.
Results
also depend on the
OMNI
ON/OFF
and
POLY/MONO
settings, briefly discussed in "-da.checkControls".
See MIDI literature or the synthesiser's instruction manual for a detailed
explanation. BP2 makes it possible to change these settings with script
commands. These must be executed on the basic channel of the MIDI device. See
the instruction manual of the device.
MIDI
implementation are by-passed by some software environments. For instance,
Opcode OMS makes it possible to use more than 16 MIDI channels; it simply maps
channels above 16 to other devices. Future versions of BP2 will take advantage
of such features.
Csound
is another way of going far beyond MIDI. (See §17)
1.7 Entering
the arguments of performance controls from MIDI
In
the same way notes can be "typed" from the MIDI keyboard, the arguments of
performance
controls
may be captured from a MIDI device. Suppose that you entered "C5 D5 F5 G5 C6
A#5 A5 G5" in the "Data" window. Select "Pick performance control"
in the "Edit" menu and insert the following controls (or load file
"-da.checkCapture"):
_chan(•) _pitchrange(•) _volumecontrol(•) _volume(•)
_vel(•) C5 D5 F5 _vel(•) G5 C6 _mod(•) A#5
_pitchbend(•) G5 F5
Arguments
marked by a period need to be replaced with numeric values. Type "1" for the
argument of "_chan"
and "200" for that of "_pitchrange",
assuming that the pitch bender of the MIDI device is set to vary ± 200
cents, or another value if it is set differently. (Each semitone is 100 cents.)
Type
cmd-j. The cursor takes its "keyboard" shape
.
Click the word "_pitchbend". The argument of "_pitchbend()"
gets hilited. Now move the pitch bender. BP2 automatically converts in-coming
pitchbend messages to cent values (within the specified range) writing the
result as an argument of _pitchbend. Of course it is a good idea to play A5 or
G5 while you are moving the pitch bender, so that you can hear the effect.
This
process works if the pitch bender is sending messages to the specified channel.
Otherwise, click "_chan", move the bender, and let BP2 record the channel number.
Hmmm.
Great, but if I release the bender the final value is always 0, isn't it? The
solution is to hit the space bar or click the mouse anywhere (outside the word
"_pitchbend"...) as soon as the desired position has been reached.
Do
the same with modulation: click "_mod"
and move the modulation bender while playing notes. You can adjust the
argument for "_vel(•)"
similarly: BP2 records velocities of in-coming NoteOn's.
For
volume, first click "_volumecontrol" and move the volume pedal to record its
number (most likely 7). Then click "_volume" and record the pedal position.
Performance
controls
whose numeric arguments may be interactively entered are:
_chan(),
_vel(), _mod(), _press(), _volumecontrol(), _pancontrol(), _volume(),
_pitchbend(), _pan().
Values
recorded in the last three ones depend on preceding "_volumecontrol()",
"_pitchrange()"
and "_pancontrol()"
instructions respectively. Instructions "_volumecontrol(x)"
and "_pancontrol(x)"
instruct BP2 that controller x is the one modifying volume or panoramic
respectively. Default arguments are 7 for volume and 10 for panoramic.
1.8 Articulation
Data
file "-da.checkArticulation"
demonstrates BP2's ability to deal with
legato
and
staccato.
The whole set of examples may be played with a "Cello" sound.
Articulation
values may be interpolated between two pre-set values, given that "_staccato(x)"
is equivalent to "_legato(-x)"
and conversely.
1.9 Parametric
performance control
For
all performance controls
taking an argument
in
range 0..127
it is possible to replace the argument with a
control
parameter
K1, K2,... K32767. For instance, "_vel(K3
= 60)" will assign velocity 60 and set K3 to the same value. If later, for
instance, _press(K3) is found, then channel pressure will be set to the current
value of K3. These control parameters are therefore global numeric variables.
Parameters
K1, K2... may also be used as
weights
in grammars
(see §5.4 or reference manual §4.6) and may even be modified by MIDI
controllers or NoteOn velocities, depending on infomation given in the
"Interaction" window, for instance:
IN
Param K3 = controller #18 channel 1
(See
§6.5 for more detail)
1.10 Ranges
of performance control arguments
The
following ranges are imposed by MIDI specifications.
- _chan(1..16)
- _legato(0..127)
- _mod(0..16383)
-- some devices may ignore the least significant byte
- _modrate(0..16383)
-- samples per second
- _pan(0..127)
- _pancontrol(0..127)
-- index of MIDI controller
- _panrate(0..16383)
-- samples per second
- _pitchbend(0..16383)
if not preceded by _pitchrange(r),
otherwise
(-r..+r) with
r
in cents
- _pitchrange(0..16383)
-- this value is generally lower and depends on the synthesiser:
"_pitchrange(r)" instructs BP2 that the range of the pitch bender on the
current MIDI channel is (± r) cents. It sets the limit of the argument of
_pitchrange() to the same value.
"_pitchrange(0)"
indicates that subsequent "_pitchbend(x)" instructions take their argument
x
as the actual MIDI pitchbend position (range 0..16383) instead of a value
expressed in cents.
- _pitchrate(0..16383)
-- samples per second
- _press(0..127)
- _pressrate(0..16383)
-- samples per second
- _staccato(0..127)
-- in fact the value is clipped to the 0..100 range.
- _transpose(-128..+127)
-- semitones
- _vel(0..127)
- _volume(0..127)
- _volumerate(0..16383)
-- samples per second
- _volumecontrol(0..127)
-- index of MIDI controller
1.11 Changing
note convention
There
are four options for note conventions in the "Misc" menu: "English" (default),
"French", "Indian" and "Key numbers". The convention is saved in the
"-se.<filename>" settings, the name of which may appear on top of a
grammar or data file. The default convention is saved in "-se.startup". Changing
the convention brings to front a keyboard dialog, for instance the one shown
Fig.1 (French-Italian convention).
Fig.1
Changing the note convention to "French-Italian"
The
selected names will be the ones used for displaying items. Alternate names
(e.g. "reb" instead of "do#") are also recognised when parsing grammars, data
or scripts. The selection of names is saved in the "-se.<filename> "
settings file.
Octaves
are numbered as per the convention:
middle
C = C4 = do3 = sa4 = MIDI key number 60
If
A4 = la3 = dha4 = 440Hz, then C0 (MIDI key 12) is approximately 16Hz whereas C1
or do1 (MIDI key 24) comes to about 32Hz (
le
do grave du violoncelle
).
Since these frequencies are low, MIDI keys 0 to 31 are rarely used for tonal
data, but they might be reserved to other types of messages. The octave
starting with MIDI key 0 is notated:
C00
Db00 D00...
do000
reb000 re000...
sa00
rek00 re00
whereas
the one starting with MIDI key 12 is notated:
C0
Db0 D0...
do00
reb00 re00...
sa0
rek0 re0
This
convention was not the same in previous versions of BP2. See §4.8 for
customizing it.
1.12 Polyrhythmic
sequences and polymetric expressions
Do
not skip this section! It introduces one of the most useful features of BP2,
and examples are easy to perform. (Lazy readers will find them in file
"-da.PeriodNotation".)
Display
the "Data" window and type cmd-j or select "Type from MIDI" in the "Misc" menu
(see §1.4). Now, play a few notes on the MIDI keyboard. These are
immediately transcribed to the "Data" window, for instance:
C5
D5 G5 F5 G5 C5 D5 D#5 D5 C5 A#4 C5
Now
select this sentence and type cmd-p. A dull performance, isn't it? Keep in
mind that BP2 allows all kinds of manipulations of note durations (see
§1.8) and time patterns (see §9). For the moment we will use a plain
metronome to demonstrate rhythmic possibilities at the level of the
score.
We call this dealing with
symbolic
durations.
1.12.1 The
period notation
Insert
periods (indicating beats), for instance:
C5.D5.G5.F5
G5.C5 D5.D#5.D5.C5 A#4.C5
Play
this example. Symbolic durations have been resized automatically so that the
sum of durations remains constant over each 'beat'. In western terminology,
the item would be said to contain crotchets and quavers. In Indian
terminology, the same would be described as tempo changes from
hargun
(speed 1) to
dogun
(speed 2).
This
period
notation
is a recent feature of BP2. Previously, the simple (although less flexible)
way of notating speed changes was:
/1
C5 D5 G5/2 F5 G5 C5 D5/1 D#5 D5/2 C5 A#4/1 C5
A
slash followed by an integer number specifies the
tempo,
more precisely the
density
of sound-objects
(in units per beat). We call it an
explicit
tempo marker.
Tempo markers are still used in the present version, and may be combined with
the period notation. Read on...
You
may try all kinds of arrangements of periods on a sequence. You will find that
changes of tempo may introduce fractional ratios. Try for instance:
C5
D5.G5 F5.G5 C5 D5.D#5 D5 C5.A#4 C5
Here,
the duration of each note in "G5 C5 D5" and "D#5 D5 C5" is 2/3d that of the
first note "C5". Is it possible to represent this example with explicit tempo
markers? The answer is given by BP2: select the item and click "Expand
selection" on the Control panel (accessed with cmd-=). The explicit notation
is the following:
/3
C5_ _.D5_ _.G5_ _.F5_ _.G5_ C5._ D5_.D#5_ D5._ C5_.A#4_ _.C5_ _
in
which '_' indicates a prolongation of the preceding note. The initial part "/3
C5_ _" means that the tempo is "speed 3" (
tigun
in Indian notation), but since "C5" is followed by two prolongation symbols its
resulting duration (3/3 = 1) is the same as in the preceding examples.
There
is an important rule regarding tempo: in a sequence, the tempo of sound-objects
or notes in the first beat sets the initial tempo, whatever the beat division.
The initial tempo may be the default one "/1" unless otherwise specified.
Examples will make it clear. First we introduce an explicit initial tempo:
/2
C5 D5.G5 F5.G5 C5 D5.D#5 D5 C5.A#4 C5
Now,
something more tricky: although the third beat "G5 C5 D5" contains three notes
we want it to be performed at "speed 2". This will force BP2 to resize other
beats accordingly. The notation is:
C5
D5.G5 F5./2 G5 C5 D5.D#5 D5 C5.A#4 C5
What
is the duration of the initial "C5" in this case? It is 3/2 that of each note
in the third (and fourth) beats. Since the latter are forced to speed 2, the
resulting duration for "C5" is 3/2 x 1/2 = 3/4. This is shown by the expanded
notation of the same example:
/4
C5_ _ D5._ _ G5_._ F5_ _.G5_ C5_.D5_ D#5_.D5_ C5_.A#4_ _ C5._ _--
Note
that for the sake of consistency BP2 completed the last beat with two silences
'-'.
At
this stage you might start figuring out that BP2 is smart in dealing with
rhythmic problems. Imagine doing the previous examples on a MIDI sequencer
using event lists or common musical notation... But there is more to come!
What
happens if several explicit tempo markers are inserted? For instance,
C5
D5.G5 F5./2 G5 C5 D5./2 D#5 D5 C5.A#4 C5
is
equivalent to the preceding example. One of the two markers is redundant.
Putting several markers in the same sequence is useless and may even lead to
inconsistency. For instance,
C5
D5.G5 F5./2 G5 C5 D5.D#5 D5 C5./3 A#4 C5
results
in conflicting durations and will be rejected by the interpreter. A good
strategy is to use no more than one explicit tempo marker in an entire musical
item, and let the interpreter adjust durations accordingly. This explicit
tempo marker is often in the beginning of the item, but it may be inserted
elsewhere, notably in case the beginning tempo cannot be specified by an
integer number.
Silences
(notated '-') may of course be inserted in sequences and will be resized like
simple notes or sound-objects, for instance:
C5.D5.-
- F5 G5.C5
A
sequence of several silences '-' may be replaced with an integer number. Thus,
the preceding notation is equivalent to:
C5.D5.2
F5 G5.C5
More
generally, silences may be defined as integer ratios. For instance, the item
C5.D5.3/2
F5 G5.C5
is
interpreted as:
/7
C5_ _ _ _ _ _ D5_ _ _ _ _ _ - _ _ F5_ G5_ C5_ _ _ _ _ _
Sometimes
it is difficult to calculate the duration of a silence, or it is more
convenient to leave it unspecified so that the interpreter determines its value
it in the current context. Silences with unspecified durations are called
undetermined
rests,
notated '_rest'
or '...'. Try the following
C5.D5.G5..../5
F5 G5 C5.D5 D#5.D5 C5.A#4.C5
or
equivalently:
C5.D5.G5.
_rest/5 F5 G5 C5.D5 D#5.D5 C5.A#4.C5
Given
the context, the interpreter estimates that the simplest value for the
undetermined rest will be 2/5 of a beat. The resulting interpretation is:
/1
C5 D5 G5/5 - - F5 G5 C5/2 D5 D#5 D5 C5/1 A#4 C5
Data
file "-da.ShowPeriods"
contains a few examples demonstrating the period notation.
Let's
finish with a quizz: can you write a piece of music which keeps accelerating,
using a unique symbol for the duration? The answer is 'yes', and the solution
is given §4.11 of the Reference Manual.
1.12.2 Polymetric
expressions
All
features presented in §1.12.1 apply to
polymetric
expressions,
which contain simultaneous musical fragments. The notation{A, B,...} means
that expressions A, B,..., are performed simultaneously with identical
(symbolic) durations. Expressions separated by commas are called
fields
of the polymetric expression.
The
condition on equal durations is similar to the one in sequence operations. In
fact, the same
polymetric
expansion algorithm
is used. For example, the sequence
/1
C4 D4 E4 F4 G4.C5 D5 E5
is
interpreted:
/3
C4_ _ D4_ _ E4_ _ F4_ _ G4_ _ C5_ _ _ _ D5_ _ _ _ E5_ _ _ _
Similarly,
the polymetric expression
{C4
D4 E4 F4 G4, C5 D5 E5}
leads
to a two-line score represented in a table, the
phase
diagram:
Note
that a polymetric expression
may contain several levels of curled brackets {} and any its fields may in turn
be notated in period notation.
Other features such as explicit tempo markers and undetermined rests apply in
the same way shown with period notation.
Typical
examples of rhythmic items combining period notation with polymetric expressions
are given in the data file "-da.checkPoly".
Simple examples will also be introduced further in the present document.
Read
more about polymetric expressions
in the reference manual §4.10.