#22 preacher mode transposes key (0.30.3)

closed
Nick Copeland
5
2009-01-02
2008-12-25
gimick
No

Engaging the preacher mode appears to transpose the sound by a sixth.

Environment : Bristol 0.30.3, 64Studio AMD64, built from source with no-midi-jack option.

To recreate: Select just a 8' stop, no other effects. Repeatedly switch preacher mode on and off

Output: The note sounded appears to transpose by approx a sixth.

Discussion

  • Nick Copeland
    Nick Copeland
    2008-12-27

    • assigned_to: nobody --> ncopeland
     
  • Nick Copeland
    Nick Copeland
    2008-12-27

    Hi Steve,

    Sounds odd. Do you know it if transposes up or down a 6th? I will have to look through the code however the most likely suspects would be the samplerate. For example, if you have a native 48KHz card but do not tell bristol beforehand what rate is being used it defaults to 44.1kHz. Now you are using Jack which means I cannot always request the sample rate. Could you try it with '-rate 48000'? I will go have a look through the code to make sure I am not assuming 44100 Hz in the Preacher code. That should not be the case but that is the thing about bugs.

    Regards,

    Nick.

     
  • Nick Copeland
    Nick Copeland
    2008-12-27

    No, it is indeed out by about a sixth. Let me have a look at the tables I use to initialise the gearbox, it has a set of values that were intended to be 'Hammond Equal Temperament' due to having to use integer number of teeth on the driving wheels. Each note is a little off ET however I acknowledge that it is only a few cents rather than about 800 of them.

    Update as soon as I can, I first need to find out which of them is correct however that is not too difficult with the A_440 generator from the mini.

     
  • Nick Copeland
    Nick Copeland
    2008-12-27

    The initialisation code for the preacher gearbox starts at toothwheel 29, the whole table is built out using 12 base frequencies from this note. The correction is to change the start index to 21 to raise the gearbox frequencies, this was tested here and it works. I need to go back to my sources to find out why this was wrong and I think I may have based my gearbox index on a 60 Hz rather than a 50 Hz design. Since the whole gearbox rotated slower the basic gearing had to change. That is conjecture.

    The fix brought to light another bug where the tonewheel file was only searched for in the user profile however if that fails then it should also have been sought for in $BRISTOL/memory/profiles as well. This was due to changes made a while ago to enforce user profiles. Its now fixed.

    Steve, what do you want for a fix? I can make a whole build and upload it, I can give you the line you need to change (29 to 21) for just the frequency correction or you can wait for the next scheduled upload expected in early Jan. I cannot give you a simple set of diffs since you probably need both fixes to correct the gearboxes being used. Anyway:

    vi bristol-0.30.3/bristol/thesermon.c
    /start =
    :s/29/21
    :wq

    Make install would get you there for the frequency offsets however you need the other fixes to get the correct tonewheel designs I envisaged (cp /usr/local/share/bristol/memory/profiles/tonewheel ~/.bristol/memory/profiles).

    Regards nick.
    PS. Thanks for this report. That has gone unnoticed/unreported for a long time. It also draws to light the need for a global tuning in the B3, something that I have not put in there. It would be an enhancement rather than a fix.

     
  • gimick
    gimick
    2008-12-27

    Hi Nick,

    Thanks for the prompt response! I'm building from source, so I'm quite happy to hand-patch and recompile.

     
  • OK, made the code change, and copied the profile. Confirm all now well.

    Didn't realise that the gearing had to be changed for 50hz rather than 60hz. I assumed they fitted a different motor, but thinking about it, it would be simpler and cheaper to alter the gearing.

    Just for info, I'm running jack through the onboard laptop at 48000. I can also run at 44100 through a EMU0202usb. I'm now using the -rate 48000 option. Hadn't noticed it was slightly out!

     
  • Nick Copeland
    Nick Copeland
    2008-12-28

    The original hammond had a single motor with a kickstart (seriously) and it rotated the main spindle at the same frequency as the mains frequency - 50Hz in the US and 60Hz in most of Europe so yes, they did have a different motor. From that main axle they had a set of gears that drove the toothwheels at specific frequencies. I took a load of docs from different places to emulate the gearbox errors, crosstalk, tapering, waveform distorts, etc, and I think I may have ended up with different frequencies from different sources. Either way this was well spotted and is now fixed.

    The next upload in Jan will have this resolution plus it will search for the default tonewheel file and private tonewheel files so anybody can have a private gearbox if they want.

    As another side note I also used this to review some parts of the code that still used 44100 as the default sample rate and removed a few more errata. The early code hid the sample rate from the audible sound generators which in hindsight was a mistake. It is now generally available however the code needed some (small) changes to respect different rates. The Hammond did respect these, your bug was distinct.

    Kindest regards, nick.

     
  • Nick Copeland
    Nick Copeland
    2008-12-28

    Oops, the kickstart was not a manual job, it was a capacitive kick from a coil to get the motor running - push of a button.

     
  • Nick Copeland
    Nick Copeland
    2008-12-28

    • status: open --> pending
     
  • Nick Copeland
    Nick Copeland
    2009-01-02

    • status: pending --> closed