bernsee.com > The DSP Dimension > Dirac Library


C/C++ Library for High Quality Audio Time Stretching
and Pitch Shifting

In this document:

What is DIRAC?
In a world where high definition audio is becoming a technology of daily life it is surprising how little attention is actually being paid to the quality of processes that are almost as important when handling digital audio, for example changing speed and pitch independently from one another. In our research, we've found the algorithms available on the market today to severely alter the quality of the processed audio which is intolerable in a professional context. This is why we were motivated to develop a new algorithm that excels at providing both excellent quality, high performance and perfect fidelity - DIRAC.

DIRAC is envisioned to become a new standard in digital audio applications and embedded systems. Featuring an entirely free full-quality LE version, it was created to provide a free basis to give developers of all kinds of audio software a common, high quality toolset for creating their applications. We believe that time stretching and pitch shifting are tools that should not be limited to proprietary applications but are indeed important enough to be readily available as building block for all software developers, without costly licensing, nebulous marketing language and trade secret issues.

DIRAC LE is free for all and intended to provide a common, high quality basis across all platforms. It can be expanded beyond the features of the free LE version as needed if you require more. Recognizing that a chain is only as strong as its weakest link, our goal is to provide your client's audio processing chain with the best option for changing speed and pitch to make them worry less about what is happening with their precious data.

But see for yourself and test drive DIRAC LE today - it's entirely free and there are no obligations on your part.

Why should I use DIRAC?
There are several time stretching algorithms available on the market today. However, every one of them has one specific type of signal for which it doesn't work well. For example, most algorithms that produce good results with voice don't work well with entire mixes, and vice versa. Some introduce distortion when processing critical material such as classical music, or echoes when dealing with percussion. Many of them even alter the stereo image when processing stereo tracks, others are designed to work with a specific type of signal only, such as drum loops, and fail in all other cases.

Due to its new time-frequency approach that unites the best of both worlds and adds the advantages of wavelet-based processing, only DIRAC can be scaled to work with all signals with equal ease and success and without destroying the timing or quality of your music. What's more - it doesn't hide its inadequacies behind a massive set of parameters that leave the user wondering why tweaking them makes the result sound always worse. DIRAC is very easy to set up and guarantees a smooth and professional result every time. And if you don't believe us - try it for yourself now. The basic DIRAC LE library is free and comes without any obligation. We've not seen any other company allow others to evaluate the quality of their algorithms so freely.

The more advanced versions of this technology are available at an incredibly low licensing rate considering the benefits that this technology brings to your applications. And it doesn't stop there - if you need source code to customize DIRAC to suit your specific needs we're open to licensing that as well. Our time stretching API isn't shrouded in trade secrets and non-disclosure agreements. You can see and try everything before you make your decision about licensing any of the full-fledged packages. If you have any questions or require a customized version we're standing by to help you and provide assistance as needed.

What versions are there and how do they compare?
There are 3 different incarnations of DIRAC available at this time, called LE, STUDIO and PRO.

DIRAC LE is the free version of the library that provides the exact same quality as the STUDIO and PRO versions but has some minor restrictions. For example, DIRAC LE can only process one audio channel per DIRAC instance. This doesn't mean that you cannot process stereo files with the LE version - you simply need to create one separate DIRAC LE object per channel.

DIRAC STUDIO offers phase locked stereo processing while the PRO version allows processing an arbitrary number of channels (5.1 surround and more) in a phase locked, mono-compatible manner.

Here's a feature comparison chart that lists the differences between the three versions:

Feature

Free DIRAC LE
DIRAC STUDIO
DIRAC PRO

 

 
 
 

Time Stretch and Pitch Shift

YES
YES
YES

Dynamic Time and Pitch Changes

-
-
YES

Phase locked stereo processing

-
YES
YES

Phase-locked surround processing

-
-
YES

Formant Correction

-
Preservation only
Preservation & free adjustment

Surround compatible

-
-
YES

Supported Sample Rates

44.1 and 48kHz
8 - 96kHz
Unlimited

Time Frequency Localization

YES
YES
YES

High Quality

YES
YES
YES

High stretch ratio accuracy

YES
YES
YES

Pitch Shift Anti-Aliasing

YES
YES
YES

Pitch Shift Interpolation

Band-Limited
Band-Limited
Band-Limited

PowerPC Altivec Optimization

-
YES
YES

Pitch/Intonation Correction

YES/static
YES/dynamic
YES/dynamic

For more information we recommend you download the DIRAC LE documentation from our download page.

What about realtime processing?
DIRAC is highly optimized. Its quality settings range from very fast to very good, with a dedicated realtime/preview mode that offers astonishingly good results. DIRAC STUDIO and PRO have full support for AltiVec optimization on the Mac and are therefore even faster than the LE version. Try the LE version now to sample the quality for yourself.

