Starting from Scratch: How VirtualDJ* 8 mixes Music and Technology

Abstract

Atomix Productions video and music mixer, VirtualDJ* 8,  was rewritten from scratch with an emphasis on a flexible user interface. These enhancements include multi-point touch support, use of a second screen for videos, and a transforming interface for different device form factors.;


Figure 1: VirtualDJ 8 Video

Introduction

How do you make an already popular application attractive to even more customers?  For Atomix Productions, the answer was to expand its app to provide a great experience on new form factors using multi-point touch and second screen video capabilities.

Atomix Productions promotes a user-centric design attitude for its products. From the Virtual DJ website http://www.virtualdj.com/products/virtualdj/why.html:
     "Our philosophy has always been to use cutting-edge technology to build tools that make DJing more accessible and help existing DJs mix better… we don't mind relegating the technical side of the mix to the machine, and help you focus on the creative and artistic side of your skills." 

This philosophy has led the program to become extremely popular with DJs. Atomix Productions website claims that they have had over 150 million downloads of their product and it is currently being used by more than 6 million different people every day.

But rather than rest on its success, Atomix Productions chose to stop focusing on feature additions to existing code and instead to rewrite the code from the ground up. Here’s what Gwen Roelants, Atomix lead developer, said in our interview : 

“It has been a very big undertaking…. but it was required to make the software ready for the future. The old code had grown over the years, and it would have gotten more and more difficult to keep the code clean and maintainable if we would just have continued putting new features in it. The biggest benefit is of course a clean codebase and a good architecture that is ready for the future. I don't know if we would do it again, but for now we should be good for years to come.” 

Gwen Roelants    
 Atomix Productions    

The Technology

Using a PC to DJ requires a lot of technology.  VirtualDJ 8 is much more than a media player and more than a mixer. DJs don’t just scratch songs and add many types of beat-aware effects. They need drops and loops, a sandbox to work on the next track before it goes live, and samplers that can act as sequencers. Today’s DJs want to record mixes as podcasts or broadcast live to Internet radio and edit and play video as well as audio while merging live performance and production. Just the points of interest (cue points, saved loops, automix points, beatgrid anchors, macro points and more) require extensive mapping and controls in the UI. Additionally the application has to be plug-and-play compatible with many DJ physical controllers and include an internal sound engine to process audio and run internal audio components including pitch stretching, limiter, equalizers, and filters. And now Atomix Productions has added multi-screen and multi-touch support and a transformable interface to make their product as easy to use and as powerful as possible. 

In addition to the feature enhancements, Atomix Productions made specific user interface enhancements in VirtualDJ 8 that make it more accessible and more powerful. Here’s more information on some of the technological innovations integrated into VirtualDJ 8, and how these changes were accomplished: 

Multiple screens running independent content: VirtualDJ allows audio mixing on the DJ’s screen while playing videos, live feed, or Karaoke on a big screen. Either screen can be run independently or VirtualDJ 8 can be tied to the audio mix, even fade between two music videos matching the fade over of the music. VirtualDJ 8 uses Windows* extended screen mode through
the QueryDeviceConfig API. And by using the standard implementation, VirtualDJ 8 is automatically capable of using a wireless display via Miracast* or Intel® Wireless Display.

But with two screens, there’s thousands of potential screen sizes and resolutions that the UI must fit while keeping the aspect ratio and performance intact. As Gwen noted “It has helped a lot that we considered multi-touch and various resolutions from the beginning. To take benefit of the new high-DPI screens we made sure that text is always rendered at the native resolution even when scaling the user interface to different resolutions."                                                                  

Multiple Physical Formats: For an app to run on a variety of devices from All-in-Ones, clamshells, and tablets, to 2 in 1s (laptop to tablet convertibles);  it’s not just a matter of screen size and resolution or landscape vs. portrait orientation. Figure 4 shows some of the challenges. It’s important for VirtualDJ 8 to detect the screen orientation in a rapidly changing environment. VirtualDJ 8 listens for the WM_SETTINGCHANGE event, as documented at https://software.intel.com/en-us/articles/detecting-slateclamshell-mode-screen-orientation-in-convertible-pc. Again to quote Gwen:

