~ubuntu-branches/debian/sid/bristol/sid

« back to all changes in this revision

Viewing changes to HOWTO

  • Committer: Bazaar Package Importer
  • Author(s): Alessio Treglia
  • Date: 2011-02-15 02:54:23 UTC
  • mfrom: (13.1.6 experimental)
  • Revision ID: james.westby@ubuntu.com-20110215025423-g8hcla5gyl08mae3
Tags: 0.60.8-2
* Upload to unstable.
* Relax JACK's build-deps to let this build in sid.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
Installing Bristol Summary (x.y.z = 0.60.8, for example):
 
3
 
 
4
        a. tar -zxvf bristol-x.y.z.tar.gz
 
5
        b. cd bristol-x.y.z
 
6
        c. ./configure
 
7
        d. make
 
8
        e. sudo make install
 
9
        f. /usr/local/bin/startBristol -mini
 
10
 
 
11
Table of Contents:
 
12
 
 
13
        1. About Bristol
 
14
        2. Installation
 
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]
 
23
 
 
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.
 
28
 
 
29
        1. About Bristol.
 
30
 
 
31
        1.1 What is it?
 
32
 
 
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.
 
36
 
 
37
        1.2 Who is it by?
 
38
 
 
39
Bristol is written by Nick Copeland with additional contributions by others.
 
40
 
 
41
        2. Installation
 
42
 
 
43
        2.1. System requirements
 
44
 
 
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.
 
49
 
 
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
 
54
 
 
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.
 
59
 
 
60
        2.2. Unpack the archive.
 
61
 
 
62
To do this, use the command below, replacing x.y.z with the version number of
 
63
the downloaded source code.
 
64
 
 
65
tar -zxvf bristol-x.y.z.tar.gz
 
66
 
 
67
This will create a subdirectory called bristol-x.y.z
 
68
 
 
69
        2.3. cd into the directory and do a 'configure'
 
70
 
 
71
cd bristol-x.y.z
 
72
./configure
 
73
 
 
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
 
79
command-line.
 
80
 
 
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:
 
83
 
 
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
 
93
 
 
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.
 
102
 
 
103
        2.4. Execute a 'make'.
 
104
 
 
105
To build Bristol type:
 
106
 
 
107
make
 
108
 
 
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.
 
113
 
 
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
 
121
 
 
122
How to contact the author or log a bug are given in the last few lines of the
 
123
output from ./configure above.
 
124
 
 
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.
 
127
 
 
128
        2.5. install the application typically requires root permissions
 
129
 
 
130
If you get no errors from the 'make' process then the application is ready to
 
131
be installed.
 
132
 
 
133
sudo make install
 
134
 
 
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
 
141
path.
 
142
 
 
143
        2.6. Run the application
 
144
 
 
145
If the binary is placed in a directory in your path then you can typically 
 
146
start it directly:
 
147
 
 
148
startBristol -mini
 
149
 
 
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.
 
152
 
 
153
/usr/local/bin/startBristol -mini
 
154
 
 
155
 
 
156
 
 
157
 
 
158
        3. Some Useful options for starting bristol:
 
159
 
 
160
-voices
 
161
 
 
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.
 
165
 
 
166
-mono
 
167
 
 
168
Starts the synth with 1 voice (-hnp -lnp can be used to select high/low note
 
169
priority respectively)
 
170
 
 
171
-hnp
 
172
 
 
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.
 
176
 
 
177
-register
 
178
 
 
179
Changes the jack and alsa names to the text after it, so it can make more
 
180
sense when connecting devices etc.
 
181
 
 
182
-ar
 
183
 
 
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.
 
187
 
 
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.
 
190
 
 
191
-debug [1-16]
 
192
 
 
193
Produces debug output to the terminal. 1 is very little debug. 16 is very
 
194
verbose debug.
 
195
 
 
196
Many more options, along with the full list of synths can be found by doing
 
197
'startBristol --help' or 'man bristol'.
 
198
 
 
199
 
 
200
 
 
201
        4. ALSA Interface Configuration
 
202
 
 
203
To see the MIDI connections that can be built you need to look at aconnect
 
204
commmand:
 
205
 
 
206
aconnect -io
 
207
 
 
208
Here is a sammple of its output:
 
209
 
 
210
client 0: 'System' [type=kernel]
 
211
0 'Timer '
 
212
1 'Announce '
 
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]
 
220
0 'bristol input
 
221
 
 
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
 
224
master controller:
 
225
 
 
226
aconnect 20 129
 
227
aconnect 'USB Oxygen 61' bristol
 
228
 
 
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
 
232
both them.
 
233
 
 
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
 
238
and driver options.
 
239
 
 
240
 
 
241
 
 
242
        5. Jack Interface Configuration
 
243
 
 
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/
 
248
 
 
249
Using the jack audio driver is as simple as appending '-jack' to the
 
250
startBristol command.
 
251
 
 
252
As of 0.60.7, the following can disable the 'bristoljackstats' app, which can
 
253
cause startBristol to fail:
 
254
 
 
255
startBristol -jack -jackstats -count <jack periodsize> -rate <jack samplerate>
 
256
 
 
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.
 
260
 
 
261
Unless specifically told otherwise, bristol will use jack drivers for both
 
262
audio and midi.
 
263
 
 
264
        5.1 Using qjackctl
 
265
 
 
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'.
 
270
 
 
271
 
 
272
 
 
273
 
 
274
        6. The Bristol runcom file
 
275
 
 
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".
 
280
 
 
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.
 
285
 
 
286
The bristol runcom file can be found, per default, in $HOME/.bristol/bristolrc
 
287
and its function depends on the bristol version.
 
288
 
 
289
        6.1 Bristol prior to 0.60.8
 
290
 
 
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:
 
294
 
 
295
        -jack
 
296
        -jackstats
 
297
        -count 256
 
298
        -rate 48000
 
299
 
 
300
or 
 
301
 
 
302
        -jack -jackstats -count 256 -rate 48000
 
303
 
 
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
 
306
 
 
307
        startBristol -jack -jackstats -count 256 -rate 48000 -mini
 
308
 
 
309
        6.2 Bristol from 0.60.8
 
310
 
 
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:
 
318
 
 
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:
 
321
 
 
322
If bristol is now started with 'startBristol -mini' the final options taken by
 
323
the program will be
 
324
 
 
325
        startBristol $PREARGS -mini $POSTARGS
 
326
 
 
327
This is all expanded out to give a complete command line that, if it was typed
 
328
in, would read as follows:
 
329
 
 
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:
 
331
 
 
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'.
 
335
 
 
336
This whole ugly line of parameters is now called with just
 
337
 
 
338
        startBristol -mini
 
339
 
 
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.
 
343
 
 
344
Questions regarding parameter ordering should be sent to LAU mailing list, the
 
345
author, or raised on the bristol sourceforge forum.
 
346
 
 
347
 
 
348
 
 
349
 
 
350
        7. Controlling the GUI from a MIDI master controller
 
351
 
 
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
 
357
save a memory.
 
358
 
 
359
The settings themselves are in the directory listed below, and they can be
 
360
edited with a text editor.
 
361
 
 
362
    /home/username/.bristol/memory/profiles/<synthname> 
 
363
 
 
364
Most of the synths come with a standard GM midi mapping for controlling filter
 
365
cutoff/resonance, etc.
 
366
 
 
367
 
 
368
 
 
369
        8. Keyboard accelerators
 
370
 
 
371
        8.1 Keyboard Mappings.
 
372
 
 
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 ']'.
 
378
 
 
379
For alternative mappings such as AZERTY it is necessary to manually edit the
 
380
emulator profile files.
 
381
 
 
382
        8.2 Keyboard Accelerators
 
383
 
 
384
Useful shortcuts are:
 
385
Ctrl +
 
386
Load next memory
 
387
Ctrl - 
 
388
Load previous memory
 
389
Ctrl l
 
390
Load/reload current memory
 
391
Ctrl s
 
392
Save settings to current memory.
 
393
 
 
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 
 
396
options.
 
397
 
 
398
 
 
399
 
 
400
        9. Basics of Subtractive Synthesis.
 
401
 
 
402
Subtractive synths generally have 5 parts to them:
 
403
 
 
404
        1. Oscillators
 
405
        2. Filters
 
406
        3. Low Frequency Oscillators (LFOs)
 
407
        4. ADSR Envelopes
 
408
        5. Amplification output
 
409
 
 
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
 
413
synth.
 
414
 
 
415
        9.1. Oscillators
 
416
 
 
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).
 
420
 
 
421
The more oscillators a synth has, the greater number of waveforms that can be
 
422
layered together to create a quite 'phat' sound.
 
423
 
 
424
        9.2. Filters
 
425
 
 
426
Filters are used to remove specific frequencies from the oscillators.
 
427
 
 
428
Filters generally come in 3 types in the bristol synths:
 
429
 
 
430
Low Pass Filter
 
431
High Pass
 
432
Band Reject
 
433
 
 
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.
 
438
 
 
439
On all filters, there are 2 main controls:
 
440
Frequency Cutoff.
 
441
Frequency Resonance.
 
442
 
 
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.
 
445
 
 
446
        9.3.Low Frequency Oscillators (LFOs)
 
447
 
 
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.
 
452
 
 
453
LFOs usually have 2 controls:
 
454
Rate
 
455
Delay
 
456
 
 
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.
 
460
 
 
461
Common modulation destinations are:
 
462
Audible Oscillator's frequency (Vibrato effect)
 
463
Filter Cutoff frequency (wah-wah effect)
 
464
Amplification output (tremolo effect)
 
465
 
 
466
On most of the bristol synths, the LFO 'depth' (how much the LFO affects the
 
467
destination) is controlled by the mod-wheel.
 
468
 
 
469
        9.4. ADSR Envelopes.
 
470
 
 
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:
 
473
 
 
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
 
478
 
 
479
        9.5. Amplification output
 
480
There is usually a control here that controls the overall volume of the synth.
 
481
 
 
482
 
 
483
 
 
484
        10. Basics of FM Synthesis.
 
485
 
 
486
FM Synthesis stands for Frequency Modulation synthesis.
 
487
 
 
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.
 
491
 
 
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.
 
498
 
 
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).
 
502
 
 
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
 
505
parts to it:
 
506
 
 
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
 
514
 
 
515
Input gain - How much the modulator affects the carrier for this specific
 
516
operator.
 
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).
 
518
 
 
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.
 
523
 
 
524
Initial draft by Andrew Coughlan.
 
525
Editing, additional information and suggestions by Nick Copeland.
 
526