NEW: 8-Voice Drawbar Organ

Discussion in 'Effects and the DSP' started by Lex Nahumury, Apr 27, 2005.

  1. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    NEW: 8-Voice Drawbar Organ(DSP-Instrument)

    K1.3 8-Voice Drawbar Organ (3538)

    Despite the availabilty of very good VSTi Drawbar Organs these days,
    I couldn't resist spending some time implementing the drawbar principle in DSP microcode.
    (What can I say, I'm a sucker for those 'ol' keys.)
    http://members.home.nl/nahutec/kxleslie/k13.png

    A real Hammond organ has about 80 to 91 tone generators (tonewheels or electronics)
    and 9 drawbars to perform it's additive synthese.

    To keep DSP resource usage reasonable I settled for;
    8 voices polyphony and 4 drawbars.
    (4/9*3 = 1.3, hence the name k1.3 )
    Each voice uses 4 sine oscilators so we have a total of 8*4=32 sine oscilators.
    That plus the additional microcode for gating, VCA, Percussion, Filter, Rotary etc. already
    makes it a hefty resource eater.

    I have followed Hammond design 'rules' as much as possible;
    - Register frequencies (pipelenghts) as hammond
    - Foldback on high pitches
    - Percussion re-triggers only when all keys released
    - High Cut filter on Swell pedal
    etc..

    How does it sound?
    http://members.home.nl/nahutec/kxleslie/kx_drawbars.mp3
    Not as a B3 of course. The sines are to 'clean'.
    Nevertheless I have fun playing/messing around with it eventhough I own a copy of NI's B4.

    Usage:
    -Select MIDI-IN Device and Channel as you would do in any other Midi app.
    You can NOT use any kX Control Midi Port! (because a kX plugin runs as a thread from kxmixer.exe)
    To play directly from your Midi Keyboard, simply select kX UART.
    To play from a sequencer, you'll need MIDIYOKE virtual midi driver.
    The last Midi Settings are remembered and used the next time you load the plug.

    -kX Automation is not used! Instead the Organ uses it's own MIDI implementation.
    So far the mapping is;
    -Drawbar 1 to 4 = CC12,13,14,15
    -Volume = Volume CC07
    -Slow/fast = Modulation
    -Swell = Expression

    -If the Organ recieves Midi data correctly, it's indicator will turn Green
    and 'Voices in use' are displayed.
    (Use this to check connections)

    -Percussion:
    The organ uses (steals) the 4th drawbar for percussion.
    To get authentic Hammond Percussion set the 4th bar's combo to [2 2/3'] or [4]


    Download for 3545;
    http://members.home.nl/nahutec/kxleslie/3545/organ.kxl

    Update "8-voice Drawbar Organ v1.1b (3538)":
    -Fixed a small bug in pitch calculation.
    http://members.home.nl/nahutec/kxleslie/organ.kxl

    3537 version;
    Compiled for 3537 driver version.
    (with build-in driver version check)
    http://members.home.nl/nahutec/kxleslie/organ_3537.zip


    /LeMury
     
    Last edited: Aug 19, 2008
  2. thomasabarnes

    thomasabarnes Long Time ***** Friend

    Joined:
    Jan 7, 2003
    Messages:
    1,404
    Likes Received:
    13
    Trophy Points:
    48
    LOL LeMury:

    This sounds good man!:)

    And that's some mighty fine playing youre doing! Very cool playing, indeed!

    Tell me it's you playing and not a MIDI file you got from somewhere?:D
     
    Last edited: Apr 28, 2005
  3. Daniel Drummond

    Daniel Drummond New Member

    Joined:
    Dec 7, 2002
    Messages:
    1,136
    Likes Received:
    0
    Trophy Points:
    0
    That's really awesome LeMury! And by the way, where has that "old" rotary speaker effect you were programming gone? Is it the one built in here? Have you tried using one of the fuzz/distortion effects to make it dirtier?
     
  4. Tiger M

    Tiger M kX user

    Joined:
    Apr 14, 2004
    Messages:
    851
    Likes Received:
    0
    Trophy Points:
    0
    Very nice! You could use parabolas instead of sines for a more "dirty" sound and this will save you quite a lot of registers in expense for instructions. The only bad thing I see is the high resource usage, but I think this is compensated by the great sound.

    This is the first completely finished kX instrument! I'm so happy, I knew someday we'd come to this level of development;). Kx gives us so many possibilities.
     
  5. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    Thanks. Yep that's me allright.
    Jamming along with the drum track I got pretty off beat at times but I decided to leave it this way and not to quantize.
    All you here is drum & Organ. Pretty amazing what 'only' 8 voices can do isn't it?
    The initial idea was to play the bass line with some Bass guitar,
    but before I knew I found myself playing the bass line on the organ.

    /LeMury
     
  6. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    Hey Daniel!
    Long time no see. (spending to much time on your emu-card:cool: ?)

    Yep. The build-in rotary is a somewhat simplified version.
    I haven't spend much time on it, so there's room for improvement there.

    Yes I have plans to implement some build-in distortion but haven't
    experimented yet.

    /LeMury
     
  7. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    Do you have a working microcode implementation of such an oscillator to go along with those statements?
    Although I doubt it will improve the sound drasticly, shifting resource usage from GPRs towards Instructions sounds interresting.

    There's no way to realize a 8_voice * 4_Osc synth + build in fx
    without using a substantial amount of DSP resources.
    Oh what am I talking,..You know that just as well as I do Tiger!

    Anyway, .On to something more constructive;
    What really may 'beaf up' the sound is feeding each voice's output into a seperate
    soft clipper (eventualy followed by lowpass filtering to roll off the highs)

    That would mean; 8*clipper microcode.
    Since you are the expert here on clipping, do you have any suggestions
    on very 'small footprint clipping code'?
    Clipping Parameters would be global for all 8 voices.

    /LeMury
     
  8. Tiger M

    Tiger M kX user

    Joined:
    Apr 14, 2004
    Messages:
    851
    Likes Received:
    0
    Trophy Points:
    0
    In your code you use two state registers per sine oscillator. With the following sine approximation you use only one state register, but one more instruction:
    Code:
    macw counter, counter, frequency, 1
    tstneg tmp, counter, counter, 0
    interp out, counter, tmp, 0
    
    This is: f(x)=x*(1-abs(x))

    It is not a perfect sine, so you have several frequencies above the base and this may probably substitute a 'footprint' soft clipper. Otherwise, you could use the 'log' instruction for soft clipping, but it's not very good in my oppinion, since the curve is not perfect, so we end up with much more frequencies than we want and aliasing could easily step up;)

    As we know we have twice more instructions available than registers, so this ratio in my oppinion should be maintained for all effects.
     
  9. kokoon

    kokoon New Member

    Joined:
    Feb 18, 2003
    Messages:
    269
    Likes Received:
    0
    Trophy Points:
    0
    damn man that sounds superSWEET!

    nice playing too. the drum track is tight!

    will this work on 37?
     
  10. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    That's one 'dirty' sine already. This just might do the trick!
    I'll implement it to see how it sounds as a whole and report back.

    /LeMury
     
  11. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    Thanks.
    I doubt any 38 kxl will run on <38, but it's no big deal to compile the Organ for 3537 (or older) if people want that.

    Come to think of it,.. most musicians probably still use 3537 because of Max's excellent UFX.

    /LeMury
     
    Last edited: Apr 28, 2005
  12. Way2Loud

    Way2Loud New Member

    Joined:
    Mar 5, 2004
    Messages:
    35
    Likes Received:
    0
    Trophy Points:
    0
    Hello LeMury

    Im using an EMU1820 card now, but I kept the 3537 driver on my old computer and I keep returning to this forum just for the reading.
    About this B3-clone, I'm totally amazed. You kx-programmers are so much more "creative" (haha) then the EMU-people. Keep up the good work - and I would love to be able to try your drawbar organ with ver 3537.

    //W2L
     
  13. Tiger M

    Tiger M kX user

    Joined:
    Apr 14, 2004
    Messages:
    851
    Likes Received:
    0
    Trophy Points:
    0
    I've 'invented' it for the synth I'm developing and it is a good sine substitute, moreover it is absolutely stable, you don't have to reinitialize registers each time you change the frequency and the amplitude is constant for every frequency.
     
  14. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    To bad, the harmonics ruin the typical organ sound.
    It started to sound more like an Accordion (Harmonica? don't know what it's called in english).
    That's a pitty since it is indeed easier to program a stable osc with your algoritme.

    Anyway;.. it tells me that the typical 'tonewheel sound' is not a matter of
    adding harmonics to the fundamentals. (makes sense since adding harmonics is what the drawbars are for..duh)
    The dirty B3 sound is more about picking up all kinds of mechanical noises, rummble, crosstalk etc. etc.
    Add to that the overall (tube) distortion from both Leslie as well as B3 pre-amp and voila..!

    /LeMury
     
    Last edited: Apr 28, 2005
  15. Tiger M

    Tiger M kX user

    Joined:
    Apr 14, 2004
    Messages:
    851
    Likes Received:
    0
    Trophy Points:
    0
    You could try implementing a global waveshaper, which would saturate just slightly. You could use the same sine approximation formula with a slight modification:

    f(in)=in*(1-abs(in)*0.5)

    It clips very softly and might add that little 'touch' that you need to make the sound more realistic.

    Anyway, it sounds very good the way it is.
     
  16. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    Update "8-voice Drawbar Organ v1.1b":
    -Fixed a small bug in pitch calculation.

    (See download link in first post)

    /LeMury
     
  17. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    On user request:

    3537 version.

    (See first post for download link)

    /LeMury
     
  18. Way2Loud

    Way2Loud New Member

    Joined:
    Mar 5, 2004
    Messages:
    35
    Likes Received:
    0
    Trophy Points:
    0
    Thanks for the 3537-version, LeMury. Now I know what to do this weekend........

    //W2L
     
  19. kokoon

    kokoon New Member

    Joined:
    Feb 18, 2003
    Messages:
    269
    Likes Received:
    0
    Trophy Points:
    0
    wow this really sounds great... it sounds really versatile. thanks alot for this 3537 version.

    i wouldn't mind some more complete synths built this way... ;)
     
  20. Lex Nahumury

    Lex Nahumury DH Senior Member

    Joined:
    Jan 5, 2003
    Messages:
    1,944
    Likes Received:
    6
    Trophy Points:
    0
    I still have an unfinished Bass Synth Project (ala MiniMoog) lying around somewere.
    Hmm,..let's see what that brings.

    /LeMury
     

Share This Page

visited