This is an overview of the longest and most complex project I have been working on so far, a digital mixing solution for DJs written using the C# language. I will go through some aspects of the software during the development phase, the suspension of the project and the conclusions I drew from this experience.
The software allows the user to mix digital files with a ‘traditional’ approach by using turntables. The system works by using a ‘time-code’ CD which is a special kind of Audio CD that contains a sequence of numeric codes along an error-correcting code for its robustness. Its role is to synchronize the playback of digital music according the user interaction with a turntable. In addition to the support of turntables, it supports the usage of MIDI-enabled DJ control surfaces for driving the performance, as well as navigating in the user interface.
Another major feature is the analysis and extraction of audio features from digital music files such as the tempo, the key chord and audio segments. These audio properties are useful to a DJ for organizing a collection of digital music files. By tagging music with keywords pertaining to the field of music composition, it allows for more creativity and the usage of the technique known as harmonic mixing.
Here you can see a video and a few screenshots of some parts and components that have been developed over time. Some of them are considered to be in a mature state, others are still in a preliminary state.
Figure 1 : a video showing the responsiveness of the system while tracking the time-code played by a CDJ-1000
Figure 2 : last version of the software using the WPF framework
Figure 3 : the presentation page of an artist, content is fetched from EchoNest
Figure 4 : an implementation of a high-quality colored bitmap font
Figure 5 : a preliminary implementation of a tag cloud
Figure 6 : the output of the time-code tracking smoothing system against burst errors
Figure 7 : first version of the software that is seen on the video
After 18 months of development I have decided to put the development of the project on hold, mainly by the lack of sufficient resources to react to market changes in a realistic time frame. If you look at the credits of the Traktor software you would see that nearly 70 people have participated in its development; obviously I can hardly compete with such workforce given the resources I have invested in and the time frame I have envisioned initially.
Between its inception and suspension there has been a lot of novelties in the field of technologies and computing. Of them, the appearance of touch-enabled devices, the advent of DJ control surfaces providing a MIDI time-code and finally, newer patterns in the software development world.
And since I was seeking for an A+ grade software, evidently I could not ignore and not adopt these newer techs in the project. The project however, is not being abandoned; it is just in a suspended state. I am currently elaborating and reviewing a strategy for the software to resurface later, with a different model, though.
The software is probably going to resurface within the next year, in a slimmed-down, refined and more modern version. You can expect it to be touch-enabled, a fully-featured offline mode (previously it had to rely to online services for the analysis of music), will be free and probably provide cloud-enabled features.
While I will easily admit that from a commercial point of view the software has been a failure, it was however a positive experience for me where I have learned many things in regard to programming, signal processing and the design of interfaces. Even if its development time stretched to the point of it getting suspended, I still consider it as an achievement by some ways. I’ll conclude by saying that the fact this project will resurface in the future mitigates somewhat that point.