{"id":185,"date":"2025-04-13T00:58:58","date_gmt":"2025-04-13T00:58:58","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/?p=185"},"modified":"2025-04-13T03:18:53","modified_gmt":"2025-04-13T03:18:53","slug":"frantzs-status-report-for-april-12","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/2025\/04\/13\/frantzs-status-report-for-april-12\/","title":{"rendered":"Frantz&#8217;s Status Report for April 12"},"content":{"rendered":"<p><span style=\"text-decoration: underline\">This Week\u2019s Accomplishments:<\/span><\/p>\n<p>This week, I spent a lot of time working on my C++ code, to be loaded onto our microcontroller. I have completed most, but not all of the real-time pitch-shifting algorithm, with quite a few roadblocks. The first was that I found great difficulty in importing a library for computing the Direct Fourier Transform. In order to minimize the difficulty of interacting with a new interface, I wrote my own DFT code myself, following the Cooley-Tukey radix-2 algorithm. I also wrote code for the Inverse Direct Fourier Transform, which was a simple edit of the DFT code.<\/p>\n<p>Here is my current DFT code, with some print debugging commented out:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-189 size-large\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-content\/uploads\/sites\/359\/2025\/04\/dft-code-713x1024.png\" alt=\"\" width=\"525\" height=\"754\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-content\/uploads\/sites\/359\/2025\/04\/dft-code-713x1024.png 713w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-content\/uploads\/sites\/359\/2025\/04\/dft-code-209x300.png 209w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-content\/uploads\/sites\/359\/2025\/04\/dft-code-768x1103.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-content\/uploads\/sites\/359\/2025\/04\/dft-code.png 947w\" sizes=\"(max-width: 525px) 100vw, 525px\" \/><\/p>\n<p>I have not yet optimized my code for quickness or implemented garbage collection, which will be necessary for programming in C++. However, I have tested my code and found that for a few test inputs, my output matches that of the Python function &#8220;numpy.fft.fft&#8221;.<\/p>\n<p>I have found some difficulty in converting my previous Python algorithm not just into C++ but into a real-time operation. This is still in-progress. I will need to test my code&#8217;s performance to ascertain what amount of latency is safe.<\/p>\n<p>I have used the micro-USB cable I ordered to connect our microcontroller to my laptop. Next week, I aim to start by learning how to use the Daisy Library to receive input samples and send output samples. I will then implement the &#8220;delay&#8221; functionality, which is comparatively simple.<\/p>\n<p>We are somewhat behind our original schedule and a little pressed for time. Nevertheless, we are confident in our ability to complete our project in the next week. I will spend a lot of time completing and testing my code within the next few days.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This Week\u2019s Accomplishments: This week, I spent a lot of time working on my C++ code, to be loaded onto our microcontroller. I have completed most, but not all of the real-time pitch-shifting algorithm, with quite a few roadblocks. The first was that I found great difficulty in importing a library for computing the Direct &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/2025\/04\/13\/frantzs-status-report-for-april-12\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Frantz&#8217;s Status Report for April 12&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1064,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[9,10,5],"tags":[3],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/posts\/185"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/users\/1064"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/comments?post=185"}],"version-history":[{"count":4,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/posts\/185\/revisions"}],"predecessor-version":[{"id":201,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/posts\/185\/revisions\/201"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/media?parent=185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/categories?post=185"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s25-teamd0\/wp-json\/wp\/v2\/tags?post=185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}