“Of course the exact same interface will not be optimally suited for touch screens and using mouse and keyboard, so for touch screens we designed a different interface. On the 2 in 1 laptops that can work in both tablet and keyboard mode, we listen for the ConvertibleSlateMode setting change and automatically change to the appropriate interface for the current mode.“ 

Multi-point touch: Given the historic hands-on nature of DJing, multi-point touch brings the virtual mixer back to its roots. But programming multi-point touch interaction takes a lot of planning, both for the interactive layout and for the proper sizing to ensure usable buttons and sliders.

From Gwen: "For multi-point touch we also ensured
that our core (code) was ready for this in a platform-independent way. It was very easy to then use the standard Windows API (WM_TOUCH) for multi-touch
to capture the different touches and pass them to the interface.”   

See https://software.intel.com/en-us/articles/ultrabook-device-and-tablet-windows-touch-developer-guide for
all the info you need to implement multi-point touch in your app.
                                       

Varying compute power:  Just like the requirement to work on various physical formats, modern applications must also work on systems with varying compute power from the minimal to the very powerful while maximizing the available compute power. One example is running 2 platters on tablets while a laptop or 2 in 1 may run up to 6 platters.Gwen said “As computers get faster, different trade-offs can be made in terms of speed vs quality. Developments in computing power towards multi-core and GPUs also require some thought and this can be much better taken care of if it had been thought about from the base."

Cloud CapabilitiesDJs need quick access to thousands of songs as well as karaoke and music videos, even when the sheer volume of music on the Internet can be overwhelming to search. Atomix provides a ContentUnlimited service for a monthly fee that auto searches for music, karaoke, and video. 

Scripting: VirtualDJ 8 provides a scripting language that DJs can use to tweak the many provided functions.  For more info see http://www.virtualdj.com/wiki/VDJscript.html.


Figure 5: VDJscript sample

       
  SDK and Community Sharing: Atomix Productions provides a Developer SDK with sections for Skins, Plug-ins, and Component Developers and hosts the community site for sharing skins, controllers, effects, as well as mixes and blogs. http://wwww.virtualdj.com/community/index.html

Figure 6: Community Sharing Site at VirtualDJ.com

 

By deciding to update its app to work best on the many popular consumer devices available today, and to adapt to the evolving needs of its users, Atomix Productions has ensured that this version of VirtualDJ will continue the series' remarkable success. Make sure that your app is ready, too, by using the resources provided in this article.

Resources:


About the Author

Colleen Culbertson is a Platform Application Engineer with the Developer Relations Division, who authors articles and a regular blog on the Intel® Developer Zone.

Notices

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

UNLESS OTHERWISE AGREED IN WRITING BY INTEL, THE INTEL PRODUCTS ARE NOT DESIGNED NOR INTENDED FOR ANY APPLICATION IN WHICH THE FAILURE OF THE INTEL PRODUCT COULD CREATE A SITUATION WHERE PERSONAL INJURY OR DEATH MAY OCCUR.

Intel may make changes to specifications and product descriptions at any time, without notice. Designers must not rely on the absence or characteristics of any features or instructions marked "reserved" or "undefined." Intel reserves these for future definition and shall have no responsibility whatsoever for conflicts or incompatibilities arising from future changes to them. The information here is subject to change without notice. Do not finalize a design with this information.

The products described in this document may contain design defects or errors known as errata which may cause the product to deviate from published specifications. Current characterized errata are available on request.

Contact your local Intel sales office or your distributor to obtain the latest specifications and before placing your product order.

Copies of documents which have an order number and are referenced in this document, or other Intel literature, may be obtained by calling 1-800-548-4725, or go to: http://www.intel.com/design/literature.htm

Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark* and MobileMark*, are measured using specific computer systems, components, software, operations, and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products.

Any software source code reprinted in this document is furnished under a software license and may only be used or copied in accordance with the terms of that license.

Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.

Copyright © 2014 Intel Corporation. All rights reserved.

*Other names and brands may be claimed as the property of others.

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.