2
0.60.5 8 Jun 2010 Maintenance release
2
0.60.8 23 Dec 2010 Maintenance release, Hammond optimisations.
4
Made some changes to the way bristolrc is handled. If the file exists then a
5
seach is made for two tokens, PREARGS and POSTARGS. If they don't exist then
6
the same default behaviour takes place: all the contents are concatenated into
7
a set of options that are inserted before all the user parameters. If either
8
of these tokens are found then PREARGS are inserted before the user parameters
9
and POSTARGS are appended to the whole net commandline to the GUI and engine.
10
This gives a lot more flexibility to override default behaviour, for example:
12
PREARGS=-count 1024 -rate 48000
13
POSTARGS=-jackstats -jack -multi 0
15
Using such contents then the command 'startBristol -mini' would be expanded to
17
startBristol -count 1024 -rate 48000 -mini -jackstats -jack -multi 0
19
A part of the reason for the above change was that there were reports of issues
20
with the ARP 2600 and period sizes less than 1024. The culprit appeared to be
21
the -multi option, this defaulted to 4 for the 2600. Changed it to default to
22
zero with a need to then explicitly reconfigure it. The reconfigure can now be
23
automated in POSTARGS. The diverse Bristol front end appliations such as
24
monoBristol provide user arguments to the startup script, the current bristolrc
25
definitions can provide capabilities to extend how they operate as there are now
26
pre and post arguments that encapsulate the frontend parameters.
28
This release is noted as including hammond optimisations, these are not with
29
respect to CPU load, rather with respect to accuracy of the emulation:
31
Adjusted the B3 Preacher Compression code to provide a more pronounced non-
32
linear amplification. The results are interesting/different. It mixes well
33
with the new gearbox generated for a clean tonewheel (mostly sinewaves with
34
no crosstalk) and a mild crosstalk gearbox with some sliced tonewheel harmonics.
35
The control is not continuous, there are 3 stages which are selected as the
36
rotary changes position, this would normally be represented with radiobuttons
37
however the GUI previously only had a rotary control so this was used to prevent
38
a big reordering of the options panel layout.
40
The new tonewheel gearbox are in the factory shadow profiles, per default as
41
below. To test them then copy the target gearbox to your private memories
42
(these are the defaults, your installation may be different):
44
source: /usr/local/share/bristol/memory/profiles/tonewheel*
45
dest: ~/.bristol/memory/profiles/tonewheel
47
Also made few alterations to the B3 VC algorithm changing the tap gains and
48
LC filter values, altered the tap selections for the different 1/2/3 settings
49
and adjusted the selector mode to reconfigure LC and phase (which work in
50
combination) rather than the actual tapping points. More work could be done
51
but these do now give some different characteristics where previously VC3 was
52
the only useful setting. [Note: it would actually be quite easy to make even
53
further improvements here by using an alternative filter algorithm into the
54
different taps. The current one is a rooney which has weak phase modification,
55
it is similar to the original in as much as that could only introduce about
56
1ms of phase change however bristol has other algorithms that would give better
57
phase changes by frequency which would be closer to the Hammond vibra. The
58
current code overcomes the rooney limitation by taking the phase changed filter
59
signal (which has a phase change that is dependent on frequency) with an
60
additional phase change that is time constant. The issue is efficiency, the
61
rooneys are single pole and come almost for free. ffs]
63
Reintroduced some B3 code to give contact delays for each drawbar. The delay
64
is configured in the tonewheel file and is then a function of velocity. The
65
tonewheel file defines the maximum sample delay before any given harmonic is
66
activated and this delay is reduced depending on velocity. It is also possible
67
to configure a click sample per bus out of 4 available however the author
68
will state that none of the samples is accurate: click, thump, shelf, etc, is
69
not an accurate emulation. Depending on which source is considered authoritative
70
then the Hammond click may be a pure function of tonewheel position and its
71
activation point. This code emulates that effect with the option of adding in
72
extra effect as a combination of the tonewheel file samples and the overall
73
click setting. Note that the 'click' level does not affect the cut in points
74
of the harmonics, reducing the 'click' level will not affect the tick sound
75
when a drawbar contact is finally made. The harmonics do not have a constant
76
phase as per the original however the tonewheel file can override that to
77
emulate the L and M series spinets. With the current code, pressing a key very
78
slowly should result in the delays between the different busses being almost
79
audible, an effect that reduces with velocity. The configured Click is reduced
80
when the vibrachorus is on as is also heard on the originals.
82
This click code has actually been available for a few years, it was removed as
83
it affected other developments for gearbox optimisation. This optimisation was
84
to 'post generate' the tonewheels: if a harmonic was not needed then it would
85
never be generated. This was not condusive to busbar delays so now the decision
86
has been taken to drop the CPU optimisation in preference of a more accurate
87
rendition. At the same time the tonewheel damping was corrected so that, under
88
control of the Damp option, the summed levels of any given wheel is not linear
89
but is a function of the number of times it is tapped. It is noted here that
90
if no click is desired, at all, then the 'preacher' algorithm should be
91
disabled at which point notes are generated from zero point as per many of
92
the commercial emulators. Several of the later Hammond models reduced/eliminated
93
key click using various techniques, disabling the Preacher would give results
94
closer to the B2XX series organs. Disabling the preacher removes the damping,
95
busbar offsets, and all the other features of the tonewheel file.
97
Adjusted the click code to introduce changes to the bus offset delays by key
98
as well as velocity. The existing code used a single profile per gearbox but no
99
two keys would have had the same contact profile as this was based on aging of
100
the springs: the code now has semi-random delay selection. The 'semi' refers to
101
code that will select the same offsets if the same key is sounded sequentially,
102
this is how Jimmy Smith used to play key click with the same key - now the
103
delays for that sequential key do not change (they will if intermediate notes
104
are sounded which he also did and potentially the delay offsets may be prebuilt
105
for the whole keyboard rather than calculated, ffs). The different bus delays
106
only affect timing not the actual effect so if 'Click' is non-zero then the
107
sample selection per bus will be constant even though the delay changes. Now,
108
another affect of the bus delays is that if playing quickly it is possible that
109
a note will start and stop before even all the harmonics have sounded, this is
110
another trick of Smith when he played notes to not traverse the complete travel
111
of the key: not all harmonics would actually make contact and this is also
112
possible with bristol (depending on velocity, buffer size and configured bus
115
Added a -keytoggle flag, it affects GUI behaviour where a key is released when
116
the mouse button is released. Previously the key state latched which was useful
117
for polyphonic emulators but not necessarily for the monophonic ones. The
118
default operation is now not to latch the keys, this option overrides the new
119
default behaviour to give latching keys again.
121
There were some sticky keys and note 'ticks' when using the monophonic synths
122
with -nnp (no note preference). The polyphonic note logic could completely kill
123
notes when overvoice and if a keyoff event occurs for a voice on the new list
124
then some of the flags would get damaged. None of this happens with monophonic
125
note preference or with polyphonic synths (well, the ticks may still happen if
126
the polyphony is exceeded but get burried in the mix of multiple voices, ffs).
128
Bug report on some emulators defaulting to only one semitone of pitchwheel
129
depth. This turns out to be emulator aliases: the interface recognises some
130
alias names but it could not set defaults except on exact names. Incorporated
131
some changes to accept the known emulator aliases too.
133
Feature request that the SID should acknowledge pitchbend wheel as well as or
134
instead of pitchbend on the modwheel. Not a big change and the issue with the
135
MOD wheel is that it was difficult to tune having no notch. Currently both
136
controls can affect pitch but the modwheel can be turned on/off selectively.
138
There was a window when the global configuration options would not be sent to
139
the engine, a race condition. The result would be no output signal.
141
There was another race condition in the GUI library which for now has been
142
patched. The actual fix is a little larger but it will be left for future
145
Found a bug in the MIDI handling code for NOTE_ON velocity zero being mapped
146
to NOTE_OFF velocity 64. When the ringbuffer was introduced the check moved to
147
the wrong side of the ringbuffer causing an endless loop at 100% CPU, for
148
some emulators quite a lot of nasty random noise and potential system 'hang'
149
for certain CPU configurations with RT scheduling. This had not been reported
150
which means either people did not bother or the use of NOTE_ON velocity zero
153
Release 0.60.7 had an undocumented feature, undocumented because it was not
154
that big but it did go into the manual page. The option -jackstats will prevent
155
bristol from attempting to find out the current jack server settings, these
156
parameters would instead be defined with -count and -rate. This change fixes
157
some issues with jack connections, with LADI, and makes the GUI start a bit
158
faster as it does not have to poll the server from the script then reconnect
159
to the server from the audio thread.
161
The BME-700 Glide on/off switch was not active.
163
Roadrunner Vibrato was too deep, by a long way. Scaled back the tremelo at the
164
same time. Gentle vibrato was still possible but not under mouse control, it
165
had to be done with keyboard accel/deccel.
167
0.60.7 22 Oct 2010 Maintenance release, minor features
169
Added in an option called -memdump which will copy all memories for a given
170
synth (specified with -emulate) to a target location. That location is then used
171
as the session cache so further changes will be made to the dumped memories.
172
That is intentional: this can be used with Session Management using a target
173
location in the session directory so that the session will include all of the
174
synth memories. The copy operation of the user memories only happens once when
175
the directory is created.
177
Added in an option call -neutral, this will initialise the emulator with the
178
value zero for all parameters. This provides a clean sheet from which to start
179
sound generation. The code is generic and there are some exceptions to where
180
it is applied: the organs and pianos do not implement the option, some of the
181
synths are exceptions too (P800, BitOne, DX) as they have a non-intuitive
182
interface that does not lend itself to being zeroed. For testing the few that
183
do not implement the option then '-load -1' can be used as a potential
186
Added a runcom file "bristolrc" located in ${BRISTOL_CACHE}/bristolrc which
187
may contain the parameters that are always provided on the command line. The
188
parameters will be placed before the command line arguments so that they can
189
be overridded but they provide the possibility to simplify the command line
190
that needs to be specified when bristol is invoked. The variable BRISTOL_RC
191
can override the default location and the -rc option will circumvent it.
193
The size of the voice table is now a configure time parameter. There were some
194
requests for optimisation and reducing the size of these tables is a small one.
195
./configure BRISTOL_VOICECOUNT=32 is the default. This is not the max table
196
size which continues to be 128 voices: the -voices option is a runtime parameter
197
that can be used to increase the size of the table above the VOICECOUNT limit,
198
this ./configure option is just the default.
200
Resolved an issue with the filter tuning of a few of the emulators, they were
201
using an incorrect keyboard tracking value which meant that with the filter at
202
high emphasis there was discordance in the oscillator vs filter waveform
205
Reworked the summary text for small changes to some of the synth names: they
206
are sometimes different from the switches used to start them however the actual
207
name is required to be able to use emulate correctly. The -summary list will
208
list the emulators that have been finished, --summary will list all of them
209
even though a selection do not actually operate yet.
211
Removed the empty pop-up menus. The code is still there however it is no longer
212
called by either GUI or library. There were diverse requests to stop posting
213
them as they had no purpose.
215
Added an initialisation watchdog timer. If the audio thread does not activate
216
in this period then the engine will gracefully exit rather than just hang
217
around waiting for somebody to talk to him. The default timer is 30 seconds
218
but can be changed with the '-watchdog <s>' parameter.
220
The ARP Axxe was about a semitone out of tune. The cause was the logic behind
221
the pitch buttons which was broken.
223
Glide parameter settings could be lost on restart, the 'glidemax' parameter was
224
not being correctly initialised so remained as zero.
226
Remedied a test failure for the jackd binary. If jack is requested as the audio
227
interface then we need to connect to it to find the correct sampling rates and
228
period sizes. The check for failure of this request was broken.
230
Fixed a very arbitrary race condition between the audio and midi threads
231
causing segfaults which only happens during initialisation with heavily loaded
232
CPU. Doubt if this will have been seen outside of development as the window
235
There was a spurious 'newline' debug message when active sense was detected from
236
a keyboard. Bristol does not support active sensing (except from the GUI) and
237
whilst these messages did not cause any issue with the synth operation they
238
were a great annoyance for the command line interface users. The print statement
239
was put under a debug flag.
241
0.60.6 11 Aug 2010 Geometry configuration options, maintenance release
243
Was requested to implement a -geom option which would minimally allow for window
244
placement onto the screen. This seemed very reasonable so incorporated it. The
245
option will also take width and height parameters such as 500x200+100+100 and
246
where necessary break aspect ratio and configure antialiasing. If only one of
247
width/height is given then aspect ratio is maintained, and options such as
248
+100+100 will just affect window positioning. Options like -geom 640 will just
249
set the pixel width, maintain aspect ratio and take default placement, possibly
250
invoking antialiasing as well.
252
Randomised the TCP port numbers used to link the GUI to the bristol engine.
253
There remained an issue with the Jack Session Manager and configurations that
254
used multiple invocations of bristol: the TCP port identifiers would conflict
255
causing one of them to fail on reload. I think the option '-host unix:1234' is
256
a work around the issue as long as '1234' was always unique per bristol but
257
this only works on localhost as it uses unix domain sockets rather than TCP
258
domain. The longer term solution was to randomise the port numbers in the range
259
1024 to 16383, the transient service ports since otherwise there is still a
260
window for error if the TCP ports are not closed down cleanly (although that
261
is now finally a rare occurence). The port identifier can still be overridden
262
and will be inherrited by the JSM interface.
264
Resolved a few issues with different device drivers. OSS was actually broken for
265
a while due to incorrect flags and buffers and there were a few ALSA anomalies
266
although they were inadvertently correct.
268
Was requested to add a manual page for bristoljackstats for part of the debian
269
hurdles. Took the chance to also remove two ancillary binaries which generated
270
notes but were only for QA testing, not general distribution.
272
Added an option called -sleep which stalls the init process for <n> seconds.
273
This was too easy not to implement and may help to overcome what looks like a
274
race conditition when using a session manager to restart multiple Bristol
277
Corrected some ./configure options so that they correctly check for jack and
278
alsa header files rather than just the packages and libraries before including
279
them in the build. This change included adjusting the default drivers so that
280
OSS is configured when jack and alsa are not available.
282
0.60.5 08 Jun 2010 Maintenance release
4
284
Fixed an issue with the SID where double clicking on the memory Load button
5
285
would turn on the soft chip debug code. This was a development feature that was