Bristol (software)
Encyclopedia
Bristol is an open source
software synthesizer
for Linux
.
Bristol consists of two components, the emulation or synthesis engine itself called bristol, and a graphical user interface called brighton. As of 2010 there are over 35 keyboards implemented, a range of organs, electric pianos and synthesisers.
Various parts of the bristol software, particularly the MIDI and audio interface libraries, were taken from a previous project by the same author called SLab,
together with a newly-developed toolkit called brighton. The graphics library was built to maniplulate bitmaps, able to do stretches, tesselations, rotations, layering and moving of arbitrary images to create the whole interface.
Bristol is hosted on SourceForge.
, running in separate processes communicating via TCP
. The engine uses 3 threads
at different priorities, one to do the real time audio generation, a second one to respond to MIDI messages, and a third control thread. The audio engine acts as a server and can accept either multiple requests from a single GUI process or multiple TCP connections from separate GUI processes.
Bristol Startup Options
Bristol Emulations
Bristol News
The control plane starts and stops the emulations and receiving MIDI messages before passing those off to the operators or emulators. Each emulated keyboard has a buffer sequencing code that is responsible for signal and mod routing, passing buffers of data to the different operators for processing in the same order as the keyboard itself did. The emulations are written individually to provide the capabilities of the original emulated keyboard.
Any single emulation consists of one or more synthesisers. Typically just one is needed however the dual manual Prophet-10, Oberheim OB-X
a, B3
, and VOX 300
use two emulations, one for each manual. The final stage is for the engine to take a list of effects, which can be unique per emulator, and apply those effects to the net output of the emulation. Each emulation is defined once and can be used many times - once per voice. For layering it is possible to put two emulations on the same MIDI channel. The engine can be started with a number of available voices. The default is 16. Emulations may impose further limits. For example, when the Prophet-5 is started it requests just 5 voices as its own limit.
Bristol provides collections of operators to support emulation of
Bristol also provides graphical interfaces to these emulations, emulating the appearance of the original instruments.
All the above are defined individually per tonewheel, per compartment and per bus. As initialisation of a configuration is compute intensive, two preset configurations are cached. The B3 emulation also emulates keyclick, the Hammond chorus and reverb.
The Leslie emulation
uses 2 independent rotations, separating the final signal with a Butterworth crossover filter
into the bass and horn processors. The rotations use three differently phased stereo signal components: direct signal variation by time, indirect (reverberating) signal variation by time, and signal aperture filtering by time. The emulation includes overdrive and inertia between rotation speeds and can emulates leslie modifications such as independent rotations, synchronised rotation, and selective bass rotation.
and transparencies. The user interface waits for callbacks from the brighton library when device values change and sends the changed values through to the engine using MIDI/TCP.
A single page showing all the currently available interfaces can be found here.
The images generated by brighton are a collage of images placed together to represent the finished piece. The backgrounds are created by panels whose content are textures - wood, metal, leather, etc., and whose foregrounds may have silkscreens (or blueprints) for text and then devices are placed over them, the devices themselves being manipulated images.
The interface supports different color qualities, antialiasing and scaling of images.
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
software synthesizer
Software synthesizer
A software synthesizer, also known as a softsynth is a computer program or plug-in for digital audio generation. Computer software which can create sounds or music is not new, but advances in processing speed are allowing softsynths to accomplish the same tasks that previously required dedicated...
for Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
.
Bristol consists of two components, the emulation or synthesis engine itself called bristol, and a graphical user interface called brighton. As of 2010 there are over 35 keyboards implemented, a range of organs, electric pianos and synthesisers.
Bristol history
Bristol was written by Nick Copeland. It program was first released in 2002 and is still an active project in 2010. The project is in no way affiliated with any of the original manufacturers and the names and trademarks referred to here are sole property of their respective owners.Various parts of the bristol software, particularly the MIDI and audio interface libraries, were taken from a previous project by the same author called SLab,
together with a newly-developed toolkit called brighton. The graphics library was built to maniplulate bitmaps, able to do stretches, tesselations, rotations, layering and moving of arbitrary images to create the whole interface.
Bristol is hosted on SourceForge.
Bristol architecture
The application consists of two multithreaded programs, the audio engine and GUIGui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
, running in separate processes communicating via TCP
Transmission Control Protocol
The Transmission Control Protocol is one of the core protocols of the Internet Protocol Suite. TCP is one of the two original components of the suite, complementing the Internet Protocol , and therefore the entire suite is commonly referred to as TCP/IP...
. The engine uses 3 threads
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
at different priorities, one to do the real time audio generation, a second one to respond to MIDI messages, and a third control thread. The audio engine acts as a server and can accept either multiple requests from a single GUI process or multiple TCP connections from separate GUI processes.
Bristol Startup Options
Bristol Emulations
Bristol News
Engine architecture
The engine is written totally in the C programming language. It consists of- The audio library, implementing interfaces to OSSOpen Sound SystemThe Open Sound System is an interface for making and capturing sound in Unix or Unix-like operating systems. It is based on standard Unix devices...
, ALSA and JackJACK Audio Connection KitJACK is a professional sound server daemon that provides real-time, low latency connections for both audio and MIDI data between applications that implement its API...
. - The MIDI library, implementing a raw midi interface, the ALSA SEQ interface, Jack MIDI and MIDI/TCP for the GUI connections.
- A library of operators, including
- 4 filter implementations
- Around 10 types of oscillators
- Two envelopes
- Ring modulators, amplifiers, mixers, reverb, rotary, and chorus effects
The control plane starts and stops the emulations and receiving MIDI messages before passing those off to the operators or emulators. Each emulated keyboard has a buffer sequencing code that is responsible for signal and mod routing, passing buffers of data to the different operators for processing in the same order as the keyboard itself did. The emulations are written individually to provide the capabilities of the original emulated keyboard.
Any single emulation consists of one or more synthesisers. Typically just one is needed however the dual manual Prophet-10, Oberheim OB-X
Oberheim OB-X
The Oberheim OB-X is an analog polyphonic synthesizer. It was the first Oberheim synthesizer that was created with internal prewired modules and not with the bulky SEM modules. Because of this, it was more functional for live performance, and therefore more portable. It was introduced in 1979 and...
a, B3
Hammond organ
The Hammond organ is an electric organ invented by Laurens Hammond in 1934 and manufactured by the Hammond Organ Company. While the Hammond organ was originally sold to churches as a lower-cost alternative to the wind-driven pipe organ, in the 1960s and 1970s it became a standard keyboard...
, and VOX 300
Vox Continental
The Vox Continental is a transistor-based combo organ that was introduced in 1962. Known for its thin, bright, breathy sound, the "Connie," as it was affectionately known, was designed to be used by touring musicians...
use two emulations, one for each manual. The final stage is for the engine to take a list of effects, which can be unique per emulator, and apply those effects to the net output of the emulation. Each emulation is defined once and can be used many times - once per voice. For layering it is possible to put two emulations on the same MIDI channel. The engine can be started with a number of available voices. The default is 16. Emulations may impose further limits. For example, when the Prophet-5 is started it requests just 5 voices as its own limit.
Bristol provides collections of operators to support emulation of
- Classic analogue synthesizers such as the ARP 2600ARP 2600The ARP 2600 is a semi-modular analog subtractive audio synthesizer, designed by Alan R. Pearlman , and manufactured by his company, ARP Instruments, Inc...
- Frequency modulation synthesizers such as the Yamaha DX7Yamaha DX7The Yamaha DX7 is an FM Digital Synthesizer manufactured by the Yamaha Corporation from 1983 to 1986. It was the first commercially successful digital synthesizer. Its distinctive sound can be heard on many recordings, especially Pop music from the 1980s...
and RhodesRhodes pianoThe Rhodes piano is an electro-mechanical piano, invented by Harold Rhodes during the fifties and later manufactured in a number of models, first in collaboration with Fender and after 1965 by CBS....
electric pianos - The Vox ContinentalVox ContinentalThe Vox Continental is a transistor-based combo organ that was introduced in 1962. Known for its thin, bright, breathy sound, the "Connie," as it was affectionately known, was designed to be used by touring musicians...
and Hammond BHammond organThe Hammond organ is an electric organ invented by Laurens Hammond in 1934 and manufactured by the Hammond Organ Company. While the Hammond organ was originally sold to churches as a lower-cost alternative to the wind-driven pipe organ, in the 1960s and 1970s it became a standard keyboard...
3 electric organs - The ARP SolinaARP String EnsembleThe ARP String Ensemble, also known as the Solina String Ensemble, is a fully polyphonic multi-orchestral ARP Instruments, Inc. synthesizer with a 49-key keyboard, produced by Solina from 1974 to 1981. The sounds it incorporates are violin, viola, trumpet, horn, cello and contrabass. The keyboard...
string machine - The Crumar RoadRunnerElectronic pianoAn electronic piano is a keyboard instrument designed to simulate the timbre of a piano using analog circuitry....
Bristol also provides graphical interfaces to these emulations, emulating the appearance of the original instruments.
Hammond B3 emulation
Bristol directly emulates the mechanics of the Hammond B3 by generating waveforms for all 92 tonewheels and combining them according to the drawbar settings. The emulation takes into account the design of the toothwheels, crosstalk between the tonewheels, and the inexact tempering caused by the need for the tonewheels to have an integral number of teeth. The emulation may be configured via several parameters:- Waveform degenerations
- Tonewheel frequency and output signal strength
- Compartment crosstalk
- Filter/Loom crosstalk
- Drawbar equalisation, gainstops, buss crosstalk and tapering resistor circuits
- Frequency division ET scale
All the above are defined individually per tonewheel, per compartment and per bus. As initialisation of a configuration is compute intensive, two preset configurations are cached. The B3 emulation also emulates keyclick, the Hammond chorus and reverb.
The Leslie emulation
Leslie speaker
The Leslie speaker is a specially constructed amplifier/loudspeaker used to create special audio effects using the Doppler effect. Named after its inventor, Donald Leslie, it is particularly associated with the Hammond organ but is used with a variety of instruments as well as vocals. The...
uses 2 independent rotations, separating the final signal with a Butterworth crossover filter
Butterworth filter
The Butterworth filter is a type of signal processing filter designed to have as flat a frequency response as possible in the passband so that it is also termed a maximally flat magnitude filter...
into the bass and horn processors. The rotations use three differently phased stereo signal components: direct signal variation by time, indirect (reverberating) signal variation by time, and signal aperture filtering by time. The emulation includes overdrive and inertia between rotation speeds and can emulates leslie modifications such as independent rotations, synchronised rotation, and selective bass rotation.
User interface architecture
The graphic user interface is defined in several main parts, those actually belonging to the emulation, those belonging to the Brighton graphics library and finally those of the X11 shim interface. These components in their entirety are known as brighton, the bristol graphics toolkit.Brighton
The interface for a keyboard places requested textures (wood/metal, etc.) onto the screen, places silkscreened blueprints of the text onto the layers, and then places the movable devices onto another layer. Unseen layers are used for drop shadowDrop shadow
In computer graphics, a drop shadow is a visual effect consisting of drawing that looks like the shadow of an object, giving the impression that the object is raised above the objects behind it. The drop shadow is often used for elements of a graphical user interface such as windows or menus, and...
and transparencies. The user interface waits for callbacks from the brighton library when device values change and sends the changed values through to the engine using MIDI/TCP.
A single page showing all the currently available interfaces can be found here.
The images generated by brighton are a collage of images placed together to represent the finished piece. The backgrounds are created by panels whose content are textures - wood, metal, leather, etc., and whose foregrounds may have silkscreens (or blueprints) for text and then devices are placed over them, the devices themselves being manipulated images.
The interface supports different color qualities, antialiasing and scaling of images.