Tonewheel Organ with Propeller Chip - Hammond B3
PropB3
Posts: 10
Hello to all musicans,
i have just programmed a Tonewheel Organ simulation on the Propeller (Hammond organ).
I uses a MIDI interface and 9 drawbars like a real B3. The audio output is done by a 12bit R2R ladder.
the hardware is very simple, but worked nice.
Know I want to clean up my code, and make it a littel bit more 'readable / understandable'.
It seems that all memory declarations in the propeller language are 'global', so that i need a lot of names for one variable in several cogs.
o.k. this is my first popeller project - i did it like this way:
PUB MySpinInitCode
Cog1Var := @AMemoryCell_in_the_HUB
Cog2Var := @AMemoryCell_in_the_HUB 'the same memory address
Cog3Var := @AMemoryCell_in_the_HUB '.... ... -> 4 names for one cell !
'know assembly code: I want to communicate between 3 cogs
DAT
ORG 0
Cog1Programm
DAT
ORG 0
Cog2Programm
DAT
ORG 0
Cog3Programm
And I need in every cog an unique name for my 'accumulator'
Is there a better way ?
If anyone is interested on my work, or wants to rebuild the organ, send me an message or mail
thanks
H.Bollig
i have just programmed a Tonewheel Organ simulation on the Propeller (Hammond organ).
I uses a MIDI interface and 9 drawbars like a real B3. The audio output is done by a 12bit R2R ladder.
the hardware is very simple, but worked nice.
Know I want to clean up my code, and make it a littel bit more 'readable / understandable'.
It seems that all memory declarations in the propeller language are 'global', so that i need a lot of names for one variable in several cogs.
o.k. this is my first popeller project - i did it like this way:
PUB MySpinInitCode
Cog1Var := @AMemoryCell_in_the_HUB
Cog2Var := @AMemoryCell_in_the_HUB 'the same memory address
Cog3Var := @AMemoryCell_in_the_HUB '.... ... -> 4 names for one cell !
'know assembly code: I want to communicate between 3 cogs
DAT
ORG 0
Cog1Programm
wrlong Acc1,Cog1Var
........DAT
ORG 0
Cog2Programm
rdlong Acc2,Cog2Var
........DAT
ORG 0
Cog3Programm
rdlong Acc3,Cog3Var
........And I need in every cog an unique name for my 'accumulator'
Is there a better way ?
If anyone is interested on my work, or wants to rebuild the organ, send me an message or mail
thanks
H.Bollig
Comments
I am in a hurry ATM so will leave it for others to help you. There are plenty of very capable people on this great forum, so if you have a problem, please ask.
-Phil
I am interested in your project. I have an electric organ console that is in pristine condition, but the electronics no longer work because the capacitors have all dried up. I want to put a Propeller-based synthesizer inside. I probably won't be able to work on it until after Christmas, but if you send me your code I wouldn't mind looking at it and improving upon it. Better yet, if you attach it to a forums post, then everyone who is interested can look at it or work on it too. Even if you haven't honed your Propeller programming skills it will still be a benefit to the community, and no one will critisize you just because you are learning while you are programming.
Thank you,
David Carrier
Parallax Inc.
Mike R
Welcome to the Propeller forum. Your project is very interesting as well. Is the URL below is for your website and cool Midi products? I'm looking forward to hearing the Leslie effect in action.
http://www.rainbowelectronics.co.uk/midi%20wsg.htm
Bob
I can say that it's nothing short of spectacular, it sounds really nice, maybe just a little bit too loud keyclick (to my ears).
Can't judge it compared to the real thing since I don't own one, but I'm really surprised that it doesn't even consume all the cogs.
Disabling debug up to 3 cogs are free (I used one for pwm), so there's still room for attempting to add leslie (and crossover filter, and overdrive maybe?).
Mike, good to see you posting here!
for all people who are interested on the PropB3, I put an audio Demo on the thread. On Demo 1 you hear the pure organ.
You hear at sequence with 3 setings, FULL Drawbar / Jimmy Smith Sound / Gospel Sound. One time in mellow and once in bright (more keyclick)
PropB3_demo1.zip
Beacause Hammand Organ without Leslie speaker is rather boring, I put here a second Demo, it uses a multieffects with rotary speaker and reverb (Its a DIY effects unit from ELEKTOR magazin). The PropB3 has (at this time) no leslie effect.
PropB3_demo2.zip
Heres a pic and the schematics of the organ
The PropB3 has following config:
Cog1 = Midi Decoder
Cog2 = generate Tonewheels 61
Cog3 = generate Tonewheels 62 -79 and Vibrato / Chorus / Output
Cog4 = generate Voice 1-8
Cog5 = generate Voice 9-16
The output is done via 12Bit D/A converter using a simple R2R Ladder and a smothing analog filter. - Very simple.
During the working on this project, i figured out that the R2R ladder sounds much better than an PWM output. You can run at lower clocks and get more time for calculations inside a cog.
Thanks
H.Bollig
I am very impressed with the sounds! I own a Hammond A-100 and have been working with Hammonds for 30 years, so I know what to expect. Leslie effect is awesome!
Any chance you will put the code in the OBEX, or is going to be a commercial venture.
Either way. it's great work.
Jim
I must say that the rotating speaker simulation does a lot of difference.
Some questions...
What is the sample rate?
Is this pure additive synthesis?
Pardon my ignorance but does the real thing have some kind of volume envelope?? (It sounds like there is no volume envelope applied at all in your examples)
/Johannes
Mike
This makes we wanna play E-piano and hammond again.
Will you upload the code to the obex?
best regards
Stefan
- sample rate is 20KHz, means audio bandwith 10Khz
- it works like a real tonewheel organ, 79 free running ozilators mixing together with 9 drawbars....
- No clasical volumen control like in synth (ADSR) - o.k. theres a Percusion, but like real Hammond only on first note
the "new" PropB3 is online. You can have a look here :
http://bolltone.de/Projekte/PropB3/PropB3_US.html
So the propeller is found (5/80MHz is quoted), but the programming doesn't work. With a logic analyser the signals seem to be weird - although of course I don't really know what I should be seeing - there is never a start sequence (data going low with clock high) at the EEProm inputs. Doubtless a stupid mistake somewhere from me, but I've checked everything, changed the ICs, checked the circuit, measured signals, checked for shorts etc etc. Obviously though a bit in the dark when one doesn't have the spin code. Only thing I haven't done is changed my CH340 USB/Serial Adapter for a FTDI one (supposed to be better).
Gordon
Did you try noiseshaper for PWM audio? I used it in this player: http://forums.parallax.com/discussion/140767/a-new-topic-for-vga-not-only-sid-player
Then if you have 12-bit r2r ladder already implemented, you can still combine this with PWM and noiseshaping, which can give ~20 bit audio resolution
Gordon
Hi everybody,
I have purchased the TDA1543-chip as the DAC.
But I have found that there are two different versions
one for japanese input format: time multiplexed two's complement
and
one with I²S-input format
But I don't know which format is used in the PropB3-code
Does somebody know this?
best regards Stefan
At 5:33 in this video, Mike Rainbow discusses the different versions of the TDA1543. The relevant portion lasts about a minute. Basically, the Japanese variant has an A suffix (TDA1543A) and does NOT work. Unfortunately, Mike discovered that the lack of a suffix on the chip does not guarantee that the chip will work, so you pretty much have to just try it.