{"id":2976,"date":"2017-08-16T14:27:00","date_gmt":"2017-08-16T21:27:00","guid":{"rendered":"https:\/\/pkmital.com\/home\/?post_type=pkm_teaching&#038;p=2976"},"modified":"2023-08-22T17:59:04","modified_gmt":"2023-08-23T00:59:04","slug":"audiovisual-interaction-w-machine-learning","status":"publish","type":"pkm_teaching","link":"https:\/\/pkmital.com\/home\/teaching\/audiovisual-interaction-w-machine-learning\/","title":{"rendered":"CalArts | Audiovisual Interaction w\/ Machine Learning"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">CalArts 2017-2018<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Introduction<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This course guides students through using openFrameworks, integrating audiovisual interaction and machine learning into their practice, by using real-time processing and interaction as a guiding framework.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Course Link<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#mtec-616-01-audiovisual-interaction-w-machine-learning\">Course Link on GitHub<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Course Notes <\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>MTEC-616-01: Audiovisual Interaction w\/ Machine Learning<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">Section Name: MTEC-616-01<br>Departments: School of Music<br>Prerequisites: Complete MTEC-614<br>Academic Level: Bachelors (416) and Graduate (616) Term: Spring 2017<br>1\/23\/2017 &#8211; 5\/12\/2017<br>T 2:00 PM &#8211; 3:50 PM<br>Building(s): Main Building<br>Classroom(s): B214A<\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Schedule<\/strong><\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 01 &#8211; 01\/24\/17 &#8211; Installation \/ openFrameworks basics<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">This session will introduce you to openFrameworks, a creative-coding toolkit written primarily in C++. It brings together many frameworks for a cross-platform coding environment capable of real-time audio visual analysis, graphics, sound processing, 3D, multithreading, communication protocols, and plenty more. In this session, we&#8217;ll see how to navigate openFrameworks, build a project, compile existing examples, and find additional resources.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 02 &#8211; 01\/31\/17 &#8211; Basic Graphics \/ Audio Recording<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">In the next two sessions, we&#8217;ll explore the use of some basic graphics primitives, how to animate them, and use them to control the recording and playback of audio. The end result will be multisampler that can record\/playback audio, automatically segment audio, and we&#8217;ll try and apply some simple filters. Along the way we&#8217;ll learn about a lot of basic coding principles including if statements, for loops, and how to use classes to build objects and abstract our code. We&#8217;ll also see how to use parameters to define elements in a graphical user interface. By the end of today, we&#8217;ll see how to create an audio recorder that can record audio and play it back, and next week we&#8217;ll see how to add more interactivity including automatically segmenting audio and controlling the way it sounds with filtering.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 03 &#8211; 02\/07\/17 &#8211; Audio Interaction<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">We&#8217;ll continue with developing a multisampler that can record and playback audio. The approach we take to develop our mutlisampler will allow us to scale it artibrarily, as well as add new functionality to it fairly easily. We&#8217;ll then explore another application which can chop audio automatically and we&#8217;ll see how this can be used to create an infinitely generating random drum track. To do this, we&#8217;ll first see how to use the RMS of an audio signal to automatically segment audio. Then we&#8217;ll use some basic statistics of the RMS to segment audio and create some randomized audio playback of audio &#8220;grains&#8221;, and also see how to visualize them.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 04 &#8211; 02\/14\/17 &#8211; Audio Segmentation<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">In this session we finish our implementation of an automatic segmentation of an audio signal and use the detected segments to randomly play back segments of audio. Using a drum loop, we can see how to make some fun beat repeat style audio synthesis.<a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#session-05---022117---granular-synthesis\"><\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 05 &#8211; 02\/21\/17 &#8211; Granular Synthesis<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">This session covers two methods for loading samples, maxiSample and pkmEXTAudio methods for reading and saving any audio format using Apples EXTAudio format. Finally, we look at how to use maximilian&#8217;s granular synthesis engine to independently pitch and time stretch the amen break.<a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#session-06---022817---visual-interaction\"><\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 06 &#8211; 02\/28\/17 &#8211; Visual Interaction<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">This session covers some advanced uses of OpenGL including use of the 3D geometry, meshes, cameras, virtual lighting, and procedural generation of meshes from a camera or video file.<a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#session-07---030717---computer-vision\"><\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.kadenze.com\/programs\/creative-applications-of-deep-learning-with-tensorflow\"><\/a><\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 07 &#8211; 03\/07\/17 &#8211; Computer Vision<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">This session covers introductory computer vision topics such as an understanding of pixels, colorspaces, frame differencing and background subtraction, optical flow, and use of OpenCV and ofxCv.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 08 &#8211; 03\/14\/17 &#8211; Advanced Visual Interaction<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">This session explores an advanced use of computer vision known as blob tracking. We then explore a simple interface for projection mapping. Finally, we explore the use of the GLSL shader language.<a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#session-09---032117---audiovisual-interaction\"><\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 09 &#8211; 03\/21\/17 &#8211; Audiovisual Interaction<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">We looked at using the camera to make noise and interacting with tracked entities from blob tracking to drive sonic generation.<a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#no-class---032817---spring-break\"><\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 10 &#8211; 04\/04\/17 &#8211; Advanced Audio Analysis<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">We looked at the DFT, Mel Transform, Circular Buffers, and MFCCs for audio fingerprinting and analysis.<a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#session-11---041117---machine-learning-part-i\"><\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 11 &#8211; 04\/11\/17 &#8211; Machine Learning Part I<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">We explored the use of kNN and tSNE for concatenative synthesis and visual exploration of a grain cloud.<a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#session-12---041817---machine-learning-part-ii\"><\/a><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 12 &#8211; 04\/18\/17 &#8211; Machine Learning Part II<\/strong><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"wp-block-paragraph\">We explored the use of k-means clustering and markov chains for generative concatenative synthesis.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<p class=\"wp-block-paragraph\"><strong>Session 13 &#8211; 04\/25\/17 &#8211; NO CLASS<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Session 14 &#8211; 05\/02\/17 &#8211; Project Help (Lab Only \/ Requests)<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Final Project Presentations &#8211; 05\/09\/17 &#8211; Projects Due<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/pkmital\/MTIID-MTEC-616-01-2017#session-14---050217---project-help-lab-only--requests\"><\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\"><\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"featured_media":2707,"template":"","categories":[15],"teaching-type":[396,397],"class_list":["post-2976","pkm_teaching","type-pkm_teaching","status-publish","has-post-thumbnail","hentry","category-teaching","teaching-type-creative-coding","teaching-type-machine-learning"],"acf":[],"_links":{"self":[{"href":"https:\/\/pkmital.com\/home\/wp-json\/wp\/v2\/pkm_teaching\/2976","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pkmital.com\/home\/wp-json\/wp\/v2\/pkm_teaching"}],"about":[{"href":"https:\/\/pkmital.com\/home\/wp-json\/wp\/v2\/types\/pkm_teaching"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pkmital.com\/home\/wp-json\/wp\/v2\/media\/2707"}],"wp:attachment":[{"href":"https:\/\/pkmital.com\/home\/wp-json\/wp\/v2\/media?parent=2976"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pkmital.com\/home\/wp-json\/wp\/v2\/categories?post=2976"},{"taxonomy":"teaching-type","embeddable":true,"href":"https:\/\/pkmital.com\/home\/wp-json\/wp\/v2\/teaching-type?post=2976"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}