P5 DS864 Sample Playback Synth

Screenshot of DS864

The DS864 is the sample-playback synth that is part of the Cakewalk Project5 software. This page serves as a repository of notes I am collecting about this instrument in order to supplement the information that is provided in the Project5 documentation.

DS864 Architecture

As a starting point I have uploaded a set of graphical images that attempt to depict the logical architecture of this instrument. These are not complete and are only a rough sketch of how I think the instrument is organized. It is important to note that the .ds8 bank file format stores bank settings, program settings, and layer settings--but it does not contain any patches or waveform data. The patch data and waveform data is referenced by a full path name to the corresponding .dp8 file for each layer. The .dp8 patch file actually stores the audio multisamples. Synth settings (like filters, envelopes, LFO settings, etc) are stored in both a .dp8 file and within a layer in a .ds8 file. I have observed that when a .dp8 patch is loaded into a layer in a program in a bank the layer receives the .dp8 file's synth settings and stores them in the .ds8 bank file. However, the synth settings may be modified in the layer and saved to the .ds8 thereby overriding the defaults loaded from the .dp8 file, but the .dp8 file itself is not altered.

DS864 Hacks

I've been researching the .ds8 bank file format and have developed a small software application that is able to copy programs within a bank and between banks. I have contacted Cakewalk to see if they would give me permission to release this software to the Project5 user community. It is not complete and it does not interpret the file format within the DS864 files other than to identify a program as one large chunk. It would be great if Cakewalk could help me understand the file format better so I could finish this tool and release it with their blessing as an external patch editor for the DS864.

DS864 Does Additive Synthesis

While experimenting with the DS864 again I suddenly had a thought. Why couldn't the 8 layers within a program be used as a fundamental tone with 7 additional overtones? So I set out to create an Additive synthesis bank. Through some trial and error experimentation and with the help of Sound Forge 7.0 I was able to create a set of .wav files of various frequencies. The wave files contain two seconds of periodic sine waves. Each wave file is named for the frequency it contains. To make things easy on myself I chose to use the 'A' note. Once I had a set of wave files I used the DS864's keymap editor to keymap 7 octaves worth on each layer, but I start each layer on the low-end at the next overtone harmonic. So in Layer 1 I have 27.5Hz mapped across the keyboard. In Layer 2 I have the 1st overtone (2 x 27.5Hz) which is 55Hz. In Layer 3 I have the 2nd overtone (3 x 27.5Hz). And so on up to the 7th overtone in Layer 8. Once the multisamples were laid into the layers I saved each layer as a .dp8 file so they could be quickly loaded into new programs.

With the layers loaded with samples in harmonic overtone series we can now manipulate the relative volumes of the harmonics against each other. The result is an additive synthesis mechanism that lets us create a new single sound and we can do extensive automation control and modulation routings to dynamically morph the sound.

Creating the samples for this experiment took quite some time, so for anyone who wants to experiment with these ideas I have made my sine waves available. Pull them down with this link: Additive.zip. This is a .zip file containing my file hierarchy, wave files, .dp8 files, a single .ds8 bank file, and a .pdf file containing my frequency chart. I have created a few example programs within the bank to demonstrate the techniques. The first program is a square wave where only the first eight odd harmonics 1, 3, 5, 7, 9, 11, 13, and 15 are embedded in the eight layers. The relative levels of these harmonics are set to 1/3, 1/5, 1/7, 1/9, 1/11, 1/13, and 1/15 of the fundamental frequency's level. The resulting waveform exported to a wave file from a P5 sequence using this program looks very much like a square wave. The second program is a sawtooth wave and the third program is a triangle wave. The next several programs experiment with using LFO1 to control pitch or pan of some of the harmonics. The final program also shows how an amplitude envelope generator can be used to vary the harmonic structure over time.

Walkthrough of Example Piano Banks Included with DS864

First, load the bank "Grand Piano, Gold.ds8". You see in the program drop-down list (first row) that it contains only one program. Within that one program you can see that it has three layers (or parts) in the second row drop-down. Each layer has a different set of multisamples (select a layer on the second-row dropdown then click on the third row). Each layer's multisamples are keymapped and velocity mapped separately. All three layers are set to the same MIDI input and the same audio output. The result is a single Grand Piano, Gold program with three velocity layers made of lots of mutlisamples. It is not configured as multitimbral and this is the only program in the entire bank.

