• Welcome to the Pipe Organ Forum! This is a part of the open community Magle International Music Forums focused on pipe organs (also known as "church organs"), organists, organ music and related topics.

    This forum is intended to be a friendly place where technically advanced organists and beginners (or even non-organists) can feel comfortable having discussions and asking questions. We learn by reading and asking questions, and it is hoped that the beginners (or non-organists) will feel free to ask even the simplest questions, and that the more advanced organists will patiently answer these questions. On the other hand, we encourage complex, technical discussions of technique, music, organ-building, etc. The opinions and observations of a diverse group of people from around the world should prove to be interesting and stimulating to all of us.

    As pipe organ discussions can sometimes become lively, it should be pointed out that this is an open forum. Statements made here are the opinion of the poster, and not necessarily that of the forum itself, its administrator, or its moderators.

    In order to post a new topic - or reply to existing ones - you may join and become a member by clicking on Register New User. It's completely free and only requires a working email address (in order to confirm your registration - it will never be given away!). We strive to make this a friendly and informative forum for anyone interested in pipe organs and organ music.

    (Note: If you wish to link to and promote your own website please read this thread first.)

    Many kind regards
    smile.gif

    Frederik Magle
    Administrator

    Krummhorn
    Co-Administrator

HarmonicNumber in GO 03 (temperaments)

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Hi,

Temperaments in new GO can't work with any sample set.
First needed that the samples have inside them the relative pitch information and second one must add some (or many..) lines in the .organ file.

The basic line is : HarmonicNumber=
This line is added in the odf just before the samples per pipe description begins. This way will affect the whole rank.
This is easy for all kinda ranks except mixtures.
Here we need to add HarmonicNumber= to each wav file that has the mixture in question (the main, not the releases) and can be very tricky because almost every mixture is different (not that there are not some identical) and changes from oct to oct even half oct to half oct.

Here I describe how I'm doing this and have all GO temperaments working (provided that the samples have the pitch info written) :

HarmonicNumber=2 for 32' stop
HarmonicNumber=4 .....16'
HarmonicNumber=6 .... 12'
HarmonicNumber=8 ..... 8'
HarmonicNumber=16.... 4'
HarmonicNumber=24 ... 2' 2/3 or 3'
HarmonicNumber=32 ....2'
HarmonicNumber=40 ... 1' 3/5
HarmonicNumber=48 ....1' 1/2 or 1' 1/3
HarmonicNumber=64 ....1'
HarmonicNumber=96 ....2/3
HarmonicNumber=192 ..1/2

This is a basic way. Please correct any mistakes those of you doing it other way.

For Mixtures I can, for now, share two examples :

a Scherp IV which changes in half octave (F) and a simpler Cimbel II which is unchanged for the first 3 octaves.
HarmonicNumber= must be added JUST AFTER MAIN PIPE/WAV description (careful here)

Scherp IV :
Pipes 001 ~ 006 set HarmonicNumber=128
" 007 ~ 012 HarmonicNumber=96
" 013 ~ 018 HarmonicNumber=64
" 019 ~ 024 HarmonicNumber=48
" 025 ~ 030 HarmonicNumber=32
" 031 ~ 036 HarmonicNumber=24
" 037 ~ 049 HarmonicNumber=16

Cimbel II :
Pipes 001 ~ 036 set HarmonicNumber=48
" 037 ~ 041 HarmonicNumber=32
" 042 ~ 054 HarmonicNumber=24


Examining the way we did (odf) in Pitea set, which has many bright and complex mixtures, one can get many information on the matter.

Finally attached here is the odf Antonio (Larioant) shared some time back for the releases thread, in which I added the HarmonicNumber for every rank, so this shared odf/set can be used with all GO temperaments, especially for those who want an equal one, or a Couperin possibly? :)

Have fun !
Panos
 

Attachments

  • KrzeszowDemo_875_1.01.zip
    19.3 KB · Views: 21
Last edited:

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Thanks "e"
That's why I said "please correct my mistakes"

But, this post on GO's list is more generic. Is it possible to see it "in action" ie posting here an odf for a rank without pitch information inside the samples and which lines and where exactly must be added to the odf ??

I like this way of "in action".... that's why I'm posting these threads like this one and the other with the release functions, for the tremulant... :)
 

e9925248

New member
But, this post on GO's list is more generic. Is it possible to see it "in action" ie posting here an odf for a rank without pitch information inside the samples and which lines and where exactly must be added to the odf ??