What quality parameters does it offer?
DIRAC offers two quality-related parameters. "Quality" determines the quality/speed tradeoff, ranging from very fast/realtime preview to full quality for very high end applications. "Lambda" determines the time-frequency localization tradoff, ranging from very localized (good for voice and single instruments) to very smooth (good for complete mixes or critical material). An additional selector enabling/disabling compact support for the time-frequency decomposition is available as an option. Please see the
DIRAC manual for more information.

Does it do pitch and intonation correction?
Yes! Being an ideal tool for sung or instrumental tracks that aren't in perfect tune, DIRAC 1.1 now incorporates an advanced way of improving intonation on instrument and vocal tracks. Its automatic pitch detection and correction lets you automatically correct notes that deviate from their closest key on the piano keyboard. The DIRAC pitch correction is a lightning fast process that makes this application faster than realtime and ideal for A/B comparison sessions. Contrary to other pitch correction schemes on the market today that sound rather synthetic and lend a robotic quality to the processed tracks, DIRAC's advanced intonation parameters allow for a natural result that is indistinguishable from the orginal track. Due to the fact that it doesn't use granular synthesis like many of the other pitch correctors it does not produce any distortion or artifacts, and it doesn't rely on the underlying signal being 100% periodic to produce a musical result. When you enable pitch correction you can adjust the pitch correction strength and capture range as well as the slur rate that defines the time until the note settles at the correct pitch. Much like a singer who adjusts the note while he sings, DIRAC adapts to the signal and smoothly shifts it to match the predefined pitch. Of course, DIRAC gives you full control over the reference tuning to match your recording.


What about the costs for the STUDIO and PRO version?

DIRAC LE Licensing
Use of DIRAC LE is entirely free of charge. You can use it in any commercial and non-commercial applications that you develop, without a licensing fee, subject to the DIRAC LE licensing agreement. Please read, download or print the full
DIRAC LE licensing agreement from here for more information on the DIRAC LE license.

DIRAC STUDIO and PRO Licensing
There are two licensing modes available to suit the different business models:

1. Annual licensing
This is a recurring annual licensing fee for every company, individual or institution incorporating our DIRAC STUDIO or PRO technology into their products. The fee is independent of the number of products or copies that are sold that incorporate the DIRAC technology and independent of the number of operating systems that are supported or used. This means you're free to sell as many end user licenses and programs that incorporate DIRAC STUDIO and PRO as you wish, without paying a higher price.

The licensing period begins at the date of signing the licensing contract and automatically renews on the same day one year later. Termination is possible at any time until 4 weeks before the period renews. There are no refunds for the "unused" time if you cancel before the year is over.

For DIRAC STUDIO, the yearly licensing fee is 1870 EUR, for DIRAC PRO the licensing fee is 3360 EUR including all applicable taxes. The first payment is due in advance upon execution of the licensing contract and is payable in Euro (EUR) currency.

Future revisions, potential bug fixes and customer support are included in the licensing costs for the duration of the licensing period as far as they refer to existing features.

Additional update fees may apply for future DIRAC versions that incorporate new features. In this case you are offered the choice if you want to update or stay with the current version of DIRAC.

- or -

2. One-time up front payment
This is a one-time payment for every company, individual or institution incorporating our DIRAC STUDIO or PRO technology into their products. The fee is independent of the number of products or copies that are sold that incorporate the DIRAC technology, independent of the number of operating systems that are supported or used and independent of the time period for which DIRAC is used. This means you're free to sell as many end user licenses and programs that incorporate DIRAC STUDIO and PRO as you wish, without paying a higher price.

For DIRAC STUDIO, the up-front fee is 4630 EUR, for DIRAC PRO the licensing fee is 9870 EUR including all applicable taxes. Payment is due upon execution of the licensing contract and is payable in Euro (EUR) currency.

Future revisions, potential bug fixes and customer support are included in the licensing costs for the period of one year as far as they refer to existing features.

Additional update fees may apply for future DIRAC versions that incorporate new features. In this case you are offered the choice if you want to update or stay with the current version of DIRAC.

Upgrading form STUDIO to PRO
Upgrading from STUDIO to PRO is possible at any time (the cost is the difference between STUDIO and PRO).

Source Code Licensing and customization/porting
DIRAC source code is available in special cases (commercial use only) upon request,
please inquire for more details and prices. Note that the cost for source code licensing is generally at least twice the cost for the up-front licensing of DIRAC PRO.

Porting to other platforms and delivery of custom-tailored versions can be arranged, please inquire.

Note that the most efficient way is to first incorporate the free DIRAC LE library into your application and upgrade to STUDIO and PRO as needed. The changes to your code will be minor to non-existent. You will find the documentation for all 3 versions on our download page.

How do I get the STUDIO and PRO version?
Licensing STUDIO or PRO is simple. Please
use our contact page for getting in touch with us. We will then email you our licensing contract as PDF file depending on your preferred option, and also send you our payment details. A CD ROM with the STUDIO or PRO binaries and documentation is shipped to you when the signed contract is received via fax or postal mail. Alternatively, you can download the binaries and documentation from our secure server for which you get an access code upon receipt of the signed contract.

