{"id":108,"date":"2020-10-17T09:35:39","date_gmt":"2020-10-17T09:35:39","guid":{"rendered":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/?p=108"},"modified":"2020-10-19T06:27:45","modified_gmt":"2020-10-19T06:27:45","slug":"yuhan-xiaos-status-update-for-10-17","status":"publish","type":"post","link":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/2020\/10\/17\/yuhan-xiaos-status-update-for-10-17\/","title":{"rendered":"Yuhan Xiao\u2019s Status Update for 10\/17"},"content":{"rendered":"<p>I set up an EC2 instance and prepared it for web app deployment.<\/p>\n<p>I worked on web app frontend and made UI for user to set time and choose from a list of ringtones. Feel free to try it out <a href=\"http:\/\/3.129.61.132:3000\/\">here<\/a> (note this might be updated to display new UI next week).\u00a0If you clicks on the ringtone name, it plays a short ringtone that is defined by an array of notes, and each note consists of pitch and duration. I\u00a0 implemented a &#8220;fast selecting&#8221; feature(user can choose &#8220;weekdays&#8221; to auto-select all five weekdays, and vice versa) which is also pretty neat.<\/p>\n<p>I wrote a short script for Pi to communicate with the web app on EC2 instance and receives sample ringtone data.<\/p>\n<p>I also worked on some portions of design review report(overall &amp; subsystem architecture, etc).<\/p>\n<p>Other work I did:<\/p>\n<ol>\n<li>I looked into using AWS Amplify(versus EC2) as a choice of hosting the web app. It can allow me to deploy and publish my web app every time I update it using one console command. However in the end, I decided against it because I am not sure if and how to implement the alarm scheduling using Amplify (2) it requires using GraphQL and DynamoDB which I am less familiar with, hence longer time to ramp up.<\/li>\n<li>I checked out Typescript as a possible option for frontend framework language, and ultimately decided it is not worth since the frontend framework I chose lacks documentation for Typescript.<\/li>\n<li>I decided on Ant Design as the frontend framework since it covers all UI widgets I would need.<\/li>\n<li>I looked at a few node packages for playing audio from midi files. I realized I had some misunderstanding about what midi is and how some of the &#8220;midi player&#8221; packages work. In the end I decided to use a different package for playing audio than I previously planned.\n<ol>\n<li>I used this for playing audio by specifying notes:\u00a0https:\/\/www.npmjs.com\/package\/soundfont-player\n<ol>\n<li>It is a lighter version of\u00a0https:\/\/github.com\/gleitz\/midi-js-soundfonts<\/li>\n<li>I was gonna use\u00a0https:\/\/github.com\/grimmdude\/MidiPlayerJS but it turns out it just translate a midi file into a sequence of json data, but not play the audio<\/li>\n<li>I was gonna use sample-player package but decided other packages have a bigger user base<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<\/li>\n<li>I realized the user might not want to create a new ringtone every time they set an alarm, so I made a new page that is not previously on the mockup for design presentation for users to make ringtones and then the ringtones will be updated on create alarm page.<\/li>\n<\/ol>\n<p>Currently on schedule. My own updated timeline (before integration) is as follows:<\/p>\n<ul>\n<li>week 7(here):\n<ul>\n<li>web app build and deployment set up<\/li>\n<li>spike on communication between web app and Pi<\/li>\n<li>create alarm UI<\/li>\n<li>alarm schedule UI<\/li>\n<\/ul>\n<\/li>\n<li>week 8:\n<ul>\n<li>create ringtone UI<\/li>\n<li>pass alarm data from create alarm page to alarm schedule\u00a0page<\/li>\n<li>pass ringtone data form create ringtone page to create alarm page<\/li>\n<\/ul>\n<\/li>\n<li>week 9:\n<ul>\n<li>backend set up<\/li>\n<li>connect UI with backend<\/li>\n<li>connect web app with Pi<\/li>\n<\/ul>\n<\/li>\n<li>week 10(demo)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I set up an EC2 instance and prepared it for web app deployment. I worked on web app frontend and made UI for user to set time and choose from a list of ringtones. Feel free to try it out here (note this might be updated to display new UI next week).\u00a0If you clicks on &hellip; <a href=\"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/2020\/10\/17\/yuhan-xiaos-status-update-for-10-17\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Yuhan Xiao\u2019s Status Update for 10\/17&#8221;<\/span><\/a><\/p>\n","protected":false},"author":348,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,6],"tags":[],"_links":{"self":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/posts\/108"}],"collection":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/users\/348"}],"replies":[{"embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/comments?post=108"}],"version-history":[{"count":6,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/posts\/108\/revisions"}],"predecessor-version":[{"id":117,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/posts\/108\/revisions\/117"}],"wp:attachment":[{"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/media?parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/categories?post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/course.ece.cmu.edu\/~ece500\/projects\/f20-teamb1\/wp-json\/wp\/v2\/tags?post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}