{"id":2251,"date":"2018-02-18T10:49:06","date_gmt":"2018-02-18T14:49:06","guid":{"rendered":"http:\/\/wizardwalk.com\/newblather\/?p=2251"},"modified":"2018-02-18T10:49:06","modified_gmt":"2018-02-18T14:49:06","slug":"midi-animator-version-2-wishlist","status":"publish","type":"post","link":"https:\/\/wizardwalk.com\/newblather\/?p=2251","title":{"rendered":"MIDI animator version 2 wishlist&#8230;"},"content":{"rendered":"<p>As I blogged a couple months ago, one of my goals for 2018 is to program a very simple 3D engine. I&#8217;ve been wanting to program a simple adventure game for a few years now, but the 3D and 2D engines I&#8217;ve played around with just don&#8217;t have quite the features I want, so I&#8217;m attempting to create my own little game engine with the <a href=\"https:\/\/www.lwjgl.org\/\">Lightweight Java Game Library<\/a>\u00a0(lwjgl).<\/p>\n<p>Here&#8217;s what I&#8217;ve got so far: I can render a textured box and some resolution independent vector graphics including true-type fonts, which can intersect with the box!<\/p>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-2252 size-large\" src=\"http:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2018\/02\/openglFont-1024x610.png\" alt=\"\" width=\"656\" height=\"391\" srcset=\"https:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2018\/02\/openglFont-1024x610.png 1024w, https:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2018\/02\/openglFont-300x179.png 300w, https:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2018\/02\/openglFont-768x457.png 768w, https:\/\/wizardwalk.com\/newblather\/wp-content\/uploads\/2018\/02\/openglFont.png 1335w\" sizes=\"(max-width: 656px) 100vw, 656px\" \/><\/p>\n<p>OK, so nothing special yet.<\/p>\n<p>Anyway, another thing I&#8217;d like to create with lwjgl is a new version of my MIDI animator, using vector graphics (instead of custom shaders) to represent the MIDI notes. (On a side note, I&#8217;m using the OpenGL &#8220;NV path rendering&#8221; extension for vector graphics support, which was created by Nvidia. Does that mean it&#8217;ll only work on their GPUs? I don&#8217;t know.) This should easily allow many more possible note shapes to be created.<\/p>\n<p>Here&#8217;s my current wishlist for &#8220;MIDI animator 2.0&#8221; (I should also come up with a more interesting name):<\/p>\n<ul>\n<li>Should be able to run standalone (that is, users shouldn&#8217;t have to download and compile the code to use it)<\/li>\n<li>A graphical user interface (GUI) that makes it easy to:\n<ul>\n<li>load MIDI files<\/li>\n<li>change note styles \/ shapes \/ colors \/ animations<\/li>\n<li>a scroll bar to make it easier to scroll through the MIDI<\/li>\n<li>save files<\/li>\n<\/ul>\n<\/li>\n<li>Ability to add title \/ text animations (instead of having to do this in post)<\/li>\n<li>Ability to change \/ animate background<\/li>\n<li>Ability to load in an MP3 to sync with the visualization<\/li>\n<li>Ability to add an MP3 visualization, such as one of those pulsing frequency bars or something<\/li>\n<li>Ability to export a movie file automatically (if I can figure out how; I&#8217;ll save this for last)<\/li>\n<\/ul>\n<p>Anything else I should include or look into?<\/p>\n<p>So, yeah, this is probably what I&#8217;ll be working on in my free time for now. I&#8217;ll probably start working on a GUI system next as I&#8217;d need to do this for a future game anyway.<\/p>\n<p>Hopefully I&#8217;ll get back to actually writing some new music afterwards.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As I blogged a couple months ago, one of my goals for 2018 is to program a very simple 3D engine. I&#8217;ve been wanting to program a simple adventure game for a few years now, but the 3D and 2D engines I&#8217;ve played around with just don&#8217;t have quite the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true},"categories":[19],"tags":[759],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p7gI4B-Aj","_links":{"self":[{"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/posts\/2251"}],"collection":[{"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2251"}],"version-history":[{"count":2,"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/posts\/2251\/revisions"}],"predecessor-version":[{"id":2254,"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=\/wp\/v2\/posts\/2251\/revisions\/2254"}],"wp:attachment":[{"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wizardwalk.com\/newblather\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}