About Brad Fortner

Brad Fortner – Developer and Owner Convergence Communications

Convergence Jukebox on an ASUS TS10 VivoStick


It was time to retire and modernize the hardware in my initial working version of Convergence Jukebox. This time around I needed to use Windows 10 as network viruses kept crashing my old no longer supported Windows 7 computer. My computer of choice for this installation was the ASUS TS10 VivoStick.

While the $165.00 (CDN) TS10 VivoStick specs aren’t impressive, the stick computer does contain a Quad-Core Intel Atom x5-Z8350 processor which includes Intel HD Graphics. It also has two Full Size USB ports (including 3.0), a headphone jack, Bluetooth, Wi-Fi, 32GB of Flash Storage and –most important– it comes with Windows 10 home. When I added a generic ($35 CDN) 128 GB 3.0 USB stick as drive D, the total cost to test it out $200 CDN.

This total price was a bargain given the VivoStick with Windows 10 installed was the same price ($165 CDN) as purchasing Windows 10 Home software from Microsoft Canada. And most important for this project is that the VivoStick has hardware specs that should be enough to run Convergence Jukebox. One additional piece of hardware I needed was a 4-port powered USB 3.0 HUB as the Convergence Jukebox configuration requires 3 USB connections.


Convergence Jukebox Hardware From Left to Right: X-keys® XK-24 Programmable Keypad, Powered USB Hub with XK-24 and Weavefuture Coin Acceptor AK5 System via a Weavefuture USB Jukebox Interface Board plugged in to ASUS VivoStick, ASUS VivoStick with 128 GB 3.0 USB stick plugged in acting as drive D

The bottom line…. It works. And it pretty much worked right out of the box using Convergence Jukebox For Windows v0.3 software and it works with the WeaveFuture Coin Acceptor. However I did have some work to do in getting the hardware operational.

First I went through the process of speeding up Windows 10 with the help of this article titled “How to speed up Windows 10 By Nate Drake“.


Because the TS10 only has 32GB of Flash Storage reducing the footprint of Windows 10 on the VivoStick was a priority. I started by uninstalling and erasing all of the unnecessary software on the Flash storage. I did not use PC Decrapifier because I wanted to closely review the software I removed because I did not want to accidentally erase required Audio and Video drivers. I did remove the VivoRemote software and all of ASUS’s product management tools as part of the process to reduce the footprint.

Despite reading numerous online articles that indicated one would only have 4 gig remaining, I was able to free up 10 gig of flash drive space after being persistent. I was able to achieve this using a new piece of public domain software called  BleachBit.


BleachBit freed up almost 6 gig of flash drive space after I had exhausted all my usual bag of tricks so it was worth using. There was one other piece of software I had to employ.

The latest features update of Windows 10 proved to be too large to install on the VivoStick. It downloads onto the VivoStick but in order to install it needs 16-20 gigs of storage space. Windows update kept sending update error messages to the screen which overrode the Jukebox app.

To overcome this I used wushowhide which is a troubleshooting app from Microsoft that allows you to show or hide Windows Updates. It allowed me to stop the update until I can find a better solution.

In addition rather than install the Convergence Jukebox For Windows v0.3 to drive C, I installed it to drive D given its 128 GB disk size.

One last thing. While transferring my library of songs I reached a limit of what I could transfer to the  generic ($35 CDN) 128 GB 3.0 USB stick that I use as drive D. It turned out that the USB stick was formatted as FAT32 which has limitations. A quick reformat of the USB stick to NTFS solved the problem.

Convergence Jukebox 0.4

We just added a patch to the original version of Convergence Jukebox bringing it up to version 0.4. If you’re having trouble getting a coin machine functioning directly with Convergence Jukebox run coinreader.exe. It’s a Python program that waits for the <x> key to be pressed. When it’s run coinreader.exe creates a file called credits.txt with 0 value. When coinreader.exe reads an <x> generated from a WeaveFuture Coin Acceptor it adds a credit the credits.txt file.

