Screenshot of PiteƄ School of Music sampleset main console

As a professional organist I must voice my opinion that no virtual organ can compete with a good, well regulated tracker organ. To really develop a good touch one must play the real thing, otherwise it's hard to understand attack/release and to feel how the pallet is opened by the playing finger.

Nevertheless it's impractical for most persons to have a real organ at home and it's in such situations that a virtual organ can be very valuable. Not the least important reason is that, even if it's available at only a fraction of the cost of a real organ, it can sound very convincing indeed.

My hopes are that vpo's and my efforts with them will help more people enjoy the wonderful instrument that the Organ really is.


In the old days of GrandOrgue 0.2 the only way to tune the samples was to do it in an audio editor (like for instance Audacity) and possibly use an external tuner to check that the adjustments were correctly done. This permanently changed the samples to a certain degree and thus made them a bit less "original", though arguably sometimes more usable.

While it's still possible to do like that there's a much better way available with GrandOrgue 0.3+. The trick is to instead tell GrandOrgue about what pitch the sample is playing at. This can be done either in the sample (.wav file) itself or in the odf (organ description file - .organ). Even if the pitch is embedded in the sample one still need to tell GrandOrgue what harmonic the rank in which the sample is placed in should be adjusted to (this is done with the HarmonicNumber= lines in the odf). If that is done GrandOrgue can adjust the tuning according to the users wishes without compromising the authenticity of the samples even further.

I personally prefer to embedd the pitch with the .wav files. This saves some serious amount of lines in the odf! The pitch is described by using the dwMIDIUnityNote and dwMIDIPitchFraction in the smpl chunk of the wav file. Thus only the metadata of the .wav file will be changed while the audio data in itself can be left untouched. The dwMIDIUnityNote is the MIDI key that is closest in pitch to the sample and then the dwMIDIPitchFraction is used to adjust the sample up or down (usually described in cents - hundreds parts of a semitone - though the actual storage allows much finer resolution than only whole cents) to exactly describe the correct pitch the sample is originally playing at.

The process of embedding the pitch is very easy in LoopAuditioneer. I usually start with running the pitch detection as a batch process on the whole folder of attacks. Then I open up that folder in the main window and check the reported pitch information and assess if it's likely correct or not. The notes I'm doubtful about I open up individually and do the pitch detection again and compare the results of the FFT, HPS and time domain algorithms. Then I choose the one I think is most correct and save the file with the new pitch.

Sometimes the pitch is too difficult for LoopAuditioneer to detect reliably. In such cases I use another software called Praat. I open up the file in Praat and make it into a spectrum (analyze). Then I view the spectrum and zoom in on the peak that I believe represents the fundamental pitch of the sample. When I see the peak clearly I place the marker close and hit the keyboard combination Ctrl + K to move the cursor to the peak and read the frequency that represents that pitch.

Back in LoopAuditioneer I then open up the file and do the pitch detection once more but this time select the existing/manual radio button and enter the combination of MIDI key and pitch fraction that will describe the frequency reported by Praat.

When I'm satisfied with the embedded pitch I usually also test it in GrandOrgue to make sure that they really are ok. Then I once again return to LoopAuditioneer and use the batch process to copy the pitch of the attacks to the corresponding files for the additional releases (if they are present).

In the GrandOrgue odf the HarmonicNumber needs to be entered for the stop/rank and sometimes it's necessary to specify it on a per pipe level (for instance with mixtures that are breaking back - having repetitions). The harmonic number is calculated as 64 / foot size of the pipe at the lowest C (036). Thus for a 8' stop the HarmonicNumber=8 (64/8), for a 4' stop the HarmonicNumber=16 (64/4) and for a 2 2/3' Quinte the HarmonicNumber=24 (64/(8/3).

If you don't want to embedd the pitch information with the samples you can specify it in the odf on a per pipe level. Then for every pipe you must enter it's Pipe999MIDIKey= and Pipe999PitchFraction= that describe the pitch the sample is playing back at. The HarmonicNumber also must be specified like above. To make life a little easier it's possible to use the batch process for listing the pitches of a whole folder of samples and having the pitch lines written by LoopAuditioneer. Just some cutting away of the un-necessary lines then is needed. This route will make the odf quite a lot bigger though!

The pitch description so far all affects the different temperaments that the user can select but not the "Original" that represents how the sample really was recorded. Sometimes it's necessary to adjust the tuning of the original too in order to make it playable. Then one can supply the necessary information as Pipe999PitchTuning= to adjust the tuning properly. To assist a sampleset creator it's possible to use a batch process in LoopAuditioneer that from the embedded pitch in the samples will write out the pitch tuning lines that can adjust the sample to equal beating temperament at a1=440 Hz.