Header
Carnation Construction
Contact Dave
Carnation
A-00 Page loading indicator

TVApps.com

TVApps.com is all about software technology. A particular focus over the last few years has been developing Automated DJ technology.

Dave mug shotDave contact details 

Automated DJ Technology

There are two important aspects to being a successful DJ - Picking the right song at the right time and Mixing between songs to create a continuous music experience.  The Automated DJ software does a good job of both.  It uses a Preference Engine (PE) and a Processing Mix Engine (PME), both of which rely on the complex heavy duty Music Analysis preprocessing and the Song Metadata.  At a dance party, all you have to do is wave your hands in the air and let people use the app to enter any specific requests.  The experience is enhanced by the fact that it uses music videos rather than just audio.

The Automated DJ System is applicable to...
1) Live Entertainment such as Dance Parties.
2) Automated radio stations.
3) Smart speakers such as Google Home and Amazon Alexa.
4) Jukeboxes for Bars and Resturants.
5) Music Video TV channels.
6) Streaming music services such as Spotify and Pandora.
7) Satellite radio stations such as Sirius XM.

Music Analysis

Almost all music has a structure and the job of the Music Analysis is to find that structure.  At the end of the analysis it knows to the exact millisecond where every beat is and the time at which each Phrase starts.  Typically dance music has 4:4 timing (sometimes called 4-to-the-floor) and has 16 beats in a Phrase.  Knowing the exact times of the Phrase starts and the duration of the Phrases is vital to doing good mixes, as is knowing the Key.

Processing Mix Engine

When mixing, the aim is to do Phrase matching between the outgoing song and the incoming song.  Complex processing is used to adjust the durations of the Phrases for the incoming song so that they exactly match the Phrases and the Beats of the outgoing song.  Other techniques such as beat swapping are also used.  It chooses between lots of different Mix Types based on multiple factors.  For example it avoids excessive overlaps between the two songs if it would cause the vocals from the outgoing song to overlap with vocals from the incoming song.  Even though Key Discontinuities are minimized through song selection, they do still occur in the case of specifically requested songs or if other factors outweigh the importance of Key Dissonance.  In this case, song overlap is minimized even though the Phrase timing between the two songs is still matched.

Preference Engine

This is all about picking the right song at the right time.
To select a single song, 100 songs are randomly selected and then each candidate is evaluated to see if it is the best fit.  The factors considered include User Rating, Genre, Year, How recently played, BPM, Key, Intro & Outtro, Party Phase, etc.
A factor in the choice of the next song is trying to avoid Key Dissonance.  It uses "David Guetta rules" to determine which keys are compatible.

Song Metadata

When a music video is downloaded from the internet there are many variables.  Volume levels are all over the place, it may have silence or boring stuff before the song gets going, it may have boring stuff on the end, and the accompanying metadata is inconsistent and often downright bad.  All these things need to be cleaned up as part of ingesting a new song into the library.  A wide range of software tools are provided to do the cleanup.

A quick to use metadata editor is provided to allow you to add and edit the metadata.  It works in conjunction with playing the music video so you can also set the start stop timing for the song.

Once a new song is in the library it is worthwhile to look for dupes and various de-duping tools are provided.

App Implementation

The processing of the next song is done while the current song is playing.
Each song is played in a separate instance of a specialized video player.
The player separately (but in sync) plays a WAV audio file and a silent TS video file to avoid the inaccuracies associated with a compressed MP4 file.
Each player instance controls its own faded volume and opacity.
The next song start is accurately initiated by the current song's player at the exactly required time to ensure proper syncing.
The time to launch an instance of a player is accurately measured (in 100 nanosecond ticks) and adjusted for.

 

Automated DJ App

VideoJukebox ScreenShot Main

The parties are run by my automated DJ software, sometimes called my VideoJukebox.  It automatically handles the picking of the appropriate songs at the appropriate times and also all the mixing.  All the DJ has to do is wave their arms in the air and dance, and let people use the app to add specific song requests to the queue.  The example party streams are just an output from the fully automated software.

 

Example Mixes

The example 4 hour mixes below are raw unedited recordings of the output from the Automated DJ software so you can hear what the mixing between songs sounds like.

Example 1

Example 2

Example 3 (80's flavor)

Example 4 (90's flavor)

Copyright

The streams are provided purely to demonstate the operation of my automated DJ software.  The content is available on YouTube, so presummably Google is happy with its copyright status, but if anyone does have a problem with any specific content, I apologize and if you send me email I will without delay remove the offending content.

Privacy

I promise to keep your email address confidential.  No data will be shared with anyone.

 

App Download

The app is currently available for test purposes for free.  If you would like a copy then send email to the TVApps.com email given above.  The app uses a secure seed and the seed will then download the app and example music videos.  When the app is run it checks the sever for permission.  Each copy of the app is tied to a particular email address so each user needs to request via email their own copy of the app.  Not following these rules may cause an app instance to be revoked.

 

Test Streams

These are just used to test performance on different platforms (nothing to see here).  Sometimes Chrome on Android has issues with HLS.

Test HD (HLS & DASH)

 

Test HLS only

 

Test DASH only