Contact us!
We'd love to hear from you. Please use our
contact page to send us your questions or comments. Note that we've set up a contact form to prevent SPAM, you'll receive an email address and a personal contact with our reply.

DIRAC Version History

v1.2.9
DiracReset() now has an option to clear its state buffers. Other minor fixes. Added Universal Binary support

v1.2.8r1
Fixed glitch in sample rate converter and DiracReset()

v1.2.8
Fixed glitch at the beginning of the audio signal. DiracReset() should now be working more consistently

v1.2.7
Several minor fixes for interlaced mode and memory allocation

v1.2.6
Fixed quality problem in kDiracLambda1 for kDiracQualityBest. Optimized formant handling. Formant correction now works correctly in kDiracLambda1 and kDiracLambdaPreview

v1.2.5
Fixed interlaced channel callback on Windows

v1.2.4
Removed obsolete code and fixed memory leaks

v1.2.3
Cleaned up code and reinstated package flags

v1.2.2
Reinstated formant handling
Extended ranges for pitch, time and formant handling to 10x/0.1x

v1.2.1
Optimized better and best quality modes

v1.1.0
Implemented pitch/intonation correction
Fixed a problem with glitches during dynamic pitch shifts when the shift changed sign

v1.0.5
Many internal bug fixes, wrong return values etc.
Fixed a problem with the cache management
Fixed a long term quality issue (> 5 min. play time) due to a wrong type cast
Moved to Xcode 2.1 on the Mac
Introduced kDiracPropertyCacheGranularity selector for DiracSetProperty() which sets the minimum chunk size the cache uses for consecutive reads. The range is 0-4096. Note that this feature is somewhat experimental at this time and should probably not be used in a retail product without further testing

v1.0.2
Setting processor type to be at least a G4 on the Mac. Previous versions would only run on G5 equipped Macs
Fixed annoying audio garbage in the last buffer to be processed
Changed internal settings for the kDiracQualityGood mode to provide better performance while also offering improved quality

v1.0.1
Fixed a quality problem in preview mode
Fixed a potential crash in modes other than preview
Removed kDiracLambda6 enum (this was left over for debugging only)
Did some further optimization
Fixed gain mismatch in preview mode
Other minor bug fixes

v1.0.0
First release

 

DIRAC Frequently Asked Questions

Q: Will there be a Linux version?
A: Yes, I am working on a linux version at this time. I'm planning for compilation under Debian linux on x86 CPUs with other flavors upon demand.

Q: What will it cost to license source code?
A: There are no "general terms" for source code licensing. Licensing source code depends on what you intend to do with it and is therefore subject to discussion and further negotiation. The licensing fee is a one-time up-front payment and would depend on who you are and how large your user base is. Note that the cost for source code licensing is generally at least twice the cost for the up-front licensing of DIRAC PRO.

Q: When will the STUDIO and PRO versions become available?
A: STUDIO and PRO are planned for release in July 2005

Q: Is there any way to process the audio in a random-access manner, possibly even reverse playback?
A: Not yet, but I am working on an addition to the API that allows realtime non-sequential playback of audio for special effects (unlimited time stretching, reverse effects) and DJ applications.

Q: Evaluating DIRAC using the examples is a bit cumbersome. Do you have any other way of demoing the technology?
A: I am working on both audio examples and standalone demo applications on the MacOS and Windows platforms at this time. They will become available as a free download off the DSP Dimension web site.

Q: What about a 64bit Windows version?
A: A 64bit Windows version is currently being worked on. If you're interested in evaluating a pre-release version please contact me and I will send you the required prototype NDA as well as more information on the planned release of a 64bit version of DIRAC

Q: If I process my files using the demo projects I'm always getting a mono file as a result. What gives?
A: The AIFF file reader (miniAIFF) I am using in the demo application cannot write stereo interlaced AIFF files at this time. It will also always use the left input channel for its processing. This is not a restriction of DIRAC but rather one of the demo project which could easily be changed by duplicating processing to include two instead of one channel.

Q: I'm having problems getting DIRAC LE to run in realtime. What's the best setting?
A: Try using kDiracLambdaPreview in combination with kDiracQualityPreview for the fastest rendering. Quality can be further improved by using kDiracLambda3 in combination with kDiracQualityPreview or kDiracQualityGood if your target system can handle the load. I'm still working on optimizing DIRAC more, the initial 1.0 release was more concerned with quality than with performance so you should see an improvement with the next releases. As a ballpark number for the Mac platform, the fastest setting takes up about 26% for stereo processing and the better setting uses about 38% CPU on a G5/2GHz Macintosh with MacOS X 10.4.1. I'm compiling a performance figure for the PC right now (there's a larger variance due to the greater variety in systems and CPU architecture).

Q: What about Intel Macs and the new Universal Binary format?
A: I have made certain that there are no issues with the new Macintosh models. DIRAC is entirely Intel-ready and compiles directly in the new format including all optimizations that I've implemented so far.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Last change: 04.10.2006, ©2005-2006 S. M. Bernsee, all rights reserved. Content subject to change without notice. Content provided 'as is', see disclaimer.