{"id":520,"date":"2016-11-09T11:49:46","date_gmt":"2016-11-09T16:49:46","guid":{"rendered":"https:\/\/portfolios.cs.earlham.edu\/?p=520"},"modified":"2016-11-09T11:49:46","modified_gmt":"2016-11-09T16:49:46","slug":"tempo-tracking-and-more-searching","status":"publish","type":"post","link":"https:\/\/portfolios.cs.earlham.edu\/index.php\/2016\/11\/09\/tempo-tracking-and-more-searching\/","title":{"rendered":"Tempo Tracking and More Searching"},"content":{"rendered":"<p>Yesterday, as suggested by Forrest, I added the ability to calculate the current tempo of the music in BPM based on the amount of time in between the last two detected beats. It doesn&#8217;t attempt to ignore any false positive readings, and it doesn&#8217;t take into account the time taken up by the sleep function, but it&#8217;s a rough solution for now.<\/p>\n<p>Now, the next major step I am hoping to take with this program is to use the beats to play some notes through MIDI messages. I am searching for libraries that will allow me to send MIDI note on\/off messages to some basic synthesizer, and <a href=\"http:\/\/www.fluidsynth.org\/\">FluidSynth<\/a> looks to be a decent option so far.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Yesterday, as suggested by Forrest, I added the ability to calculate the current tempo of the music in BPM based on the amount of time in between the last two detected beats. It doesn&#8217;t attempt to ignore any false positive readings, and it doesn&#8217;t take into account the time taken up by the sleep function, &#8230; <a title=\"Tempo Tracking and More Searching\" class=\"read-more\" href=\"https:\/\/portfolios.cs.earlham.edu\/index.php\/2016\/11\/09\/tempo-tracking-and-more-searching\/\" aria-label=\"Read more about Tempo Tracking and More Searching\">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-520","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\/520","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=520"}],"version-history":[{"count":1,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/posts\/520\/revisions"}],"predecessor-version":[{"id":521,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/posts\/520\/revisions\/521"}],"wp:attachment":[{"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/media?parent=520"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/categories?post=520"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portfolios.cs.earlham.edu\/index.php\/wp-json\/wp\/v2\/tags?post=520"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}