I am working on a project to make a synthesizer for RaspberryPi capable of playing Harmonium/Reed Organ using external MIDI keyboard. I am making it in Python 2.7 using Numpy. Till now I have completed first phase of my project which includes building UI and primary synthesis script, interfacing with keyboard and mapping notes with keys. In my second phase I am planning to move it to RaspberryPi from PC and improving sound quality.

For synthesizing Harmonium sound in first phase, I recorded Harmonium samples and did Fourier transform on it and extracted out dominant frequencies from it and then wrote synthesis function by adding sine waves of those frequencies. However the generated sound is okay for testing, but it is not at par with original Harmonium sound, which is inevitable for final version of the project. Thus I request to suggest me the techniques to generate Harmonium sound. Also is it possible to generate with Oscillators, Filters etc.. which is available in Helm Synthesizer? and if yes, then how to tune them so as to generate perfect Harmonium wave? Please help me as I am beginner in this field.


  • 2
    Welcome to Music.SE! Good question, but you will almost certainly get better answers at SoundDesign.SE. Commented Sep 28, 2017 at 19:17

2 Answers 2


Just producing the same frequencies will not give you the phase relations of the sound. This becomes much worse when you do "Fourier transform" (which is a theoretical analysis tool for which a fast algorithm exists given discretized conditions that are in practice never met): the actual phase relations and frequencies are then distributed over several "frequency bins" and result in phase patterns that are tricky to resynthesize.

Without dependable phase relations, you don't get more than "ambient sound" quality, and the frequency bins will determine how far off you land.

For somewhat amicable synthesis, you want to base your solution on the harmonium being driven by a primary oscillator (free-swinging reed) and resonant circuits. The resonant circuits can usually be modelled somewhat coarsely using LPC analysis, and the residue signals will be closer to the primary oscillator excitation than what you start with. You'll probably end up doing waveform replay for them and interpolate between various pressure-dependent waveforms (the organ with its single-pressure operation, assuming excellent wind distribution, is simpler to model here).

If this were trivial material and standard fare, the music industry would look different.

For your project, it might make sense to just forget about any attempt at synthesis and just reproduce sampled material with basic envelopes.


I have also been working on an electronic harmonium and, after experiments with synthesis I agree with user44435 that it makes sense to reproduce sampled material. I am using Javascript AudioContext. Each of my harmonium's 42 reed sounds are recorded as individual mp3 files and decoded and stored in a buffer using createBufferSource and decodeAudioData. The musical notes are then available for instant playing, singly or in combination. I have a long flexible drain pipe that I bought from Home Depot for $20 and will use it with a blower at a distance to provide steady air-pressure to the harmonium for sampling ten seconds of sound for each key.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.