CSC 220.010CPVL - Object Oriented Multimedia Programming, Fall 2019, TuTh 12-1:20 PM, Old Main 159.
CSC 220.020CPVL - Object Oriented Multimedia Programming, Fall 2019, TuTh 1:30-2:50 PM, Old Main 159.

    Here is the Zoom video for November 26 class.
       
It runs 85 minutes and covers Open Sound Control (OSC/UDP) and Java Maps and Set in Assignment 4.

    FINAL EXAM STUDY GUIDE
        The final exam for the 12:00 class is on Tuesday, Dec. 10, 2019, 8:00 a.m. – 10:00 a.m.
        The final exam for the 1:30 class is on Thursday, Dec. 12, 2019, 11:00 a.m. – 1:00 p.m.
        They will be in Old Main159. You must contact me with a documented medical excuse to miss the exam, or you will earn 0% on it.

Dr. Dale E. Parson
Fall 2019 Office Hours (Old Main 260): Mon 12:30-2:30, Tu 3-4, Wed 2:30-4:30, or by appointment
First day handout (syllabus that is specific to this semester).
Hold the evening of Monday December 2 for a public event in the KU Planetarium featuring the Princeton Laptop Orchestra.
    We will demo a multimedia project. Attendance is mandatory; an alternative project is available if you can't make the date.
    Participation is worth 20% of a project assignment.

Open Broadcaster Software
    OBS, Free and open source software for video recording and live streaming.

CSC480 Special topics course in spring 2020:
This course increases breadth and depth of knowledge for students with experience in object- oriented programming for multimedia systems. Advanced topics include working with camera point-of-view and lighting sources for 3D graphics, recursive shapes and fractals, pixel-level image processing, and animated video composition. Students will program graphical images, video streams, audio signals, physical devices containing electronic sensors and effectors, and combinations of these media. There will be solo and team programming projects.
Prerequisites: CSC220 with a grade of C or better.

RESOURCES & HANDOUTS


CSC120 Recap Demos for month 1 of CSC220, Fall 2019

Link to the Fall 2018 course.
Why Love Generative Art? is extremely well written, comprehensive, and worth reading.


Shiffman's textbook's website including Examples and Exercises that will familiarize you with Processing.
    On overnight reserve in Rohrbach Library.
Software setup instructions:
    1. On your Windows U:\ drive, create a new folder called Processing.
        U:\ is available anywhere on campus and does not auto-delete files.
        Do not store files on your PC desktop. They will be gone after you log out.
    2. Use the Windows Explorer to create folder U:\Processing.
    3. Every time you start Processing, go to Preferences and change the Sketchbook location to U:\Processing.
        You must create folder U:\Processing the first time you want to use it.
        To run Processing, find Processing under S:\ComputerScience on your PC.
    5. All of your practice and assignment sketches must reside under U:\Processing.
    6. If you Download & Install Processing on your home machine, use the latest version Processing 3.x, currently 3.5.
        I don't usually upgrade the version mid-semester, in the interest of stability, unless I need a specific bug fix.

The official Processing website has many examples and library documentation.
Here is the Library Reference. Keep this handy at all times!
The Reas & Fry book, Second Edition. (On overnight reserve in Rohrbach Library.)
We will occasionally import classes from the Java class library, which comes with all standard Java installations.


Java class library https://docs.oracle.com/javase/8/docs/api/index.html
MIDI Fanatic's Technical Brainwashing Center is the best site for MIDI specifications.
        Follow Technical Docs and Programming -> The MIDI Specification from that page.
My slides on MIDI and PCM (Pulse Code Modulation) Digital Audio.

MY HANDOUTS

We'll use my solution to spring 2018 csc120cpvl assignment 3 as an intro to interfaces & classes.
Spring 2014 Java slides on exceptions
Spring 2014 Java slides on generics


ASSIGNMENTS


    Assignment 1 is due by 11:59 PM on Saturday September 28 via D2L.

    Assignment 2 is due by 11:59 PM on Saturday October 12 via D2L.
        Starting code CSC220F19Demo3Da for starting your 3D programming.
        TriTexture.jpg for my textured PShape. If you go for the bonus points for texturing, you must supply your own image file.
        CSC220F19Demo3DSphereBox shows how to position & stretch 3D shapes using translate() and scale().
        CSC220F19DemoPShapeassn2 is my 10/1 simplified sketch for developing your custom makeCustomPShape() for assignment 2.
            Build and test your
makeCustomPShape() function in this sketch, the copy & paste it into assignment 2's sketch.

    Assignment 3 for creating a virtual MIDI instrument for the planetarium dome is due by 11:59 PM on Friday November 8 via D2L.
        There are four Processing tabs (.pde files) in the handout code:
            CSC220F19MIDIassn3.pde is the main sketch. Copy this and do a "Save As CSC220F19MIDIassn3" in Processing.
                In that sketch, create a Tab called Note and copy&save Note as a tab within CSC220F19MIDIassn3.
                In that sketch, create a Tab called Musician and copy&save Musician as a tab within CSC220F19MIDIassn3.
                In that sketch, create a Tab called CartesianPolar and copy&save CartesianPolar as a tab within CSC220F19MIDIassn3.
        CSC220F19MIDIc is a non-planetarium-oriented introduction sketch for MIDI. You can use it to explore PROGRAM & CONTROL.
        CSC220F19DemoPShapeCylinder is a simple demo sketch for making a 3D cylinder.
        A library of hexagonal PNG files, added 10/24/2019.
        A video with shearX caused by Note.setShearXSpeed(float speedInDegrees), starting at 20 seconds in.
        White board photos for mapXY, setShearXSpeed, and code in setup() and Note.display() for PShape & PImage.



Figure 1 of the assignment 3 handout.



Figure 2 of the assignment 3 handout.

    Assignment 4 is due by 11:59 PM on Tuesday November 26. We will not have class that day. I will post & announce a Zoom video.
        Please read the assignment. Attendance is mandatory for the November 19 session in the planetarium.
        Assignment 4 handout explains opportunities for bonus points.
        I added two footnotes on page 6 on 11/12, after printing out hard copies of the handout:  
        Zoom video recording of 11/12/2019 from class discussion on Assignment 4.
              1. You can leave the Android USB cable plugged in to see println() debugging statements on your PC or laptop, but you should do final testing with the USB cable unplugged.
              2. Correction added 11/12/2019 – insert this statement immediately after startOSC(); at the bottom of function setup(): orientation(LANDSCAPE); it has no effect when running the client on the PC, but it keeps the Android client in landscape orientation, and avoid restarts on re-orientation. Restarts still occur if you minimize the sketch on Android. Also, in the Menus tab, change the statement near the top of function startOSC() from globalPointSize = height / 48 ; to globalPointSize = height / 24 ; for the Galaxy tablet in landscape mode. Adjust this statement to suit your device.

        CSC220F19MIDIassn3parson is the starting sketch as explained in the assignment handout.
            Here are CSC220F19MIDIassn3parson's CartesianPolar, Musician, Note, and Menus tabs.
        CSC220F19MIDIassn4Server is the server with which your client sketch communicates. Do not change it.
            Here are CSC220F19MIDIassn4Server's CartesianPolar, Musician, and Note tabs.