{"id":2294,"date":"2021-12-08T21:03:06","date_gmt":"2021-12-09T02:03:06","guid":{"rendered":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/?p=2294"},"modified":"2021-12-08T21:07:26","modified_gmt":"2021-12-09T02:07:26","slug":"grape-finalproject-2","status":"publish","type":"post","link":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/grape\/12\/08\/grape-finalproject-2\/","title":{"rendered":"grape &#8211; FinalProject"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" title=\"The Axidraw&#039;s Up To No Good\" width=\"840\" height=\"473\" src=\"https:\/\/www.youtube.com\/embed\/_alznpKj0AE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p style=\"text-align: center\">This system transcribes your pitch into a plot in realtime.<\/p>\n<h5><strong>Some inspirations.<\/strong><\/h5>\n<p style=\"text-align: right\">This idea was primarily inspired by the music synced tracks made by people in the Line Rider community such as <a href=\"https:\/\/youtu.be\/vcBn04IyELc\">this track created by DoodleChaos<\/a>, which took them 3 months to complete by hand and <a href=\"https:\/\/youtu.be\/qasxqKScOfY\">this track by Rabid Squirrel<\/a>, which took them a whole 18 months to complete (I highly recommend watching this one).<\/p>\n<p style=\"text-align: right\">After hearing Golan talk about <a href=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/daily-notes\/11-01-work\/asemic-writing\/\">asemic writing systems<\/a>, I began to reevaluate my idea as an archival practice rather than a visual accompaniment. Sweetcorn also suggested that I take a look at cursive shorthand, and I was particularly blown away by <a href=\"https:\/\/omniglot.com\/conscripts\/tersive.htm\">tersive shorthand<\/a> and <a href=\"https:\/\/omniglot.com\/conscripts\/zhonghuayuzi.htm\">zhong hua yu zi(\u4e2d\u534e\u8bed\u5b57)<\/a>.<\/p>\n<h5><strong>Process.<\/strong><\/h5>\n<p style=\"text-align: right\">I first got Max MSP&#8217;s monophonic pitch detection working to send pitch data to Processing.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2507\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/trim.5DCA3B86-9C50-4B91-9D9D-F613E0B70C61-2.gif\" alt=\"\" width=\"480\" height=\"361\" \/><\/p>\n<p style=\"text-align: right\">The patch sends over the note detected relative to C. This means, for example, that if it detects a D it will send over 1 as opposed to a B where it will send over a 12.<\/p>\n<p style=\"text-align: right\">I then began drafting an alphabet for my processing sketch. My first impulse was a draft a geometric alphabet consisting of 12 different symbols. I think one issue I encountered was trying to figure out which features I wanted to preserve, such as pitch, duration, octave, whether it was an incident or not, and dynamics. At this stage, I was influenced by my familiarity with traditional Chinese musical notation <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gongche_notation\">(\u5de5\u5c3a)<\/a>.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-2090 alignleft\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/11\/Scannable-Document-on-Nov-17-2021-at-11_37_20-e1637167034254-206x480.png\" alt=\"\" width=\"174\" height=\"405\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/11\/Scannable-Document-on-Nov-17-2021-at-11_37_20-e1637167034254-206x480.png 206w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/11\/Scannable-Document-on-Nov-17-2021-at-11_37_20-e1637167034254-440x1024.png 440w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/11\/Scannable-Document-on-Nov-17-2021-at-11_37_20-e1637167034254-660x1536.png 660w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/11\/Scannable-Document-on-Nov-17-2021-at-11_37_20-e1637167034254.png 687w\" sizes=\"(max-width: 174px) 85vw, 174px\" \/><\/p>\n<p style=\"text-align: right\">Ultimately, I settled on this alphabet.<\/p>\n<p style=\"text-align: right\">Each note corresponds to a symbol. I ignore flats in favor of sharps, and indicate that a note is a sharp with a serif.<\/p>\n<p style=\"text-align: right\">To preserve duration, every time my program reevaluates the current pitch, it adds a small snaking line, so that the length of the snake tacked onto each symbol represents how long that note was held.<\/p>\n<p style=\"text-align: right\">Rests are denoted by whitespace, but the length of rests are ignored.<\/p>\n<p style=\"text-align: right\">vvv\u00a0 These are some plots that used this system.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-2508 size-full\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_0D1BFD4FC2F0-1.jpeg\" alt=\"\" width=\"1764\" height=\"1457\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_0D1BFD4FC2F0-1.jpeg 1764w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_0D1BFD4FC2F0-1-581x480.jpeg 581w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_0D1BFD4FC2F0-1-1024x846.jpeg 1024w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_0D1BFD4FC2F0-1-768x634.jpeg 768w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_0D1BFD4FC2F0-1-1536x1269.jpeg 1536w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_0D1BFD4FC2F0-1-1200x991.jpeg 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p style=\"text-align: right\"><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-2510 alignleft\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_2EDB056FDFCF-1.jpeg\" alt=\"\" width=\"343\" height=\"356\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_2EDB056FDFCF-1.jpeg 465w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_2EDB056FDFCF-1-463x480.jpeg 463w\" sizes=\"(max-width: 343px) 85vw, 343px\" \/>&lt; ^ The bottom three plots (and this close up shot) highlight the amount of variation (chaos?) that can be achieved by changing the frame rate. Processing usually calls draw() at 60 fps, but this created too many unpredictable symbols for my preference.<\/p>\n<p style=\"text-align: right\">At the end of a plot, I wanted something I could still decipher.<\/p>\n<p style=\"text-align: right\">Additionally I originally plotted my symbols from left to right, similar to how I write. This however made the Axidraw fall out of sync with my pitch, since it needed time to go to the next line. This was fixed by plotting the symbols in boustrophedon (left to right, then right to left, alternating), which minimized the distance.<\/p>\n<p>[videopack id=&#8221;2511&#8243;]https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_9327-3.mov[\/videopack]<\/p>\n<p style=\"text-align: right\">Even with this fix, I was still unsatisfied with the Axidraw&#8217;s ability to keep up with me. This was mostly due to my initial alphabet, since each of the symbols had a different start position which added more moving time in between pitches. I also didn&#8217;t like how distinct each symbol was, since I didn&#8217;t think pitch should look as &#8220;blocky&#8221; as what it became on paper.<\/p>\n<p style=\"text-align: right\">To fix this, I revised my alphabet to look more organic and to standardize the starting position. I did this through playing around with bezier curves.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2515\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_E95942767C1C-1.jpeg\" alt=\"\" width=\"1810\" height=\"1448\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_E95942767C1C-1.jpeg 1810w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_E95942767C1C-1-600x480.jpeg 600w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_E95942767C1C-1-1024x819.jpeg 1024w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_E95942767C1C-1-768x614.jpeg 768w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_E95942767C1C-1-1536x1229.jpeg 1536w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_E95942767C1C-1-1200x960.jpeg 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2514\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_CC59673A8E44-1.jpeg\" alt=\"\" width=\"1826\" height=\"1790\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_CC59673A8E44-1.jpeg 1826w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_CC59673A8E44-1-490x480.jpeg 490w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_CC59673A8E44-1-1024x1004.jpeg 1024w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_CC59673A8E44-1-768x753.jpeg 768w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_CC59673A8E44-1-1536x1506.jpeg 1536w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/IMG_CC59673A8E44-1-1200x1176.jpeg 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-2516 alignleft\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12.png\" alt=\"\" width=\"306\" height=\"306\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12.png 2185w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12-480x480.png 480w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12-1024x1024.png 1024w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12-150x150.png 150w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12-768x768.png 768w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12-1536x1536.png 1536w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12-2048x2048.png 2048w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_08_12-1200x1200.png 1200w\" sizes=\"(max-width: 306px) 85vw, 306px\" \/><\/p>\n<p style=\"text-align: right\">After drafting more symbols, I finalized another alphabet.<\/p>\n<p style=\"text-align: right\">Instead of drawing &#8220;snakes&#8221; to denote duration of pitch, I switched to drawing little spikes. Each symbol starts and ends at the same place. I also added in noise to the individual symbols and to the Axidraw&#8217;s plotting direction to give the plot a more handwritten quality.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-2517 alignleft\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_19_55.jpg\" alt=\"\" width=\"404\" height=\"523\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_19_55.jpg 1381w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_19_55-371x480.jpg 371w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_19_55-792x1024.jpg 792w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_19_55-768x993.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_19_55-1188x1536.jpg 1188w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/Scannable-Document-on-Dec-8-2021-at-16_19_55-1200x1552.jpg 1200w\" sizes=\"(max-width: 404px) 85vw, 404px\" \/><\/p>\n<p style=\"text-align: right\">&lt; Here&#8217;s a plot with the new alphabet<\/p>\n<h5><strong>More documentation.<\/strong><\/h5>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2522\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040165-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040165-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040165-640x427.jpg 640w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040165-1024x683.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040165-768x512.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040165-1536x1024.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040165-2048x1365.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040165-1200x800.jpg 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2525\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040173-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040173-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040173-640x427.jpg 640w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040173-1024x683.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040173-768x512.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040173-1536x1024.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040173-2048x1365.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040173-1200x800.jpg 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-2527\" src=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040172-2-scaled.jpg\" alt=\"\" width=\"2560\" height=\"1707\" srcset=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040172-2-scaled.jpg 2560w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040172-2-640x427.jpg 640w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040172-2-1024x683.jpg 1024w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040172-2-768x512.jpg 768w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040172-2-1536x1024.jpg 1536w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040172-2-2048x1365.jpg 2048w, https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-content\/uploads\/2021\/12\/P1040172-2-1200x800.jpg 1200w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/p>\n<h5><strong>Takeaways.<\/strong><\/h5>\n<p style=\"text-align: right\">I learned a lot about how structuring a working pipeline (Max MSP to OSC to Processing to CNC server to Axidraw). I feel more knowledgeable about what resources are available for and the current limitations of pitch detection, which will help me immensely with future audio related projects experimentation. I still have more in plan for this project, such as adding in generated computer-generated lyrics using <a href=\"https:\/\/github.com\/aparrish\/pronouncingpy\">pronouncing.py<\/a>, and additional support for quick changes in pitch.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; This system transcribes your pitch into a plot in realtime. Some inspirations. This idea was primarily inspired by the music synced tracks made by people in the Line Rider community such as this track created by DoodleChaos, which took them 3 months to complete by hand and this track by Rabid Squirrel, which took &hellip; <a href=\"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/grape\/12\/08\/grape-finalproject-2\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;grape &#8211; FinalProject&#8221;<\/span><\/a><\/p>\n","protected":false},"author":17,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[22],"tags":[],"_links":{"self":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/posts\/2294"}],"collection":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/comments?post=2294"}],"version-history":[{"count":10,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/posts\/2294\/revisions"}],"predecessor-version":[{"id":2530,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/posts\/2294\/revisions\/2530"}],"wp:attachment":[{"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/media?parent=2294"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/categories?post=2294"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/courses.ideate.cmu.edu\/60-428\/f2021\/wp-json\/wp\/v2\/tags?post=2294"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}