Convergence Jukebox Overview Python Toronto Meetup May 2016

23
www.convergencejukebox.com

Transcript of Convergence Jukebox Overview Python Toronto Meetup May 2016

Page 1: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

Page 2: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

wallbox jukebox

arcade 8 jukebox - (macromedia movie!!!)http://www.arcadejukebox.net

Page 3: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

written in python 2.7 (cross platform) and

licensed with a GNU V3 General Public License

Page 4: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

original usb keypads used in windows version (with auto hotkey)

X-keys® XK-24 programmable keypadhttp://xkeys.com

Page 5: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

original installation 2013

weavefuture coin acceptor ak5 with usb jukebox interface

boardhttp://www.weavefuture.com

christmas 2015

Page 6: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

python code runs on windows and raspian wheezy

Page 7: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

“just works” raspian image available for download

Page 8: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● three python programs.○ convergencejukebox.py

■ ensures hardware is compatible.■ initializes resolution, required folders, music and datafiles.

○ convergenceplayer.py■ creates database of mp3 music.■ plays music in endless loop.

○ convergencegui.py■ graphical interface (TkInter).■ user interface.

○ gui and player communicate by generating and reading data files.

how convergence jukebox works

Page 9: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● creates python list (array) of mp3’s.○ each mp3 is assigned a number○ most software manipulation involves mp3 number only.

how convergence jukebox works

Page 10: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● multiple display resolutions and skins.● jukebox name or service at top of arch can be customized.

features

Page 11: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● unlimited mp3 library size.● field version running over 10,000 mp3 files.

○ HP MINI 210 PC that contains an atom N450 processor, 1024 MB of memory and a 160.0 GB hard drive.

● raspberry pi versions running 9400 mp3 files○ tested on raspberry pi 1 model B revision 2 with 512 MB ram, a

raspberry pi 2 and raspberry pi zero.○ 64.0 GB SD card to hold music.

features

Page 12: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● automatic song detection.○ MP3 library database is built automatically when additional

properly formed ID3 tagged files are added to the music folder and the program is restarted.

○ see “building an mp3 library” on website■ rejects mp3 if unicode in ID3 tag■ eg. Motley Crue vs Mötley Crüe■ ö - 19th letter of the Turkish alphabet■ not ascii

features

Page 13: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

features - ID3 tags (metadata engine)

Page 14: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

features - ID3 tags (metadata engine)

● does not make use of genre tag to identify genreo could not find standard to genre namingo genre tag only allows for one genre

● Convergence Jukebox makes use of the Comments tag for Genre.

Page 15: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● background music system.○ plays library loaded in jukebox in a continuous manner randomly.

● different styles of music.○ mp3’s can be tagged with genres.○ random play can be set to play specific genres by altering a simple text

file. (genre_flags.txt)

features

Page 16: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

features

plays mp3’s tagged with classicrock, newwave, newcountry, modernrock and modernpop randomly first.

plays mp3’s by Frank Sinatra, Dean Martin, Sammy Davis, Paul Anka, Nancy Sinatra between the years of 1960 to 1969 randomly first.

Page 17: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● songs can be skipped.○ "norandom" tags mean mp3 will never play randomly.

● 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.

○ random list is reset when the software is rebooted or all songs have been played once randomly.

features

Page 18: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● clearly identified songs.○ while song is playing, song title and artist are

displayed prominently under the jukebox arch.

○ detailed song information is shown in the green display

○ includes ■ year released■ song length■ album name

○ pulled from the ID3 tags.

features

Page 19: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● convergence jukebox plays paid songs as a priority.○ paid songs are listed as upcoming selections.

● users cannot select song if it’s on the upcoming selections list.

● songs played via selection are removed from the random playlist

● 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 displayed.

features

Page 20: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● users navigate through music using up/down/left/right keys.

● users can select navigation by either title or artist.

● users can navigate to the alphabetical start of either artist or title using letter keys that employ multiple keypresses.

features

Page 21: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● log generation.○ songs played randomly.○ paid songs.○ time jukebox is rebooted○ when songs are added○ when a new random list is generated.

● undocumented code ○ using dropbox folder to providing rss

feeds for digital signage systems.○ to tweet to twitter accounts making the

jukebox useful as a global barker system.

features

Page 22: Convergence Jukebox Overview Python Toronto Meetup May 2016

www.convergencejukebox.com

● Hsaudiotag – reads mp3 ID3 tags.● ctypes – used in Windows version to play mp3

files through Windows Media Control Interface. (Thanks Jim Lawless)

● mpg321 – used to play mp3 in Raspberry Pi (Wheezy) version.

● PyRSS2Gen – used to generate RSS feeds.

beyond the python standard library

Page 23: Convergence Jukebox Overview Python Toronto Meetup May 2016

github.com/bradfortner/convergence_jukebox

www.convergencejukebox.com

https://ca.linkedin.com/in/bfortner

www.bradfortner.com