{"id":3916,"date":"2012-09-13T22:06:26","date_gmt":"2012-09-14T05:06:26","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/?p=3916"},"modified":"2012-09-13T22:06:26","modified_gmt":"2012-09-14T05:06:26","slug":"chiptune-database-and-api","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/","title":{"rendered":"Chiptune Database and API"},"content":{"rendered":"<p>So I set out to create <a href=\"http:\/\/gamemusic.multimedia.cx\/\">a website that allows people to easily listen to video game music directly through their web browser<\/a>. I succeeded in that goal. However, I must admit that the project has limited appeal since the web player is delivered via <a href=\"https:\/\/developers.google.com\/native-client\/\">Chrome&#8217;s Native Client technology<\/a>, somewhat limiting its audience. I&#8217;m not certain if anyone really expects NaCl to take off in any serious way, but I still have a few other projects in mind.<\/p>\n<p>I recently realized that, as a side effect of this project, I accidentally created something of significant value to fans of old video games and associated music&#8211; <strong>a searchable database of chiptune music and metadata<\/strong>. To my knowledge, no one else has endeavored to create such a thing. I figured that I might as well make the database easily accessible with an API and see where it leads.<\/p>\n<p>To that end, I created 2 API entry points. First, there is the search API located at http:\/\/gamemusic.multimedia.cx\/api\/search\/. This can be exercised by ending the URL with a URL-encoded search string, e.g.: <a href=\"http:\/\/gamemusic.multimedia.cx\/api\/search\/super+mario\">http:\/\/gamemusic.multimedia.cx\/api\/search\/super+mario<\/a>. This returns JSON data containing an array of results in decreasing order of relevance. Each result has a game title, database ID, media URL, system type, and an SHA-1 hash. This is the same API that <a href=\"http:\/\/gamemusic.multimedia.cx\/search\/?q=super+mario\">the site&#8217;s own search page uses<\/a>.<\/p>\n<p>The database ID can be plugged into http:\/\/gamemusic.multimedia.cx\/api\/metadata\/ to retrieve the song&#8217;s metadata in JSON format. E.g., the ID for Super Mario Bros. 3 on the NES is 161: <a href=\"http:\/\/gamemusic.multimedia.cx\/api\/metadata\/161\">http:\/\/gamemusic.multimedia.cx\/api\/metadata\/161<\/a>.<\/p>\n<p>I recently read <a href=\"http:\/\/www.bitnative.com\/2012\/08\/26\/how-restful-is-your-api\/\">an article about sins against true RESTful API principles<\/a> which led me to believe I&#8217;m almost certainly doing this web API stuff wrong. I don&#8217;t think it&#8217;s a huge deal, though, since I don&#8217;t think anyone actually listens to chiptunes any more. But if there are offline chiptune music players that are still in service and actively maintained, perhaps the authors would like to implement this API. It would require some type of HTTP networking library, a JSON parser, <a href=\"http:\/\/tukaani.org\/xz\/embedded.html\">the embedded XZ decoder<\/a>, and some new code to parse through my .gamemusic and .psfarchive formats.<\/p>\n<p>This database could be a significant value-add to chiptune playback software, and could help people experience classic game music much more easily.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>My game music website&#8217;s database of chiptunes might be useful to offline music players as well<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3916","post","type-post","status-publish","format-standard","hentry","category-general"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"My game music website&#039;s database of chiptunes might be useful to offline music players as well\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Multimedia Mike\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Breaking Eggs And Making Omelettes | Topics On Multimedia Technology and Reverse Engineering\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Chiptune Database and API | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta property=\"og:description\" content=\"My game music website&#039;s database of chiptunes might be useful to offline music players as well\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2012-09-14T05:06:26+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2012-09-14T05:06:26+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Chiptune Database and API | Breaking Eggs And Making Omelettes\" \/>\n\t\t<meta name=\"twitter:description\" content=\"My game music website&#039;s database of chiptunes might be useful to offline music players as well\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#article\",\"name\":\"Chiptune Database and API | Breaking Eggs And Making Omelettes\",\"headline\":\"Chiptune Database and API\",\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"},\"datePublished\":\"2012-09-13T22:06:26-07:00\",\"dateModified\":\"2012-09-13T22:06:26-07:00\",\"inLanguage\":\"en-US\",\"commentCount\":6,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#webpage\"},\"articleSection\":\"General\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/general\\\/#listItem\",\"name\":\"General\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/general\\\/#listItem\",\"position\":2,\"name\":\"General\",\"item\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/general\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#listItem\",\"name\":\"Chiptune Database and API\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#listItem\",\"position\":3,\"name\":\"Chiptune Database and API\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/category\\\/general\\\/#listItem\",\"name\":\"General\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\",\"name\":\"Breaking Eggs And Making Omelettes\",\"description\":\"Topics On Multimedia Technology and Reverse Engineering\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/\",\"name\":\"Multimedia Mike\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2eb93f7cada658f7986b5092062849fa255779eada3342c8f6b9a40764b95fdd?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Multimedia Mike\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#webpage\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/\",\"name\":\"Chiptune Database and API | Breaking Eggs And Making Omelettes\",\"description\":\"My game music website's database of chiptunes might be useful to offline music players as well\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/chiptune-database-and-api\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/author\\\/multimedia-mike\\\/#author\"},\"datePublished\":\"2012-09-13T22:06:26-07:00\",\"dateModified\":\"2012-09-13T22:06:26-07:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#website\",\"url\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/\",\"name\":\"Breaking Eggs And Making Omelettes\",\"description\":\"Topics On Multimedia Technology and Reverse Engineering\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/multimedia.cx\\\/eggs\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Chiptune Database and API | Breaking Eggs And Making Omelettes","description":"My game music website's database of chiptunes might be useful to offline music players as well","canonical_url":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#article","name":"Chiptune Database and API | Breaking Eggs And Making Omelettes","headline":"Chiptune Database and API","author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"},"datePublished":"2012-09-13T22:06:26-07:00","dateModified":"2012-09-13T22:06:26-07:00","inLanguage":"en-US","commentCount":6,"mainEntityOfPage":{"@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#webpage"},"isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#webpage"},"articleSection":"General"},{"@type":"BreadcrumbList","@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","position":1,"name":"Home","item":"https:\/\/multimedia.cx\/eggs","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/general\/#listItem","name":"General"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/general\/#listItem","position":2,"name":"General","item":"https:\/\/multimedia.cx\/eggs\/category\/general\/","nextItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#listItem","name":"Chiptune Database and API"},"previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#listItem","position":3,"name":"Chiptune Database and API","previousItem":{"@type":"ListItem","@id":"https:\/\/multimedia.cx\/eggs\/category\/general\/#listItem","name":"General"}}]},{"@type":"Organization","@id":"https:\/\/multimedia.cx\/eggs\/#organization","name":"Breaking Eggs And Making Omelettes","description":"Topics On Multimedia Technology and Reverse Engineering","url":"https:\/\/multimedia.cx\/eggs\/"},{"@type":"Person","@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author","url":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/","name":"Multimedia Mike","image":{"@type":"ImageObject","@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/2eb93f7cada658f7986b5092062849fa255779eada3342c8f6b9a40764b95fdd?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Multimedia Mike"}},{"@type":"WebPage","@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#webpage","url":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/","name":"Chiptune Database and API | Breaking Eggs And Making Omelettes","description":"My game music website's database of chiptunes might be useful to offline music players as well","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/multimedia.cx\/eggs\/#website"},"breadcrumb":{"@id":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/#breadcrumblist"},"author":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"creator":{"@id":"https:\/\/multimedia.cx\/eggs\/author\/multimedia-mike\/#author"},"datePublished":"2012-09-13T22:06:26-07:00","dateModified":"2012-09-13T22:06:26-07:00"},{"@type":"WebSite","@id":"https:\/\/multimedia.cx\/eggs\/#website","url":"https:\/\/multimedia.cx\/eggs\/","name":"Breaking Eggs And Making Omelettes","description":"Topics On Multimedia Technology and Reverse Engineering","inLanguage":"en-US","publisher":{"@id":"https:\/\/multimedia.cx\/eggs\/#organization"}}]},"og:locale":"en_US","og:site_name":"Breaking Eggs And Making Omelettes | Topics On Multimedia Technology and Reverse Engineering","og:type":"article","og:title":"Chiptune Database and API | Breaking Eggs And Making Omelettes","og:description":"My game music website's database of chiptunes might be useful to offline music players as well","og:url":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/","article:published_time":"2012-09-14T05:06:26+00:00","article:modified_time":"2012-09-14T05:06:26+00:00","twitter:card":"summary","twitter:title":"Chiptune Database and API | Breaking Eggs And Making Omelettes","twitter:description":"My game music website's database of chiptunes might be useful to offline music players as well"},"aioseo_meta_data":{"post_id":"3916","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-31 21:43:31","updated":"2025-12-31 19:45:02","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/multimedia.cx\/eggs\/category\/general\/\" title=\"General\">General<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tChiptune Database and API\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/multimedia.cx\/eggs"},{"label":"General","link":"https:\/\/multimedia.cx\/eggs\/category\/general\/"},{"label":"Chiptune Database and API","link":"https:\/\/multimedia.cx\/eggs\/chiptune-database-and-api\/"}],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/3916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=3916"}],"version-history":[{"count":10,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/3916\/revisions"}],"predecessor-version":[{"id":3926,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/3916\/revisions\/3926"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=3916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=3916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=3916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}