BRISTOL(1)
π BRISTOL(1) π β General Commands Manual
okay bestie, sit down, hydrate, because we're about to talk about bristol π
β¨ NAME β¨
bristol β a synthesiser emulation package. that's it, that's the whole vibe. π
π SYNOPSIS π
startBristol -mini -jack -midi seq [options]
π¦ DESCRIPTION π¦
bristol is a vintage synthesiser software emulator suite, no cap. the whole thing is two pieces working as a duo: an engine literally called bristol, and a graphical user interface called brighton. the GUI is a bitmap manipulation library that draws all the cute synth devices β potentiometers, buttons, sliders, patch cables β and it's the thing that generates the messages which configure the synth emulator. meanwhile the engine is the infrastructure hosting the emulator code, coupling together the different audio operators you need to actually generate audio. π
the engine and the GUI get started together by the startBristol script, which sets up the required environment so the two can connect to each other. it is not generally envisaged that bristol and brighton get started outside of the script β but there are options on the script to start only one or the other, so you do you. bristol also has a command line interface that you can use instead of the GUI. π«
currently the following synthesizers are emulated:
πΈ Emulations πΈ
- moog mini
- moog explorer (voyager)
- moog voyager electric blue
- moog memory
- moog sonic 6
- moog/realistic mg-1 concertmate
- hammond module (deprecated, use
-b3) - hammond B3 (default)$
- sequential circuits prophet-5
- sequential circuits prophet-5/fx
- sequential circuits prophet-10
- sequential circuits pro-one
- fender rhodes mark-I stage 73
- fender rhodes bass piano
- crumar roadrunner electric piano
- crumar bit 01
- crumar bit 99
- crumar bit + mods
- crumar stratus synth/organ combo
- crumar trilogy synth/organ/string combo
- oberheim OB-X
- oberheim OB-Xa
- arp axxe
- arp odyssey
- arp 2600
- arp/solina string ensemble
- korg polysix
- korg poly-800
- korg mono/poly
- korg ms20 (unfinished:
-libtestonly) - vox continental
- vox continental super/300/II
- roland juno-60
- roland jupiter-8
- baumann bme-700
- bristol bassmaker sequencer
- yamaha dx-7
- yamaha cs-80 (unfinished)
- commodore-64 SID chip synth
- commodore-64 SID polyphonic synth (unfinished)
- granular synthesiser (unfinished)
- ems synthi-a (unfinished)
- 16 track mixer (unfinished:
-libtestonly)
so like, how do the engine and the GUI actually talk to each other? the default connection is a TCP socket using a SYSEX format message taken from MIDI. optionally the code will use a unix domain socket for improved security. π and here's the iconic part: the GUI and engine do not need to be resident on the same system if you give suitable parameters β but that feature requires the TCP domain sockets be used. iykyk.
the engine can also accept requests from multiple brighton interfaces and run all the emulators at the same time, multitimbraly, sharing voices between them and pre-empting where necessary. ποΈ
if an emulator is started in monophonic mode then it is preallocated a voice that will never be pre-empted and which runs continuously β ie, by default it will continue to run even when no piano keys are pressed. the polyphonic code, by contrast, will only run the voice algorithms whilst the key gate is open, the gate being derived from the voice envelope state.
the engine supports minimally 32 voices per default. if an emulator requests less then its emulation is configured with a soft limit. if more are requested then more voices are created β however the upper limit is imposed at 128 voices. a voice is an engine structure that allows for allocation and executing, and the actual code run by a voice can be any of the emulator algorithms, which is literally how multitimbral operation is supported. π the voice allocation process is 'last note precedence' and whilst others are available for the monophonic instruments, this is the only polyphonic assignment algorithm.
this package should be started with the startBristol script. the script will start up the bristol synthesiser binaries, evaluating the correct library paths and executable paths. there are emulation, synthesiser and operational parameters: π
π OPTIONS π
πΉ Emulation:
-miniβ moog mini-explorerβ moog voyager-voyagerβ moog voyager electric blue-memoryβ moog memory-sonic6β moog sonic 6-mg1β moog/realistic mg-1 concertmate-hammondβ hammond module (deprecated, use-b3)-b3β hammond B3 (default)-prophetβ sequential circuits prophet-5-pro52β sequential circuits prophet-5/fx-pro10β sequential circuits prophet-10-pro1β sequential circuits pro-one-rhodesβ fender rhodes mark-I stage 73-rhodesbassβ fender rhodes bass piano-roadrunnerβ crumar roadrunner electric piano-bitoneβ crumar bit 01-bit99β crumar bit 99-bit100β crumar bit + mods-stratusβ crumar stratus synth/organ combo-trilogyβ crumar trilogy synth/organ/string combo-obxβ oberheim OB-X-obxaβ oberheim OB-Xa-axxeβ arp axxe-odysseyβ arp odyssey-arp2600β arp 2600-solinaβ arp/solina string ensemble-polysixβ korg polysix-poly800β korg poly-800-monopolyβ korg mono/poly-ms20β korg ms20 (unfinished:-libtestonly)-voxβ vox continental-voxM2β vox continental super/300/II-junoβ roland juno-60-jupiterβ roland jupiter-8-bme700β baumann bme-700-bmβ bristol bassmaker sequencer-dxβ yamaha dx-7-cs80β yamaha cs-80 (unfinished)-sidneyβ commodore-64 SID chip synth-melbourneβ commodore-64 SID polysynth (unfinished)-granularβ granular synthesiser (unfinished)-aksβ ems synthi-a (unfinished)-mixerβ 16 track mixer (unfinished:-libtestonly)
π§ Synthesiser:
-voices <n>β the selected emulator will start with this number of voices. the engine will always create 32 voices but only allocate this subset to the emulator. if the selected value is greater than 32 then the greater number of voices is allocated. β¨-monoβ run the emulator in monophonic mode. this is not really an alias for-voices 1β because it additionally configures parameters such as-retrig -lvel -wwf -hnp. those additional options can be overridden if desired. π«Ά-lnpβ select low note precedence logic. this only applies to monophonic synthesisers and all of the note precedence affect the legato playing style.-hnpβ select high note precedence logic. this only applies to monophonic synthesisers.-nnpβ select no note precedence, this is the default and operates as a last note precedence selection.-retrigβ request a trigger event for each note that is played AND notes that are released. the trigger will cause the envelopes to cycle. they will not return to zero by default however some of the emulations have that as a GUI control. without this flag, triggers are only sent for the first pressed note of a sequence. π₯-lvelβ configure velocity inheritance for all legato notes: the first note of a sequence will have a velocity value that is applied to all subsequent notes. this option is a toggle: applying twice will disable the feature. this is important with regards to the emulators as many of the mono synths with setlvelper default. the following options may not work as expected:
startBristol -mini -lvel
the issue is that -mini enables legato velocity so the -lvel switch will toggle it off again. the same applies to -retrig. π
-channel <c>β start the emulator to respond on this MIDI channel, default1.-lowkey <n>β configure the lowest note for which the emulator should respond. this defaults to'0'but can be used to define key splits and ranges for different synths.-highkey <n>β configure the highest note for which the emulator should respond. this defaults to'127'but can be used to define key splits and ranges for different synths.-detune <%>β request the emulator run with a level of temperature sensitivity. the default value is defined by the emulator, typically100or200. the detune is applied to a voice at note on only, and is a random value within the range defined here. π‘οΈ-gain <gn>β output signal gain level for the emulator. these can be used to normalise the signal levels from different synths when played together. the default value is defined by the synth itself, this is an override.-pwd <s>β pitch wheel depth in semitones, default2.-velocity <v>β velocity curve for the emulator. default is520, an exponential curve for a hard playing style. value'0'is flat (no touch sensitivity). values up to100are linear scaled maps. the velocity map is a table of points that is interpolated linearly: you may only have to define the inflexion points, however if you want smooth curves you will have to define each of the 128 velocity values that are used in noteon/noteoff events. the emulation only has a single table of gain levels for each key.velocity index, the engine by contrast has two tables, one for each on/off event β however that is an integer map, not a gain map. π
there are several default tables if you do not want to specify your own interpolated curve. each table is the gain for the Midi velocity value given in the note event, it has 128 entries. the following are implmented:
100-199β Convex curves for a soft touch keyboard player200-499β Concave curves for a hard touch, linear up to quadratic function.
okay so the next set, all the way up to 525, is literally the same thing as above but with way less granularity. In that range the value 200 is linear, and so is 510 further down:
500-509 Convex curves for a soft touch keyboard player
510 linear
511-25 Concave curves for a hard touched player.
Then there's a couple of specific curves, bestie:
550 logarithmic
560 parabolic
And then the values up to 100? Those are two-digit numbers, and the digits are doing work. The first digit = how late the line starts (it's linear) ramping up. The second digit = how late it hits 1.0. So 09 is basically the linear mapping from above β starts at 0, ends almost at the end. A 49 is for a heavy player: it's zero for a big chunk of the velocity table and then ramps up to max gain (1.0) right near the end. Note that these tables could also have been defined with velocityMap definitions, because they're linear interpolations. A present release will include curves to smooth things out a little.
Option 520 is a squared powercurve and honestly feels quite natural, though that's very subjective. Maybe it's natural for a hard player, and maybe it's a better default than the linear curve. π
The value 1000 inverts the mapping, so:
1510 - linear from 1.0 down to 0.0 as velocity increases
1520 - exponential, from 1.0 down to 0.0 as velocity increases
The engine mapping gets applied before the emulation mapping given here. There are reasonable arguments to make this table logarithmic β you're welcome to do so, no one's stopping you. There are no limits on the values here other than that negative values are not mapped, so this table can also be used to compensate for volume levels. π
-glide <s>β duration of nogte glide in seconds, default5.-emulate <name>β search for the named emulator and invoke it, otherwise exit. Invoking an emulation this way is currently the default, and it implies extra parameters for voicecount, gain, glide, pitchwheel depth, detune, etc. Default ishammondB3. The-emulateoption also implies-registerto the emulator name.-register <name>β use a specific name when registering with Jack and ALSA. By default the engine uses the name'bristol', but that can get confusing when multiple engines are running, so this is your override.-lwfβ select lightweight filters for the emulator.-nwfβ select normalweight filters, the default. These cost about twice as much as the lightweight ones.-wwfβ select welterweight filters, which are again about double the CPU load of the normal filters.-hwfβ select heavyweight filters. Roughly twice the welterweight filter. ngl while there's a noticeable audible difference between-lwfand-nwf, it's debatable whether the difference between-nwf,-wwfand-hwfis anything other than visible in the CPU load. The default filter for any-monosynth is-wwf, which you can override with something like'-mini -mono -nwf'.-blo <h>β number of bandwidth limited harmonics to map. A value of zero selects infintite bandwidth. Default is31.-blofraction <f>β the engine uses precomputed tables for all frequencies where the maximum harmonic doesn't exceed this fraction of the samplerate. The default,0.8, is already above nyquist as a tradeoff between content and distortion. Values tending towards1.0are heavily aliased at the higher frequencies naturally. you've been warned bestie-scala <file>β the engine will read the given scala file and map it into its frequency tables.
π User Interface π
-quality <n>β the color cache depth affects rendering speed. Lower values start showing loss of clarity, higher values start using thousands of colors, which is where performance takes the hit. Value is in bpp, default is6.-scale <s>β each emulator has a default window size, and this lets you scale it up or downwards if you want.-width <n>β the pixel width defines the smaller of two sizes that can be configured. It works together with the-scaleand-autozoomoptions for flipping between different sizes on mouse Enter/Leave of the window.-autozoomβ minimise window on exit, maximise on enter. β¨-raiseβ automatically raise the window on Enter.-lowerβ automatically lower the window on Leave. heads up: it's noted here that the use of autozoom, raise and lower may have undesirable effects with some window managers.-rudβ constrain the rotary controller tracking to mouse up/down motion, not to actually track the mouse position. The value will be a fraction of the current window size.-antialias <%>β for some window sizes there'll be pixelation of the rendered imagas unless some antialias is applied. With large zoom values this is automatically set up. Value is a percentage, default is30.-aliastype <pre/texture/all>β there are three antialiasing options:preapplies it to the text silkscreens,textureapplies it to the surface bitmaps, andallapplies it everywhere including devices rendered. The default ispre, however this parameter is only applied if-antialiashas a value other than zero.-opacity <%>β Brighton uses a transparency layer for some features such as the ARP 2600 patch cables. This is the default transparency. It can be adjusted later with the^o/^O/^tcontrol codes in the GUI. Default is50percent.-pixmapβ use the X11 pixmap interface rather than the default XImage interface to the server.-dct <ms>β double click timeout for button events, etc,250ms.-trackingβ prevent the GUI piano keyboard image from tracking MIDI events. Small reduction in CPU overhead.-keytoggleβ the default GUI behaviour for tuning keys on with the mouse is to latch them, which lets you play chords on the polyphonics. This option disables the latch so keys are played only whilst held with the mousebutton.-neutralβ initial the emulator with a null patch; all parameters get the value of zero so you can build a patch from the bottom up, completely from scratch. This is equivalent to'-load -1', and negative memory locations will not be saved, ie, you cannot save to the null patch. π«Ά-load <m>β initial memory number to load at startup. Default is0for most emulators.-import <pathname>β import a memory from a disk file to the active patch at start time. This patch can then be saved to another location, which allows for interexchange of memories.-mbi <m>β the master bank index allows for access to extra memory ID. This value times1000is added to the memory ID saved/loaded by the GUI, so the GUI can access, for example, 8 banks of 8 memories β but using-mbiyou can actually save multiple sets of 64 memories. iconic tbh-activesense <ms>β the rate at which hello messages are sent from GUI to engine to make sure it's still active. If the transmission fails then the GUI will exit, and if the engine doesn't receive updates it will also exit. Zero disables active sense.-ast <m>β the engine timeout period on active sense messages.-mct <m>β the MIDI cycle timeout is a busy waiting GUI timer for MIDI events, used when the GUI takes a MIDI interface for direct event tracking.-ar|-aspectβ all of the emulators will attempt to maintain an aspect ratio for their windows so they look'normal'. This conflicts with some tiling window managers so it can be disabled. It may also cause some excessive remapping of windows when they're resized.-iconifyβ open the window in the iconified state.-windowβ do not map any window.-cliβ enable the text based command line interface to the engine. This can be used in connjuction with-window, however if compiled without support for any windowing system the-windowoption is implied.-libtestβ do not start the engine, nor attempt to connect to it, just post the GUI for testing.
β¨οΈ GUI Shortcuts β¨οΈ
the group chat cheat sheet, memorise it bestie
<Ctrl> 's' - save settings to current memory
<Ctrl> 'l' - (re)load current memory
<Ctrl> 'x' - exchange current with previous memory
<Ctrl> '+' - load next memory
<Ctrl> '-' - load previous memory
<Ctrl> '?' - show emulator help information
<Ctrl> 'h' - show emulator help information
<Ctrl> 'r' - show application readme information
<Ctrl> 'k' - show keyboard shortcuts
<Ctrl> 'p' - screendump to /tmp/<synth>.xpm
<Ctrl> 't' - toggle opacity
<Ctrl> 'o' - decrease opacity of patch layer
<Ctrl> 'O' - increase opacity of patch layer
<Ctrl> 'w' - display warranty
<Ctrl> 'g' - display GPL (copying conditions)
<Shift> '+' - increase window size
<Shift> '-' - decrease window size
<Shift> 'Enter'- toggle window between full screen size
UpArrow - controller motion up (shift key accelerator)
DownArrow - controller motion down (shift key accelerator)
RightArrow - more control motion up (shift accelerator)
LeftArrow - more control motion down (shift accelerator)
π₯ Operational options π₯
General:
-engineβ do not start a new engine. The GUI will attempt to connect to an existing engine on the host and port configuration (cq). If the connection is built then the engine will operate both emulators and voice allocations will be shared amongst them. All of the emulator outputs are folded back onto the same stereo output, excepting where extra Jack control inputs are used.-guiβ do not start the GUI, only the engine. The GUI will attempt to connect to the engine on the configured host and port values. If it doesn't respond then the GUI will exit with some rather terse messaging. π-serverβ start the engine as a permanant server that does not exit with the last emulator.-daemonβ runs the engine as a daemon with a disconnected controlling terminal. heads up though: this does not imply-server, and it doesn't imply-log(the file-system logging one) either, and it doesn't imply-syslogβ both of which might also apply to a daemon. They're separate things, bestie, you gotta ask for them π-watchdog <s>β the timeout for audio thread initialisation. If the thread doesn't wake up and activate within this period, the engine will gracefully exit instead of sitting there waiting around for connections forever like an idiot. Default period is30seconds. This is not active in-serveror-daemonmode. In normal operation the audio thread launches within a couple of seconds, but if you start the engine and the GUI separately, then this timeout is basically demanding that a GUI gets started before the timer runs out. β°-logβ redirects logging output to a file. The default files are/var/log/bristol.logand/var/log/brighton.log, and if those aren't available then the$HOME/.bristol/logdirectory gets used instead. The whole reason/var/logis picked is to stop logging to root in the event that the engine gets invoked by that user. ποΈ-syslogβ redirects logging output to syslog.-consoleβ keeps the controlling terminal as the output for logging messages, and strips the timestamps for readability. You can also set this up with the environment variableBRISTOL_LOG_CONSOLE=true. π₯οΈ-rcβ do not load anybristolrcparameter file.-execβ the final process requested by thestartBristolscript will be called as an exec, so that it maintains, among other things, the PID of the parent. This option will override the exec and leave the script waiting for the processes to exit. The implications of not using this parameter: some of the cleanup code lives inside the wrapping shellscript, and per default that isn't called because of the exec request. This flag is the default, but should only really be needed for LADI compatibility.-stopβ stops all the running bristol engines. This indirectly results in termination of any GUI too, thanks to active sensing β although that can be disabled. The use case is stopping any-server -daemonengines running in the background. The back end to this option ispkill. π-exitβ stops all the running bristol engines and GUI.-kill <-emulator>β stops all the running bristol engines and GUI that have been associated with the given emulator. So if bristol was started with-mini, it can now be killed with-miniso that your other emulators don't get terminated. If there are multipleminirunning, they'll naturally die too. And if the engine is running a multitimbral GUI, then the other associated GUI will exit as well, in addition to themini. π―-cache <pathname>β the default location for new memories and emulator profiles. Default is~/.bristol, and it gets searched before the system/factory default directory/usr/local/share/bristolwhenever emulators are started and memories are loaded. If the pathname doesn't exist then it gets created, if possible.-memdump <pathname> [-emulate <synth>]β creates the target directory<pathname>/memory/<synth>and copies the factory default memories for the synth first, then the user private memories. This can be used with session management to make a copy of all synth memories in a session. If the target directory already exists then no copy operation happens, but the directory does replace the-cachedefault, making this the new location for saved memories for that session. The-emulateoption is required β if you don't provide it, the defaulthammondB3gets taken. πΉ-debug <1-16>β debug level. Values above12can be very verbose, and only the value0is arguably realtime safe, since it avoidsprintf()in the engine compute thread. π-readme [-<e>]β displays the program readme information. You can show the readme for just a single emulator if you want.-glwfβ only allows the use of'-lwf'for all emulators. No overrides. π-host <hostname>β connects to the engine on the hostname; default islocalhost. This is used together with-engineto distribute the GUI. The hostname accepts syntax likehostname:portto fix both the host and the port for a remote connection to the engine. If the host portion is the token'unix'then a local named socket gets created instead of a TCP connection. In that case you can give a specific port number to create the named socket/tmp/br.<port>, and if the port isn't specified then a random numeric index is chosen. π-port <p>β connects to the given TCP port for GUI/engine messaging, default5028. If the port is already in use then the startup will fail. If you're starting multiple bristols with GUI, then this option should be discarded and the script will go looking for a free port number for each invocation. It is incorrect to mix this option with-hostparameters that take a value likehost:portorunix:port, because the results will be indeterminate depending on the order the parameters are submitted. π«-quietβ redirects debug and diagnostic output to/dev/null. π€«-gmcβ opens a MIDI interface in the GUI. Per default, the engine owns the only MIDI interface for bristol and redistributes events to the GUI. It's possible to disable that forwarding and attach both GUI and engine to MIDI devices if you need to.-forwardβ disables MIDI event forwarding globally. Per default the engine opens a MIDI interface and is connected to the physical keyboards, control surfaces and/or sequencers, and it forwards MIDI events to the GUI for tracking. This option kills that feature. When it's disabled, the GUI will not reflect the piano keyboard state, nor will it track CC motion β unless the'-gmc'option is given to open a MIDI connection in the GUI, and the user connects the same control surfaces to the GUI through this alternative channel. This option is logically identical to-localforward -remoteforward. ποΈ-localforwardβ this prevents the GUI from forwarding MIDI messages to the engine. It's not about preventing MIDI message loops, because forwarding only ever occurs from MIDI interfaces to TCP connections between GUI and engine. This option just stops messages from any surfaces that are connected to the GUI from forwarding on to the engine.-remoteforwardβ this prevents the engine from forwarding to the GUI, but still allows the GUI to forward to the engine. If the GUI is given a MIDI connection with the-gmcoption, and control surfaces are applied to both processes, then the-forwardoption should be used to globally prevent event redistribution. Not doing so won't cause loops β just one-for-one duplication of events. It is possible to connect the control surfaces just to the GUI when-gmcis used, which opens up the possibility of having a local keyboard and GUI while driving an engine on a remote system. There's admittedly additional latency involved with handling the MIDI messages from the GUI to the remote engine over TCP. π’-ossβ configures OSS defaults for audio and MIDI interfaces.-alsaβ configures ALSA defaults for audio and MIDI interfaces. The MIDI interface is an ALSA SEQ port.-jackβ configures Jack defaults for audio and MIDI interfaces. At the time of writing this option causes some issues, since it selects Jack MIDI, which currently requires a bridging daemon to operate. The options'-jack -midi seq'would be a more typical configuration. β οΈ-jackstatsβ do not request audio parameters from the jack server; take the bristol system defaults or the configured parameters instead. The bristol defaults will invariably fail, however the call tobristoljackstatsis sometimes superfluous and this can speed up the initial startup times. Using this parameter will typically require that the options-rateand-countare also provided.-jsmuuid <UUID>β this is for sole use of the Jack Session Manager.-jsmfile <path>β this is for sole use of the Jack Session Manager.-jsmd <ms>β Jack session manager delay before session events are distributed internally. Event execution is delayed in the GUI by a default of5000ms.-sessionβ disables all session management, including JSM and LADI.-sleep <n>β stalls the initialisation process for'n'seconds. This is to work around what appears to be a race condition when using a session manager to initialise multiple bristol clients, since they all end up vying for the same TCP port identifier. π΄-jdoβ Jack Dual Open: lets the audio and MIDI threads register as independent clients with Jack. Per default the audio thread opens as a jack client, and the MIDI connection is piggybacked as another port rather than as another client. π―-o <filename>β generates a raw audio output of the final stage samples to a file. The format will be16bit stereo interleaved.-nrpβ enables support for NRP events in both GUI and engine. Use this with care, because NRP in the engine can have unexpected results. π¬-enrpβ enables NRP support in the engine only.-gnrpβ enables NRP events in the GUI. This is required to allow the GUI (and therefore the engine) to be driven from some MIDI control surfaces.-nrpcc <n>β maximum number of NRP to map. The default is128, which is seen as sufficient for any of the current emulators β but the mixer will require more if it is ever released. π
π§ Audio driver π
-audio [oss|alsa|jack]β audio driver overrides. Depending on the order of the switches, it's possible to set a group of global defaults (-jack/-oss/-alsa) and then have specific re-selection of components. π-audiodev <dev>β audio device name. For Jack, this will be the name registered with the Jack daemon.-count <samples>β number of samples/frames in the processing period.-outgain <gn>β output signal normalisation level, per emulator default4.-ingain <gn>β input signal normalisation level, per emulator default4.-preload <periods>β number of audio buffers to prewrite to the audio output on start. This is not active with the Jack drivers.-rate <hz>β the sampling rate, bestie. Defaults to44100.-priority <p>β the realtime priority the engine audio thread asks for, default75. Set it to zero and RT processing is fully disabled.-autoconnβ automatically connects the engine input and output to the first Jack IO ports it finds. You can also pull this off with the environment variableBRISTOL_AUTOCONN=true.-multi <c>β multiple IO port requests. Only works with Jack, and rn only the ARP 2600 actually gives you access to these ports.-migc <f>β input signal normalisation level for the multi IO ports.-mogc <f>β output signal normalisation level for the multi IO ports.
πΉ Midi driver πΉ
-midi [oss|[raw]alsa|jack]β audio driver overrides. Depending on the order of the switches you can set a group of global defaults (-jack/-oss/-alsa) and then re-select specific components, like in-jack -midi seq. The default MIDI driver is-midi seq, but that can be overriden with compile time options such as--enable-jack-default-midito./configure.-mididev <dev>β MIDI device namee to be opened (OSS/ALSA).-mididbgβ request MIDI level 1 debuging.-mididbg2β request MIDI level 2 debuging. You can select both for level 3, iconic.-sysid <0xXXXXXXXX>β configure an alternative SYSEX identifier for the engine. The default is the value0x534C6162for historical reasons. Heads up bestie: this is not a free development ID, but it is not assigned either, so it should not cause conflict.
π§ LADI driver (level 1 compliant) π§
-ladi brightonβ execute LADI messages in the GUI only.-ladi bristolβ execute LADI messages in the engine only.-ladi <memory>β the LADI state memory for save operations. This should be unique for each LADI session.
β¨ EXAMPLES β¨
okay bestie, this is the part where it all clicks, watch:
startBristol -mini
Run a minimoog using ALSA interface for audio and midi (seq). The emulator will default to monophonic, high note precedence with retrigger and legato velocity. chef's kiss
startBristol -alsa
Run a hammondB3 using ALSA interface for audio and midi. This is equivalent to all the following options: -b3 -audio alsa -audiodev plughw:0,0 -midi seq -mididev plughw:0 -count 256 -preload 4 -port 5028 -voices 32 -channel 1 -rate 44100
startBristol -explorer -voices 1
Run a moog explorer as a monophonic instrument, using ALSA interface for audio and midi.
startBristol -prophet -alsa -channel 3
Run a prophet-5 using ALSA for audio and midi (on channel 3).
startBristol -b3 -count 512 -preload 2
Run a hammond b3 with a 512 samples in a period, and preload two such buffers before going active. Some Live! cards need this larger buffer size with ALSA drivers.
startBristol -oss -audiodev /dev/dsp1 -vox -voices 8
Run a vox continental using OSS device 1, and default midi device /dev/midi0. Operate with just 8 voices out of the 32 available.
startBristol -b3 -audio alsa -audiodev plughw:0,0 -seq -mididev 128.0
Run a B3 emulation over the ALSA PCM plug interface, using the ALSA sequencer over client 128, port 0.
startBristol -juno &
(yes bestie, just the one line, she's off in the background being mysterious π )
startBristol -prophet -channel 2 -engine
Start two synthesisers, a juno and a prophet. Both synthesisers will will be executed on one engine (multitimbral) with 32 voices between them. The juno will be on default midi channel (1), and the prophet on channel 2. Output over the same default ALSA audio device. The 32 voices will never all get used as these emulators will run per default with a lower soft limit. They can be run with more voices however that would require suitable values to the -voices option.
startBristol -juno -jack -register juno -voices 32 &
startBristol -prophet -jack -register prophet -channel 2 -voices 32
Start two synthesisers, a juno and a prophet5. Each synth is totally independent with its own GUI and own engine. Each engine will register separately with the jack daemon. They will respectively register the names 'juno' and 'prophet' with Jack and ALSA so that they can be differentiated in the respective control programmes such as aconnect and qjackctl. The outputs will be visible separately in these control programs and can thus be routed independently. Each synth can use up to 32 voices and there will only be CPU contention - these are separate engine process with 32 voices each.
πΈ FILES πΈ
The bristolrc file can be created in the BRISTOL_CACHE directory (default value ${HOME}/.bristol/bristolrc) and the users prefered options placed as the content. The file will be read as a single line and incorporated onto the command lines for both bristol and brighton. There is an additional variable BRISTOL_RC which can point to another location if necessary. This can be used to simply the command line for all parameters that a user provides with each invocation. The parameters can be all on a single line of the file or one per line. The parameters from this file will preceed the user specified ones such that the RC defaults may be overridden on the comand line.
tl;dr: your fave flags can live in a file so you don't have to type them every single time. set it and forget it, periodt.
π¦ ENVIRONMENT VARIABLES π¦
BRISTOLβ this indicates the location of the bristol installation for the binaries, bitmaps and related data reside. The default depends on the prefix used for the system build,/usr/local/share/bristoland/usr/share/bristolare typical.BRISTOL_CACHEβ the cache is where memories and emulator profiles (keyboard maps and MIDI Continuous Controller maps) are saved. The default is${HOME}/.bristolBRISTOL_RCβ location of the bristol runcom file.BRISTOL_LOG_CONSOLEβ force debuging output to be sent to console without timestamping, log file or syslog.BRISTOL_AUTOCONNβ attempt to automatically connect the bristol audio inputs and outputs when using Jack.BRISTOL_AUTO_LEFTβ ifBRISTOL_AUTOCONis set to anything other than'0'this will be the default Jack port for the bristol left channel output. There is no default, if AUTOCONN has been requested this will be the first jack playback channel.BRISTOL_AUTO_RIGHTβ ifBRISTOL_AUTOCONis set to anything other than'0'this will be the default Jack port for the bristol right channel output. There is no default, if AUTOCONN has been requested this will be the second jack playback channel.BRISTOL_AUTO_INβ ifBRISTOL_AUTOCONis set to anything other than'0'this will be the default Jack port for the bristol (mono) input channel. There is no default, if AUTOCONN is set this will be the first jack capture channel.
π AUTHOR π
Written by Nicholas Copeland <nickycopeland@hotmail.com> β an absolute legend, no cap π«Ά
π REPORTING BUGS π
Bugs and enhancement requests can be submitted to the bristol project page on SourceForge:
<http://sourceforge.net/tracker/?group_id=157415>
found a bug? don't be shy bestie, go tell the tracker. she wants to know π
π COPYRIGHT π
Copyright Β© 1996,2011 Nick Copeland. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
NO WARRANTY, bestie β read that twice. she's free and open, but she's not gonna hold your hand if something explodes π
and that's the whole page, bestie!! π this edition dropped Oct 29, 2011, and the page is BRISTOL(1) β go make some iconic noise, you've got this π¦β¨
π¦ where this page comes from
- debian bookworm: bristol 0.60.11-3.1 Β· GPL-3.0-or-later
- debian trixie: bristol 0.60.11-5 Β· GPL-3.0-or-later
- fedora 43: bristol 0.60.11-31.fc43 Β· GPL-2.0-or-later
- fedora 43: bristol 0.60.11-31.fc43 Β· GPL-2.0-or-later
- fedora 44: bristol 0.60.11-33.fc44 Β· GPL-2.0-or-later
- fedora 44: bristol 0.60.11-33.fc44 Β· GPL-2.0-or-later
- nixos 26.05: bristol 0.60.11
- nixpkgs unstable: bristol 0.60.11
- ubuntu jammy: bristol 0.60.11-3.1build1 Β· GPL-3.0-or-later
- ubuntu noble: bristol 0.60.11-4ubuntu1 Β· GPL-3.0-or-later
- ubuntu questing: bristol 0.60.11-5.1
- ubuntu resolute: bristol 0.60.11-5.1build1 Β· GPL-3.0-or-later
- ubuntu stonking: bristol 0.60.11-6 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms