-
Notifications
You must be signed in to change notification settings - Fork 2
Homework Ellen 06
ICM Section 06 • Meeting Thursdays 9:10AM - 11:40AM ET in Room 408
- Contact Ellen
- About Our Course
- Week 8 • Oct 21 • Images
- Week 9 • Oct 28 • Video
- Week 10 • Nov 4 • Sound Analysis and Visualization
- Week 11 • Nov 11 • Sound Synthesis
- Week 12 • Nov 18 • Text / Data / Final Project Proposals
- Week 13 • Dec 2 • Final Project User Testing
- Week 14 • Dec 9 • Final Project Presentations
- Email [email protected], and I'll do my best to respond within 24 hours except on the weekends, which might be longer.
- Virtual office Hours in Zoom on Tuesdays and Fridays from 10:00AM - 12:00PM Sign up here
- If no appointments are available or you need a different time, please email me with three good times for you, and I'll send you a calendar invite with a Zoom link.
Here is the description for ICM from the ITP Schedule.
Upon completion of the second half of the ICM course, Media, we will be able to:
- apply fundamental programming concepts to generate and manipulate media including images, video, sound, text, and data.
- experiment with media-specific, computational techniques and apply them to our creative work.
ICM Media is a seven-week course that meets once a week in person at the scheduled time. We will have assignments to do before each Media class, and these assignments will build towards a final project to share at the end of the seven weeks.
This course embraces an active-learning approach with the belief that programming is best understood by doing. In keeping with this approach, class time will be structured as a workshop and seminar instead of a lecture, relying heavily on group discussion and participation. Weekly video tutorials to watch before class sessions will introduce fundamental coding concepts. During class, supplemental code examples will be presented and discussed before hands-on work together. Time will also be allotted to share our weekly assignments.
You are encouraged to reach out to me outside of class to ask questions, share ideas/feedback, and discuss topics in detail.
Before class, read / watch the tutorials that we will practice together when we meet.
There are also weekly programming assignments to practice the weekly topics. Unless otherwise stated, assignments are due on Wednesdays at 11:59pm the day before our class so that I have a chance to review your questions before we meet.
All assignments are expected to be submitted by the stated deadline, and you should be prepared to show and talk about them in class. If you anticipate any challenges meeting the deadline, please reach out to me so that we can consider your options together.
A big part of learning at ITP is learning from each other. Share your work and in return you'll see everyone else's!
- Weekly Practice Questions. Unless otherwise stated, there are questions (linked below) to practice the topics introduced in this course. You are expected to add links to your p5 sketches directly to our weekly exercise documents.*
-
Weekly Creative Exercise and Blog Post.** Each week there is an open-ended, freestyle creative exercise to apply the concepts that we practice. You are expected to document your work online with a blog post and add links to your posts in our weekly exercise documents (linked below). Include a link to your p5 sketch in your blog post, and here are some guiding questions if you are not sure what to write about:
- What did you originally intend to create?
- Narrate the process of creating your sketch.
- What resources and examples did you draw on to create your sketch?
- What problems / discoveries did you encounter along the way?
- (Source of prompts: Nature of Code syllabus)
*Log in to your NYU account to access the documents.
**If you are struggling with your weekly exercise sketches, put your energy into writing about what didn't work and how you tried to solve it. It is totally okay to vent your frustrations. Writing a blog post helps to remember and synthesize what you did and tried to do. Think of it as writing a reference guide for your future self.
- Our class Miro board
- ICM Media syllabus (overview, grading and attendance policies, and statements)
- ICM Section 6 Code Schedule and Homework Wiki (i.e. the first 7 weeks)
- p5 Resources
- p5 creative coding library: Reference | Web Editor
- Video tutorials: The Coding Train's Introduction to p5 | xin xin's Intro to Programming in p5
- Written tutorials: Allison Parrish’s Creative Coding Notes | Lauren Lee McCarthy's Getting Started with p5.js online at NYU Library | Amazon | HappyCoding.io | Digital Harbor's Creative Programming Course | Coding for Designers Demystifying Code and Learning JavaScript
- Processing Foundation Discourse: A forum for asking / answering Processing and p5 questions
- If you find yourself struggling, there are many forms of support at ITP:
- Look out for the residents' office hours and help sessions.
- Visit The Coding Lab to ask ITP student mentors about your code.
- Here are some examples of how to ask code-related questions.
In class:
- Welcome new students!
- Overview of ICM Media course
- Image file basics
- Objects of images / pixel regions
- Pixel by pixel manipulation
- Related projects
Examples:
- Syllabus resources Pixels as data | Manipulating pixel data
- p5 demos:
translate()
androtate()
with squares | Image file basics | Flip image | Image tint | Blend modes | Objects with the same image | Working with many images | Pixel and pixel region info | Objects with pixel regions | Demonstrating alpha | Playing with canvas pixels | Image pixel array - Media sources (credit the creators): Pxhere | Unsplash | Wikimedia Commons | Your own images!
- Supported media type and formats: MDN Web Docs
- Possible inspiration: Joiri Minaya’s #dominicanwomangooglesearch | Photomontage by Sohei Nishino (free NYTimes subscription via NYU | Four Artworks by Kensuke Koike, Photographs by Tommy Kha for The Myth of Asian American Identity (free NYTimes subscription via NYU) | The Constructed Self by Karen Navarro | The Moment We Meet by
Hsin-Chien Huang | Joiners by David Hockney | Garbage Selfie by Jenny Odell | Pushin' Pusheen Pixels by August Luhrs | 2D Water Ripple Coding Challenge | Dan Shiffman's Pointillism Example |
copy()
method Example (similar toget()
) | Other p5 Reference Image examples (scroll down)
Homework assignment due Wednesday, Oct 27, at 11:59pm:
- TEST YOURSELF • Complete the practice questions in Week 8 Exercises.
- CREATE • The idea this week is to experiment with image files in the form of illustrations, photographic media, etc. Consider the image choice(s) carefully based on your topic(s) and goal(s). Why do you want to work with this particular imagery? In what ways can you go beyond the affordances of image editing or motion graphics software, such as Photoshop and After Effects, and use pixel data, animation,
random()
, and / or user interaction with your own programmed computation for creative expression or to tell a story? Here are a couple of ideas to get you started, but you can also create something from scratch. Feel free to incorporate p5's drawing capabilities in your sketch, as well!- Create a self-portrait or portrait of someone else. How do your computational design decisions contribute to an expression of the subject's mood, personality, dreams, current situation etc.?
- Create a public service announcement or educational resource about an issue that is important to you or your community. What are ways to communicate an informative and engaging narrative?
- Create an abstract work that engages with formal visual considerations, such as line, shape, composition, color, framing, perspective, light, etc.
- Write a blog post that includes a link to your sketch. Document your process and include links to other projects that serve as references, inspiration, or engage with similar ideas.
- Submit your post in Week 8 Exercises.
- READ • Allison Parrish's Working with video
- WATCH
- Coding Train Video 11.1 on capturing your webcam ~10 min
- Videos 0.1 and 7.1 from the Beginner's Guide to Machine Learning with ml5.js and an introduction and pose estimation with PoseNet ~40min
- (OPTIONAL We won't cover these techniques in class, but they are super fun!) Videos 11.2, 11.4 - 11.7 on video photobooths, pixel mirrors, painting with pixels, and slit-scan video ~1hr 20min
In class:
- Share our homework
- Video file basics
- Webcam basics
- Brief introduction to machine learning
- Body point estimation with PoseNet, Handpose, and Facemesh
- Related projects
Examples:
- Syllabus resources Pixels as data | Manipulating pixel data
- p5 demos: Video file basics | Video pixel regions | Webcam basics | Webcam rotate | Webcam pixel regions | Webcam rainbow grid | Webcam pixel array | PoseNet basics | PoseNet Drawing with keypoint | PoseNet Keypoint with slider
- Media sources (credit the creators): Videvo | Videezy | Your own video!
- Supported media type and formats: MDN Web Docs
- Option to downsize video files: VLC (free) > File > Convert / Stream > Customize > Video codec
- Possible inspiration: Coding Traing Videos on video photobooths, pixel mirrors, painting with pixels, and slit-scan video | Flickering Existence by Liu Chang | Danny Rozin | Más Que la Cara by Zach Lieberman | Aspire Mirror by Joy Buolamwini | Maya Man PoseNet Sketchbook | Body, Movement, Language: AI Sketches With Bill T. Jones | Pose estimatiom examples listed on TensorFlow.org (scroll down) | Charlie Gerard Quaruntine and Beat pose | Vibert Thio ITP Web Olympic | Richard Yee Touch Type: Interactive Typography | Casher Drawing with Body
Homework assignment due Wednesday, Nov 3, at 11:59pm:
- TEST YOURSELF • No practice questions this week!
- CREATE • Create a full-screen experience manipulating image(s) and / or video(s) that tells a story (interpret that as you wish). At a minimum it should have a beginning, a middle, and an end. You are welcome to use material and resources from Weeks 8-9 and beyond.
- Work with a partner or group of 3. If you already have a group, mark yourself green here by October 29 at 5:00pm ET. After that I will assign unpaired folks to random groups.
- Questions to consider:
- How might you use color to evoke a specific feeling or a series of changing emotions as the experience progresses?
- If there is interaction (mouse, keyboard, movement, etc.), how might the type and manner of interaction(s) contribute to the intended experience of the piece?
- Technical notes for fullscreen:
- createCanvas(windowWidth, windowHeight);
- Position and size screen elements in relation to the canvas width and height.
- If the experience does not fill the entire screen (e.g. pixel by pixel manipulation can be computationally expensive in the browser), be mindful about the color you select for the canvas.
- These p5 functions might be useful, too: windowResized and fullscreen.
- Everyone should write their own blog post describing their work and code contribution with a link to a sketch. Be sure to include links to other projects that serve as references, inspiration, or engage with similar ideas.
- Submit your post in Week 9 Exercise.
- WATCH • Coding Train Videos 17.1 - 17.5, 17.8 - 7.11 on sound file basics and visualizations (code) ~1hr 45min
In class:
- Share our homework
- Sound file basics
- Sound analysis and visualization
- Related projects
Examples:
- Week 10 syllabus resources
- p5.sound Library
- What Does Sound Look Like? | 1.1 What is Sound? | 1.2 Amplitude | 1.3 Frequency, Pitch and Intervals
- But what is the Fourier Transform? A visual introduction by 3Blue1Brown
- Supported media type and formats: MDN Web Docs
- p5 demos:
- p5.SoundFile Basics | Multiple Sound Files
- p5.AudioIn Mic Mic
- p5.Amplitude Sound Files + Mic
- p5.FFT Waveform | Analyze
- Media sources (credit the creators): Orchestral Sample Library | Another Orchestral Sample Library | Free Music Archive | Freesound | BBC Sound Effects | Sound of Picture | Routing computer sound with Blackhole | Record or generate your own!
- Tools: Audacity for audio editing | media.io for converting media files
- Possible inspiration: Visualizing Music with p5.js | Sigid Play by Christina Lan oh nooo! the thesis site is broken?! | Patatap | Typatone | Singing Swan Tutorial | Chrome Music Lab | Bloom: 10 Worlds app
Homework assignment due Wednesday, Nov 10, at 11:59pm:
- TEST YOURSELF • Complete the practice questions in Week 10 Exercises - last ones!
- CREATE • This week, use the properties and data sound as integral components of your sketch. Some ideas:
- Create a sketch that analyzes sound and translates it into something visual. Use live or recorded audio. Use color, video, images, pixels, or whatever you fancy to represent the sound. Some ideas: imagine you are visualizing music for people who cannot hear. Can your visualization be as expressive as the music itself? Or maybe visualize the differences in noise pollution from different cities, e.g. what do the sounds of different cities look like?
- Revisit a former sketch with mouse interaction and replace the mouse input with audio input such that the action is driven by sound instead. For example, if you can paint with your mouse, then can you draw with some type of audio input instead? Go beyond adding sound effects, and be intentional about your sound choices.
- Create a blog post documenting your work with a link to your sketch. Link to other projects that serve as references, inspiration, or engage with similar ideas.
- Submit your post in Week 10 Exercise.
- INTERACT / READ / LISTEN
- Beats and Notes and Scales
- Synthesizing and analyzing sound by Allison Parrish
- Why repeating words sound like music to your brain ~4 min
- How Generative Music Works by Tero Parviainen (so many examples!) ~10 min
- WATCH • Coding Train Videos 17.6 and 17.7 on sound synthesis and ADSR envelope (code) ~26 min
In class:
- Share our homework
- Making notes
- Sound effects
- Timing and patterns
- Related projects
- Discuss final projects
Examples:
- Week 11 syllabus resources
- p5 demos, Making notes:
-
yourSoundFile.rate()
, note ratios Pitch Slider | Note Ratios Columns - p5.Oscillator, note frequencies Sine Wave Oscillator | Different Wave Types | Note Frequencies Columns
- p5.Oscillator, note ratios Melody using Random | Diatonic Melody | Random Diatonic Chords
-
- p5 demos, Sound effects:
- p5.Envelope (ADSR) With Oscillator | With Sample
- p5 effects p5.Delay | p5.Reverb | p5.Distortion | p5.Filter
- p5 demos, Timing and patterns:
- frameCount and Modulo MIDI Sequencer | Modulo Drum | Loopy Drum | Shifting Syncopation Drum
- p5.SoundLoop Random Sample Sequencer | Polyrhythm Sequencer
- p5 demos, Other examples: Record and Loop | Granular Synthesis | Geometry as Rhythm (related video)
- Possible inspiration: jazz.computer | Plink by DinahMoe | Writing Music in Light | Music Eclipticalis by Brian Foo | Listen to Wikipedia by Hatnote, Stephen LaPorte, and Mahmoud Hashemi | Troupe-like in p5.js by Cassie Tarakajian based on Trope app by Brian Eno and Peter Chilvers | Chrome Music Lab | Symphonies of the Planets by Joohyun Park | PoseNet-related Sidewalk Orchestra by Cristobal Valenzuela + Code Music by Tero Parviainen + Body Beat by Vibert Thio + Semi-Conductor + Body Synth
Homework assignment due Thursday, Nov 18, at the start of class:
- FINAL PROJECT • Prepare a proposal for your final project.
- Your final project is an open-ended creative project that builds off or is inspired by by the concepts in this class. It is an opportunity to push your abilities to produce something that utilizes what you have learned. There is no requirement to use a particular aspect of programming. Focus on an idea that excites you, and choose the best programming concepts and tools to help you realize it.
- Read the Final Project Guidelines and Schedule for all the details, including how to prepare a proposal to share in class next week.
- READ
- Allison Parrish's tutorial on Text and Type
- Review these syllabus examples and tutorials for Text and Data. We'll cover a couple topics, but you might want to go further with the materials posted here.
In class:
- Text
- Data
- Final project proposals
- Discuss user testing for final projects
Examples:
- Text
- Syllabus resources
- Tutorials: Allison Parrish's Text and Type | Carrie Wang's Scrolling Text and Drawing the Text Array
- Code Examples: Alllison Parrish's Interactive Type Examples | Generative Design P.3. Type Examples (scroll down)
- Fonts: Adding Google Web Fonts | Uploading Custom Font Files | Font Squirrel: Free Font Utopia | The League of Movable Type
- p5 demos:
- Possible inspiration: Type Dynamics by Lust | Text Rain by Romy Achituv & Camille Utterback | Legible City by Jeffrey Shaw and Dirk Groeneveld | How to Make a Dadaist Poem | The Oulipo Group’s Generative Word Games | Writing with the Machine with Robin Sloan | Google Experiments AI + Writing Collection
- Data & APIs
- Syllabus resources
- Working with JSON | JSON Formatter Chrome Extension | Formatting and Validating JSON
- Tutorials: Coding Train Intro to Data and APIs (includes working with Wordnik, NYTimes, Giphy, and Wikipedia APIs)
- Data Sources: Static Corpora | Public APIs | Data is Plural | You!
- p5 demos:
- Possible inspiration: The Library of Missing Datasets by Mimi Onuoha | We Need Us by Julie Freeman | Listen to Wikipedia by Stephen LaPorte and Mahmoud Hashemi | Dear Data by Giorgia Lupi and Stefanie Posavec | Sleep Drawings by Laurie Frick | Visual Essays by The Pudding | Parsons Students Design Data Visualizations with Met Open Access API (about) | 45 Ways to Communicate Two Quantities
Homework assignment due Thursday, Dec 2, at the start of class:
- FINAL PROJECT • Create a working prototype of your final project to user test in class next week. Read the Final Project Guidelines and Schedule for general considerations on user testing, the (tentative) format for next week, designing your testing sessions, as well as a framework for providing feedback on others’ projects.
In Class
- Group 1 creators
- Group 2 creators
- Group 3 creators
- Glitch.com demos
- Discuss final project presentations
Examples
-
Glitch.com new project setup:
- Create an account (free!)
- New Project > Find More > Website: Blank Website
- Add a link to the p5 library to the index.html page (HINT: grab the script tags from an index.html file in a p5 web editor sketch)
- Glitch examples:
Homework assignment due Thursday, Dec 9, at the start of class:
- COURSE EVALUATION (also available via Albert)
- FINAL PROJECT • Complete your final project, document it in a blog post, and prepare to share the project in class. Review the Final Project Guidelines and Schedule for details.
In class:
- Welcome and general notes
- Final project presentations
- Complete course evaluations