This page is available in English only

Digital Harmonic Generator V2 Rack-Ready Block 4x/8x oversampling

Emulation inspired by the RMI Harmonic Synthesizer

(16 Votes)
Audio Player
2.0 (Updated 2 years ago)
16.9MB
January 11, 2022
Reaktor 6

DESCRIPTION

Update January 2023:

This is the second, and possibly last, iteration of my Digital Harmonic Generator block.

Update Log:

- Added a 4x oversampling version to save some CPU.
- Added a Direct Mix knob. You can now mix the direct Walsh square waves with the sine generators. If you are curious to see how the different Walsh functions sound (or look) before they go to the summing sine generators turn the knob all the way to the right (+). This is similar to the DIRECT Output of the RMI Keyboard Computer 1.
- Added Envelope Generator modules that behave more like the original, especially the Percussion envelope. You can select Linear/Exponential/Logarithmic Attack/Decay. Each module has a selector between Normal (AHD) and Percussion (AD, Attack = 0). The selector is either a switch (for static selection) or a knob (for modulation).
- Added a Ramp Generator module. The RMI HS has a peculiar filter envelope, called SWEEP. It is basically a ramp up/down which modulates the frequency of its filter, called Dynamic Filter. Also, the HS has a Pitch Bend section, where you can use this ramp module to emulate. You can select Linear/Exponential/Logarithmic ramps up/down.

I would like to thank Andreas Rohlfes, who updated this module with Polyblep AA oscillators (look for his version in the library), something that I was not able to do.

---------

I’ve had this in development on and off for at least 10 years. A month ago (December 2021), finally I have decided to finish it and post it for good.

It is my attempt to emulate the Digital Harmonic Generators of the RMI Harmonic Synthesizer famously used by Jean-Michel Jarre in his early albums.

It uses the same sound generation process as the RMI HS, in the theoretical sense (more of this below).

I have not much idea if it sounds similar or not, as I never had access nor will have access to the real instrument. My intent was not to make a true emulation, but to apply the theory behind the sound generation engine of the original. I had only some examples from YouTube and the original demonstration record, as well as JMJ records of course.

I have also only implemented the sound engine, not the whole instrument for two reasons: 1) There is already a complete commercial product emulation the RMI HS, and 2) I wanted to learn the Blocks/Racks framework and apply it to this instrument.

The instrument is monophonic, as the original, and uses 8x oversampling oscillators, courtesy of Silicon Hearts Blocks by Benjamin Poddig. I have also included a basic Noise Generator block to use it in conjunction with the instrument. Sadly, I cannot include the original schematics and owner’s manual, as they are not available for free.

I have also included some racks in the package. I may include more presets in the future. Please let me know if you find any bugs.

Please note: this is a digital beast. Because of the way the sound is calculated and generated, it suffers from aliasing. This is why it took me this long to release it. The aliasing is reduced with oversampling but not eliminated. Use the highest sample rate your computer can afford for better results. The original instrument was able to produce sounds well above the hearing range, which is why it was so unique.

Some history: in the early 70s there were ideas to use Walsh Functions to develop and implement a digital synthesizer engine. I believe this was done because it was a cheap way to implement circuits for digital oscillators that can produce arbitrary digital waveforms.
Allen Organ Co., to which RMI was a subsidiary, patented a sound generation engine using Walsh functions, which was implemented into the RMI Harmonic Synthesizer. This is evident in the HS design and schematics. In addition, the RMI HS and RMI Keyboard Computers I and II were very well ahead of their time so I considered RMI and Allen Organ as pioneers in this area. I don’t understand why they are not being mentioned more.

There are many other examples. Just do a search of “walsh functions synthesizer” and you will find most of the resources and documentation I have used as reference.

I should point the following documents, as the main references I have used to develop this block:
- Supplement S-008 to Electronotes Vol. 2 #16 December 1972. Part 4, Waveform Synthesis by Means of Walsh Functions.
- Experimental Electronic Music Devices Employing Walsh Functions by Bernard A. Hutchins, Jr. - JAES Volume 21 Issue 8 pp. 640-645; October 1973
- Application of a Real-Time Hadamard Transform Network to Sound Synthesis by Bernard A. Hutchins, Jr. - JAES Volume 23 Issue 7 pp. 558-562; September 1975.
- Walsh Functions: A Digital Fourier series, by Benjamin Jacoby, PhD.
- Walsh Function Tone Generator and System, Patent 3,878,749, Apr. 22, 1975, filed: Dec. 12, 1972 by Allen Organ Company.
- RMI Harmonic Synthesizer Owners and Service Manual.
- RMI Keyboard Computer KC-II Owners and Service Manual.

I would like to thank the following as well:
- Mark Glinsky’s Manual Manor from where I have acquired the RMI manuals and schematics.
- Benjamin Poddig, for his oversampling and oscillator’s sync core macros.
- Jiggery-Pokery Sound for their amazing emulations for Reason RE.
- HunterKiller from the KVR Audio forums and Zootook from the Reaktor community for their constant support and feedback over all these years.

Version History:
January 2022: Initial Release.

COMMENTS  (6)

Hannes Kessler
2 years ago
THX :*
Irina L
2 years ago
Hugo! Thank you so much!!!
re8et
2 years ago
Thanks Hugo! I made a three polyphonic 2.0 combinator in Reason 12 with your creation! It sounds awesome! https://forum.reasontalk.com/viewtopic.php?f=8&t=7528448&p=610873#p610873
Hugo Portillo
3 years ago
@Andreas Rohlfes, thank you for your comment. The Rademacher functions (fancy names for the 32", 16", 8", 2" and 1" square waves - A, B, C, D, E in the block) can be created using any kind of AA techniques. Unfortunately, they don't work directly to generate the Walsh functions using the XOR gates. I have tried many solutions to this issue before. I have also tried to pre calculate the Walsh functions on a table. They didn't work for me. That is why when I found the oversampling macros I felt like I would finally be able to finish this years long project. :) In any case, I will provide the x2 and x4 oversampling versions soon.
Andreas Rohlfes
3 years ago
Awesome!!. Just a question, if i understand it right you are using Walsh functions to synthesize your "Sines". Since this are kind of square waves have you considered the polyBLEP technique for Anti Aliasing instead of Oversampling? It shoud be straight forward for the directly generated ones but might be a bit more tricky to do this for the Walsh Functions created by the XOR gates. Maybe this would be more cpu friendly.
Thomas Alenfors
3 years ago
YES!!! thank you so much!!!
now