Professional Documents
Culture Documents
4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 1 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Part 1: Overview
What it is and what it’s for
Very briefly, the Custom Organ Design Module exists primarily to allow end-users and amateur/hobbyist/semi-professional sample set producers quickly and easily to create high-quality organ definitions that can be loaded into Hauptwerk for personal use or
for distribution as part of sample sets, and that can take good advantage of Hauptwerk’s features and give excellent results.
The next three sections give some background and explain why this is useful.
1. Audio samples, usually one or more for each pipe on the organ, plus action noises, effects, etc.
2. Special tremulant waveform samples, usually provided at regular intervals for each pipe rank affected by a tremulant, describing how the pitch, amplitude and harmonic content of the pipe(s) vary with time when the tremulant is active.
3. Images used to display the virtual console and other aspects of the organ and to allow the user to interact with it with a computer screen, such as a touch-screen, or the mouse.
4. The organ definition file.
5. An HTML or PDF file and any associated components, used to display information about the instrument and documentation relevant to it.
The creation of a large professional-quality sample set often involves many months of work, mostly in the preparation of the pipe samples, but a very significant amount still being required for the remaining parts.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 2 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 3 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 4 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Licensing
The Custom Organ Design Module is included within the Hauptwerk license in all editions of Hauptwerk. No separate license is required for its use. However, it is only possible to take full advantage of some organ features that can optionally be modeled with
the Custom Organ Design Module using the Advanced Edition, such as an organ wind supply model or virtual consoles designed for multiple touchscreen use.
Support
Although it is quick and simple to create simple custom organ definitions, it also allows quite complex and sophisticated organ definitions to be created. The design goal has been to keep the format as small and simple as possible, but inevitably some
familiarization is required, and there is a certain amount of additional complexity if you wish to take advantage of more advanced features. Hence we would generally advise novice computer users to start with simple custom organ definitions and examples
first.
Important note: because of the sophistication possible, and because of the 'DIY' nature of creating or editing organs to taste, it needs to be emphasized that we are sorry that we cannot provide personal tuition, or assistance in creating/editing custom
organ definitions, to end-users. This user guide and an extensive set of examples are provided to help. We will usually only be able to provide a small amount of support beyond that. However, you can of course exchange help and advice with other users
via our website forum.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 5 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
• Use Design tools | Load custom ... organ to select the entry named ExampleCustomOrgan2 and click OK.
• The Load Organ Design Options window will appear. Leave all the settings at their defaults and click OK.
• The Custom Organ Design Module will now compile the custom organ definition to a full native organ definition file and load it as normal, presenting you with the Rank Audio/Memory Options and Routing screen as usual the first time that you load an
organ. Click OK (or disable some ranks first if you have less than 1 GB of memory).
• Once the organ has loaded, try using and playing it as normal. This should give you an idea of what can be achieved using the module, and is a relatively complex organ intended to serve as an example for various complex features such as Pizzicato
couplers and a Thunder piston, and also showing a custom graphical console using some of the control images from the standard library supplied with Hauptwerk.
• When you have finished playing the organ, select Organ | Load organ ... from the menu. You will see that an entry named ExampleCustomOrgan2 now exists. This is the compiled full native organ definition that the Custom Organ Design Module
generated from the custom organ definition when you loaded it via the Design tools menu. If you wish you can now load that organ using the functions on the Organ menu as you would with any other organ. However, if you subsequently made any
changes to the custom organ definition then they wouldn’t have any effect until you re-loaded the custom organ definition using Design tools | Load custom organ … again, since only by doing that will the Custom Organ Design Module be invoked to
regenerate the native organ definition.
• Now use Design tools | Load custom organ ... to select and load the ExampleCustomOrgan1 entry, clicking OK on the following options screens as before.
• When the organ has loaded try it out and look at the various display page tabs. This organ is a very simple example that just uses the standard virtual console display that the Custom Organ Design Module generates automatically by default.
Creating such an organ with a standard display is very quick indeed (probably considerably less than an hour) once you have mastered the custom organ definition format.
• Now use Finder (if you're using Mac OS X) or File Explorer / Windows Explorer (if you're using a Windows PC) to navigate to the CustomOrganDefinitions folder inside the HauptwerkUserData folder. If you performed a default Hauptwerk installation,
that folder will be found inside /Hauptwerk (Mac OS X) or C:\Hauptwerk (Windows).
• Open the file named ExampleCustomOrgan1.CustomOrgan_Hauptwerk_xml inside a text editor, such as Mac OS X’s /Applications/Utilities/TextEdit or Windows’ Notepad. This is the custom organ definition for the organ that you just loaded. Browse
around the file and compare its sections (‘tables’) objects (‘records’) and individual settings (‘fields’, ‘attributes’ or ‘parameters’; used interchangeably as terms) with the reference documentation at the end of this guide.
• If you want to try changing it, you need to make a copy of the file, rename the copy, open that copy in your text editor, and change the UniqueOrganID setting near the top of the file to a new unique value above 800010 (so that it doesn’t match any
of the example organs). You must always make sure that the organ ID is unique, otherwise settings, voicing and combination files from one organ will overwrite those of another.
• You can then try making changes to your copy and loading it using Design tools | Load custom organ ... to see what happens.
Now that you have a basic understanding of operating the module, try making some custom organs yourself, referring to the rest of this guide for more details, and also to the other example files.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 6 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
• ExampleCustomOrgan1: This is a very simple custom organ that demonstrates how easy it is to create a functional organ quickly. It uses the default standard generated virtual console display, rather than a custom graphical virtual console, which
makes it very quick to create and edit, with minimal settings to change. It has no action noises and uses stop, coupler and enclosure behavior which is determined by the stop, coupler and enclosure codes. Such behavior is sufficient for the vast
majority of classical organs.
• ExampleCustomOrgan2: This is intended to demonstrate as many functional complexities as possible. A custom graphical console is used (see below), but with only one display page tab and screen layout. The organ also has key action noise,
stop action noise and blower noise. A multi-rank stop is included (the Sesquialtera) as well as various borrowed/unified ranks. An array of standard divisions and couplers and non-standard divisions are demonstrated, as well as complex custom
couplers (Swell Reeds to Choir) and couplers with special actions (Great to Choir Pizzicato coupler). Reversible pistons are demonstrated, as are complex effects pistons (Thunder). Internal couplers that copy their states from others are also
included for the Swell division to allow the Swell Reeds to Choir to be implemented whilst the Swell keyboard can play both its reed stops and other stops, even though they are attached to different divisions internally. Most of these features you will
probably never need to use. However, this example organ definition does serve one other very important function: the CustomDisplayControlStyle and CustomDisplayKeyboardStyle sections/tables contain a ready-made master library of display
styles that you can copy and paste into your own custom organ definitions.
• ExampleCustomOrgan3-StAnnes-Simplified: This is the St. Anne’s organ recreated in the Custom Organ Design Module in the simplest possible way. There are no custom graphical displays, no noises and no additional pistons or other gadgetry.
You would normally start by creating and fine-tuning an organ definition in this way before complicating it with graphics or other ‘frills’.
• ExampleCustomOrgan4-StAnnes-WithBasicGUIConsole: Beginning the process of building up a fully-fledged organ for inclusion in a sample set, this adds a single custom graphical console display page and reversible pistons to example 3.
• ExampleCustomOrgan5-StAnnes-WithBasicGUIAndNoises: Building on example 4, this adds key action noise, stop action noise, tremulant action noise (two types) and blower noises.
• ExampleCustomOrgan6-StAnnes-WithAllFrills: Finally, this adds additional graphical console display pages to example 4, making it suitable for use on dual-touchscreen computers, whilst also retaining the overview console display page for those
that want to use it on single-monitor systems, or who don't have the Advanced Edition of Hauptwerk (only the Advanced Edition supports multiple monitors). It also includes an alternate screen layout for the left and right stop jamb display pages,
thus natively supporting both landscape and portrait orientations for touch-screen monitors (Hauptwerk selects the most appropriate one automatically, depending on the size of the window/monitor).
Important note 1: please do not edit any of these example files directly, since you might want to refer to them later, and they will be overwritten next time that you run Hauptwerk’s installer. Instead, make a copy of them, rename them and change the
unique organ IDs in the copies, as described in the last section. Then make any edits you wish in those copies.
Important note 2: example custom organ 2 contains a ready-made master style library, ready for you to copy and paste into your own custom organ definitions if you want to use the library of graphical control and keyboard images supplied with
Hauptwerk.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 7 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
An overview of the objects in a custom organ definition and characteristics of organs created with the Custom Organ Design Module
Since the intention of the module is to make it as quick and easy as possible to configure functional organs, some aspects of the compiled organ definition are fixed, or calculated automatically according to fixed rules.
The organ overall has a ‘master combination capture’ (setter) switch, a general cancel piston and set of 20 native general combinations. All combinations pistons allow capture.
Any or all of seven standard fixed divisions may be included for general use (six manuals and a pedalboard), and an enclosure (swell box) can optionally be assigned to each. A fixed set of choices exist for the available enclosures; at most one per division,
and optionally also a general swell. Each division has its own keyboard, divisional cancel piston, set of 20 divisional combinations and key actions. Stops, couplers and tremulants can be assigned to any of these divisions and are stored and recalled within
the divisional combinations for the division to which they are assigned.
For each standard division, a parallel-rise weighted wind reservoir, wind-chest, regulator valves and indicators can optionally be created. Almost all of the wind model is calculated and generated automatically, with just a very small number of the most
important parameters being provided to adjust its behavior, and an option to disable it. Any standard division may be used as a source of wind for ranks.
Additional (non-standard) divisions are allowed (up to sixteen in total, including the seven standard divisions), but they would normally only be used for implementing special couplers, such as ‘Choir Reeds to Great’, where an additional division would need to
be used for the Choir reeds so that could sound from the Choir or the Great keyboards. These additional divisions do not have their own divisional combinations or wind-chest. Any stops, couplers and tremulants attached to them must also be associated
with one of the seven standard divisions to define in which divisional combinations they should be stored and recalled. In the preceding example, stops attached to the special ‘Choir reeds’ division should be associated with the ‘Choir’ division for
combinations, so that the main Choir division’s divisional combinations store and recall their states.
A coupler is normally specified by selecting it from a fixed range of choices, determined by its ‘coupler code’, which defines which divisions it links and at what pitch. Those standard codes only allow coupling to/from the seven standard divisions. However, a
range of ‘custom coupler’ codes exists to allow for complex coupling, such as pizzicato, or coupling at mutation pitches. The coupler code always defines the division in whose divisional combinations its state will be stored/recalled, which can only be one of
the standard seven divisions. To couple to/from other divisions, the source and destination divisions can optionally be overridden to any division, including the remaining non-standard divisions.
Tremulants similarly may be selected from a fixed range of choices. As with couplers, the ‘tremulant code’ defines the division with which it is associated for divisional combination purposes, but has no other effect, since any rank can optionally be associated
with any tremulant, regardless of the tremulant’s division.
Pipe samples may be used from any sample set (if the license of the sample set permits it) to form a rank, and tremulant waveform samples from any sample set may be applied to it (also subject to sample set license). One or more ranks, or parts thereof,
can be assigned to each stop, allowing unification/borrowing between stops and divisions. There is a many-to-many relationship between ranks and stops, so a stop can cause several ranks to sound at once and/or several parts of ranks and/or a rank may be
used by several stops (unification).
The Rank table is by far the most complex in the custom organ definition database, and defines how all of the pipework should be generated - the samples to use, their original pitch, the pitch at which they should sound (when played from a unison-pitch
stop), voicing, modulation by the wind model and tremulants (pitch, amplitude and harmonic content), the acoustical effects of any enclosure, which tremulant waveform samples should be applied (if any), and so on. Although the table requires a reasonable
amount of configuration, all such complexity is concentrated in a single record for each rank - there is no need to specify values for each pipe - and the options are very much simplified over the full organ definition database, whilst still allowing a great deal of
flexibility where it is most needed.
As with couplers, the 'stop code' of a stop defines the division in whose divisional combinations its state is stored/recalled, which can only be one of the seven standard divisions. Its source division (the division to whose key action it will be attached) is also
determined by default from that code. However, to allow use of the non-standard divisions it is possible to override the source division, as with couplers.
Various additional options exist for stops, couplers and tremulants to allow special/unusual behavior. For example, they can optionally be non-displayed, non-latching (momentary, e.g. a theatre organ ‘toy counter’ effect), default to engaged (e.g. a blower
‘stop’), not directly accessible to the user via MIDI, and need not appear in divisional or general combinations. Any stop, coupler or tremulant may also be set to track the state of any other. This is useful for ‘internal’ objects that are used to implement
complex cases, usually in combination with making the object non-accessible via MIDI, non-displayed and not appearing in combinations. As an example, a visible and accessible coupler could actually trigger two couplers internally to connect a source
division to two destination divisions to allow for a ‘Swell Reeds to Choir’ coupler. In that case a ‘Swell Octave’ coupler would need to play both the Swell division and the Swell Reeds division from the Swell keys, requiring two couplers.
The ‘example custom organ 2' example demonstrates most of these complex cases for reference, whilst the ‘example custom organ 1' example demonstrates simple standard cases. For most classical organs these types of special behavior would not be
needed.
Reversible and other ‘short-cut’ pistons may also be defined to allow a (reversible) piston to toggle the state of stop, coupler or tremulant or to allow the piston to turn on the target whilst held in. Theatre organ ‘toy counter’ effects could also be implemented
in that way.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 8 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
• It identifies the object uniquely. No two objects of a given type can have the same code. When you need to refer to the object from a different type of object, you then just need to specify its code. For example the TremulantCode attribute of the
ShortcutPiston table refers to the Tremulant table, so to tell the Custom Organ Design Module that the piston should trigger a particular tremulant you need to set that piston’s TremulantCode value to match the corresponding value from the
Tremulant table for the tremulant you want it to trigger.
• It defines its primary ‘role’, which Hauptwerk uses to help choose appropriate actions when a user right-clicks on it on the virtual console. For example if an Enclosure object has the code 220 then that tells the Custom Organ Design Module that it is
the swell box for the Swell division.
• For some types of objects, such as Stop and Coupler objects, it determines the division(s) to which it will be connected functionally (although it is possible to override the division(s) for special cases).
• For Stop, Coupler and Tremulant objects it also determines the division in whose divisional combinations its state will be stored and recalled.
Most tables also have a Name attribute. The value you specify for the name never has any affect on the functioning or structure of the organ. It is primarily there to help you, as the designer of the custom organ, be able to identify the object in user-friendly
way. The Name setting is also usually displayed to the user via the settings screens on the Organ settings menu in Hauptwerk, the contents of which are sorted alphabetically by the object names. Thus you should make sure you use names that will be
meaningful to the user of the organ.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 9 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 10 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 11 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Couplers
An entry in the Coupler table defines a key action between two divisions, which will be conditional upon the state of the coupler switch.
Most couplers found on a classical organ can be created simply by including an entry in the Coupler table with its coupler code set to the appropriate value. The coupler code defines the source and destination divisions, the coupling pitch, and the division in
whose divisional combinations its state will be stored/recalled.
However, for special case, if you want the source division to be other than one of the standard seven divisions, then you must set the OverrideSourceDivisionToSpecifiedDivisionCode field. The division for combinations is always determined by the coupler
code, and is not overridden by that setting. You may also override the destination division and couple the destination division’s key action (the default) or keyboard.
Also if you want to couple at a mutation pitch or create a coupler with a special type of action, such as pizzicato, reiterating or theatre organ trap, then you should use one of the ‘custom coupler’ values for the coupler code. The CustomCoupler_... fields may
then be used to define the coupling pitch and coupling actions.
Note that a standard unison key action is also generated by default for each division unless a unison-off coupler is specified for that division.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 12 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 13 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 14 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 15 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
The image on the following page shows an example of the frequency response that would be obtained if the maximum frequency was set to 2 kHz, the minimum to 4 kHz and the extra attenuation at the minimum to 10 decibels.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 16 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 17 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
• Pitch_RankBaseOutputPitch64ftHarmonicNum to 8,
• MIDINoteNumberOfFirstPipe to 60,
• NumberOfPipes to 1
Because the sample and output pitches match no pitch-shifting would occur in that case.
Once the appropriate entry exists in the Rank table, you can attach it to any stop, coupler or tremulant using the following attributes on their tables:
• PercussiveEngagingSoundEffect_RankID
• PercussiveEngagingSoundEffect_MIDINoteNumber
• PercussiveDisengagingSoundEffect_RankID
• PercussiveDisengagingSoundEffect_MIDINoteNumber
• SustainingSoundEffect_RankID
• SustainingSoundEffect_MIDINoteNumber
For a blower, you would normally want to create a Stop entry for it so that its switch is accessible to the user and use the stop’s SustainingSoundEffect_... attributes to attach the virtual ‘pipe’ (note number 60 in this example) to that stop. The sample will
then sound as long as the stop is turned on. The stop could be made to default to the engaged state.
Theatre organ ‘toy counter’ effects can be implemented in the same way. By setting the Stop’s SwitchIsLatching setting to N, the stop will behave as a momentary button (piston), only staying on whilst it is held in by the user.
A tremulant ‘chuffing’ noise could be implemented similarly, this time just using the SustainingSoundEffect_... attributes for the Tremulant object so that it runs whilst the tremulant switch is on.
For ‘clunks’ as stops, couplers and tremulants engage, use the PercussiveEngagingSoundEffect_... attributes, and the PercussiveDisengagingSoundEffect_... attributes for sounds that should be triggered when they disengage.
If you have more than one noise/sound affect, e.g. a collection of stop action ‘clunks’ all listed as different notes in the same Rank entry, and want to attach a random ‘clunk’ to each stop, coupler and tremulant, simply set the relevant
...SoundEffect_MIDINoteNumber to 0. If the setting is 0, Hauptwerk will choose a random ‘pipe’ (noise sample) from the rank.
Key action noise is implemented by listing one or more sets of key action ‘clunks’ as ranks in the Rank table. If you had separate ‘key-on’ clunks and separate ‘key-off’ clunks, then you would need two ranks; one for each. Then use the following attributes
on the Division table to attach them to the division’s keys:
• PercussiveEngagingKeyActionNoise_RankID
• PercussiveEngagingKeyActionNoise_ChooseMIDINoteNumRandomly
• PercussiveDisengagingKeyActionNoise_RankID
• PercussiveDisengagingKeyActionNoise_ChooseMIDINoteNumRandomly
• SustainingKeyActionNoise_RankID
• SustainingKeyActionNoise_ChooseMIDINoteNumberRandomly
If a ..._ChooseMIDINoteNumberRandomly setting is set to Y then each key will be attached to a random ‘pipe’ (noise sample) from the rank, otherwise the key’s MIDI note number will determine the ‘pipe’ to which it is attached.
For some examples of all of these things, see the ExampleCustomOrgan5-StAnnes-WithBasicGUIAndNoises example custom organ definition file.
You can alternatively implement any of these types or noise, or more complex cases, by creating additional entries in the StopRank table with the appropriate action types. However, the above settings are intended to make it as easy as possible to handle
common requirements, avoiding the need for an inelegant number of entries in the StopRank table.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 18 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 19 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 20 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
• 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-C-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.
• Although not mandatory, it is recommended that an additional release sample marker is included in the release sample (region) for any ambient ('wet') samples at the point at which the sound starts to decay. This allows Hauptwerk's automatic
reverberation tail truncation functionality to work optimally, allowing ambient samples to be played either 'wet' or 'dry' and combined with ranks from different organs, or played at non-unison pitches with the release samples being adjusted
automatically to an appropriate length for the playback pitch.
These requirements are made so that the user of the custom organ design module does not need to specify filenames and parameters for every pipe or sample.
Determining the sample settings for pipe and tremulant waveform samples for the Rank table
If you are using samples from a third-party sample set in your custom organ definition, you can usually find the values you need for the Samples_... and most of the Trem_... settings on the Rank table by looking in the installation package definition file at
the contents of the CustomOrganRank and CustomOrganTremulantWaveform set tables respectively.
For example, to see the settings you would need to use in the Rank table if you wanted to use some samples from the St. Anne’s, Moseley sample set, open the PackageID000010.InstallationPackageDefinition_Hauptwerk_xml file from the 000010 folder in
the OrganInstallationPackages folder in the HauptwerkSampleSetsAndComponents folder using a text or XML editor.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 21 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Wet and dry samples and the reverb tail truncation functionality
In general, pipe samples recorded from different organs can only be combined effectively if they were recorded 'dry' (without room ambience or reverberation), since the differences in room acoustics would otherwise be obvious when they were played
together.
However, Hauptwerk also includes a feature whereby release samples containing room ambience can automatically be trimmed and shaped to model the decay of pipes recorded 'dry' (without room ambience). Parameters can be set for each rank in the
custom organ definition database controlling its operation and the user is able to override those parameters when adjusting the voicing of a layer. Thus the user is able to select to load all or part of an organ with its full release samples or with those samples
truncated to model dry recordings.
A shaped fade-out is used, of a length determined by the layer or voicing parameters, and adjusted automatically for the pipe frequency (since it takes longer for a speaking bass pipe to fall silent than a treble pipe). The fade is designed so that, as far as
possible, the initial transients of the release are preserved, whilst the decay is truncated to model the shape of the natural decay of a pipe recorded dry for the appropriate pitch.
This makes it feasible to combine semi-dry ranks from various sample sets fairly effectively, significantly reducing the effects of any differences in acoustics which would otherwise render their combination impossible. Within the Custom Organ Design Module,
it is also possible to assign ranks to be played at pitches other than that at which the samples were recorded without the release samples becoming unnaturally long or short.
Of course simply shaping the releases does not provide a perfect model of real dry recordings, especially since the room acoustics affect the frequency response of the samples themselves, and the shapes of their attacks.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 22 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 23 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 24 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
<tag>data</tag>
Here tag is the name of the tag, and data is a set of data enclosed by the tags. A tag may also have attributes. In the following example ObjectList is the tag, ObjectType is an attribute of the ObjectList tag, CustomDisplayPage is its value, and the ellipsis
shows the location of the data set enclosed by the ObjectList tag:
<ObjectList ObjectType="CustomDisplayPage">...</ObjectList>
The following example shows how tags are nested within other tags, with the attributes (table fields) belonging to the object (table row) that encloses them, and the object (table row) belonging to the object list (table) that encloses them:
<ObjectList ObjectType="customdisplaypage">
<customdisplaypage>
<DisplayPageID>1</DisplayPageID>
<Name>Console</Name>
<BackgroundImageFilename>HauptwerkStandardImages/SeamlessBackgrounds-WoodPanelling-DarkCherry.png</BackgroundImageFilename>
<BackgroundImageFileInstallationPackageID>1</BackgroundImageFileInstallationPackageID>
</customdisplaypage>
<customdisplaypage>
<DisplayPageID>2</DisplayPageID>
<Name>Left Jamb</Name>
<BackgroundImageFilename>HauptwerkStandardImages/SeamlessBackgrounds-WoodPanelling-DarkCherry.png</BackgroundImageFilename>
<BackgroundImageFileInstallationPackageID>1</BackgroundImageFileInstallationPackageID>
</customdisplaypage>
<customdisplaypage>
<DisplayPageID>3</DisplayPageID>
<Name>Right Jamb</Name>
<BackgroundImageFilename>HauptwerkStandardImages/SeamlessBackgrounds-WoodPanelling-DarkCherry.png</BackgroundImageFilename>
<BackgroundImageFileInstallationPackageID>1</BackgroundImageFileInstallationPackageID>
</customdisplaypage>
</ObjectList>
The custom organ definition file must have the following opening tags immediately at the start of the file:
</Hauptwerk>
All of the data lying between are organized into object lists, objects and object attributes as illustrated in the example above. These object lists, objects and object attributes are generally referred to as tables, table rows and table fields in the remainder of
this document, since they can be thought of as being a representation of two-dimensional tables of data. The structure of each table is described later in this guide.
Note that, for attributes which are not mandatory, the absence of a value should be denoted using the following format:
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 25 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
<ObjectList ObjectType="division">
<division>
...
<WindModel_WindchestPressureDropPctAtMaxLoad></WindModel_WindchestPressureDropPctAtMaxLoad>
...
</division>
</ObjectList>
Indentation and other 'white space' is ignored in the file unless it is within a quoted attribute value or field value. Certain 'special' characters, which are used to define the structure of an XML file must be represented by 'escape' sequences when they are
used in data or attribute names in XML, as in HTML:
Other characters can be embedded as normal, provided they are encoded correctly within the specified XML character set (for example UTF-8).
As an example, the field value 'GT & PED PISTONS COUPLED' would be represented as follows:
The recommended character encoding (the actual byte values used to store each character) in the file is UTF-8, a 'universal' character encoding which can represent almost all characters from around the world. In general, this is only relevant if any
characters other than the standard American (ANSI) characters are used; characters with umlauts, for example. The UltraEdit text edit allows the encoding of a text file to set to UTF-8, so that any characters can be used safely. However, Windows' Notepad
is less easy to work with for UTF-8 text files.
Note that dedicated XML editors, such as the freeware XML Marker, can be used to handle character encodings, escape sequences and tags etc. natively. The single biggest benefit of XML as a format is that it is a widely-accepted standard, and there are
many existing third-party tools that can read, write and manipulate it.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 26 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 27 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 28 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
The Key column in the tables below indicate whether the value must be unique (PK for primary key or UK for unique key). The References column indicates whether a the value must specify another existing object, and which table and attribute it refers to for
that object if so. The New column indicates whether the attribute was added for a Hauptwerk version after 2.0.0, and which version number if so. For string and filename attributes, the Range column in the tables below give the maximum length in
characters.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 29 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: RequiredInstallationPackage
The RequiredInstallationPackage table lists all installation packages from which audio or tremulant samples (used for ranks), image files (used for custom display control or keyboard styles) or HTML/PDF files (used for the ‘organ information’ function) will be
referenced. It is used to ensure that the user has the necessary packages installed, and that they are at appropriate versions. Packages should not be listed unless they are actually required, since they would then add unnecessarily to the prerequisites for a
user and very slightly increase organ loading time.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 30 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: CustomDisplayPage
The CustomDisplayPage table is needed if and only if you wish to create your own graphical interface for the organ. It defines the virtual console’s custom display page tabs, their names and the background images used for them. The four other default
standard display pages may optionally be disabled via the _General table.
A maximum of 4 rows can be given for this table.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 31 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: CustomDisplayControlStyle
The CustomDisplayControlStyle table is needed if and only if you wish to create your own graphical interface for the organ. It allows you to define a library of visual styles that can be used for your controls (stops, couplers, tremulants, short-cut pistons, swell
pedals, combination pistons and labels) on custom display pages. A ready-made standard library of images and styles is supplied with Hauptwerk. To use it simply copy and paste the contents of the CustomDisplayControlStyle table from the ‘example
custom organ 2' custom organ definition into your own custom organ definition. You can also add your own if you wish.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 32 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Text_Font_IsItalic Boolean Y/N Must be specified if and 3.0.0 If the style can display text, whether the font should be italic.
only if Text_HasText is Y
Text_Font_IsUnderlined Boolean Y/N Must be specified if and 3.0.0 If the style can display text, whether the font should be underlined.
only if Text_HasText is Y
Text_RGBColour_Red Integer 0 - 255 Must be specified if and 3.0.0 If the style can display text, the RGB color component of the font.
only if Text_HasText is Y
Text_RGBColour_Green Integer 0 - 255 Must be specified if and 3.0.0 If the style can display text, the RGB color component of the font.
only if Text_HasText is Y
Text_RGBColour_Blue Integer 0 - 255 Must be specified if and 3.0.0 If the style can display text, the RGB color component of the font.
only if Text_HasText is Y
Text_BoundingBoxPosPixelsRelToTopLeftOfIm Integer 0 - Must be specified if and 3.0.0 If the style can display text, the position of its bounding box relative to the top-left of the control to
age_LeftX 8192 only if Text_HasText is Y which it will be applied. The control’s text will be centered vertically and horizontally within this box and
word-wrapped.
Text_BoundingBoxPosPixelsRelToTopLeftOfIm Integer 0 - Must be specified if and 3.0.0 If the style can display text, the position of its bounding box relative to the top-left of the control to
age_TopY 8192 only if Text_HasText is Y which it will be applied. The control’s text will be centered vertically and horizontally within this box and
word-wrapped.
Text_BoundingBoxPosPixelsRelToTopLeftOfIm Integer 0 - Must be specified if and 3.0.0 If the style can display text, the position of its bounding box relative to the top-left of the control to
age_RightX 8192 only if Text_HasText is Y which it will be applied. The control’s text will be centered vertically and horizontally within this box and
word-wrapped.
Text_BoundingBoxPosPixelsRelToTopLeftOfIm Integer 0 - Must be specified if and 3.0.0 If the style can display text, the position of its bounding box relative to the top-left of the control to
age_Bottom 8192 only if Text_HasText is Y which it will be applied. The control’s text will be centered vertically and horizontally within this box and
word-wrapped.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 33 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: CustomDisplayKeyboardStyle
The CustomDisplayKeyboardStyle table is needed if and only if you wish to create your own graphical interface for the organ. It allows you to define a library of visual styles that can be used for your virtual keyboards (manuals and pedalboards) on custom
display pages. A ready-made standard library of images and styles is supplied with Hauptwerk. To use it simply copy and paste the contents of the CustomDisplayKeyboardStyle table from the ‘example custom organ 2' custom organ definition into your own
custom organ definition. You can also add your own if you wish.
An ‘up’ and ‘down’ image file must be specified for each key shape possible on a (modern) keyboard, and a mask image may also optionally be specified for each shape. In a mask image, white areas represent transparency, black opacity.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 34 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 35 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: _General
There must be one and only one _General object in the database. Its attributes describe properties of the organ as a whole.
VisualAppearanceCode Fixed 1-1 Y Reserved for future use to allow the console screen appearance to selected from a range of styles. Must
code be set to 1 for now.
CustomOrganInfo_Installation ID 1 - N 3.0.0 RequiredInstallationPackage . You may optionally specify a custom HTML or PDF file that Hauptwerk will show if the user selects Organ |
PackageID 999999 InstallationPackageID Show organ information from the menu, as well as a demo MIDI file for the organ. To do either of those
things, this value needs to specify the installation package in which the file(s) reside. If you leave these
two settings blank Hauptwerk will display a standard generic information page when that menu function is
selected and no MIDI demo will be loaded.
CustomOrganInfo_InfoFilena Filename 255 Must be specified only if 3.0.0 You may optionally specify a custom HTML or PDF file that Hauptwerk will show if the user selects Organ |
me CustomOrganInfo_InstallationPackageID Show organ information from the menu. If so, this value gives the filename and path relative to the
is not blank installation package folder. If you leave these two settings blank Hauptwerk will display a standard
generic information page when that menu function is selected.
CustomOrganInfo_MIDIDemo Filename 255 Can be specified only if 4.0.0 You may optionally specify a MIDI file that Hauptwerk will load automatically into its native MIDI player as
Filename CustomOrganInfo_InstallationPackageID a demo for the organ whenever the user loads the organ. The MIDI file must use exactly the MIDI
is not blank implementation that the native MIDI recorder/player uses (for example, you could use a MIDI file that you
saved from Hauptwerk's native MIDI recorder) and reside within the package specified by the
CustomOrganInfo_InstallationPackageID setting. The MIDI recorder/player's MIDI implementation is fixed
and designed so that MIDI files it records will play properly for any other users of the organ, with no
dependencies on MIDI settings or combination sets.
CustomDisplay_ConsoleWidth Integer 1 – 8192 N 3.0.0 You can use these two settings to make the virtual console larger than the standard default size of 1012 x
Pixels 640 pixels if required.
CustomDisplay_ConsoleHeigh Integer 1 – 8192 N 3.0.0 You can use these two settings to make the virtual console larger than the standard default size of 1012 x
tPixels 640 pixels if required.
CustomDisplay_AlternateLayo Integer 1 – 8192 N 4.0.0 Set this if you want to define an alternate screen layout size/orientation/aspect ratio.
ut1_ConsoleWidthPixels See the 'The custom display functionality' section of this guide for details on the alternate layout
functionality.
CustomDisplay_AlternateLayo Integer 1 – 8192 N 4.0.0 Set this if you want to define an alternate screen layout size/orientation/aspect ratio.
ut1_ConsoleHeightPixels
CustomDisplay_EnableStdPag Boolean Y/N N 3.0.0 You can use these four settings to disable the default standard generated virtual console display pages if
es_Controls you wish.
CustomDisplay_EnableStdPag Boolean Y/N N 3.0.0 You can use these four settings to disable the default standard generated virtual console display pages if
es_Keyboards you wish.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 36 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 37 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 38 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 39 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 40 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: Division
The Division table is central to the custom organ definition, and fulfills the roles of several tables in the full native organ definition format.
Conceptually a division is considered to be an organ keyboard together with the set of stops that can be played from it, the set of couplers that couple to it (e.g. the Swell to Great coupler belongs to the Great division, playing the Swell division when the keys
of the Great manual are played), the set of tremulants that belong logically to it, the set of divisional combination objects storing the states of its stops, couplers and tremulants, and the wind supply system components used for its pipe ranks. A rank is
associated with a division only to specify the source of its wind; ranks may be shared between any divisions to allow unification.
This table enumerates the divisions that are present on the organ. Keyboards, stop jambs and optionally wind model components are generated automatically for each listed division on the default standard display, unless that default display is disabled. The
list of allowed divisions is fixed, detailed for the DivisionCode attribute below.
Please see the section An overview of the objects in a custom organ definition and characteristics of organs created with the Custom Organ Design Module for information on standard divisions (which have division codes 1 - 7) compared to non-standard
divisions (with division codes 8 – 16).
Name String 32 Y UK The name that is displayed for the keyboard, stop jambs, wind model and enclosure indicators on the standard
default console display (if enabled), and presented to the user when configuring MIDI keyboards
ShortName String 5 Y UK Used to identify the keyboard for display on LCD status panels.
NumberOfKeys Integer 0 - 128 Y The number of keys available on the keyboard for the division.
MIDINoteNumOfFirstKey Integer 12 - 127 N 3.0.0 If specified the MIDI note number of the first key. The default is 36, which is the standard MIDI note number for
the lowest C on a 61-note manual or on a modern pedalboard.
NumberOfKeyActionNodesIfDiffere Integer 0 - 128 N 3.0.0 The ‘action nodes’ are the set of outputs to the pipe pallets, post-coupling. By default the same number and range
ntFromNumberOfKeys of such action nodes are generated as for the keys. However, you can use these two settings to override that. For
example you might want to do this if a division had octave or sub-octave couplers that allowed pipes to be played
beyond the usual compass of the keys at the ends of the keyboard.
MIDINoteNumOfFirstKeyActionNod Integer 0 - 127 N 3.0.0 The ‘action nodes’ are the set of outputs to the pipe pallets, post-coupling. By default the same number and range
eIfDifferentFromFirstKey of such action nodes are generated as for the keys. However, you can use these two settings to override that. For
example you might want to do this if a division had octave or sub-octave couplers that allowed pipes to be played
beyond the usual compass of the keys at the ends of the keyboard.
AccessibleForMIDIInputAndOutput Boolean Y/N N 3.0.0 Determines whether the user will be able to connect MIDI keyboards to it, and use it for MIDI output. The default
is Y. You would usually want to set this to N for special divisions that you create solely to implement complex
internal couplers.
WindModel_EnableWindModel Boolean Y/N Y If Y, a wind weighted, parallel-rise reservoir is generated together with a wind-chest and all necessary connections,
continuous controls, regulator valve, and console screen indicators on the standard default display (if enabled).
The pressure is normally maintained at 6", with attached pipework causing the pressure to vary as the demand
changes. Note that the reservoirs of each division are fed separately from the blower, so they do not interact in
the Custom Organ Design Module. If set to N, the wind is supplied to all attached ranks from a constant 6" supply
which remains absolutely static at all times.
WindModel_TotalResrvrAndWndchs Float 0.001 - Must be specified if and only if In general, a larger reservoir can absorb changes in demand with less affect on pressure, thus the volume affects
tVolMetresCubed 99999.9 WindModel_EnableWindModel the magnitude of any oscillations in pressure that occur when wind demand changes (due to oscillations of the
mass placed on the bellows). About 1 m3 is a good starting point for a medium-sized division. The volume is
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 41 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 43 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 44 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 45 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 46 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 47 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Additional custom display attributes common to tables: Stop, Coupler, Tremulant, ShortcutPiston, CustomDisplayLabel, Enclosure
The following attributes exist on each of the Stop, Coupler, Tremulant, ShortcutPiston, CustomDisplayLabel and Enclosure tables, and allow you to make the control visible on none, either or both of two of your own custom display pages.
Important exception: the CustomDisplay1_Text and CustomDisplay2_Text attributes are not available on the Enclosure table.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 48 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 49 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: Coupler
The Coupler table lists the couplers that should be generated for the divisions, with appropriate key actions being generated by default between the source keyboards and destination divisions. If no unison-off coupler is specified for a division, a fixed unison
key action is also generated so that the division plays at unison pitch as normal when no couplers are engaged. By default the CouplerCode determines the linked divisions, coupling pitch, and basic key action type (e.g. melody and bass couplers) and can
take any of the following values:
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 51 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 52 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 53 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 54 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 55 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Custom couplers allow coupling to happen at a user-specified non-standard or mutation pitch and allow for user-specified special types of key actions, such as pizzicato or theatre organ traps. See the Couplers section in part 1 of this guide for more
information.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 56 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
CustomCoupler_PipeMIDINoteNu Integer 0 - Must be specified if and only if the 3.0.0 If the coupler code specifies that this coupler is a ‘custom coupler’, and the action effect code is pizzicato or
m036_PizzOrReitPeriodMs 99999 coupler code is a custom coupler and reiterating, then this setting specifies the maximum time in milliseconds that the coupler link will remain active
the action effect is pizzicato or (pizzicato) or the interval between reiterations (reiterating). Values are specified by these two settings for
reiterating source note numbers 36 and 96, and are projected linearly for other note numbers.
CustomCoupler_PipeMIDINoteNu Integer 0 - Must be specified if and only if the 3.0.0 If the coupler code specifies that this coupler is a ‘custom coupler’, and the action effect code is pizzicato or
m096_PizzOrReitPeriodMs 99999 coupler code is a custom coupler and reiterating, then this setting specifies the maximum time in milliseconds that the coupler link will remain active
the action effect is pizzicato or (pizzicato) or the interval between reiterations (reiterating). Values are specified by these two settings for
reiterating source note numbers 36 and 96, and are projected linearly for other note numbers.
Important note: there are more attributes that apply to this table and other tables. Please see the preceding sections for them.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 57 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: Enclosure
The table lists the enclosures (swell boxes) to be included in the organ. The EnclosureCode determines the main role of the enclosure and can be any of the following:
100. General Swell
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 58 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
For each listed enclosure, the necessary virtual continuous control, enclosure and wind model objects are generated automatically, and linked as required to the pipework. The division associated with an enclosure (if it is other than a general swell) only
determines how it is positioned on the default standard console display (if enabled) - any enclosure is specified separately for each rank, together with its audible effects. A division can have at most one enclosure in the Custom Organ Design Module in order
to fit the required objects onto the default standard console screen display.
Important note: there are more attributes that apply to this table and other tables. Please see the preceding sections for them.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 59 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: Tremulant
The Tremulant table lists the tremulants to be available on the organ that should use Hauptwerk’s native tremulant model. The TremulantCode determines the primary role of the tremulant:
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 60 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
The division with which the tremulant is associated determines the stop jamb upon which it is included on the default standard console display (if enabled), and the division in whose divisional combinations it is stored. However, the acoustical effects of any
tremulant, together with the tremulant samples to be used, are specified separately for each pipe rank.
Note that the Tremulant table should not be used if using real tremulant-affected samples instead of Hauptwerk’s native tremulant model (see the sections on tremulants in part 1 of this guide for more information).
Important note: there are more attributes that apply to this table and other tables. Please see the preceding sections for them.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 61 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: Rank
There Rank table is the central table in the custom organ definition format, and by far the most complex.
(It is used by the Custom Organ Design Module compiler to generate all objects in the pipe, pipe layer, pipe layer attack sample, pipe layer release sample, sample, enclosure pipe, tremulant waveform, tremulant waveform pipe and rank tables in the full
organ definition format.)
It describes the set(s) of pipe samples that are to be used for the organ rank (or organ ranks if the samples were recorded with more than one physical pipe rank sounding at once, as is often the case with a mixture stop), how the pipes should be played and
modeled, and any effects that should apply to them.
Several custom organ ranks (or parts of them) can be assigned to a given stop and a given rank can be used by several stops, allowing unification. The StopRank table described later provides such functionality, assigning the required parts of ranks to stops.
Pipe and tremulant waveform samples do not need to be specified for every pipe (although it is preferable for best results), and the rank can extend beyond the samples available, with the first or last sample automatically being re-pitched for the remaining
pipes. Note that use of less than one sample per virtual pipe does not save memory, since the samples are still loaded separately for each pipe, so that signal processing can be applied to them, where such processing does not need to happen in real-time.
The output pipe pitch of the rank is specified separately from that of the pipe samples that are used for it, so it is possible to play a set of samples at a pitch other than that at which they were recorded, with the necessary re-pitching happening automatically
in real-time for the user-selected temperament, and also to 're-voice' ranks by adjusting their pitch, amplitude or harmonic content.
Reverberation tail truncation can be applied to the rank, so that the response of dry pipes is modeled (in a basic way). Although this would normally be used to allow semi-dry ranks from various sample sets to be combined relatively convincingly, it also
allows pipes played at pitches other than that at which they were recorded to have their decays shaped appropriately for their playback pitches.
Hauptwerk's native tremulant model works by using special waveform samples which define how the pitch, amplitude and harmonic content of a pipe should vary with time, and any set of such samples can be applied across the rank. The modulation occurs
separately for each pipe in real-time. Separate tremulant waveform samples may be used for each rank, or even pipe, if desired, or shared between pipes or ranks. The depth of the pitch, amplitude and harmonic content modulation by any tremulant can be
adjusted across the compass of the rank.
Hauptwerk's enclosure model uses specially-designed filters that model the acoustic effects of a swell box on the pipework, whilst being fast enough to be applied separately for each pipe in real-time. The filter has a single 'maximum' (peak) and 'minimum'
(trough) in its frequency response and the frequency response is smooth between them. Thus it can behave like a simple high-pass or low-pass filter. The attenuation in decibels can be set at the maximum, and also the attenuation in decibels of the
minimum relative to the maximum. The frequency of the maximum and minimum can also be defined. Note that a large relative attenuation between the maximum and minimum with a small frequency separation between them will give rise to a steep
curve in the frequency response between them, and stronger filter resonance around the maximum and minimum. Resonance would normally be very low for the relative attenuations that would be used to emulate the effects of a swell box. Attenuation
values are specified for the box closed, and they are automatically reduced to zero as the box opens. The maximum and minimum frequencies are specified for both the box open and closed.
In general, Hauptwerk modulates the amplitude, pitch and harmonic content of each pipe separately in real-time. The effects of the wind model, tremulants and any static levels (for example a fixed pitch increment used to make the rank sound as a detuned
rank, such as a celeste) are combined to determine the amplitude, pitch and harmonic content of each pipe at any given moment in time. The harmonic content is modulated by specifying the gain of the pipe's third harmonic relative to that of its
fundamental. This is achieved using a specially designed 'harmonic shaping' filter. The filter behaves roughly like a high or low-pass filter, with the gain for frequencies above the third harmonic being as nearly as possible the same as for the third harmonic.
Each pipe is identified by a 'MIDI note number', being the MIDI note on/off message note number of the keyboard key to which the pipe would normally be attached when sounding at its normal pitch. If the rank is unified, then it will of course sound at
several different pitches, and a 'basic' pitch must simply be chosen arbitrarily. For example, the lowest C of a 61-pipe 8' diapason rank would normally be attached to the lowest C on a 61-key manual, for which the MIDI note number is 36, that of the middle
C pipe would be 60, and that of the top C 96. For an 85-pipe theatre organ tibia rank with the lowest pipe sounding at 16' C pitch, the rank could be considered as having a 'basic' pitch of 8', with the MIDI note number of its first pipe being 24 and top pipe
being 108, or a basic pitch of 16', with the MIDI note number of its first pipe being 36 and that of its top pipe being 120. Note that MIDI note numbers cannot exceed 127, which may influence the choice of 'basic' rank pitch for unified ranks.
Please see also the relevant sections in part 1 of this guide for more background information on these topics.
Many parameters relating to the pipes that will be generated are specified for a theoretical pipe of MIDI note number 36, and again for a pipe of MIDI note number 96. Values for all other pipes (between or beyond 36 and 96) are then projected linearly. The
rank need not necessarily actually include pipes of those note two numbers; they are simply used to define the projection of the parameter values across the compass of the rank.
There are several groups of parameters, identified by the parameter name prefixes:
• The Sample_... parameters define which pipe samples files should be used for the rank and their pitches. The values of most can usually be copied from the installation package definition file.
• The Position_... parameters define where the generated virtual pipes are placed in space, the positions being used when playing mono recordings in stereo or mono/stereo recordings in surround/3D formats, synthesizing the remaining channels as
required.
• The WindSupply_... parameters define how the pipes are supplied with wind.
• The Amp_... parameters define the basic output amplitude of the pipework and how strongly it should be modulated by the wind model and any attached tremulant.
• The Pitch_... parameters define the basic output pitch of the pipework, which need not be the same as that of the samples since re-pitching happens automatically in real-time, and how strongly it should be modulated by the wind model and any
attached tremulant.
• Likewise, the HarmonicShaping_... parameters control Hauptwerk's harmonic-shaping filters (described above), determining the basic level of the filters (for voicing) and how deeply they are modulated by the wind model and any attached
tremulants.
• The Encl_... parameters control the effects of the swell box model across the compass of the rank, and whether the rank is enclosed.
• The Trem_... parameters determine whether a tremulant is applied to the rank and which tremulant waveform sample should be used for each pipe. The values of most can usually be copied from the installation package definition file.
• Finally the ReverbTailTruncation_... parameters allow dry pipe decays to be modeled, as described above.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 62 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
• 32' - 2
• 16' - 4
• 8' - 8
• 5 1/3' - 12
• 4' - 16
• 2 2/3' - 24
• 2' - 32
• 1 3/5' - 40
• 1 1/3' - 48
• 1' - 64
• 1
/2' - 128
Note that this setting specifies the rank pitch of the samples. The output pitch of the rank
has a separate setting, allowing samples to be played at pitches other than that at which
they were recorded. The value of this parameter can be copied from the installation package
definition file, where it should have been specified correctly by the sample set creator.
[Note that failing to set the sample pitch parameters correctly can prevent Hauptwerk's
release sample phase alignment mechanism from working properly. Also note that when
several ranks use the same set of samples, the pitch parameters will be taken from the first
rank loaded, thus these values must always be set to the true pitch of the samples, and
should not be used as a means to produce special effects.]
Samples_AudioOutOptimalChannel Fixed code Valid channel N Obsolete This setting is obsolete and ignored in Hauptwerk version 4.0.0 and later, for which the
FormatCode format code 4.0.0+ information is determined automatically from the sample files.
Samples_AudioOutOptimalSampleR Fixed code Valid sample N Obsolete This setting is obsolete and ignored in Hauptwerk version 4.0.0 and later, for which the
esolutionCode resolution 4.0.0+ information is determined automatically from the sample files.
code
Position_LayoutOfPipesOnWindches Fixed code Valid wind- Y Values are as follows:
tCode chest layout 1. C/C# divided, C pipes left with bass pipes outermost.
code
2. C/C# divided, C pipes right with bass pipes outermost.
3. C/C# divided, C pipes left with bass pipes innermost.
4. C/C# divided, C pipes right with bass pipes innermost.
5. Linear with bass pipes on the left.
6. Linear with bass pipes on the right.
The generated ranks are always considered to be perpendicular to the listener's line of sight
when looking directly at the front of the organ.
This setting determines the virtual output positions of the pipes, which are used when
playing mono recordings in stereo or mono/stereo recordings in surround/3D formats,
synthesizing the remaining channels as required.
Position_RankDistanceFromListener Float -99999.9 to Y The generated ranks are always considered to be perpendicular to the listener's line of sight
Metres +99999.9 when looking directly at the front of the organ.
This setting determines the virtual output positions of the pipes, which are used when
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 64 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 65 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 66 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 67 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
ReverbTailTruncation_DecayLength Float 1.0 - Must be specified if and only if When reverb tail truncation is to be applied, this setting gives the desired length of the
AsMsForMiddleCOn8FtStop 99999.9 ReverbTailTruncation_Mode is not 1 decay in milliseconds for a middle C pipe in an 8' rank. The values for all pipes of other
pitches are projects appropriately. Please note, adjustment for ranks of other pitches is
automatic, thus the value should still be specified for an 8' rank even if the pitch of this rank
was 4'.
Values in the range 130 - 180 are often effective.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 68 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: ExternalRank
The ExternalRank table allows ranks to be defined which will produce no sound within Hauptwerk, require no samples, and exist only to control real external pipework or external voice expanders. Inevitably such ranks are fairly system-specific, but they must
be included in the custom organ definition if they will be used so that they can be controlled natively by Hauptwerk as part of the organ’s ‘virtual relay’.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 69 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: Stop
The Stop table lists the stops that are to be available for each division and shown on the controls tab on the default standard console display (if enabled). A stop may be comprised of one or more than one rank or external rank. Its composition is defined by
the separate StopRank table, described below.
Important note: there are more attributes that apply to this table and other tables. Please see the preceding sections for them.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 70 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: StopRank
The StopRank table defines the composition of each stop, allowing (internal) ranks and external ranks. One or more ranks can be used for each stop and a rank can be used in multiple stops. Portions of ranks may be used to compose mixtures or achieve
unification/borrowing at the required pitches, etc. See the notes in part 1 of this guide for more details.
RankID ID 1 - 1024 Must be specified if and Rank . RankID If the RankType is set to 1, this gives the RankID of the rank that will (normally) sound when the stop is engaged.
only if RankType is 1
ExternalRankID ID 1 - Must be specified if and ExternalRank . If the RankType is 2, this gives the ExternalRankID of the external rank that (normally) will be played when the stop is
999999 only if RankType is 2 ExternalRankID engaged.
MIDINoteNumIncrementFromDivisi Integer -128 to Y If ActionTypeCode is a ‘Notes to notes’ type, then this sets the pitch increment. For example, if 0 then the pipe with the
onToRank +128 same MIDI note number as that of the division's key will sound when the key is pressed. If 12, then the pipe an octave
higher will sound, -12 an octave below and so forth. If instead ActionTypeCode is a ‘... to one note’ type, then this setting
specifies the (single) destination note. For example a value of 60 would indicate that middle C would always be triggered.
MIDINoteNumOfFirstMappedDivisio Integer 0 to 127 Y Determines the part of the division's keyboard which will be linked to the rank. Usually this should be the same as the
nKey MIDI note number of the first key for the stop's division, but different values allow for parts of ranks to be used to make up
stops, as would be required for a mixture, for example.
NumberOfMappedDivisionKeys Integer 1 to 128 Y Also defines the mapped key range.
ActionTypeCode Fixed code Valid N 3.0.0 This setting defines which pipes are linked from the key action:
action
1. Notes to notes: all notes played (normal).
type
2. Notes to notes: lowest note only (bass).
3. Notes to notes: highest note only (melody).
11. All notes to one note: all notes played.
12. All notes to one note: first/last note only (traps).
21. Stop switch action to one note (stop action noise/effect).
If the value is not specified, type 1 is used as the default.
ActionEffectCode Fixed code Valid N 3.0.0 This setting defines the way in which each pipe will be linked to its key action node:
action
1. Normal (sustain whilst held).
effect
2. Trigger percussively on downbeat.
3. Trigger percussively on backbeat.
4. Reiterate percussively whilst held.
5. Pizzicato.
If the value is not specified, type 1 is used as the default.
PipeMIDINoteNum036_PizzOrReitP Integer 0 - Must be specified only if 3.0.0 If the action effect code is pizzicato or reiterating, then this setting specifies the maximum time in milliseconds that the
eriodMs 99999 action effect is pizzicato pipe will sound (pizzicato) or the interval between reiterations (reiterating). Values are specified by these two settings for
or reiterating pipe note numbers 36 and 96, and are projected linearly for other note numbers.
PipeMIDINoteNum096_PizzOrReitP Integer 0 - Must be specified only if 3.0.0 If the action effect code is pizzicato or reiterating, then this setting specifies the maximum time in milliseconds that the
eriodMs 99999 action effect is pizzicato pipe will sound (pizzicato) or the interval between reiterations (reiterating). Values are specified by these two settings for
or reiterating pipe note numbers 36 and 96, and are projected linearly for other note numbers.
StopCodeToSwitchToAlternateRank Function Valid N 3.0.0 Stop.StopCode This setting exists mainly to allow real ‘tremmed’ samples to be used. See part 1 of this guide for more details. This
code stop setting can optionally specify that a stop switch should select an alternate (tremmed) rank for this stop-rank connection.
code
RetriggerNotesWhenSwitchingBetw Boolean Y/N Can be specified only if 3.0.0 This setting exists mainly to allow real ‘tremmed’ samples to be used. See part 1 of this guide for more details. If
eenNormalAndAlternateRanks StopCodeToSwitchToAlte StopCodeToSwitchToAlternateRank is non-blank, this setting defines whether held notes should re-trigger when switching
rnateRank is not blank between the normal and alternate (tremmed) ranks.
AlternateRankID ID 1 - 1024 Must be specified only if 3.0.0 Rank . RankID This setting exists mainly to allow real ‘tremmed’ samples to be used. See part 1 of this guide for more details. If
StopCodeToSwitchToAlte StopCodeToSwitchToAlternateRank is non-blank, and the rank type is an internal rank, this setting defines alternate
rnateRank is not blank (tremmed) rank to use.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 71 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
[ (*) Note that the Name fields for the following tables must be unique across all of those tables, otherwise the compiled organ definition file will not load successfully: Coupler, Enclosure, Stop and Tremulant.]
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 72 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: ShortcutPiston
This table can be used to implement reversible pistons and special effects pistons that temporarily turn on a stop, coupler or tremulant whilst held in.
StopCode Function Valid stop Must be specified only if 3.0.0 Stop.StopCode If the referenced object type is a stop, this determines the stop that will be triggered by the piston.
code code referenced object type is a
stop
CouplerCode Function Valid coupler Must be specified only if 3.0.0 Coupler. If the referenced object type is a coupler, this determines the coupler that will be triggered by the piston.
code code referenced object type is a CouplerCode
coupler
TremulantCode Function Valid Must be specified only if 3.0.0 Tremulant. If the referenced object type is a tremulant, this determines the tremulant that will be triggered by the piston.
code tremulant referenced object type is a TremulantCode
code tremulant
PistonActionTypeCode Fixed Valid piston Y 3.0.0 Determines how the piston will be linked to the target object. Can be either:
code action type 1. Reversible piston. The piston will toggle the state of the target object.
code
2. The piston will turn on the target object only whilst the piston is held in, then release it. Can be useful for effects
pistons, e.g. theatre organ ‘toy counter’ effects.
Important note: there are more attributes that apply to this table and other tables. Please see the preceding sections for them.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 73 of 74
Version 2.0.4 for
Custom Organ Design Module User Guide Hauptwerk 4.1.0
Table: CustomDisplayLabel
This table can be used to display static (non-functional) labels or other static image objects on custom display pages on the virtual console.
Important note: there are more attributes that apply to this table and other tables. Please see the preceding sections for them.
© Copyright Milan Digital Audio LLC. 2001-2014 All Rights Reserved. http://www.hauptwerk.com Page 74 of 74