There is no easy process for it.

A possible workflow would be:
1) Add for each pipe Pipe999PitchCorrection=0 statement.
2) Load the organ, make sure "ignore Pitch info" in the organ dialog is disabled, make sure, that all tuning is (re-)set to the default value in the organ dialog and select equal temperament.
3) Listen to each pipe, if it sounds more than one octave too low/high. For any such pipe, add a Pipe999HarmonicNumber=... statement [or even a HarmonicNumber at rank/stop level, if most of the pipes are affected] with the value of a stop size smaller/bigger than 8'. Reload and recheck, until all pipes are within an octave from equal temperament.
3) After that, you can use the organ dialog to determine the necssary tuning values for each pipe, until the organ sound in equal temperament.
4)The determined tunig values must be put into the corresponding Pipe999PitchCorrection statement.
5) If you reload the organ and reset the tuning values in the organ dialog to the default values, temperaments should work.

GO currently offers no way to override incorrect pitch values - you can just readjust them, until they sound correct.
 

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Indeed, this is not an easy process.....

I was thinking of Lars' Loop Auditioneer.... Explain :

Open each wav in LA un-check the loop, then re-check to activate saving and save. This way LA can "write" pitch info into the wav file.
Finnish all ranks this way (needs time....) and then loading the set in GO should work with temperaments, provided we type the relevant HarmonicNumber= in the odf as I try to describe in the opening thread post.

I think it should work and be kinda "easier" ..... or... not?
 

L.Palo

New member
Hi!

LoopAuditioneer can do many things but it cannot yet totally replace a pair of good ears and some common sense. However it's a very helpful tool if used properly.

Most important is to explore the batch processes. There are many possibilities there, not only to actually write the pitch data calculated in various ways but also explore what pitch is detected and what existant pitch info is already present.

Personally if I make a new sampleset I use the batch process for pitchdetection in time-domain for stops that are around/below 4' basis as a starting point. For 2' foot stops and higher as well as for most compound stops I use FFT method as a basis. After this batch process is run and pitch data written to the files (and correct HarmonicNumber put into the .odf) I load the set in GO and play and listen carefully to the stop played from bottom to top in single notes as well as in octaves. If I find any note that sounds wrong with a temperament (other than original) selected then I load the file manually in LoopAuditioneer and examine it with the pitch tool and select a better method (usually change from time-domain to FFT or vice versa, very rarely I set it manually if everything else fails).

As with live tuning I normally make the 4' principal of HV tuned first and check it with an external tuner, then I examine every new stop against the already tuned 4'... This does take some time but produce quite good results.

The pitch detection algorithms are not perfect though so it will certainly be possible to encounter audio files that will fool it! I've been thinking of expanding on the FFT detection so that it gives three sub-choices as opposed to the current one only. The FFT options would be "Harmonic structure match", "Strongest peak" and "First peak" (not softer than say -12 dB from strongest peak). But this is not yet done!

Testing and suggestions are very welcome to improve the tool!

Kind regards

Lars P
 

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Lars,
Thanks :)
Very informative post and a good one. Now we need to exercise on it !!

1st, proves that my confidence in LoppAuditioneer, wasn't fruitless ! (I love this "tool")
2nd LA can help in a high percentage to solve the issues in discussion here and with the method you describe.
3rd Expansion of the FFT detection becomes your next goal in LA LoL :-D
4th Even if I'm trusting my ears, I believe we need digital pitch detection functions and then auto-correction to willing pitch, to be as accurate as can be and with less time consumption as possible (dreaming...) :)

I thought of another way, kinda easier, using the tuning function of each sample in GO.
I explain - correct my mistakes :

Let's say we got a rank we know it is sampled in original tuning as Kirnberger II.
Then we know the minus (-) and plus (+) of each note of Kirnberger II from standard equal temperament.
So, we raise or lower the values accordingly to end up with an equal tuned rank.
For example if F is -3,2 we raise the value 3,2 and so on.
Also some differences (there always be) can be adjusted by ear being at all times with GO open and set loaded.
Can be done? I must try it anyway.....

best
Panos
 

e9925248

New member
Let's say we got a rank we know it is sampled in original tuning as Kirnberger II.
Then we know the minus (-) and plus (+) of each note of Kirnberger II from standard equal temperament.
So, we raise or lower the values accordingly to end up with an equal tuned rank.
For example if F is -3,2 we raise the value 3,2 and so on.
Also some differences (there always be) can be adjusted by ear being at all times with GO open and set loaded.
Can be done? I must try it anyway.....

