{"id":711,"date":"2026-01-04T21:29:01","date_gmt":"2026-01-04T21:29:01","guid":{"rendered":"https:\/\/mityjohn.com\/?p=711"},"modified":"2026-01-04T21:30:38","modified_gmt":"2026-01-04T21:30:38","slug":"a-guitar-hero-controller-is-still-a-guitar-if-you-treat-it-like-one","status":"publish","type":"post","link":"https:\/\/mityjohn.com\/?p=711","title":{"rendered":"A Guitar Hero Controller Is Still a Guitar (If You Treat It Like One)"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I didn\u2019t set out to build a new music application.<br>I wanted to clean my attic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That plan failed almost immediately.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">During the Christmas\u2013New Year holidays, I stumbled upon my old Nintendo Wii. Next to it: a Guitar Hero \/ Rock Band guitar controller. Plastic body, five colored frets, strum bar, whammy bar. A device that once convinced an entire generation they were playing music.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"788\" src=\"https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/controller-1.png\" alt=\"\" class=\"wp-image-716\" srcset=\"https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/controller-1.png 940w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/controller-1-300x251.png 300w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/controller-1-768x644.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Out of curiosity, I plugged it in.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"788\" src=\"https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/dongle.png\" alt=\"\" class=\"wp-image-717\" srcset=\"https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/dongle.png 940w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/dongle-300x251.png 300w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/dongle-768x644.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">And the interesting part wasn\u2019t nostalgia. It was that the thing still <em>made sense<\/em>.<br>Five buttons. A strum. Timing. Harmony. Expression.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The problem was never the controller.<br>The problem was that it had been locked inside a game.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So instead of replaying old songs for high scores, I did what any reasonable person does during holiday downtime: I turned that controller into a real instrument.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That\u2019s how <strong>mITyGuitar<\/strong> started.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What is mITyGuitar?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>mITyGuitar<\/strong> is a desktop application that allows you to connect your old Guitar Hero or Rock Band guitar to your PC or laptop and use it as a musical instrument.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/mITyGuitar-Logo-1-1024x1024.png\" alt=\"\" class=\"wp-image-718\" srcset=\"https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/mITyGuitar-Logo-1-1024x1024.png 1024w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/mITyGuitar-Logo-1-300x300.png 300w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/mITyGuitar-Logo-1-150x150.png 150w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/mITyGuitar-Logo-1-768x768.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Not as a game controller.<br>Not as a nostalgic toy.<br>As an actual way to play music.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>play live using chord mappings<\/li>\n\n\n\n<li>freely jam in real time<\/li>\n\n\n\n<li>load songs and play along<\/li>\n\n\n\n<li>follow chord progressions and lyrics<\/li>\n\n\n\n<li>learn songs in a gamified, low-friction way<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The project is open source and available on GitHub:<br><a href=\"https:\/\/github.com\/janvanwassenhove\/mITyGuitar\">https:\/\/github.com\/janvanwassenhove\/mITyGuitar<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">This is not Guitar Hero (and that\u2019s intentional)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">mITyGuitar is not a clone of Guitar Hero or Rock Band.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s no score chasing, no star power, no failure screens screaming at you because your timing was slightly off. It doesn\u2019t try to recreate the arcade pressure loop.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead, it asks a simpler question:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What if we treated that guitar controller as an instrument instead of a game mechanic?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>you trigger real chords, not note sequences on rails<\/li>\n\n\n\n<li>timing matters, but expression matters more<\/li>\n\n\n\n<li>mistakes are part of learning, not something to be punished<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">It feels familiar, but the goal is fundamentally different.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Two modes, one idea<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"851\" src=\"https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/splashscreen-1-1024x851.png\" alt=\"\" class=\"wp-image-714\" srcset=\"https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/splashscreen-1-1024x851.png 1024w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/splashscreen-1-300x249.png 300w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/splashscreen-1-768x638.png 768w, https:\/\/mityjohn.com\/wp-content\/uploads\/2026\/01\/splashscreen-1.png 1194w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Live Mode<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In Live Mode, the guitar controller becomes exactly what it always wanted to be.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each fret maps to a chord.<br>The strum bar triggers the sound.<br>The whammy bar adds expression.<br>Tilt is available for additional control.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You choose an instrument, start playing, and just play. No song loaded. No rails. No instructions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is usually the point where people who say they \u201ccan\u2019t play an instrument\u201d quietly stop saying that.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Song Mode<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Song Mode adds structure without turning music into a reaction test.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You load a song and play along:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>chord progressions are visualized<\/li>\n\n\n\n<li>lyrics are shown<\/li>\n\n\n\n<li>timing is guided, not enforced<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">It borrows the familiarity of Rock Band, but shifts the focus. Instead of \u201cpress the right button now\u201d, it becomes \u201cthis is the chord, this is the moment \u2014 play\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gamification, without punishment.<br>Guidance, without rigidity.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The uncomfortable technical part (and why AI matters here)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There\u2019s another reason this project exists.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I had never developed a desktop application in <strong>Rust<\/strong> before.<br>I don\u2019t usually work close to hardware input.<br>And real-time controller handling is not exactly the most fun or forgiving type of development.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normally, that combination alone would be enough reason <em>not<\/em> to start a side project like this. This time, it wasn\u2019t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Using <strong>GitHub Copilot<\/strong> and <strong>ChatGPT<\/strong>, I could move surprisingly fast \u2014 even in unfamiliar territory. Handling raw controller input, mapping events, structuring the application: all things that would normally involve a lot of trial, error, and documentation archaeology.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instead, the workflow became iterative and conversational.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I wasn\u2019t \u201clearning Rust first and then building something\u201d.<br>I was building something \u2014 and learning Rust along the way.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">The models and tools behind the scenes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For this project, I mainly relied on:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GitHub Copilot<\/strong> for in-editor guidance, refactoring, and pattern discovery<\/li>\n\n\n\n<li><strong>ChatGPT<\/strong> for architecture, iteration, and problem framing<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">On the model side, I used:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Claude Sonnet 4 and 4.5<\/strong> for reasoning-heavy exploration and design discussions<\/li>\n\n\n\n<li><strong>GPT-5.2<\/strong> for implementation details, refinement, and cross-checking ideas<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This combination turned what could have been a frustrating hardware-heavy experiment into something playful and fast.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not because the hard parts disappeared \u2014 but because they became manageable.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Why this matters beyond this project<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">mITyGuitar isn\u2019t really about a plastic guitar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It\u2019s about what happens when:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>unfamiliar languages stop being blockers<\/li>\n\n\n\n<li>hardware interaction becomes approachable<\/li>\n\n\n\n<li>side projects stop being \u201ctoo big to start\u201d<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">AI doesn\u2019t remove complexity.<br>It changes who carries it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">And that\u2019s what made this project possible during a couple of holiday weeks instead of a few abandoned weekends.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Retro, but not a museum piece<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yes, this project is rooted in nostalgia.<br>Yes, it clearly originates from the late 2000s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But technically, mITyGuitar is a modern desktop application:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>real-time input handling<\/li>\n\n\n\n<li>flexible chord mapping<\/li>\n\n\n\n<li>extensible song format<\/li>\n\n\n\n<li>open source by design<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This isn\u2019t a tribute project.<br>It\u2019s a usable tool.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Final chord<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">mITyGuitar exists because sometimes creativity doesn\u2019t start with mastery or long-term planning.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometimes it starts with unfamiliar technology, a forgotten controller, and the realization that with the right tools, you don\u2019t need to know everything upfront.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You just need to start.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Source code <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/janvanwassenhove\/mITyGuitar\">https:\/\/github.com\/janvanwassenhove\/mITyGuitar<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I didn\u2019t set out to build a new music application.I wanted to clean my attic. That plan failed almost immediately. During the Christmas\u2013New Year holidays, I stumbled upon my old Nintendo Wii. Next to it: a Guitar Hero \/ Rock Band guitar controller. Plastic body, five colored frets, strum bar, whammy bar. A device that [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":721,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,7,25],"tags":[19,8,35,10,34],"class_list":["post-711","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-development","category-fun","tag-ai","tag-development","tag-electron","tag-programming","tag-rust"],"_links":{"self":[{"href":"https:\/\/mityjohn.com\/index.php?rest_route=\/wp\/v2\/posts\/711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mityjohn.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mityjohn.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mityjohn.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mityjohn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=711"}],"version-history":[{"count":4,"href":"https:\/\/mityjohn.com\/index.php?rest_route=\/wp\/v2\/posts\/711\/revisions"}],"predecessor-version":[{"id":723,"href":"https:\/\/mityjohn.com\/index.php?rest_route=\/wp\/v2\/posts\/711\/revisions\/723"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mityjohn.com\/index.php?rest_route=\/wp\/v2\/media\/721"}],"wp:attachment":[{"href":"https:\/\/mityjohn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mityjohn.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mityjohn.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}