It is currently Sun Jan 16, 2022 1:13 pm


CODM drawn from 2 or more sample sets

Using the CODM to create your own organ definitions, exchange CODM organ definitions, ...
  • Author
  • Message
Offline

greenfox4075

Member

  • Posts: 5
  • Joined: Thu Nov 15, 2012 3:36 am

CODM drawn from 2 or more sample sets

PostWed Nov 10, 2021 5:34 am

I know I have a lot of learning to do, but I have not yet been able to find any apparent reference to creating a custom organ definition based on samples from two or more sample sets?

Is this possible?
What "format" do the samples need to be to be able to do this?
Is this a different level, creating a sample set, rather than a Custom Definition?
Is there a more relevant section of the Forum for this?

Sorry if they seem like silly questions.
I suppose we all have to start somewhere.

Thank you.

Regards,
Rick
Offline
User avatar

mdyde

Moderator

  • Posts: 13810
  • Joined: Fri Mar 14, 2003 1:19 pm
  • Location: UK

Re: CODM drawn from 2 or more sample sets

PostWed Nov 10, 2021 6:21 am

Hello Rick,

Yes -- within your Custom Organ Design Module organ definition file (CODM ODF) you can use ranks from more than one sample set. Basically:

- The relevant sample sets need to have licences that allow use with the CODM. I think all do, except for those from OrganArt Media (since OAM's sample sets are intended as historical documents).

- The CODM can load almost any samples that Hauptwerk itself can (whether encrypted or not), except for a few additional criteria, which are covered separately below. (Aside from OAM sample sets) as far as I know, almost all ranks of almost third-party sample sets are compatible with the CODM.

- To reference any given sample set's ranks in your CODM ODF, include its samples' package in the CODM-ODF.RequiredInstallationPackage table (see 'Design tools | View Custom Organ Design Module, installation package, ... format documentation' from the menu in Hauptwerk for that table's attributes).

- You then list the desired sample ranks in the Rank table in your CODM ODF, by way of CODM-ODF.Rank.Samples_InstallationPackageID and the other CODM-ODF.Rank.Samples_... attributes. (See the same document for the format of the Rank table.)

- In the installation package definition file (the XML file at the top level of the installation package folder), with luck you might find that the sample set producer has listed its ranks in the CustomOrganRank table. That table exists purely to provide information, as a template, so that you know what values would be appropriate for its ranks if specifying them in your CODM-ODF.Rank.Samples_... attributes. However, I think not many producers actually do list ranks there, so some experimenting might be needed to determine the appropriate values. (See the same document for the format of the CustomOrganRank table.)

For completeness, these are the requirements that a sample set's ranks of pipe samples (or tremulant waveform samples, if used) must meet in order to be usable in the CODM:

- All pipe sample files must have a names of the form 036-C.wav, 037-C#.wav, 038-D.wav, ... (or with .hbw filename extensions) according to the MIDI note number and name of the keyboard key from which they would normally sound when played at unison pitch (i.e. with no explicit re-pitching). For unified (theatre) organs, the name would normally be set according to the note to which the sample would be attached when played at 8' pitch.
- Sustaining pipe sample files must either have the start of the (primary) release samples identified within the main pipe sample file by a marker (recommended in most cases for simplicity), or the release samples must be stored in separate files with the same names as the main attack/sustain sample but located in a separate folder.
- All main attack/sustain pipe sample files for a given rank must be contained within the same folder in the relevant installation package folder; one folder should be used for the attack/sustain samples for each rank. If the primary releases are stored in separate samples, then they too must all be located in a single folder for the rank, and it must be within the same installation package as the attack/sustain samples for that rank.
- If additional (multiple) release samples are used, then each set must be located in a separate single folder for the rank, and it must be within the same installation package as the attack/sustain samples for that rank.
- All pipe samples must either have their exact pitches detected and stored in the sampler chunks within the sample files
(recommended), or be re-tuned perfectly to concert pitch and equal temperament. The pitch may not be specified 'manually' in the organ database for a sample.
- Tremulant waveform samples must have names of the form: 060--TremulantPitchAndFundamentalAmplitudeWaveform.wav and 060-C-TremulantThirdHarmonicAmplitudeWaveform.wav (or with .hbw filename extensions) according to the MIDI note number of the keyboard key for the pipe which would normally sound when played at unison pitch and to which they are to be assigned.
- Tremulant waveform samples for a given rank must all be located within a single folder (although a rank's tremulant waveform samples can be assigned to more than one pipe rank by the user).
- Tremulant waveform samples must have their exact pitches in Hertz saved in the sampler chunk in the samples, pre-multiplied by 128 (since it is not possible to store a pitch value of less than about 8 Hz in a WAV file).
- All tremulant waveform samples must have at least 10 ms before the start of their loop and the loop must be at least 10 ms in length.
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.
Offline

greenfox4075

Member

  • Posts: 5
  • Joined: Thu Nov 15, 2012 3:36 am

Re: CODM drawn from 2 or more sample sets

PostWed Nov 10, 2021 7:32 am

Thank you Martin

I will work through it and experiment.
Offline
User avatar

mdyde

Moderator

  • Posts: 13810
  • Joined: Fri Mar 14, 2003 1:19 pm
  • Location: UK

Re: CODM drawn from 2 or more sample sets

PostWed Nov 10, 2021 7:36 am

Thanks, Rick. Hope it helps.
Best regards, Martin.
Hauptwerk software designer/developer, Milan Digital Audio.
Offline
User avatar

ldeutsch

Member

  • Posts: 545
  • Joined: Tue Mar 04, 2008 12:02 pm
  • Location: Chatsworth, California, USA

Re: CODM drawn from 2 or more sample sets

PostThu Nov 11, 2021 10:57 pm

Rick,

Many of my own organ designs use the CODM to combine ranks from different sources - and I make all my CODM files available tot he public on my web site. Check out, for example, my Composite English Organ here

http://www.nightbloomingjazzmen.com/Les_Composite_3-Manual_English_Organ_HW5.html

You can download it's CODM file and see exactly how this sort of thing is done.

Les
Offline

rodjeffords

Member

  • Posts: 4
  • Joined: Mon Dec 20, 2021 10:12 pm

Re: CODM drawn from 2 or more sample sets

PostWed Dec 22, 2021 3:45 pm

Hi,

I am a novice to CODM, also looking to combine samples from two organs. I made a copy of example organ 3 and attempted to replace a swell rank from St. Anne’s with one from Redeemer Aeolian Skinner (Augustine). After trial and error, Hauptwerk seemed to be able to read the new CODM xml, but stalled loading the replacement rank. The error code is: “Could not load sample ID 002646 (near/II-03_Viole_de_Gambe8/036-c.wav) into pipe ID 009252 - the specified range marker does not exist in the file.” Message code (for diagnostic purposes) 4662.

Thanks for considering my situation,

Rod
Offline

larason2

Member

  • Posts: 429
  • Joined: Thu Feb 04, 2016 9:32 pm

Re: CODM drawn from 2 or more sample sets

PostWed Dec 22, 2021 6:16 pm

Hi Rod,

I’ve made a CODM organ from the Aeolian skinner, and can attest that the range information is indeed present in the files. Most likely you made a mistake coding the rank table. Can you post your code for that custom rank you made here? We should be able to tell you the error by looking at it.
Offline

rodjeffords

Member

  • Posts: 4
  • Joined: Mon Dec 20, 2021 10:12 pm

Re: CODM drawn from 2 or more sample sets

PostWed Dec 22, 2021 6:47 pm

Thanks for the reply! I will post later today. I’ve never coded anything. I left the code for the St. Anne’s rank in place, and edited the obvious data differences between the ranks. Certainly, I didn’t do enough. I thought of copying/pasting from the Aeolian Skinner Disposition file, but didn’t know exactly what to include. The CODM manual is very helpful, as are mdyde’s comments above. I’m fairly uninitiated to this, but so anxious to learn.

Thanks, again. I’ll post when back at the computer.
Offline

rodjeffords

Member

  • Posts: 4
  • Joined: Mon Dec 20, 2021 10:12 pm

Re: CODM drawn from 2 or more sample sets

PostWed Dec 22, 2021 8:31 pm

Here is the CODM xml file content for rank ID 18, where I attempted to replace a St Anne's rank with one from Aeolian Skinner. (Let me know if I need to make the file available in an alternate format.) Thanks!

<RankID>18</RankID>
<Name>17 Swell: Viola Di Gamba 8</Name>
<NumberOfPipes>61</NumberOfPipes>
<MIDINoteNumberOfFirstPipe>36</MIDINoteNumberOfFirstPipe>
<IsPercussive>N</IsPercussive>
<Samples_InstallationPackageID>002384</Samples_InstallationPackageID>
<Samples_MainSampleFileFolder>near/II-03_Viole_de_Gambe8</Samples_MainSampleFileFolder>
<Samples_RelSampleFileFolderIfRelSamplesStoredInSeparateFiles></Samples_RelSampleFileFolderIfRelSamplesStoredInSeparateFiles>
<Samples_ShortNoteReleaseSampleFileFolderIfAny>near/II-03_Viole_de_Gambe8/S</Samples_ShortNoteReleaseSampleFileFolderIfAny>
<Samples_MaxNoteTimeMsForShortNoteReleaseSamplesIfAny>200</Samples_MaxNoteTimeMsForShortNoteReleaseSamplesIfAny>
<Samples_MediumNoteReleaseSampleFileFolderIfAny>near/II-03_Viole_de_Gambe8/M</Samples_MediumNoteReleaseSampleFileFolderIfAny>
<Samples_MaxNoteTimeMsForMediumNoteReleaseSamplesIfAny>500</Samples_MaxNoteTimeMsForMediumNoteReleaseSamplesIfAny>
<Samples_MIDINoteNumIncrementFromPipesToSamples>0</Samples_MIDINoteNumIncrementFromPipesToSamples>
<Samples_RankBasePitch64ftHarmNumIfAssumedTunedToConcertPitch>0</Samples_RankBasePitch64ftHarmNumIfAssumedTunedToConcertPitch>
<Position_LayoutOfPipesOnWindchestCode>5</Position_LayoutOfPipesOnWindchestCode>
<Position_RankDistanceFromListenerMetres>5.5</Position_RankDistanceFromListenerMetres>
<WindSupply_DivisionCodeOfWindchest>3</WindSupply_DivisionCodeOfWindchest>
<WindSupply_MaxFlowRandomisationPct>5</WindSupply_MaxFlowRandomisationPct>
<Amp_PipeMIDINoteNum036_LevelAdjustDecibels>2.54</Amp_PipeMIDINoteNum036_LevelAdjustDecibels>
<Amp_PipeMIDINoteNum096_LevelAdjustDecibels>2.54</Amp_PipeMIDINoteNum096_LevelAdjustDecibels>
<Amp_PipeMIDINoteNum036_WindModelModDepthAdjustDecibels>-9</Amp_PipeMIDINoteNum036_WindModelModDepthAdjustDecibels>
<Amp_PipeMIDINoteNum096_WindModelModDepthAdjustDecibels>-8</Amp_PipeMIDINoteNum096_WindModelModDepthAdjustDecibels>
<Amp_PipeMIDINoteNum036_TremulantModDepthAdjustDecibels>0</Amp_PipeMIDINoteNum036_TremulantModDepthAdjustDecibels>
<Amp_PipeMIDINoteNum096_TremulantModDepthAdjustDecibels>0</Amp_PipeMIDINoteNum096_TremulantModDepthAdjustDecibels>
<Pitch_RankBaseOutputPitch64ftHarmonicNum>8</Pitch_RankBaseOutputPitch64ftHarmonicNum>
<Pitch_MaxRandomTuningErrorHz>0.25</Pitch_MaxRandomTuningErrorHz>
<Pitch_PipeMIDINoteNum036_TuningAdjustPercentSemitones>0</Pitch_PipeMIDINoteNum036_TuningAdjustPercentSemitones>
<Pitch_PipeMIDINoteNum096_TuningAdjustPercentSemitones>0</Pitch_PipeMIDINoteNum096_TuningAdjustPercentSemitones>
<Pitch_PipeMIDINoteNum036_WindModelModDepthAdjustPercent>60</Pitch_PipeMIDINoteNum036_WindModelModDepthAdjustPercent>
<Pitch_PipeMIDINoteNum096_WindModelModDepthAdjustPercent>70</Pitch_PipeMIDINoteNum096_WindModelModDepthAdjustPercent>
<Pitch_PipeMIDINoteNum036_TremulantModDepthAdjustPercent>100</Pitch_PipeMIDINoteNum036_TremulantModDepthAdjustPercent>
<Pitch_PipeMIDINoteNum096_TremulantModDepthAdjustPercent>100</Pitch_PipeMIDINoteNum096_TremulantModDepthAdjustPercent>
<HarmonicShaping_PipeMIDINoteNum036_3rdAndUpperHarmLvlAdjDb>0</HarmonicShaping_PipeMIDINoteNum036_3rdAndUpperHarmLvlAdjDb>
<HarmonicShaping_PipeMIDINoteNum096_3rdAndUpperHarmLvlAdjDb>0</HarmonicShaping_PipeMIDINoteNum096_3rdAndUpperHarmLvlAdjDb>
<HarmonicShaping_PipeMIDINoteNum036_WindModelModDepthAdjDb>-4</HarmonicShaping_PipeMIDINoteNum036_WindModelModDepthAdjDb>
<HarmonicShaping_PipeMIDINoteNum096_WindModelModDepthAdjDb>-4.5</HarmonicShaping_PipeMIDINoteNum096_WindModelModDepthAdjDb>
<HarmonicShaping_PipeMIDINoteNum036_TremulantModDepthAdjDb>0</HarmonicShaping_PipeMIDINoteNum036_TremulantModDepthAdjDb>
<HarmonicShaping_PipeMIDINoteNum096_TremulantModDepthAdjDb>0</HarmonicShaping_PipeMIDINoteNum096_TremulantModDepthAdjDb>
<Encl_EnclosureCode>220</Encl_EnclosureCode>
<Encl_FiltParamWhenClsdForPipeMIDINoteNum036_OverallAttnDb>5.854599813143</Encl_FiltParamWhenClsdForPipeMIDINoteNum036_OverallAttnDb>
<Encl_FiltParamWhenClsdForPipeMIDINoteNum036_MaxFreqHz>103.4105349504</Encl_FiltParamWhenClsdForPipeMIDINoteNum036_MaxFreqHz>
<Encl_FiltParamWhenClsdForPipeMIDINoteNum036_MinFreqHz>413.6421398014</Encl_FiltParamWhenClsdForPipeMIDINoteNum036_MinFreqHz>
<Encl_FiltParamWhenClsdForPipeMIDINoteNum036_ExtraAttnAtMinDb>10.9801811734</Encl_FiltParamWhenClsdForPipeMIDINoteNum036_ExtraAttnAtMinDb>
<Encl_FiltParamWhenOpenForPipeMIDINoteNum036_MaxFreqHz>96.85586938342</Encl_FiltParamWhenOpenForPipeMIDINoteNum036_MaxFreqHz>
<Encl_FiltParamWhenOpenForPipeMIDINoteNum036_MinFreqHz>581.1352163005</Encl_FiltParamWhenOpenForPipeMIDINoteNum036_MinFreqHz>
<Encl_FiltParamWhenClsdForPipeMIDINoteNum096_OverallAttnDb>-0.2741245767792</Encl_FiltParamWhenClsdForPipeMIDINoteNum096_OverallAttnDb>
<Encl_FiltParamWhenClsdForPipeMIDINoteNum096_MaxFreqHz>2201.485721871</Encl_FiltParamWhenClsdForPipeMIDINoteNum096_MaxFreqHz>
<Encl_FiltParamWhenClsdForPipeMIDINoteNum096_MinFreqHz>4002.701312492</Encl_FiltParamWhenClsdForPipeMIDINoteNum096_MinFreqHz>
<Encl_FiltParamWhenClsdForPipeMIDINoteNum096_ExtraAttnAtMinDb>12.23581733614</Encl_FiltParamWhenClsdForPipeMIDINoteNum096_ExtraAttnAtMinDb>
<Encl_FiltParamWhenOpenForPipeMIDINoteNum096_MaxFreqHz>1507.675152419</Encl_FiltParamWhenOpenForPipeMIDINoteNum096_MaxFreqHz>
<Encl_FiltParamWhenOpenForPipeMIDINoteNum096_MinFreqHz>4523.025457257</Encl_FiltParamWhenOpenForPipeMIDINoteNum096_MinFreqHz>
<Encl_MIDINoteNumOfFirstEnclosedPipeIfWholeRankNotEnclosed>0</Encl_MIDINoteNumOfFirstEnclosedPipeIfWholeRankNotEnclosed>
<Encl_MIDINoteNumOfLastEnclosedPipeIfWholeRankNotEnclosed>0</Encl_MIDINoteNumOfLastEnclosedPipeIfWholeRankNotEnclosed>
<Trem_TremulantCode>1720</Trem_TremulantCode>
<Trem_SampleInstallationPackageID>1</Trem_SampleInstallationPackageID>
<Trem_WaveformSampleFileFolder>StAnnesMoseley-Tremulant-ViolaDiGamba8</Trem_WaveformSampleFileFolder>
<Trem_MIDINoteNumIncrementFromPipesToTremSamples>0</Trem_MIDINoteNumIncrementFromPipesToTremSamples>
<Trem_MaxDepthRandomisationPct>10</Trem_MaxDepthRandomisationPct>
<Trem_MIDINoteNumOfFirstTremmedPipeIfWholeRankNotTremmed>0</Trem_MIDINoteNumOfFirstTremmedPipeIfWholeRankNotTremmed>
<Trem_MIDINoteNumOfLastTremmedPipeIfWholeRankNotTremmed>0</Trem_MIDINoteNumOfLastTremmedPipeIfWholeRankNotTremmed>
<ReverbTailTruncation_ModeCode>1</ReverbTailTruncation_ModeCode>
<ReverbTailTruncation_DecayLengthAsMsForMiddleCOn8FtStop>0</ReverbTailTruncation_DecayLengthAsMsForMiddleCOn8FtStop>
</rank>
Offline

larason2

Member

  • Posts: 429
  • Joined: Thu Feb 04, 2016 9:32 pm

Re: CODM drawn from 2 or more sample sets

PostWed Dec 22, 2021 11:11 pm

Thanks,

For this entry:

<Samples_RelSampleFileFolderIfRelSamplesStoredInSeparateFiles>

Should have the "L" folder specified, otherwise when you hold a key longer than 500 ms, you will get a clipping, which may be why it's giving you the message it is. The loop end marker isn't present in the file. For sample sets that have the complete loop in the main file including the cutoff, this has to be left blank. But if they have the cut off in a sub folder, you need to specify that folder, otherwise you'll get the error message you did.

Also, don't forget to add the entry for the 002384 installation package in the "<requiredinstallationpackage>" table. Otherwise you'll get another error when compiling. The information to fill out that part of the table is in the XML file in the root of the installation package.

You're making good progress, keep at it!
Offline

rodjeffords

Member

  • Posts: 4
  • Joined: Mon Dec 20, 2021 10:12 pm

Re: CODM drawn from 2 or more sample sets

PostThu Dec 23, 2021 8:54 am

Thanks so much!

Return to Custom Organ Design Module (CODM)

Who is online

Users browsing this forum: No registered users and 1 guest