2
# This file defines the diverse tonewheel generator parameters for the bristol
3
# preacher algorithm. There are definitions per wheel that define its gain and
4
# waveform, the gain levels for each of the slider busses, frequency, phase and
5
# crosstalk levels betweem all the compartments. The tone gain can be
6
# seen to equalise the whole keyboard and the bus gains to equalise ane given
7
# note. There are also settings per slide bar bus for linearity.
9
# The selection between bright and normal is from the GUI "bright" button.
11
# Wheel damping is also known as 'volume stealing', 'volume robbing', etc, it
12
# defines how much signal loss occurs if the same tonewheel is tapped twice
13
# for any chord combination. The Hammond did not drive all the possible note
14
# combinations linearly, so using the same wheel twice did not necessarily
15
# double the volume, it would tailer off slightly. The GUI controls the overall
16
# amount of damping, this controls the mapping of the damping over the keyboard.
18
# There are 91 wheels [0..90], 9 slider busses [0..9], the ordering is not
19
# relevant and any undefined entries are interpolated between the nearest
20
# defined boundaries. Upper and lower extremes are leveled to the nearest
21
# defined value when not explicitly specified.
23
# There are the following options:
25
# ToneNormal: <wheel> <waveform> - tonewheel waveform normal
26
# ToneBright: <wheel> <waveform> - tonewheel waveform bright
28
# EQNormal: <wheel> <gain> - relative gain for that wheel in normal setting
29
# EQBright: <wheel> <gain> - relative gain for that wheel in bright setting
31
# DampNormal: <wheel> <gain> - relative damping of wheel, normal setting
32
# DampBright: <wheel> <gain> - relative damping of wheel, bright setting
34
# BusNormal: <bus> <gain> - relative gain of slider busses, normal setting
35
# BusBright: <bus> <gain> - relative gain of slider busses, bright setting
37
# Use whatver values you want however anything <= 0 is ignored.
39
# Waveforms are as follows:
42
# > 1 - tends towards ramp wave (5.0 has a quite sharp leading edge)
43
# < 1 - tends towards square (0.0 is a rather sharp edged square wave)
45
# The defaults amplify the bass and treble frequencies, using a slight square
46
# wave for the low frequencies moving up to ramps for the high end.
48
# This file is reread when the compress option is selected from the GUI
49
# although this button does not actually affect the sound quality of the
50
# preacher (it does affect the sound when the preacher is not selected).
51
# Reloads are quite an intensive operation since all 91 wheel waveforms are
52
# recalculated. Avoid them whilst actively playing, but you can adust the
53
# values without having to restart the engine and test the net results, plus
54
# changing the 'bright' button setting will have no impact on performance
55
# since the differences are precalculated.
58
# Tonewheel waveforms, lower end are flatter to be a little hollow. This may
59
# be incorrect since using a bright, higher frequency response would typically
60
# result in the lower frequency waves having a richer content. The ranges
61
# should be fixed such that the waveforms for the tooths are common by number
62
# of teeth - there were 12 of each: 2, 4, 8, 16, 32, 64, 128 plus 6 of 192
63
# The output waveforms for each of these ranges should be comparable.
91
# Equalisation "Normal" - tonewheels and busses. This is a rough estimate of
92
# the mV output signals taken from a B3 and it should match up to the tapering
93
# resistor values to normalise the signals later.
115
# Wheel damping 'normal' - some loss of signal at lower frequencies
119
# Tonewheel bright waveforms: square at low end, small distortion upper
122
ToneBright: 12 0.95.0
123
ToneBright: 23 0.95.0
137
# "Bright" equalisation
155
# Bus Bright EQ - this is where most of the 'brightness' comes from now.
160
# Wheel damping 'bright' - more loss of signal at lower frequencies
165
# These are the gains of each stop on the sliders. These values result in
166
# a linear interpolation but you can change that if you want to have things
167
# like exponential gains, uneven gains.
169
# These value add a small amount to the 'stopped' bus to emulate the bus
170
# leakage (in a rather crude fashion).
176
# Wheels are defined as
178
# wheel: <nr> <freq> <phase>
180
# These can redefine the Hammond 'almost' Even Tempered frequencies and the
181
# wheel phases. The default frequencies are the slightly off hammond notes,
182
# here we are going to add additional flatness on the 192-toothed wheels.
184
# Default phase is to init totally randomly, this is pretty much how the
185
# Hammond operated - the teeth were located by spring friction only and could
186
# wander with transport as the wheel could 'walk' under vibration. Phase should
187
# not affect the sound, but actually it does. If you don't like the random
188
# change between invocations then they can be fixed here. Either way, you do
189
# not want to go for all the wheels to be totally in phase, that would be very
190
# electronic - if you want to emulate the L or M series this could be useful.
192
# Entering a negative value or the hyphen ('-') will leave the default value.
193
# Entering zero instead of - should give you a clean leading phase.
196
# This is the default initial gearbox generated automatically by the engine,
197
# you can redefine it here:
199
#wheel: 0 41.193748 -
200
#wheel: 1 43.636250 -
201
#wheel: 2 46.250000 -
202
#wheel: 3 49.000000 -
203
#wheel: 4 51.892502 -
204
#wheel: 5 55.000000 -
205
#wheel: 6 58.259998 -
206
#wheel: 7 61.715000 -
207
#wheel: 8 65.385002 -
208
#wheel: 9 69.267502 -
209
#wheel: 10 73.425003 -
210
#wheel: 11 77.777496 -
211
#wheel: 12 82.387497 -
212
#wheel: 13 87.272499 -
213
#wheel: 14 92.500000 -
214
#wheel: 15 98.000000 -
215
#wheel: 16 103.785004 -
216
#wheel: 17 110.000000 -
217
#wheel: 18 116.519997 -
218
#wheel: 19 123.430000 -
219
#wheel: 20 130.770004 -
220
#wheel: 21 138.535004 -
221
#wheel: 22 146.850006 -
222
#wheel: 23 155.554993 -
223
#wheel: 24 164.774994 -
224
#wheel: 25 174.544998 -
225
#wheel: 26 185.000000 -
226
#wheel: 27 196.000000 -
227
#wheel: 28 207.570007 -
228
#wheel: 29 220.000000 -
229
#wheel: 30 233.039993 -
230
#wheel: 31 246.860001 -
231
#wheel: 32 261.540009 -
232
#wheel: 33 277.070007 -
233
#wheel: 34 293.700012 -
234
#wheel: 35 311.109985 -
235
#wheel: 36 329.549988 -
236
#wheel: 37 349.089996 -
237
#wheel: 38 370.000000 -
238
#wheel: 39 392.000000 -
239
#wheel: 40 415.140015 -
240
#wheel: 41 440.000000 -
241
#wheel: 42 466.079987 -
242
#wheel: 43 493.720001 -
243
#wheel: 44 523.080017 -
244
#wheel: 45 554.140015 -
245
#wheel: 46 587.400024 -
246
#wheel: 47 622.219971 -
247
#wheel: 48 659.099976 -
248
#wheel: 49 698.179993 -
249
#wheel: 50 740.000000 -
250
#wheel: 51 784.000000 -
251
#wheel: 52 830.280029 -
252
#wheel: 53 880.000000 -
253
#wheel: 54 932.159973 -
254
#wheel: 55 987.440002 -
255
#wheel: 56 1046.160034 -
256
#wheel: 57 1108.280029 -
257
#wheel: 58 1174.800049 -
258
#wheel: 59 1244.439941 -
259
#wheel: 60 1318.199951 -
260
#wheel: 61 1396.359985 -
261
#wheel: 62 1480.000000 -
262
#wheel: 63 1568.000000 -
263
#wheel: 64 1660.560059 -
264
#wheel: 65 1760.000000 -
265
#wheel: 66 1864.319946 -
266
#wheel: 67 1974.880005 -
267
#wheel: 68 2092.320068 -
268
#wheel: 69 2216.560059 -
269
#wheel: 70 2349.600098 -
270
#wheel: 71 2488.879883 -
271
#wheel: 72 2636.399902 -
272
#wheel: 73 2792.719971 -
273
#wheel: 74 2960.000000 -
274
#wheel: 75 3136.000000 -
275
#wheel: 76 3321.120117 -
276
#wheel: 77 3520.000000 -
277
#wheel: 78 3728.639893 -
278
#wheel: 79 3949.760010 -
279
#wheel: 80 4184.640137 -
280
#wheel: 81 4433.120117 -
281
#wheel: 82 4699.200195 -
282
#wheel: 83 4977.759766 -
283
#wheel: 84 5272.799805 -
284
#wheel: 85 5585.439941 -
285
#wheel: 86 5920.000000 -
286
#wheel: 87 6272.000000 -
287
#wheel: 88 6642.240234 -
288
#wheel: 89 7040.000000 -
289
#wheel: 90 7457.279785 -
292
# This are for the 192 teethed wheels which are additionally a few cents out:
294
wheel: 84 5250.799805 -
295
wheel: 85 5555.439941 -
296
wheel: 86 5900.000000 -
297
wheel: 87 6232.000000 -
298
wheel: 88 6600.240234 -
299
wheel: 89 7010.000000 - A - flatten by about 0.3 cents. The rest are flat
300
wheel: 90 7400.279785 - and are now just a bit flatter. No phase changes.
303
# Level of crosstalk from the 3 other wheels in the same compartment. The
304
# defaults should be according to the normal 60Hz tonewheel box including
305
# crosstalk for the 2/4 and 8/32 wheels.
307
# These are not dB values but linear gain from 0 to 1.0 and if anybody wants
308
# dB signal loss values then they either need to calculate them or get in
309
# touch with me to encode it that way.
311
# The first two values govern the crosstalk between the two near wheels, and
312
# the second two from the two far wheels. Crosstalk to the first wheel in a
313
# compartment is typically lower due to the effects of the shaping filter
314
# applied to low frequency wheels.
316
# The 4th entry is for the drawbar bus crosstalk.
318
# Entries 5 through 8 are filter and loom crosstalk.
321
crosstalkNormal: 0 0.0001
322
crosstalkNormal: 1 0.0002
323
crosstalkNormal: 2 0.0001
324
crosstalkNormal: 3 0.0002
325
crosstalkNormal: 4 0.0001
326
crosstalkNormal: 5 0.002
327
crosstalkNormal: 6 0.0005
328
crosstalkNormal: 7 0.003
329
crosstalkNormal: 8 0.001
331
crosstalkBright: 0 0.001
332
crosstalkBright: 1 0.002
333
crosstalkBright: 2 0.001
334
crosstalkBright: 3 0.002
335
crosstalkBright: 4 0.001
336
crosstalkBright: 5 0.002
337
crosstalkBright: 6 0.005
338
crosstalkBright: 7 0.003
339
crosstalkBright: 8 0.001
342
# And the compartment table. These are the note numbers (Hammond counted from
343
# 1, but as we all know that does not work well for computers) in each of
344
# the 24 compartments. Each compartment had a pair of tonewheels at each side
345
# and there was more crosstalk between these two than the far two at the other
346
# side of the compartment due to distance. Note that these are not the same as
347
# the MIDI note numbers from KeyOn events, but internal 'tooth' indeces.
349
# These chamber definitions should be correct but if you see any discrepencies
350
# let me know. Each tonewheel was in a compartment with 3 other octaves of the
351
# same note and there were two compartments for any given key covering either
352
# seven or eight octaves. Some notes had empty top frequency tonewheels since
353
# the then engineering could not put enough teeth on the wheel, these were
354
# dealt with using foldback from lower frequencies (and the lowest octave also
355
# had foldback from one octave above for slightly different related reasons).
357
# Crosstalk '0' is used between the first pair and the last pair - they are the
358
# adjacent wheels. The other two crosstalk are for the opposite pair and could
359
# really have been consolidated into a single value.
361
# Crosstalk level-3 is used for bus crosstalk of the drawbars.
363
# For example, from the first line:
365
# Wheel 0 has crosstalk from 48 at level0, plus 12 at level1 and 60 at level2.
366
# Wheel 48 has crosstalk from 0 at level0, plus 60 at level1 and 12 at level2.
367
# Wheel 12 has crosstalk from 60 at level0, plus 0 at level1 and 48 at level2.
368
# Wheel 60 has crosstalk from 12 at level0, plus 48 at level1 and 0 at level2.
370
# These lines can be extended to include the crosstalk levels if you want to
371
# redefine them per wheel.
373
#compartment: 0 0 48 12 60 0.01 0.03 0.01 0.02
374
compartment: 0 0 48 12 60
375
compartment: 1 24 72 37 -
376
compartment: 2 7 55 19 67
377
compartment: 3 31 79 43 86
378
compartment: 4 2 50 14 62
379
compartment: 5 26 74 38 -
380
compartment: 6 9 57 21 69
381
compartment: 7 33 81 45 88
382
compartment: 8 4 52 16 64
383
compartment: 9 28 76 40 -
384
compartment: 10 11 59 23 71
385
compartment: 11 35 83 47 90
386
compartment: 12 6 54 18 66
387
compartment: 13 30 78 42 85
388
compartment: 14 1 49 13 61
389
compartment: 15 25 73 37 -
390
compartment: 16 8 56 20 68
391
compartment: 17 32 80 44 54
392
compartment: 18 3 51 15 63
393
compartment: 19 27 75 13 -
394
compartment: 20 10 58 22 70
395
compartment: 21 34 82 46 89
396
compartment: 22 5 53 17 65
397
compartment: 23 29 77 41 84
400
# Adjacency table. Each wheel, apart from being in a shared compartment which
401
# created crosstalk was also on a filter board with different notes in its
402
# vicinity and in a wire loom with various adjacent cables. There are another
403
# four entries in the crosstalk table for these values, the default given
404
# here are for the filter adjacency, but the fact is these can be redefined for
405
# arbitrary wheel numbers if you want to create a loom. Again, the crosstalk
406
# values are optional and override the defaults.
408
# The default adjacency table is actually taken from the above compartment table
409
# as the filter circuits were mounted on the outside, hence, wheel 30 in
410
# compartment 13 had 4 main neighbors, these being 6, 1 and 49 and 54. The
411
# crosstalk between these will follow the default values unless otherwise
412
# defined. The adjacency for wheel zero is given as reference as it only has
413
# two adjacent filters.
415
adjacency: 30 1 6 49 54 0.6 0.5 0.3 0.3
416
adjacency: 0 24 72 - - 0.6 0.5
419
# Drawbar equalisation.
421
# The tapering table controls the wheel gains by drawbar. It works after the
422
# wheel EQ given above and actually gives a different mix by drawbar by key.
423
# Again, this should follow the actual tapering schematics although the values
424
# used may need to be different as these translate again into linear gains.
426
# If these look wrong let me know, they were taken from the schematics of one
427
# Hammond model. You can emulate broken stops by giving that stop value a very
428
# large impedence - 1000, 2000, etc.
430
# The original circuit was a resistive divider with the output signal over
431
# a 24 Ohms impedence. The values that are entered here are the net signal
432
# gain/loss or a resistor index. The index makes it easier to change the
433
# settings globally without needing a degree in 'vi'. The reason both formats
434
# are accepted is that one is easier to define, the other is more flexible
435
# and will allow resistor tolerances to be built in to be less mechanical.
437
# taper: note <16'> <5 1/3'> <8'> <4'> <2 2/3'> <2'> <1 3/5'> <1 1/3'> <1'>
439
# There is one entry per note from 0 to 60 for a C to C keyboard. Values outside
440
# this range are undefined.
442
# The default taper table is:
444
# resistors: 100 50 34 24 15 10
445
# resistors: 0.4 0.6 0.8 1.0 1.2 1.4 // resulting gain level.
447
# taper: * 0.4 0.8 0.6 0.8 1.4 1.4 1.2 1.0 1.0
449
# With the values given above the below three lines are ~equivalent, they use
450
# R value with an index into the resistor array (value must be less than array
451
# size), the actual resistor values as defined by Hammond, or any other value
452
# greater than 6, or a literal value for the gain:
454
# taper: 0 R0 R2 R1 R2 R5 R5 R4 R3 R3
455
# taper: 0 R100 R34 R50 R34 R10 R10 R15 R24 R24
456
# taper: 0 R101 R31 R51 R33 R11 R10 R15 R25 R24 // slightly off
457
# taper: 0 0.4 0.8 0.6 0.8 1.4 1.4 1.2 1.0 1.0
462
taper: 0 R0 R2 R1 R2 R5 R5 R4 R3 R3
463
taper: 1 R0 R2 R1 R2 R5 R5 R4 R3 R3
464
taper: 2 R0 R2 R1 R2 R5 R5 R4 R3 R3
465
taper: 3 R0 R2 R1 R2 R5 R5 R4 R3 R3
466
taper: 4 R0 R2 R1 R2 R5 R5 R4 R3 R3
467
taper: 5 R0 R2 R1 R2 R5 R5 R4 R3 R3
468
taper: 6 R0 R2 R1 R2 R5 R5 R4 R3 R3
469
taper: 7 R0 R2 R1 R2 R5 R5 R4 R3 R3
470
taper: 8 R0 R2 R1 R2 R5 R5 R4 R3 R3
471
taper: 9 R0 R2 R1 R2 R5 R5 R4 R3 R3
472
taper: 10 R1 R2 R1 R2 R5 R5 R4 R3 R3
473
taper: 11 R1 R2 R1 R2 R5 R4 R4 R3 R3
475
taper: 12 R1 R2 R1 R2 R4 R4 R4 R3 R3
476
taper: 13 R1 R2 R1 R3 R4 R4 R4 R3 R3
477
taper: 14 R1 R3 R1 R3 R4 R4 R4 R3 R3
478
taper: 15 R1 R3 R2 R3 R4 R4 R4 R3 R3
479
taper: 16 R2 R3 R2 R3 R4 R4 R4 R3 R3
480
taper: 17 R2 R3 R2 R3 R4 R4 R4 R3 R3
481
taper: 18 R2 R3 R2 R3 R4 R4 R3 R3 R3
482
taper: 19 R2 R3 R2 R3 R4 R4 R3 R3 R3
483
taper: 20 R2 R3 R2 R3 R3 R3 R3 R3 R3
484
taper: 21 R2 R3 R2 R3 R3 R3 R3 R3 R3
485
taper: 22 R2 R3 R2 R3 R3 R3 R3 R3 R3
486
taper: 23 R2 R3 R3 R3 R3 R3 R3 R3 R3
488
taper: 24 R3 R3 R3 R3 R3 R3 R3 R3 R3
489
taper: 25 R3 R3 R3 R3 R3 R3 R3 R3 R3
490
taper: 26 R3 R3 R3 R3 R3 R3 R3 R3 R3
491
taper: 27 R3 R3 R3 R3 R3 R3 R3 R3 R3
492
taper: 28 R3 R3 R3 R3 R3 R3 R3 R3 R3
493
taper: 29 R3 R3 R3 R3 R3 R3 R3 R3 R3
494
taper: 30 R3 R3 R3 R3 R3 R3 R3 R3 R3
495
taper: 31 R3 R3 R3 R3 R3 R3 R3 R3 R3
496
taper: 32 R3 R3 R3 R3 R3 R3 R3 R3 R3
497
taper: 33 R3 R3 R3 R3 R3 R3 R3 R3 R3
498
taper: 34 R3 R3 R3 R3 R3 R3 R3 R3 R3
499
taper: 35 R3 R3 R3 R3 R3 R3 R3 R3 R3
501
taper: 36 R4 R3 R3 R3 R3 R3 R3 R3 R3
502
taper: 37 R4 R3 R4 R3 R3 R3 R3 R3 R3
503
taper: 38 R4 R4 R4 R3 R3 R3 R3 R3 R3
504
taper: 39 R4 R4 R4 R2 R3 R3 R3 R3 R3
505
taper: 40 R4 R4 R4 R2 R2 R3 R3 R3 R3
506
taper: 41 R4 R4 R4 R2 R2 R2 R3 R3 R3
507
taper: 42 R4 R4 R4 R2 R2 R2 R2 R3 R3
508
taper: 43 R4 R4 R4 R2 R2 R2 R2 R2 R1
509
taper: 44 R4 R4 R4 R2 R2 R2 R2 R2 R1
510
taper: 45 R4 R4 R4 R2 R2 R2 R2 R2 R1
511
taper: 46 R4 R4 R4 R2 R2 R2 R2 R2 R1
512
taper: 47 R4 R4 R4 R2 R2 R2 R2 R2 R1
514
taper: 48 R5 R4 R4 R2 R2 R2 R2 R1 R1
515
taper: 49 R5 R4 R5 R2 R2 R2 R2 R1 R1
516
taper: 50 R5 R5 R5 R2 R2 R2 R2 R1 R1
517
taper: 51 R5 R5 R5 R2 R2 R2 R1 R1 R1
518
taper: 52 R5 R5 R5 R2 R1 R2 R1 R1 R1
519
taper: 53 R5 R5 R5 R2 R1 R2 R1 R1 R1
520
taper: 54 R5 R5 R5 R2 R1 R2 R1 R1 R1
521
taper: 55 R5 R5 R5 R2 R1 R1 R1 R1 R1
522
taper: 56 R5 R5 R5 R2 R1 R1 R1 R1 R1
523
taper: 57 R5 R5 R5 R2 R1 R1 R1 R1 R1
524
taper: 58 R5 R5 R5 R2 R1 R1 R1 R1 R1
525
taper: 59 R5 R5 R5 R2 R1 R1 R1 R1 R1
527
taper: 60 R5 R5 R5 R2 R1 R1 R1 R1 R1
530
# KeyClick section. The preacher has its own keyclick emulation. Each key has
531
# 9 contacts, one for each drawbar bus, and each will make a contact at a
532
# slightly different time due to wear and creep of the contacts. This is
533
# emulated with a millisecond offset timer from the note_on event such that
534
# each bus has its own delay before two things happen:
536
# 1: contact is made and the tonewheel finally passes to the output.
537
# 2: click is generated at a specified level.
539
# The gain levels apply to the noise level from that single contact, they may
540
# be different but always apply to the same offset timer. The timers are fixed,
541
# however there is no link between the offset and the drawbar, they are
542
# mildly randomised, partly by index selection but also by key velocity - these
543
# are the maximum offsets, when a key is hit faster then it moves faster and
544
# the contact delays compress, as with the original instrument (almost - if
545
# you want to know the differences then mail me).
547
# Gains can be inverted on selection, and the pulse from each contact can be
548
# controlled from a limited selection.
550
# There are currently 6 waveforms: 0 to 2 are sines of different frequencies,
551
# 3 is a pulse wave edged with noise, 4 and 5 are ramped waves with different
552
# attack and decay characteristics.
554
# The overall level of keyclick also has a control in the GUI. All these values
555
# use the drawbar number as index.
557
# There is currently no NoteOff grooming (0.10.2).
559
BusDelayNormal: 0 0.001
562
BusDelayBright: 0 0.01
563
BusDelayBright: 1 80.0
564
BusDelayBright: 2 51.0
565
BusDelayBright: 3 3.0
566
BusDelayBright: 4 4.0 - These are the percussive busses and do not carry click
567
BusDelayBright: 5 0.2 - also responds better with a short delay.
570
BusDelayBright: 8 110
572
# Click gain levels by bus.
586
# There are 4 different click pulses included in the code, they can be selected
587
# as desired. Some of these are sampled, none of them is actually deemed by the
588
# author to be 'correct' or better than any other method of generation. The code
589
# even works quite well without any samples (Click level set to zero in the
590
# options screen) and relying on bus delay offsets and the normal click of the
591
# tap from the wheel. These do generate, however interesting results. The
592
# 0.60.8 default pulses actually use gradual negation of the signal with
593
# velocity (see below) so the effect becomes less pronounced.
594
ClickPulseNormal: 0 3
595
ClickPulseNormal: 8 3
597
ClickPulseBright: 0 3
598
ClickPulseBright: 3 3
599
ClickPulseBright: 4 2
600
ClickPulseBright: 7 2
601
ClickPulseBright: 8 0.001
603
ClickInvertNormal: 0 1
604
ClickInvertNormal: 1 1
605
ClickInvertNormal: 2 1
606
ClickInvertNormal: 3 1
607
ClickInvertNormal: 4 0.01
608
ClickInvertNormal: 5 1
609
ClickInvertNormal: 6 0.01
610
ClickInvertNormal: 7 1
611
ClickInvertNormal: 8 0.01
613
# This uses inversions on the click samples. Note that if the same sample is
614
# taken for two busses, one inverted, then then will tend to cancel out as the
615
# velocity increases as they superimpose. This can be desirable as it introduced
616
# other artifacts into the sound and the dynamism of the click.
617
ClickInvertBright: 0 1
618
ClickInvertBright: 1 0.01
619
ClickInvertBright: 2 1
620
ClickInvertBright: 3 0.01
621
ClickInvertBright: 4 1
622
ClickInvertBright: 5 0.01
623
ClickInvertBright: 6 1
624
ClickInvertBright: 7 0.01
625
ClickInvertBright: 8 1