{"id":235,"date":"2026-01-11T18:33:31","date_gmt":"2026-01-11T18:33:31","guid":{"rendered":"https:\/\/paulmcgrath.net\/?page_id=235"},"modified":"2026-01-11T18:33:31","modified_gmt":"2026-01-11T18:33:31","slug":"karaoke-server-and-player","status":"publish","type":"page","link":"https:\/\/paulmcgrath.net\/?page_id=235","title":{"rendered":"Karaoke Server and Player"},"content":{"rendered":"\n<p>Karaoke Server and Player is a complete desktop Karaoke management application for Windows written in Python.  It supports mp3 with cdg (mp3+g) in pairs or as mp3+g zip files as well as MP4.  The traditional source of these include publishers such as Sunfly and MrEntertainer.<\/p>\n\n\n\n<p>There are four main components:<br>1.) Administration<br>2.) Web Server<br>3.) Player<br>4.) Queue<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p><strong>Administration<\/strong><br>You can add your source Karaoke folders which are indexed producing a quick and efficient JSON file for searching by through the web server app.<\/p>\n\n\n\n<p><strong>Web Server<\/strong><br>There is a web server with zeroconf\/mdns functionality allowing it to be accessed by a fixed name on your local network as well as an IP address which you can open to the public.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"792\" height=\"790\" src=\"https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-server-app.png\" alt=\"\" class=\"wp-image-240\" srcset=\"https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-server-app.png 792w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-server-app-300x300.png 300w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-server-app-150x150.png 150w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-server-app-768x766.png 768w\" sizes=\"auto, (max-width: 792px) 85vw, 792px\" \/><\/figure>\n\n\n\n<p>A dynamic QR code is created allowing your party guests to access the web server app.  You can enter the server address and port and a new code is generated.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p><strong>Player<\/strong><br>You launch the player from the app.  A full screen blank window appears with some player controls.  The songs from the queue will automatically play.<br><br>You can restart or pause the current track or skip to the next track.  This is dependent on the config of the CDG file.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-titlescreen-1024x576.png\" alt=\"\" class=\"wp-image-241\" srcset=\"https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-titlescreen-1024x576.png 1024w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-titlescreen-300x169.png 300w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-titlescreen-768x432.png 768w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-titlescreen-1536x864.png 1536w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-titlescreen-1200x675.png 1200w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-titlescreen.png 1920w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-lyrics-1024x576.png\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-lyrics-1024x576.png 1024w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-lyrics-300x169.png 300w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-lyrics-768x432.png 768w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-lyrics-1536x864.png 1536w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-lyrics-1200x675.png 1200w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-lyrics.png 1920w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><strong>Queue<\/strong><br>Clients can use browsers on their mobile devices to remotely access the server and search tracks and add them to a queue.<\/p>\n\n\n\n<p>Entering their name then searching their choice will be added to a queue.<\/p>\n\n\n\n<p>The default mDNS address is <em>http:\/\/karaoke.local<\/em> but you can use your computer LAN ip address or port forward through your router.<br><br>In the desktop app the queue refreshes and updates every 10 seconds.  You can manage the queue, such as remove unwanted tracks.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"871\" src=\"https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-web-app.png\" alt=\"\" class=\"wp-image-242\" srcset=\"https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-web-app.png 620w, https:\/\/paulmcgrath.net\/wp-content\/uploads\/2026\/01\/karaoke-web-app-214x300.png 214w\" sizes=\"auto, (max-width: 620px) 85vw, 620px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p><a href=\"http:\/\/paulmcgrath.net\/downloads\/KaraokeServer.zip\">Download here<\/a><\/p>\n\n\n\n<p><\/p>\n<div class=\"pvc_clear\"><\/div><p id=\"pvc_stats_235\" class=\"pvc_stats all  \" data-element-id=\"235\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/paulmcgrath.net\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p><div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Karaoke Server and Player is a complete desktop Karaoke management application for Windows written in Python. It supports mp3 with cdg (mp3+g) in pairs or as mp3+g zip files as well as MP4. The traditional source of these include publishers such as Sunfly and MrEntertainer. There are four main components:1.) Administration2.) Web Server3.) Player4.) Queue &hellip; <a href=\"https:\/\/paulmcgrath.net\/?page_id=235\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Karaoke Server and Player&#8221;<\/span><\/a><\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_235\" class=\"pvc_stats all  \" data-element-id=\"235\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/paulmcgrath.net\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-235","page","type-page","status-publish","hentry"],"a3_pvc":{"activated":true,"total_views":13,"today_views":0},"_links":{"self":[{"href":"https:\/\/paulmcgrath.net\/index.php?rest_route=\/wp\/v2\/pages\/235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paulmcgrath.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/paulmcgrath.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/paulmcgrath.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paulmcgrath.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=235"}],"version-history":[{"count":14,"href":"https:\/\/paulmcgrath.net\/index.php?rest_route=\/wp\/v2\/pages\/235\/revisions"}],"predecessor-version":[{"id":255,"href":"https:\/\/paulmcgrath.net\/index.php?rest_route=\/wp\/v2\/pages\/235\/revisions\/255"}],"wp:attachment":[{"href":"https:\/\/paulmcgrath.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}