Second, load the bank "Grand Piano, Silver.ds8". You see in the program drop-down list (first row) that it contains two programs. The first program is the same as the program in the bank"Grand Piano, Gold.ds8" above. However, the second program is different. It contains only two layers.

Third, load the bank "Piano, Bowed.ds8". Now you see that this bank contains three programs (the two above) plus the "Piano, Bowed" program. If you select the "Grand Piano, Gold" program you see what we already covered. Same with the second program. But if you select the 3rd program you'll see that it is made of only one layer.

Fourth, load the bank "Piano, Gold.ds8". Now you see that this bank contains only one program called "Default Program". That program consists of a single layer containing the "Piano, Gold.dp8" patch file that was used in the "Piano, Bowed" patch from the "Piano, Bowed.ds8" bank.

As you continue loading the different .ds8 bank files you see they contain various numbers of programs with various numbers of layers and .dp8 files referenced.

How to Create a Bank

Let's use the included piano .dp8 patches to create our own bank with all the DS864 piano patches loaded as programs within a single bank. In the default installation the piano patches are spread across separate banks; we'll bring them into a single .ds8 bank file.

  1. Create a new Pianos.ds8 file which is empty. It contains no programs.
  2. Select the first program (001) in this new bank and double-click on it to give it a name (ie "Grand Piano, Gold").
  3. Select the first layer in your new "Grand Piano, Gold" program. It should be blank. Click the folder icon on the second row to open the "Gold Piano_pp_layer.dp8" patch file and load it into the first layer. Set your multisamples, keymaps, velocity maps, filters, controllers, etc. the way you want.
  4. Select the second layer in your new "Grand Piano, Gold" program. It should be blank. Click the folder icon on the second row to open the "Gold Piano_mf_layer.dp8" patch file and load it into the second layer. Set your multisamples, keymaps, velocity maps, filters, controllers, etc. the way you want.
  5. Select the third layer in your new "Grand Piano, Gold" program. It should be blank. Click the folder icon on the second row to open the "Gold Piano_ff_layer.dp8" patch file and load it into the third layer. Set your multisamples, keymaps, velocity maps, filters, controllers, etc. the way you want.
  6. Save the bank with this first program by clicking on the disk icon in the first row. Use the name "Pianos.ds8" as before and confirm the overwrite bank prompt.
  7. Select the second program (002) in your Pianos.ds8 bank and double-click on it to give it a name (ie "Grand Piano, Silver").
  8. Select the first layer in your new "Grand Piano, Silver" program. It should be blank. Click the folder icon on the second row to open the "Silver Piano_mf_layer.dp8" patch file and load it into the first layer. Set your multisamples, keymaps, velocity maps, filters, controllers, etc. the way you want.
  9. Select the second layer in your new "Grand Piano, Silver" program. It should be blank. Click the folder icon on the second row to open the "Silver Piano_ff_layer.dp8" patch file and load it into the second layer. Set your multisamples, keymaps, velocity maps, filters, controllers, etc. the way you want.
  10. Save the bank with this first program by clicking on the disk icon in the first row. Use the name "Pianos.ds8" as before and confirm the overwrite bank prompt.
  11. Select the thrid program (003) in your Pianos.ds8 bank and double-click on it to give it a name.
  12. Select the first layer in your new program. It should be blank. Click the folder icon on the second row to open a .dp8 patch file and load it into the first layer. Set your multisamples, keymaps, velocity maps, filters, controllers, etc. the way you want.
  13. Select the second layer in your new program. It should be blank. Click the folder icon on the second row to open a .dp8 patch file and load it into the first layer. Set your multisamples, keymaps, velocity maps, filters, controllers, etc. the way you want.
  14. Keep repeating until you have all the layers you need defined (up to 8).
  15. Save the bank with this first program by clicking on the disk icon in the first row. Use the name "Pianos.ds8" as before and confirm the overwrite bank prompt.

Just keep repeating these steps to add up to 128 programs with up to 8 layers each. And remember, each layer can be configured to go to any of the 8 audio outputs of the DS864 and respond to any of the MIDI channels being routed to the DS864.