Bristol (software)
Encyclopedia
Bristol is an open source
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 GUI
Gui
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 OSS
    Open Sound System
    The 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 Jack
    JACK Audio Connection Kit
    JACK 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 2600
    ARP 2600
    The 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 DX7
    Yamaha DX7
    The 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 Rhodes
    Rhodes piano
    The 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 Continental
    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...

     and Hammond B
    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...

    3 electric organs
  • The ARP Solina
    ARP String Ensemble
    The 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 RoadRunner
    Electronic piano
    An 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 shadow
Drop 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.

libbrighton

The brighton library implements a set of layers and devices that can be used to define an image of the original instrument and allow the components of the interface to be moved or manipulated by the mouse or other input device. The library takes XPM formatted bitmap files and renders them onto internal bitmap formats by scaling/stretching, tesselation/tiling, confined motion for sliders, rotation for potentiometers, and replacement for buttons.

libB11

Brighton does not rely on any X11 definitions. All the internal rendering and shadowing is onto privately formatted bitmaps. The brightonB11 uses X11 X11 pixmap or XImage structures to render them.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK