{"id":562,"date":"2016-11-18T22:34:36","date_gmt":"2016-11-19T03:34:36","guid":{"rendered":"https:\/\/portfolios.cs.earlham.edu\/?p=562"},"modified":"2016-11-18T22:34:36","modified_gmt":"2016-11-19T03:34:36","slug":"configuring-jack-and-other-instruments","status":"publish","type":"post","link":"https:\/\/portfolios.cs.earlham.edu\/index.php\/2016\/11\/18\/configuring-jack-and-other-instruments\/","title":{"rendered":"Configuring JACK and Other Instruments"},"content":{"rendered":"<p>Today, I found out how to automatically connect the FluidSynth audio output to the computer&#8217;s audio device input without having to manually make the connection in QjackCtl every time I run the program, and how to map each instrument to a specific channel. The FluidSynth API uses the &#8220;fluid_settings_setint&#8221; and &#8220;fluid_synth_program_select&#8221; functions, respectively, for such tasks. Both features are now integrated into the program, and I also allow the users to change the channel to instrument mapping as they see fit as well.<\/p>\n<p>Now, the last thing I need to do to make this program a true virtual conductor is to incorporate tempo in such a way that I don&#8217;t have to limit myself and the music to eighth notes or longer anymore. Earlier today, Forrest also suggested that I use an integer tick counter of some kind to subdivide each beat instead of a floating point number. Also, for some reason, I&#8217;m still getting wildly inaccurate BPM readings, even without the PortAudio sleep function in the way anymore, but I may still be able to use the clock ticks themselves to my advantage. Although, a simple ratio can convert clock ticks to MIDI ticks easily, but I still need to figure out how I can trigger note on\/off messages after a certain number of clock ticks have elapsed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, I found out how to automatically connect the FluidSynth audio output to the computer&#8217;s audio device input without having to manually make the connection in QjackCtl every time I run the program, and how to map each instrument to a specific channel. The FluidSynth API uses the &#8220;fluid_settings_setint&#8221; and &#8220;fluid_synth_program_select&#8221; functions, respectively, for such &#8230; <a title=\"Configuring JACK and Other Instruments\" class=\"read-more\" href=\"https:\/\/portfolios.cs.earlham.edu\/index.php\/2016\/11\/18\/configuring-jack-and-other-instruments\/\" aria-label=\"Read more about Configuring JACK and Other Instruments\">Read more<\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-562","post","type-post","status-publish","format-standard","hentry","category-edward"],"_links":{"self":[{"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/posts\/562","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/comments?post=562"}],"version-history":[{"count":5,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/posts\/562\/revisions"}],"predecessor-version":[{"id":567,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/posts\/562\/revisions\/567"}],"wp:attachment":[{"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/media?parent=562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/categories?post=562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/tags?post=562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}