Creating a pipe organ instrument in the Logic Pro X EXS24 mkII sampler - converting SoundFont files
Note: If you're using Logic Pro 9, and not Logic Pro X, this guide may be more relevant to you. The principles are the same, but the newer EXS24 mkII sampler has a slightly different interface and some new features.
People interested in pipe organs who use Logic Pro X were probably delighted with the release of this version. Rather than the slightly lame sounding pipe organs of Logic Pro, Logic Pro X included some much more realistic instruments. With the use of judicious equalization and reverb, it's easy to make great pipe organ music using this venerable DAW from Apple.
But....the Pipe Organ instruments in Logic Pro X are missing a few stops! There are no reed organ sounds (for example Trompette or Hautbois). If you can get hold of good quality pipe organ samples, it's fairly easy to make your own ranks to include these types of instruments and this is where the EXS24 mkII sampler comes to the rescue. Detailed information on this sampler is available from Apple - see EXS24 mkII documentation. To get at samples from a SoundFont file we'll use the freely available PolyPhone application - this lets us extract samples and investigate the important settings we'll use like loop start/end points and instrument and preset parameters. Detailed information on PolyPhone is available from the PolyPhone Manual, and in particular you may want to check out the instructions on using the PolyPhone Instrument Editor.
Note that Logic Pro X now comes with an automatic SoundFont importer in the EXS24 mkII sampler - this automates the entire process for you except for setting the loop start and end points correctly. As far as playable organs go, the result is unsatisfactory until you manually set up the loops (which I tell you how to do in this guide from step 6 onwards). If you don't have a SoundFont file, but can get hold of sample files, read on! We'll still use a SoundFont file and PolyPhone to illustrate the process, and in particular the slightly complicated process of setting loops which are critical for an instrument like an organ).
Bach organ works and the need for reed-based ranks
When playing Bach, there is often a need for reed stops (and their corresponding ranks), because, in his genius, he uses them to differentiate a harmony or overlay from the accompaniment. A good example of this in action is in the famous organ choral "Wachet Auf, Ruft Uns Die Stimme" (BWV645). At around 00:33 you can hear the overlay performed on the Swell manual (the second one just under the topmost Solo manual as performed in the video).
Sourcing Pipe Organ Samples
The fantastic Jeux D'Orgues site by Joseph Basquin includes a beautiful (paid-for) Silbermann organ, but also a 'free' Stiehr-Mockers organ too. By downloading the SoundFont file for this organ, and using the samples, it's possible to create a replica of this 'instrument' in EXS24. We'll be using the Stiehr-Mockers organ SoundFont file for this example (although note that as mentioned above, automatic SoundFount conversion is now available in EXS24 mkII, minus loop settings. If you use a SoundFont file as your source of samples, you will still need to set up your loops from scratch, for every instrument).
Creating a pipe organ instrument in the EXS24 mkII - Instructions
The following guide tells you what to do to create your own EXS24 instrument from sample sources. It has been kept quite brief as there is a lot to cover - but when I get some time, I may create a more detailed guide including screenshots. This guide assumes you know your way around Logic Pro X and the EXS24 mkII sampler, but most of the concepts are explained along the way.
Before we launch into the (highly summarised) steps, let's define some terminology:
|Polyphone SoundFont Editor||An excellent, freely-available soundfont editor, including great loop editing facilities.|
|Sample||Individual sample files, recorded from a real organ. A single rank will have multiple samples for different notes, and a sample is equivalent to a single pipe.|
|Instrument||A PolyPhone instrument equates to a real pipe organ's rank - a set of pipes that all 'sound' the same, one for each note.|
|Presets||A set of instruments (ranks) that go to making up a real organ's stops.|
Logic Pro X EXS24 Sampler (Editor window)
|Audio File||A single sample (pipe) that identifies with a root key based on its frequency eg. C#3.|
|Zone||A set of contiguous keys that utilise a single audio file (sample). With the zone's root key defined, EXS24 will then adjust the frequency of the sample in line with the keys (using key mapping). Zones can overlap each other (in keyboard terms) which means you can add multiple samples (pipes) together to create a stop (in organ terms).|
|Group||Equivalent to an organ's rank (if there are no overlapping zones) or a stop (with overlapping keymapped zones). Made up of multiple zones containing samples that have had their root key, loop start/end and sample start/end points defined.|
Using the EXS24 Sampler Editing Window
As you'll be making changes to the new groups and zones you'll be creating, click 'View' to see, at a minimum:
- Audio File
- Key Range
1. Create a new EXS24 trackSet up an empty new EXS24 track in Logic Pro X to contain your new instrument. Make sure you've selected the '---' empty instrument which just produces a basic sin wave.
2. Edit the new EXS24 InstrumentIn EXS24, click 'edit' and save the instrument, giving it the name of the rank you're creating (e.g. Trompette 8).
3. Import samples into EXS24.Open Finder, get your sample files, and drag them into the EXS24 edit window.
4. Set pitch keysSet your pitch keys for each sample. Note that the sample file name for in the jeuxdorgues.sf2 SoundFont file will match the pitch key (e.g. trompette8-a4.wav is note A4). You may sometimes see a Tuning value set in PolyPhone for the SoundFont file sample too. You can enter this into Logic Pro against the sample in the EXS24 edit window in the 'Pitch - Fine' text box. Both values are in cents.
5. Map your key range zonesIn this example guide, we'll get these from the SoundFont file using PolyPhone to find them. Hint: in PolyPhone preferences, make sure you set 'General - Interface - Key Names' to 'Middle C -> C3 then C#3' format. This will display keys in the same way as Logic Pro X - rather than numerically (where 60 is middle C). Enter the Key Range Lo and Hi values that match what you see in the instrument on PolyPhone. In Logic Pro X, double check you don't have any overlapping mapped zone keys so that each key plays just one sample (unless you're creating a stop with multiple samples (ranks) for the one key - see the end of this post for more information) . Similarly, you also need to ensure that there are no keys unmapped to a zone - the group for the instrument should cover every key on the keyboard (for the number of octaves you want at least). You'll know that something's wrong here if you press a key and hear no sound.
6. Loop settingsThere is a real art to setting loop start/end samples. While you can do it manually in EXS24 by double-clicking the sample, and dragging the yellow loop range bar around, this is quite difficult given the natural tonality changes over time of an organ pipe note. You can find some of the details on my other blog posting on using Logic Pro, but you can get the loop start and end sample numbers directly from the SoundFont file where all the hard work has already been done. Be aware that EXS24 and PolyPhone use loop sample offsets slightly differently. In the EXS24, the offsets are absolute ie. they refer to the position within the entire sample. In PolyPhone, they are relative to the sample start and end points set for the sample itself (which chops off the first 8 and last 8 samples). Consequently, a bit of calculation is required to adjust for the slightly different interpretations of 'Sample Start/End' in the two applications.
To match loop start/end values from the SoundFont file to EXS24, first make a note of both the Sample and Loop Start and End values in PolyPhone for your instrument and for the zone you're working on. The Jeux D'Orgues SoundFont file has, for every sample, a start setting of 8, and an end setting of (total sample size) - 8. Your loop settings in Logic Pro X need to reflect this - see the calculated example below for details of the calculations required.
Example: (from PolyPhone instrument I Trompette 8, sample trompette8-e2).
|Full Sample Size||42868|
|Start Loop Offset||18926|
|End Loop Offset||-13182 (negative values equal offset from end of sample, after accounting for the sample start/end points|
|Loop Start||Start Loop Offset + 8 = 18926 + 8 = 18934|
|Loop End||(Full sample size - 8) + End Loop Offset = 42868 - 8 - 13182 = 29678.|
Enter these values into the Loop Start and End text boxes in Logic Pro X, and repeat the process for each zone. To make this process much easier, I have created a spreadsheet - simply copy/paste the Start and End Loop Offset values for each zone from PolyPhone, and do your calculations there....much easier than using Calculator on every sample!
You may also want to add loop crossfade to your samples as it can result in a better (i.e. less clicking) sound. It's especially useful when it is difficult to find the 'perfect' loop region. Loop crossfade has the effect of fading out the tail end of the loop, and fading in the start of the loop during the transition back to the start of the loop as it repeats. The number you enter here determines when (sample number wise) the crossfade starts at the end of the loop.
It should be obvious, but don't forget to make sure that 'Loop' is set on for each zone (sample). Playback Pitch must also be on to ensure the frequency of the sound changes as the keys change within a zone.
7. Set sample offsetsI'm not exactly sure what Logic Pro X does with these, but it's worth copying the SoundFont sample offsets into Logic Pro X's EXS24 editor too. In the case of the Jeux D'Orgues soundfont file, the samples start 8 samples in, and end 8 samples before the end of the file. For the Trompette 8 example above, these are 8 and (42868 - 8) = 42860 for the Sample Start and End respectively.
As noted above, in the EXS24, the sample offsets do not appear to influence the sample loop start/end values (i.e. they are not relative), whereas in PolyPhone they do. This is why a straight out transcription of loop start/end settings from PolyPhone to EXS24 will not work correctly, and the reason that the calculations above are required.
8. Create a new group for your instrumentMake a new Group in EXS24 titled the name of the organ rank you have create (eg. Trompette 8), and add your zones to this group. I also renamed the zones in key order (sort by key first). Using a leading zero in the zone name ensures they sort in key order too eg. Zone #01, Zone #02 etc.
9. Save your instrument with its samples in the default locationNow you have your instrument set up, it's a good idea to save it and its samples together in Logic Pro X's default location. If you don't, the instrument will require the samples be located wherever you were when you made the instrument i.e. probably not a good idea.
To do this, click 'Instrument - Export Samples Instrument and Sampler Files'. You'll now have a copy of the instrument in your Music/Audio Music Apps/Sampler Instrument directory. If you don't need the original working copy instrument anymore, you can delete it, but don't do this until you're sure you've finished making it.
That's it! You now have a new EXS24 Sampler Organ rank to use.
More informationIf you're technically minded, Nick Appleton has written an article on his site that explains (and tells you how to address) some of the difficulties associated with loop editing:
On the perils of cross-fading loops in organ samples
Creating organ stops from ranks in the EXS24 SamplerThe EXS24 Sampler is logically very similar to a pipe organ when it comes to instrument creation. In basic terms, a PolyPhone organ stop is a Preset containing multiple instruments (ranks). In the EXS24 Sampler, you can combine ranks into a single stop by making multiple Groups containing the samples that make up a rank, and overlapping their key ranges. For example, you could combine Flute 8' and Flute 4' EXS24 groups to make a Flute 8' 4' instrument.
As an example, check out the 'Fonds 8 4' preset in PolyPhone. It's made up of two instruments (ranks): Bordun 8' and Floete 4'. In EXS24, you would simply create multiple zones containing the Bordun 8' and Floete 4' samples, and overlap their key ranges. You then save your instrument, and it will play both Bordun 8' and Floete 4' samples simultaneously when a key is pressed.