Yes, if you know thedifferences in cent (GO support fraction values too, although up/down moves only in 1 cent steps). You can event put these values directly as PitchCorrection in the ODF (with the correct sign).
 

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
.........................You can event put these values directly as PitchCorrection in the ODF (with the correct sign).

YES !!!! You just said the "magic word" !!
If my references on world music temperaments are correct, then I'll do that : Pitch correction per pipe in the odf !!!!!!!!
THANKS !

And this leads me to ask our friend Antonio :
Can you add on your MMRPipe (extra helpful) program, the HarmonicNumber= , the Pipe999HarmonicNumber= and now the Pipe999PitchCorrection= in the row of your text for wav files ????? (please please !).

It will give no issues into odf having all stated, as if there is no value typed after = there's no effect.
Did you get my evolution of your fine Silesian organ odf exercise example ?
Does now work with all temperaments OK ?

@ all fans : Do you realize now that we got a super pipe organ simulator program ?? That options on creating the custom organ we dream of, are now almost limitless ???? Ok maybe I over-react, but I'm using it for more than 3 years now and the last 6 months there are "small" miracles done !! no?
 

e9925248

New member
It will give no issues into odf having all stated, as if there is no value typed after = there's no effect.
I consider this as undocumented behaviour of GO. GO lacks proper input checking - GO would even convert your name to a number.

=>

You should not use this effect in your ODF.
 
Last edited:

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Hmmmm, I'm listening to you loud and clear.

So, it can be as =0 then ? And if we need a change we add the desired number? Will it work this way ?

OR

Would MMRPipe ask user to type the desired number and if not willing, then will not add those lines??

My aim is that it would be great help if Antonio can add those stuff in his excellent "tool".......

Of course for sample sets creators it is part of the work to add those lines with specific settings and will invest their time on this anyway (got personal experience... hehehe), but I'm thinkin' would be nice for all involved with GO, if they want for example some personal changes to the set they use.
 

e9925248

New member
So, it can be as =0 then ? And if we need a change we add the desired number? Will it work this way ?

For pitch correct the default is 0, so =0 is the same, as if the setting is not present [except if the stop has a non zero pitch correction setting].

You can add anything as comment (first character on the line is semicolon) - this could be used to add non active templates.

The default for harmonic number is 8 [=> ODF spec in the GO help], so adding per stop or per pipe settings with this value is a nop. The only thing to note is, that any per pipe settings hides a per rank setting, so only add the entry for one of them.

I'm working on improving the ODF parsing in GO:

GO already includes codes, which should report case differences of the wav file names between the file name and the ODF - I have not found time to test this on a real Windows box.

I have already commited some changes to improve the error reporting. GO trunk eg. already rejects your name in the pitch correction setting :grin:. There still a lot to do, but the various ODFs with various errors delay the process.

Lets look eg. at the comments:
GO supported line comments (lines starting with semicolon). Some ODFs try to use a comment after a setting, eg from Pitea Positive:
Code:
StopNumber005=-005 ;Great - Ters 1'3/5
The whole thing just works, because the GO parser does not check for errors. The number conversion function fails at the first non digit character, skips error checking and continues with the already processed part. So the following would have the same effect:
Code:
StopNumber005=-005ASDdasdsadas
 

Larioant

New member
And this leads me to ask our friend Antonio :
Can you add on your MMRPipe (extra helpful) program, the HarmonicNumber= , the Pipe999HarmonicNumber= and now the Pipe999PitchCorrection= in the row of your text for wav files ????? (please please !).

I'm following the discussion, but I can not understand (as you know I do not understand the English language but only a few words) and Google translator does not help me, so for me it's hard to tell where the lines should be added to create a odf added temperament. All I want is a practical example, it fits the ODF KrzeszowDemo_875_1.01.organ you have changed?
 

Ghekorg7 (Ret)

Rear Admiral Appassionata (Ret)
Hi Antonio,

Yeah, look carefully in the evolved odf of your Kreszow_875_1.01 demo I uploaded above !!!
Add :

HarmonicNumber=

just before your Pipe-wav row starts.

For mixtures (cimbel, ripieno, carillion ect) must add HarmonicNumber= after each main (sustained) wav file.

Examining the new Krzeszow odf will reveal what I'm trying to explain... :)

THANK you again for your extra "tool" (you know I like it much!)

Best
Panos
 
Top