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

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 Picker Engine (PE) and a Processing Mix Engine (PME), both of which rely on the complex heavy duty Music Analysis preprocessing and the Song Metadata, as well as the Stem Splitting. 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).
Stem Splitting
Through complex AI techniques, songs are split into three important parts - Vocals, Drums, and Music. Sometimes it is necessary for the Processing Mix Engine to reduce the volume of the vocals to avoid vocals clashing during the mix. Also it is best during the mix overlap to not be playing the drum tracks of both songs at the same time at full volume. By making available to the Processing Mix Engine the individual Stems for the song it allows the volumes of the component parts to be independantly adjusted during the mix.
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 initial 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. 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.
Picker 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, 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 times 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 accurately in sync) plays a WAV audio
file and a silent TS video file to avoid the inaccuracies associated
with a compressed MP4 file. During the mix, the player also makes
use of additional WAV files (made up of Stems at varying volumes) that
were produced by the Processing Mix Engine.
Each player instance controls its own
faded volume and video opacity.
The next song start is accurately initiated
by the current song's player at the exactly required time to ensure
proper syncing and phrase matching.
The time to launch an instance of a player is
accurately measured (in 100 nanosecond ticks) and adjusted accordingly.
Automated DJ App

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 server 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