When Convergence Jukebox senses the credits.txt file it looks for a change to credits.txt 60 times per minute. When it senses an update the credits are are reflected immediately on the GUI. If no credits.txt file is found Convergence Jukebox acts exactly like it did in version 0.3. When a credit is used it’s subtracted from the credits.txt file and the Jukebox GUI screen is updated.

New Look Convergence Jukebox 2.0 Designs And Opening Animation

Here are the latest designs of the Convergence Jukebox KIVY based opening screen with its new retro look. As well I added some more test animation or the opening screen. As I complete the software the blue oval will update users about where they are in the start-up sequence as the records shuffle via animation.

I need to attribute the Creative Commons graphic elements used in this sequence;

Convergence Jukebox 2.0 More Designs

Convergence Jukebox 2.0 Design


Convergence Jukebox New Rotating 45RPM Feature In Development

It’s taken some time but this video shows the first demonstration of the new rotating 45RPM record display developed for Convergence Jukebox 2.0 using Kivy. It will be added at a future date. The code will not only include the ability to rotate the record as shown above, but also the ability to generate the 45RPM records Artist/Title labels on the fly for immediate display. The code for this application is available on GitHub at https://github.com/bradfortner/Kivy-Working-Examples/blob/master/45%20RPM%20Record%20Rotation%20Using%20Scatter.py and at https://github.com/bradfortner/Kivy-Working-Examples/blob/master/45RPM%20Record%20Label%20Engine.py


Convergence Jukebox Web and Github Sites Updated.

It’s been almost a year but today I did my initial commit to the new Convergence Jukebox 2 software. Users wont find much difference between the two versions other than the Jukebox 2 GUI code is written using Kivy. My belief is that a Kivy base will allow me to speed up new features for Convergence Jukebox 2, many of which I have preliminary working Python code for.

During the year of re-coding errors on the Github site were reported –primarily missing files– which I took time this morning to fix. Everything from a Windows OS perspective appears to be working and I updated the associated readme’s to explain how to use the software.

Convergence Jukebox 2 Featuring Kivy GUI Now Posted To Github Site

The initial commit of of Convergence Jukebox 2 is now available on its Github page.


Convergence Jukebox 2 Kivy Based GUI

Convergence Jukebox 2 is an update to the original Convergence Jukebox using a Kivy based GUI in place of Tkinter. Convergence Jukebox 2 is now the working version of the software meaning it will be continually developed from this point forward.

Convergence Jukebox 2 is a fully functional retro jukebox application. It emulates “physical” jukeboxes and is written in Python. The software has been designed to be fully functional, playing mp3’s both randomly and via a credit system.

Convergence Jukebox 2 is open source Python based software that has been written in Python 2.7 to emulate a “retro” style jukebox. The type of jukebox that was popular in bars, restaurants and recreation areas during the 1950’s and 60’s. Written from scratch by Brad Fortner of Convergence Communications, Convergence Jukebox 2 plays properly formed ID3 tagged mp3 media.

The Jukebox can be controlled for “personal” use by your computer keyboard but is better operated with a USB keypad. Its output resolution is modifiable allowing it to connect to inexpensive computer, laptop or TV displays with its “retro look and feel”. It can even be connected to bill, coin or card acceptors for “pay to play” situations. More information can including an FAQ and instructions on how to format mp3’s be found on the Convergence Jukebox blog at www.convergencejukebox.com.

