DJ Touch
This is a touch-enabled virtual DJ application that features a spinning vinyl record and sound controls. This application targets the All-In-Wonder Entertainment market.
Introduction
Using a DJ application on laptop/desktop with a mouse has always been difficult and unnatural. Mouse interaction does not allow for multi-touch events. Hence, you cannot perform multiple tasks at the same time. This slows down performance and makes the DJ task difficult and cumbersome.
What about DJing on a tablet? That certainly does work well given the small screen and limited processing resource. Simply, it is not cool.
All-In-One's 27" multi-touch screen and compact table-top design is the ultimate solution. All-In-One's powerful core i7 is great for sound processing. It's superb sound quality is always an awesome bonus.
The Idea
The All-In-Wonder's gargantuan 27" touch screen is perfect for a virtual DJ application. This application features a spinning vinyl record that allows the DJ to physically "scratch" the spinning record for special sound effects. Additionally, numerous sound controls are also available at the DJ's disposal. These sound controls include master volume, equalizers, fader, and fx, etc... Of course, it will also provide real-time sound visualizations and a handy GUI. These visualizations include waveform displays and VU meters. Best of all, it will feature a dual deck interface for mixing and fast switching between songs.
DJ Touch will allow user to load multiple songs into a playlist. The user then selects a song from the list to play with the the deck they choose. A cross-fader will allow for smooth transitioning between decks/songs. The application allows user the option to let DJ Touch handles transition automatically to ensure continuous play.
How embarrassing would it be for a DJ if he/she does not have a song by user request? Fear not! DJ Touch could connects directly to an only music store like Amazon MP3. The purchased MP3 will automatically be stored and added to the playlist. An amateur DJ will now have access to a vast music database with just a few button clicks and a reliable WIFI connection. And why not let peers share their music through Bluetooth from their mobile device?
DJ Touch will market as an entertainment tool rather than a professional DJ application. All-In-One's colossal multi-touch screen will make this task easy and enjoyable for any type of user.
The Code
For the Demo App, I will utilize C# and WPF XAML. I will also leverage Audio DJ Studio for advanced digital sound processing capabilities. This will enable me to develop the proof of concept demo application quickly. This enables me to put focus on developing the interface and user experience.
In this section, I will go over the projected implementation of some features mentioned above.
The spinning vinyl disc is a continuously rotating image. RotateTransform is used to rotate the image continuously.
<Image Source="disc.png" Height="24" IsManipulationEnabled="True">
<Image.RenderTransform>
<RotateTransform CenterX="12" CenterY="12" />
</Image.RenderTransform>
<Image.Style>
<Style>
<Style.Triggers>
<Trigger Property="Image.IsEnabled" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="RenderTransform.Angle"
From="0"
To="360"
Duration="0:0:1"
RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Image>
To enable the record scratch behavior, the rotating image will also listen to multi-touch event. This is done by setting the IsManinulationEnabled property to True. In the codebehind, we can override 2 methods: OnManipulationStarting and OnManipulationDelta. OnManipulationStarting is triggered at the first multi-touch action while OnManipulationDelta might be trigger multiple time during a single user action.
Of course, our DJ Touch will also include a lively VU Meter. For this we simply use the GraphicBarManager. For displaying the sound wave profile, we use DisplayWaveform feature. Here is a little code snippet.
//creating a vu meter private IntPtr CreateVuMeter(Label ctrlPosition, enumGraphicBarOrientations nOrientation)
{ // create a new graphic bar IntPtr hWnd = studio.GraphicBarsManager.Create(m_windowHandle, (int)GetControlPosition(ctrlPosition).X, (int)GetControlPosition(ctrlPosition).Y, (int)ctrlPosition.ActualWidth, (int)ctrlPosition.ActualHeight); // set graphic bar range studio.GraphicBarsManager.SetRange(hWnd, 0, 32767);// enable automatic drop and set the requested orientation GRAPHIC_BAR_SETTINGS settings = new GRAPHIC_BAR_SETTINGS(); studio.GraphicBarsManager.GetGraphicalSettings(hWnd, ref settings); settings.bAutomaticDrop = true; settings.nOrientation = nOrientation; studio.GraphicBarsManager.SetGraphicalSettings(hWnd, settings); return hWnd; }
Fading between two decks (players) can be done using the FaderObject
// initialise the Fader on deck 0 and deck 1 studio.Fader.Init (AudioDjStudio.enumFadeTypes.FADE_SINGLE, 0, 1); // set the fade-in and fade-out duration studio.Fader.FadeInLength = 3000; studio.Fader.FadeOutLength = 4000;
DJ Touch will feature a simple equalizer with 3 sliders: Low, Mid, and High. We can initialize these equalizers with AudioDJStudio in a XML declaration. Each slider is configured with a frequency of operation.
<Equalizer> <Bands> <Band FreqInHz="80" BandWidth="12" GainIndB="-5.200000">Low</Band> <Band FreqInHz="1000" BandWidth="12" GainIndB="-3.000000">Mid</Band> <Band FreqInHz="14000" BandWidth="12" GainIndB="-3.120000">High</Band> </Bands> </Equalizer>
DJ Touch tracks the song playlist in memory. User is allowed to load a single song or an entire library. The song names and their locations are kept in memory. The sound data will not be loaded until user chooses to play it.
Audio DJ Studio allows each deck to output to its own channel, separately. This feature, however requires 2 audio outputs. Lenovo All-In-One features only a single 3.5mm audio. This challenge could be overcome by using a USB audio device to allow for multiple output channels. DJ now could listen to one deck while playing with the other through the main output. A Bluetooth enabled headset can also be an option that is worth investigating.
To keep it simple, the Amazon MP3 music store can be integrated into DJ Touch by wrapping it within a XAML Web Browser control. User can select a button to display the browser, login, search, purchase, and play; all without exiting DJ Touch.
Platform
All-In-One
Category
Entertainment
Language
C# and XAML
Conclusion
DJ Touch is a project that can be expanded to include many new features and sound processing capabilities. With time and effort, it can evolve into the professional market for DJs. But as an entertainment toy, I would love to have a DJ Touch when I host a party at home or at a clubhouse.