2
Installing Bristol Summary (x.y.z = 0.60.8, for example):
4
a. tar -zxvf bristol-x.y.z.tar.gz
9
f. /usr/local/bin/startBristol -mini
15
3. Command line options
16
4. ALSA Interface Configuration
17
5. Jack Interface Configuration
18
6. Bristol runcom file
19
7. Integration with MIDI Control Surfaces
20
8. Keyboard Accelerators
21
9. Basics of Subtractive Synthesis [Not written yet]
22
10. Basics of FM Synthesis [Not written yet]
24
This document is intended to help get bristol running with a minimum of fuss
25
or effort. The first steps above, a through f, are the shortest possible path
26
but there are a lot more options and capabilities discussed below that may
27
change the way bristol operates.
33
Bristol Audio Synthesis is a synth emulation package for a diverse range of
34
vintage synthesisers, electric pianos and organs. The application consists of
35
a synthesiser backend and a GUI frontend called Brighton.
39
Bristol is written by Nick Copeland with additional contributions by others.
43
2.1. System requirements
45
Bristol does not place a high requirement on the underlying system installation,
46
the DSP code is all packaged into the engine and the GUI was written for
47
bristol. There are a number of optional extra packages that bristol can use to
48
give a more complete set of binaries. Also refer to section 1.3 below.
50
libx11-dev Bristol GUI requires this package
51
libasound2-dev ALSA support requires this package
52
jackd Jack support requires this package
53
libjack-dev Jack support requires this package
55
The system will also need libm.so to be installed as well as the build utils
56
however this is a part of a normal distribution. The build utility requirements
57
is a little outside the scope of this document, it is assumed that make/gcc/as
58
are previously installed.
60
2.2. Unpack the archive.
62
To do this, use the command below, replacing x.y.z with the version number of
63
the downloaded source code.
65
tar -zxvf bristol-x.y.z.tar.gz
67
This will create a subdirectory called bristol-x.y.z
69
2.3. cd into the directory and do a 'configure'
74
Do bear in mind that if you have another version of Bristol installed, either
75
through your distribution's package manager or locally installed before, the
76
configure script will stop and refuse to continue. You can either use the
77
package manager to remove the version of Bristol installed or just ignore it
78
and add the --disable-version-check option to the end of configure on the
81
At the end of the configure process there will be a short report on the driver
82
interfaces that have been auto-detected. Here is an extract of the output:
84
| Build with OSS support ......................... : true
85
| Build with ALSA support ........................ : true
86
| Build with JACK support ........................ : false
87
| Bristol needs jackd and libjack-dev to be installed for JACK support.
88
| Build with JACK MIDI support ................... : false
89
| Build with JACK Session support ................ : false
90
| Default audio drivers .......................... : alsa
91
| Default MIDI drivers ........................... : alsa
92
| X11 include file availability .................. : true
94
As is visible here it was not possible to find the relevant header files for
95
the jack audio interface drivers so support will not be included in the eventual
96
compilation. There is an indication provided as to which packages would be
97
required to enable that support. For audio drivers there is a minimum of ALSA
98
required (OSS is also possible) however if the X11 header files could not be
99
found then there will be no graphical support in the binaries - a command line
100
interface only. In this event there will also be a report on which packages
101
are required to provide that support.
103
2.4. Execute a 'make'.
105
To build Bristol type:
109
This process will produce all the usual verbose output. It will contain some
110
warnings about unused variables and some potential coding changes however it
111
should proceed to completion. If you get errors such as the following then you
112
will need to contact the author or raise a bug report.
114
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/X11R6/include -pthread -Wall -g -I./../include/slab -I./../include/bristol -I. -DBRISTOL_VOICECOUNT=32 -DBRISTOL_JACK_MULTI_CLOSE -D_BRISTOL_DRAIN -DBRISTOL_HAS_ALSA=1 -I/usr/include/alsa -ffast-math -fomit-frame-pointer -O2 -g -O2 -I/usr/X11R6/include -MT bristol.o -MD -MP -MF .deps/bristol.Tpo -c -o bristol.o bristol.c
115
bristol.c:62: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘asdf’
116
make[2]: *** [bristol.o] Error 1
117
make[2]: Leaving directory `/opt/bristol/bristol-0.60.7/bristol'
118
make[1]: *** [all-recursive] Error 1
119
make[1]: Leaving directory `/opt/bristol/bristol-0.60.7'
120
make: *** [all] Error 2
122
How to contact the author or log a bug are given in the last few lines of the
123
output from ./configure above.
125
It is fortunately unusual that such compilation errors will occur on any Linux
126
distribution, the above was forced to fail just for providing an example.
128
2.5. install the application typically requires root permissions
130
If you get no errors from the 'make' process then the application is ready to
135
This step need to be run as root as, unless you have been very selective with
136
the ./configure options then parts of bristol will be written to parts of the
137
/usr filesystem which is typically read-only for user accounts. By default this
138
should install bristol and associated apps to /usr/local/ with data commponets
139
into /usr/local/share. To run the application you should now be able to use the
140
startBristol script however that does depend on /usr/local/bin being in your
143
2.6. Run the application
145
If the binary is placed in a directory in your path then you can typically
150
If this is not in your path then try the following, this is the default location
151
for the binaries and may differ if you use alternative --prefix for configure.
153
/usr/local/bin/startBristol -mini
158
3. Some Useful options for starting bristol:
162
Sets the number of voices the synth starts with. The default for most of the
163
synths is to start with as many voices as their hardware counterparts have.
164
In the case of the mini moog, this would be 1 voice.
168
Starts the synth with 1 voice (-hnp -lnp can be used to select high/low note
169
priority respectively)
173
Selects High Note Priority, any notes played higher than the currently held
174
note will sound and bounce back to the held when released. Notes lower will
175
be ignored by the engine. Vice versa with -lnp.
179
Changes the jack and alsa names to the text after it, so it can make more
180
sense when connecting devices etc.
184
Ignores the emulator default aspect ratio. In tiling window managers, bristol
185
can fight with the tiling for so long that active sensing will close the
186
emulator. This option stops that behaviour.
188
Note: Active Sensing is a 'ping' between the GUI frontend and the synth backend,
189
to ensure that the synth engine hasn't crashed.
193
Produces debug output to the terminal. 1 is very little debug. 16 is very
196
Many more options, along with the full list of synths can be found by doing
197
'startBristol --help' or 'man bristol'.
201
4. ALSA Interface Configuration
203
To see the MIDI connections that can be built you need to look at aconnect
208
Here is a sammple of its output:
210
client 0: 'System' [type=kernel]
213
client 14: 'Midi Through' [type=kernel]
214
0 'Midi Through Port-0'
215
client 20: 'USB Oxygen 61' [type=kernel]
216
0 'USB Oxygen 61 MIDI 1'
217
client 24: 'USB Keystation 88es' [type=kernel]
218
0 'USB Keystation 88es MIDI 1'
219
client 129: 'bristol' [type=user]
222
Here we can see two MIDI controllers and the bristol engine. The following
223
command will link them together so that you can play bristol from your MIDI
227
aconnect 'USB Oxygen 61' bristol
229
It is possible to connect two master controllers to bristol and this is not
230
unusual for something like the B3. This emulator also has two manuals and can
231
accept multiple controllers on different MIDI channels to allow control of
234
If ALSA is the default interface (ie, you have not given any flags that imply
235
another interface type) then bristol will use ALSA for both audio and MIDI. The
236
default is the 'seq' MIDI interface. It is also possible to use a raw MIDI
237
interface with the option '-midi raw', the type really depends on your soundcard
242
5. Jack Interface Configuration
244
JACK is a low-latency sound server, similar to ASIO on windows. Any apps that
245
are 'jack-aware' are able send audio information to one another seamlessly.
246
Bristol is just one such application that supports JACK. More information can
247
be found at http://jackaudio.org/
249
Using the jack audio driver is as simple as appending '-jack' to the
250
startBristol command.
252
As of 0.60.7, the following can disable the 'bristoljackstats' app, which can
253
cause startBristol to fail:
255
startBristol -jack -jackstats -count <jack periodsize> -rate <jack samplerate>
257
The count and rate have to match the settings given to the jack daemon. In the
258
event of mismatch you will get an error condition from bristol with some level
259
of diagnostic output to indicate the cause.
261
Unless specifically told otherwise, bristol will use jack drivers for both
266
Using qjackctl you can easily connect midi controlloers by clicking on either
267
the 'Midi' tab or 'Alsa' tab, depending on which midi driver you've selected to
268
use with bristol and then clicking the controller you want on the left pane and
269
the 'Bristol' input on the right and clicking 'connect'.
274
6. The Bristol runcom file
276
Bristol itself has a large range of parameters, each tuning the operation to
277
suit specific needs. Having to give so many parameters to get the synth to
278
work in a specific environment gives it flexibility but also makes it sometimes
279
difficult to use. To quote one person, "It can be an inspiration killer".
281
There are a few third party apps such as monoBristol that provide graphical
282
front ends to the commandline options to make starting bristol easier. Bristol
283
itself supports a runcom file where a user can specify common preferred params
284
that are then included with every invocation.
286
The bristol runcom file can be found, per default, in $HOME/.bristol/bristolrc
287
and its function depends on the bristol version.
289
6.1 Bristol prior to 0.60.8
291
The file needs to be created as it does not exist per default. When it exists
292
then the complete contents are prepended before the command line options. As
293
an example, consider the following contents:
302
-jack -jackstats -count 256 -rate 48000
304
Both of these will have the same affect as they are all summed together. If
305
bristol is started as 'startBristol -mini' then the actual commmandline will be
307
startBristol -jack -jackstats -count 256 -rate 48000 -mini
309
6.2 Bristol from 0.60.8
311
There were some limitations of the initial runcom implementation. A number of
312
parameters are implied by each emulator: voices, detune, pitchbend and others.
313
If the runcom includes a -pwd (pitch wheel depth) of 7 it might be lost when
314
the emulator is selected as the emulator will configure its own desired pitch
315
wheel sensitivity as most of the emulators will default this value to '2'. To
316
support such features the runcom was changed to support pre and post parameters.
317
Consider the following contents:
319
PREARGS=-jack -jackstats -count 128 -rate 48000 -as 0 -priority 65 -debug 1
320
POSTARGS=-multi 2 -lnp -pwd 7 -glide 10 -rud -lnp -log -gain 2 -host unix:
322
If bristol is now started with 'startBristol -mini' the final options taken by
325
startBristol $PREARGS -mini $POSTARGS
327
This is all expanded out to give a complete command line that, if it was typed
328
in, would read as follows:
330
startBristol -jack -jackstats -count 128 -rate 48000 -as 0 -priority 65 -debug 1 -mini -multi 2 -lnp -pwd 7 -glide -rud -lnp -log -gain 2 -host unix:
332
Here there are some initial parameter settings, then the emulator is selected.
333
The emulator will default the pitch wheel depth to '2'. Then the post arguments
334
are added and they reset the pitchwheel depth to the value '7'.
336
This whole ugly line of parameters is now called with just
340
The goal of the runcom file is to reduce to a minimum the number of parameters
341
that need to be given on the command line whilst still maintaining a completely
342
customised local configuration.
344
Questions regarding parameter ordering should be sent to LAU mailing list, the
345
author, or raised on the bristol sourceforge forum.
350
7. Controlling the GUI from a MIDI master controller
352
It is possible to get the GUI to be controlled from faders on a master
353
controller. First connect up the MIDI as described above. Place the mouse
354
cursor over the GUI control you want to track and push the Middle Mouse Button.
355
Now move the MIDI control, the GUI should now track that control. Devices can
356
be unregistered using the same method. The settings will be saved when you
359
The settings themselves are in the directory listed below, and they can be
360
edited with a text editor.
362
/home/username/.bristol/memory/profiles/<synthname>
364
Most of the synths come with a standard GM midi mapping for controlling filter
365
cutoff/resonance, etc.
369
8. Keyboard accelerators
371
8.1 Keyboard Mappings.
373
Bristol supports GUI shortcuts and playing the synths via a QWERTY keyboard.
374
Playing bristol via the QWERTY on the B3 has C2 starting on '\' and going up
375
to F3 on '/' on the bottom manual, while the top manual goes from C4 on Q to
376
G5 on ']'. On a single keyboard synth, such as the polysix, C1 starts on '\'
377
and goes up F2 on '/' and C3 starts on Q and ends at G4 on ']'.
379
For alternative mappings such as AZERTY it is necessary to manually edit the
380
emulator profile files.
382
8.2 Keyboard Accelerators
384
Useful shortcuts are:
390
Load/reload current memory
392
Save settings to current memory.
394
Arrow keys can control pot/slider movement with Shift being an accelerator.
395
The GUI devices also support VI style j/k up/down with Shift and Control
400
9. Basics of Subtractive Synthesis.
402
Subtractive synths generally have 5 parts to them:
406
3. Low Frequency Oscillators (LFOs)
408
5. Amplification output
410
Subtractive synthesis works by taking the waveforms generated by oscillators,
411
filtering them (or not) to remove specific frequencies, using a LFO to modulate
412
the sound, applying an ADSR Envelope to them and then sending the sound out the
417
Oscillators use basic waveforms (saw, square, triangle, sine) to produce sound.
418
On some synths, these can be combined to produce harmonically rich sounds (saw
419
and square for example).
421
The more oscillators a synth has, the greater number of waveforms that can be
422
layered together to create a quite 'phat' sound.
426
Filters are used to remove specific frequencies from the oscillators.
428
Filters generally come in 3 types in the bristol synths:
434
Low Pass filters remove high frequencies (i.e they pass low freqencies).
435
High Pass filters remove low freqencies
436
Band Reject filters remove both low and high filters in a specific range and
437
allow a certain 'mid-range' of frequencies through.
439
On all filters, there are 2 main controls:
443
Frequency Cutoff allows you to control how much of the sound gets filtered.
444
Resonance amplifies the narrow band of frequencies that are close to the cutoff point.
446
9.3.Low Frequency Oscillators (LFOs)
448
LFOs are exactly like normal oscillators (they have waveforms, like sine,
449
square and triangle), but they sound below what a human can hear. In this way,
450
they can modulate various parameters on the synths, without being heard. The
451
parameters that an LFO modulates is called the destination.
453
LFOs usually have 2 controls:
457
Rate determines how quickly the LFO oscillates at, low levels modulates the
458
destination slowly, while high levels will modulate quickly. Delay determines
459
how quickly the LFO should start modulating the destination.
461
Common modulation destinations are:
462
Audible Oscillator's frequency (Vibrato effect)
463
Filter Cutoff frequency (wah-wah effect)
464
Amplification output (tremolo effect)
466
On most of the bristol synths, the LFO 'depth' (how much the LFO affects the
467
destination) is controlled by the mod-wheel.
471
ADSR envelopes shape the sound of the oscillators and filter (where available).
472
ADSR stands for the 4 parameters that can shape the sound:
474
Attack - How quickly the sound reaches full volume.
475
Decay - How quickly the sound falls down to the sustain level
476
Sustain - Volume of the sound while the key is held
477
Release - How quickly the sound fades to silence
479
9.5. Amplification output
480
There is usually a control here that controls the overall volume of the synth.
484
10. Basics of FM Synthesis.
486
FM Synthesis stands for Frequency Modulation synthesis.
488
This means that one oscillator (called a Modulator) modulates the frequency
489
of another oscillator (called a Carrier). In Bristol there are 3 FM emulators,
490
2 Rhodes Electric Pianos and a Yamaha DX 6 Operator synth.
492
FM synthesis works by feeding one signal from one oscillator (a modulator) into
493
another signal from another oscillator (a carrier). The interesting part is
494
when a modulator is audible, detuning the modulator will produce bell-like
495
tones in the output as the carrier's frequency is modulated by an audible
496
signal. It should be noted that all of the oscillators are sine waves so
497
stacking them together can produce some nice hammond-esque sounds.
499
The DX emulation has got 24 different "algorithms" for all 6 of it's operators.
500
These control which oscillators are modulators and which are carriers
501
(modulators can be fed into other modulators as well).
503
All operators have their own ADSR envelope, so sound shaping is possible in
504
a variety of ways. The ADSR is a 7-stage envelope. This means that it has 7
507
L1 - First audible stage
508
Attack1 - Rate at which the operator goes from silence to L1
509
L2 - Second audible stage
510
Attack2 - Rate at which the operator goes from L1 to L2
511
Decay - Rate at which L2 falls to the Sustain stage
512
Sustain - How loud the sound will be through steady state
513
Release - Rate at which the sound falls to silence
515
Input gain - How much the modulator affects the carrier for this specific
517
Output gain - How loud the operator is (when it's a carrier) and how much modulation is sent out (when it's a modulator).
519
Each operator has three buttons: LFO, IGC and OGC.
520
LFO drops the oscillator by a few octaves and removes pitch tracking.
521
IGC controls whether the input gain for that operator is affected by velocity.
522
OGC controls whether the output gain for that operator is affected by velocity.
524
Initial draft by Andrew Coughlan.
525
Editing, additional information and suggestions by Nick Copeland.