Hello Pharny,
Thanks for the status update.
I've had a look at way that the CODM compiler works, and if you have several
CODM-ODF.Rank objects that use the same set of physical sample files (i.e. for which
CODM-ODF.Rank.Samples_InstallationPackageID and
CODM-ODF.Rank.Samples_MainSampleFileFolder match) then it also assumes that all of those
CODM-ODF.Rank objects will either have
CODM-ODF.Rank.Samples_RankBasePitch64ftHarmNumIfAssumedTunedToConcertPitch specified or not, i.e. it assumes that you will either be reading the samples' pitches from the sample files or not for all ranks which use that same set of samples. It's done that way to avoid more objects being loaded into memory than needed.
It was never intended that anyone would sometimes want to use a given rank of sample files by reading the samples' stored pitches, and at other times not, all within the same CODM ODF, because if your specify
CODM-ODF.Rank.Samples_RankBasePitch64ftHarmNumIfAssumedTunedToConcertPitch then you are stating that the sample files are tuned perfectly to A-440/equal, in which case there would be no point/difference in using the pitches read from the files anyway (given that doing so should yield exactly the same results as assuming A-440/equal). I.e. you should specify that attribute or not, based solely on whether the samples are indeed turned to A-440/equal, as covered in the documentation for that attribute:
"Hauptwerk must know the exact pitch of each sample so that the required amount of re-pitching can be calculated to play the organ with any user-selected temperament. The sample set creator can either have detected the exact pitch of the samples and saved them into the sample files, or have re-tuned the samples perfectly to concert pitch (A=440 Hz) and equal temperament.
In the former case, this parameter should be set to zero (in which case Hauptwerk will read the sample pitches from the samples themselves). In the latter case (samples tuned to A-440/equal) then this value gives the pitch of the samples by specifying the harmonic number that they represent, relative to the fundamental of a 64' stop."
If you want to use the same rank of samples for multiple
CODM-ODF.Rank objects then you would either need to specify
CODM-ODF.Rank.Samples_RankBasePitch64ftHarmNumIfAssumedTunedToConcertPitch for all of those ('sample-sharing') ranks, or leave it blank for all of them.
Use
CODM-ODF.Rank.Pitch_RankBaseOutputPitch64ftHarmonicNum to perform any desired pitch-shifting instead.
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.