{"id":172,"date":"2019-04-21T03:34:47","date_gmt":"2019-04-21T03:34:47","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/?p=172"},"modified":"2019-04-21T03:34:47","modified_gmt":"2019-04-21T03:34:47","slug":"status-update-stephen-he-04-20-2019","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/2019\/04\/21\/status-update-stephen-he-04-20-2019\/","title":{"rendered":"Status Update &#8211; Stephen He (04\/20\/2019)"},"content":{"rendered":"<p>This week is crunch time! We&#8217;re nearing the end of the semester, so we decided to push harder as a group to get our project as good as it can be.<\/p>\n<p>First thing I focused on was &#8220;projectizing&#8221; the workflow of our application. Originally, our application had the user select the destination and source of all files when the user wanted to save or load a circuit, or run a simulation and play a sound. We noticed that this can become really tedious when you want to quickly iterate on your circuit and test your sound. So, we decided to make our application workflow similar to Quartus&#8217;s- First, we create a project folder, and all files are saved to predetermined locations within the project folder.\u00a0 This way, the user does not have to specify any particular destination each time they want to save \/ load \/ run simulation \/ play. To load a circuit that was previously worked on, all the user has to do is switch the project folder. This also helps the user find where there stuff is saved. Below is what it looks like when the user first opens our application:<\/p>\n<figure id=\"attachment_173\" aria-describedby=\"caption-attachment-173\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-173 size-medium\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.12.59-PM-300x184.png\" alt=\"\" width=\"300\" height=\"184\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.12.59-PM-300x184.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.12.59-PM-768x471.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.12.59-PM-1024x628.png 1024w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-173\" class=\"wp-caption-text\">This popup greets the user upon running our application<\/figcaption><\/figure>\n<p>This menu lets the user immediately choose to load or create a new project, just like in Quartus.<\/p>\n<p>The next thing I focused on was getting our Functional Blocks integrated with the front end. The Functional Blocks\u00a0 we focused on are the Fuzz, Delay, and Reverb blocks. We also are in the process with a Distortion block. I created a new icon for each block, and added them to the parts bin on the right side of our interface, letting the user drag and drop them as they would with any other component.<\/p>\n<figure id=\"attachment_176\" aria-describedby=\"caption-attachment-176\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-176 size-medium\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.23.46-PM-300x251.png\" alt=\"\" width=\"300\" height=\"251\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.23.46-PM-300x251.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.23.46-PM-768x642.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.23.46-PM.png 816w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-176\" class=\"wp-caption-text\">The Fuzz, Reverb, and Delay blocks on the parts bin<\/figcaption><\/figure>\n<p>These functional blocks can be used to model the input passing through different pedals before reaching the created circuit:<\/p>\n<figure id=\"attachment_177\" aria-describedby=\"caption-attachment-177\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-177 size-medium\" src=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.27.27-PM-300x207.png\" alt=\"\" width=\"300\" height=\"207\" srcset=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.27.27-PM-300x207.png 300w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.27.27-PM-768x531.png 768w, http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-content\/uploads\/sites\/58\/2019\/04\/Screen-Shot-2019-04-20-at-11.27.27-PM.png 802w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-177\" class=\"wp-caption-text\">Vin passing through a reverb functional block before hitting the rest of the circuit (resistor can be replaced with any circuit)<\/figcaption><\/figure>\n<p>This created a problem, however. These functional blocks technically represent things that are outside of our circuit. In the case of the image above, our circuit simulator should see the Vin as the output of the reverb, even though in the graphical interface Vin is connected to the input of the reverb.<\/p>\n<p>To solve this problem, I implemented a DFS algorithm that traversed from each connection point in Vin to the nearest non-functional block and non-wire component.\u00a0 This involved adding logic that implicitly connects the top left and top right nodes of functional blocks (and the bottom left and bottom right nodes) together.<\/p>\n<p>Finally, I worked on miscellaneous bug fixes and cleaned up our code. Javascript is weird.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week is crunch time! We&#8217;re nearing the end of the semester, so we decided to push harder as a group to get our project as good as it can be. First thing I focused on was &#8220;projectizing&#8221; the workflow of our application. Originally, our application had the user select the destination and source of &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/2019\/04\/21\/status-update-stephen-he-04-20-2019\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Status Update &#8211; Stephen He (04\/20\/2019)&#8221;<\/span><\/a><\/p>\n","protected":false},"author":176,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/posts\/172"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/users\/176"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/comments?post=172"}],"version-history":[{"count":1,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/posts\/172\/revisions"}],"predecessor-version":[{"id":178,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/posts\/172\/revisions\/178"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/media?parent=172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/categories?post=172"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/s19-teamd8\/wp-json\/wp\/v2\/tags?post=172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}