Additive Organ Pipes
Posted: Sun Aug 20, 2017 6:15 pm
Hi all,
Here at last is the current state of my additive-system pipe organ simulator - 'HB3' - which I started back in March. More to do but basically working OK now. Immediate thanks and acknowledgement for all the bits that I've 'borrowed' from others, and for one or two bits of vital help especially early on!
It's loosely based on the 1980s hardware 'Bradford Computing Organ System', which I used professionally in church organs for many years. Since it's demise a few years back I've wondered how it would translate into a PC-based version, so here we are. I've found It's been possible to refine and elaborate on the original concepts in every area.
What I've made produces a single organ stop, so to build an actual organ would need umpteen vst instances, in the same way that a pipe organ contains umpteen ranks of pipes, one for each stop, depending on its size.
I'm hoping it's sort-of self-explanatory, but essentially it has 6 'voicing points', one at each C on the keyboard, and it then interpolates between them to create harmonic levels for every keyboard note (well, actually 72 notes - there are 1/2-octave extensions at each end, to allow for transposition). It then writes 72 waveforms from this harmonic data, ranging in size from 1024 points for very low frequencies to 32 points at the top end.
Similarly there is an envelope generator for bottom C, and then a rate-scaling setting at each voicing point which is interpolated into 72 envelope speeds. (In general small organ pipes play faster than big ones). Also at each voicing point there are pitch modulation controls, noise/random modulation controls etc, all interpolated into 72 of each.
Four parallel sections, A,B,C & D (.. although I might lose one, haven't found a need for it yet) to separately create sustained sounds, attack & release elements and so on. You can view each section, turn them off, solo them etc.
One innovation I should mention: I've made myself an associated 'regulator' fsm, whose purpose is to write a table setting a level for every sine-wave semitone in the spectrum .. from bottom C at 16Hz up to top C at 16kHz, 10 octaves. This 'regulation table' is then referenced when the system is writing its 72 waveforms from all the harmonic levels, meaning that it can literally flatten (or manipulate), the frequency response of the combination of speaker & room acoustics. As far as I know this hasn't been done in a digital system before, but when you think about it ... it has always been possible on, say, a Hammond organ when the magnets adjacent to the spinning wheels were adjusted at the factory - which does the same thing!
I've loaded up 10 presets, examples of most families of organ stop.
Not done this before so I'm hoping the following works .....
https://www.dropbox.com/s/pxw5u08o8gj3k ... 6.zip?dl=0
Hope it's of interest; looking forward to comments .. and advice!
Here at last is the current state of my additive-system pipe organ simulator - 'HB3' - which I started back in March. More to do but basically working OK now. Immediate thanks and acknowledgement for all the bits that I've 'borrowed' from others, and for one or two bits of vital help especially early on!
It's loosely based on the 1980s hardware 'Bradford Computing Organ System', which I used professionally in church organs for many years. Since it's demise a few years back I've wondered how it would translate into a PC-based version, so here we are. I've found It's been possible to refine and elaborate on the original concepts in every area.
What I've made produces a single organ stop, so to build an actual organ would need umpteen vst instances, in the same way that a pipe organ contains umpteen ranks of pipes, one for each stop, depending on its size.
I'm hoping it's sort-of self-explanatory, but essentially it has 6 'voicing points', one at each C on the keyboard, and it then interpolates between them to create harmonic levels for every keyboard note (well, actually 72 notes - there are 1/2-octave extensions at each end, to allow for transposition). It then writes 72 waveforms from this harmonic data, ranging in size from 1024 points for very low frequencies to 32 points at the top end.
Similarly there is an envelope generator for bottom C, and then a rate-scaling setting at each voicing point which is interpolated into 72 envelope speeds. (In general small organ pipes play faster than big ones). Also at each voicing point there are pitch modulation controls, noise/random modulation controls etc, all interpolated into 72 of each.
Four parallel sections, A,B,C & D (.. although I might lose one, haven't found a need for it yet) to separately create sustained sounds, attack & release elements and so on. You can view each section, turn them off, solo them etc.
One innovation I should mention: I've made myself an associated 'regulator' fsm, whose purpose is to write a table setting a level for every sine-wave semitone in the spectrum .. from bottom C at 16Hz up to top C at 16kHz, 10 octaves. This 'regulation table' is then referenced when the system is writing its 72 waveforms from all the harmonic levels, meaning that it can literally flatten (or manipulate), the frequency response of the combination of speaker & room acoustics. As far as I know this hasn't been done in a digital system before, but when you think about it ... it has always been possible on, say, a Hammond organ when the magnets adjacent to the spinning wheels were adjusted at the factory - which does the same thing!
I've loaded up 10 presets, examples of most families of organ stop.
Not done this before so I'm hoping the following works .....
https://www.dropbox.com/s/pxw5u08o8gj3k ... 6.zip?dl=0
Hope it's of interest; looking forward to comments .. and advice!