Features include;

  • Unlimited mp3 library size: Currently operating in our development centre is a version containing 15,800 mp3 files. This implementation runs on minimum hardware. In this case it’s an HP MINI 210 PC that contains an Atom N450 processor, 1024 MB of memory and a ‎160.0 GB hard drive. Jukebox 2.0 has yet to be tested on a Raspberry Pi.
  • Automatic Song Detection: MP3 library database is built automatically when additional properly formed ID3 tagged files are added to the media folder and the program is restarted.
  • Multiple Display Resolutions: Developers can change display resolution, skins and customize all items on the screen (such as song name positions) using Python Kivy code.
  • Customizable To Your Location: The Jukebox name or service at top of arch can be customized in the Python Kivy code.
  • Background Music System: Convergence Jukebox plays library loaded in Jukebox in a continuous manner randomly. Makes an excellent background music system.
    • Different Styles Of Music: mp3’s can be tagged with genres in comment area of ID3 tag. Random play can be set to play specific genres by altering a simple text file.
    • Songs Can Be Skipped: mp3’s can be tagged “norandom” meaning they will never play randomly. This means mp3’s with potentially unsuitable content can only be played if selected.
    • Avoids Repeating The Same Songs Continuously: mp3’s on the random list are only played once during a random play cycle.
    • Automatic Resetting Of Random List: Convergence Jukebox resets the random list when the software is rebooted or all selections in the jukebox have been played once randomly.
  • Clearly Identified Songs: While song is playing, song title and artist are displayed prominently under the Jukebox arch on the display.
    • More detailed song information is displayed in the green display (top left) that includes year released, song length and album name pulled from the mp3 id3 tags.
  • Convergence Jukebox plays user selected songs (paid) as a priority: When selected songs are listed in order of selection under the Upcoming Selections heading in the status area.
    • Users cannot select the same song if it’s on the Upcoming Selections list. This eliminates the same song from being played repeatedly.
    • Songs played via selection are removed from the random playlist. This eliminates the same song from being played repeatedly.
    • Random play resumes once user selected songs have completed playing.
  • Number of Credits, cost per credit and the number of songs available in the library are clearly displayed (and editable in the Python code) at the bottom left of the green screen .
  • Users can navigate through available music using up/down/left/right navigation keys.
  • Users can navigate through music selecting songs by either Title or Artist.
  • Users can navigate to the alphabetical start of either Artist or Title using specific letter keys that employ multiple keypresses.
  • A log is kept of each song played randomly, each song paid to play, when the Jukebox is rebooted, when songs are added and when a new random list is generated.
  • Python code has been written for is included in Convergence Jukebox that’s not been documented in the released version that talks to the Dropbox folder to providing RSS feeds for digital signage systems. As well as It is possible to include code to create tweets to Twitter accounts making the jukebox useful as a global barker system.

New In Convergence Jukebox 2.001;

  • Jukebox GUI re-written in Kivy.
  • Bug fix so last song on selection screen can now be accessed.
  • Artists are kept in proper alphabetical order including bands that start with The.
  • Bug fix so GUI wont crash when there are no titles or artists during Title Or Artist selection search.

The Convergence Jukebox website at http://www.convergencejukebox.com contains links to Python source code.

Convergence Jukebox 2.0 Will Feature #Kivy GUI.

For the record I haven’t stopped developing Convergence Jukebox. I’m looking at a number of new features and improved interoperability. I spent the last several months working towards additional features and have developed initial code that includes;

  • An additional module that searches Wikipedia and returns Artist info as song is playing for possible display.
  • A panel that allows one to select Genres, Year Range and Artist names for random play
  • The ability to search by typing in artist or song names to narrow searches down.
  • A module that will add “The” to bands whose names begin with the while maintaining alphabetical order.
  • Animation that will potentially show a 45RPM record spinning with artist name and title while music is playing.

To add all these features to Convergence Jukebox I decided that I could no longer work with tkinter. So I opted to learn Kivy after reading about it’s many features that seem much more modern in its design. So today I proud to display a development image of Convergence Jukebox 2.0 with it’s main screen being rendered by Kivy. It will look pretty familiar displaying all of the objects positioned on the screen required to be functional in it’s initial release. Here’s what it looks like;


I’m hoping that a Kivy version will be much easier to package for Windows, Mac and Raspberry PI. As well Kivy offers a path to an Android and IOS version using its Python Code base.

You can find more about what I’ve been learning about Kivy by following a series of blogposts starting with Kivy For The Non Computer Scientist – Part 1: Making It Simple. And more specifically you can look at Kivy For The Non Computer Scientist – Part 17: Making Natural Looking GUI’s Using Kivy’s Float Layout.