Basic Techniques – Week 8 – Project Specific Feedback & OpenFrameworks

Review of Last Week(s)

  • Marks from midterms – any questions or concerns?
  • What did you get done? What are your major problems/concerns going forward? (Project updates)
  • Notes and thoughts from the class…
Housekeeping
  • Laser cutter 2pm-ish
  • Quick look at Processing assignments? Anyone wanna show anything?
  • Quick look at Physical computing assignments? Anyone do anything fun?
  • Final project presentations on May 14th. This is, as ever, outlined in the Module Handbook.
  • NOTE! You lucky ducks have until May 28th (“Week 14″) to polish up any remaining ‘things’ that you’d like to be evaluated as part of the project. If these are large, dynamic or physical, they need to be documented (however you please) on your blog. If they can be submitted, they need to be submitted to the SACS office.
  • Week 10: Statistics, algorithms and guest
  • Week 11: Individual meetings – SIGN UP HERE – Max/MSP scripting with java and javascript
  • Week 12: PRESENTATIONS!!! 20 mins each, go through concept, ideas, context, show what you have completed. There will be new people in the audience, so START FROM THE BEGINNING
  • For those using Basic Techniques as a starting point for your final projects – Make sure you’re describing what you accomplished for your Basic Techniques

Rationale

First week back after a the March-no-class-so-you-can-work-on-your-projects-time, so we’re going to try and spend a good amount of time just catching up and making sure everyone is on track to finish with a gold.

Then – if we have time – a short look at a new topic, just so we cover it – object orientation and OpenFrameworks. As we’re all starting to look at more complex systems, it’s the right time to look at the idea of ‘object orientation’ – or the encapsulation of functional and memory aspects of your program into specified structures. At the end of this discussion we’ll look at a computing language that is specifically designed for this kind of object oriented work – C++ (via OpenFrameworks).

OOP = Object Oriented Programming

The conceptual basis for object orientation, is not that difficult, although it is couched in a certain language that we should be familiar with, and is often addressed in an entirely over-explained way (especially in programming textbooks). The simplest understanding is an analog to language, or words – which linguists will tell you are at once a thing, as well as often a reference to a thing. Most generally:

  • Imagine the idea of a chair. This idea of a chair is a ‘class‘ – that is, it is your general concept of something that has no ‘specific’ manifestation (yet!)
    • Class functions or methods refer to things that that class can general do or provide. Chairs can generally be used for sitting, or for propping open doors, or for hitting people over the head. These are functions of the class “chair.”
    • Class fields or variables refer to properties of a class. Chairs could have a specific design, material, or upholstering.
  • Imagine a specific chair. Having just the idea of a chair, is not particularly useful. Let’s say we’re talking about the Poul Kjaerholm chair (probably my favorite modernist chair). This chair is an ‘object‘ which is an ‘instance‘ of the class chair.
    • functions or methods would be the same as for all chairs (above), but also might include elements specific to this chair. E.g.: Give-off expensive seeming leather smell.
    • fields or variables would then be ‘filled in’ during an instantiation of a the object (E.g.: design: Kjaerholm, material: leather)
  • Objects as ‘variable’ type:
    • Creating an object from a defined class is much like creating a variable
    • You must give it a name, and you must declare it (i.e.: ‘make’ one)
    • Functions and fields are accessed via the dot operator
  • Definining a class:
    • Make a constructor (always with the same name of the class) -
      • A method that defines what happens when you make an object, initialization
    • Define the Class’ internal variables
    • Define the Class’ functions and methods
  • You can have arrays of objects/classes! use tha [ ] operator
  • Further conceptual info from Sun

Max/MSP

  • There is a sort of ‘class’ structure to every instantiation of a Max object, more or less
  • Particularly class-like structures are uses of poly~ objects, or Java/Javascript implementation in Max

Processing

OpenFrameworks

  • OpenFrameworks, unlike Max and Processing is a framework – or software framework – basically like a bunch of really big libraries/extensions, but you have to provide the infrastructure on your computer to program with
  • On OSX, that infrastructure is XCode – if you don’t have it, you can get it here
  • The main difference between a library and a framework, is that a framework requires certain things of you and the way you write your code
  • OF is a C++ framework – i.e.: It is a collection of C++ tools (other frameworks!!) that are designed for people like us
  • The C++ language is a class-based language. It was the first, or the most popular first, language to come about after OOP really got going – so it’s designed for CLASS structures. It’s often referred to as “C with Classes.” Everything, more or less is a CLASS of something else. (This is also true of Java, Processing, etc., by the way, but most of that is obscured in Processing).
  • Why? It can be REALLY fast. Like, RRREALLY fast.
  • The basic idea
    • C++ programs are assemblages of Class files
    • Class files are composed of a ‘header’ (.h) file and a class (.cpp) file
      • Headers are used to declare the Class and the methods of the class, but
      • .cpp files are used to define these classes and methods
    • C++ classes can define static methods (called anywhere, any time) and instance methods (called as methods of an instance of a class, i.e.: of an object)
  • General usage and examples
    • Download (get the FAT one)
    • Every OF application is an instance of ” ofBaseApp” – which handles a bunch of stuff like fullscreen mode and user input, etc.
    • Start by copying the folder “emptyExample” and renaming the folder
    • Open testApp.cpp and insert code in event handling methods of the OBJECT testApp
    • Note that if you want to create ‘global’ variables that can be accessed anywhere in the program – these need to be in the .h file!
    • Docs for various methods/functions here
  • Key addons:
  • NB.: There is very good reason, as OF is based on Processing, to sketch/learn first in Processing and then move/re-implement in OF!

To Do:

  • Finish up project work!!!!
  • Be communicative about problems you’re having!
  • Next week is regular class – a few new topics, but we’ll leave plenty of individual consultation time

Leave a Reply

Thinking 1 – Applied Philosophy: Philosophy of Technology 1/2

Applied Philosophy: Philosophy of Technology 1

  • Introduction to Phenomenology
  • Martin Heidegger and the Tool
  • Concept of Embodiment and Immersion

Applied Philosophy: Philosophy of Technology 1
Reading Material: Martin Heidegger: Being and Time

Applied Philosophy: Philosophy of Technology 2

  • Don Ihde’s Experimental Phenomenology
  • Paul Dourish’ Embodied Interaction
  • Concept of Embodiment /Disembodiment and Immersion




Philosophy of Technology 2: Embodiment, Disembodiment and Immersion

Thinking 2 – The Philosophy of Experience: Maurice Merleau-Ponty’s approach to consciousness and embodiement



The Philosophy of Experience

  • Maurice Merleau-Ponty’s approach to consciousness and embodiement

Reading Material: Page 3-12 http://www.scribd.com/doc/4877219/M-MerleauPonty-Phenomenology-of-Perception

PDF Document of the Presentation – Maurice Merleau-Ponty_15Feb12

Processing – 2 – More Programming (Tom Schofield), 16/2/11

This week we continue with some programming fundamentals namely:

  • arrays and array lists
  • “for” loops
  • functions and scope
  • classes
  • libraries

Aims and Objectives

This session is once again designed to be as “ground up” as possible within the restraints of time. We will focus more on the tricky bits that are likely to trip people up when working alone. Although it’s really tempting to jump straight in and start working with images, text, movies or libraries my intention is to try and get people towards the stage where they will be better equipped to use processing more creatively/independently.

Arrays and array lists

//ArrayExample

Arrays are a way of storing sets or lists of data of any type. They have a finite size which you can find by adding .length to the end of your variable like this:

println(myArray.length);

The reference number which tells you which part of the array (element) we are looking at is the index which you can find between square brackets:

in myArray[5] the “5″ refers to the 6th element in the array because arrays start at zero which can be confusing!

For loops – (iteration) Details »

THINKING – 23/11/11 – Introduction to the Philosophy of Human Experience

Art & Science 1: What is Consciousness?

  • Introduction into the philosophical and scientific concept of cognition
  • Descartes, Body-Mind problem
  • Cognitive Sciences, Scientific Methods



Reading: Susan Blackmore – Consciousness: An Introduction 2003



More info: http://www.susanblackmore.co.uk/Books/Consciousness/cons.htm

 

THINKING – 26/10/11 – The History of Interactivity I

“The History of Interactivity I” session will explore the concept of “interaction” and how this has been transformed by the applications of modern technology. We look into artistic and design applications of interfaces and discuss the current states of digital media and emerging technologies. We will talk about the human-technology interrelationship and compare that with the artwork-spectator relationship.The session will provide a comprehensive overview of pioneering scientists and artist working in the field of interactive art and interface design.


The History of Interaction 1

Readings:

 


DOING – 01/11/11 – Sensors (Inputs) and Actuators (Outputs)

Housekeeping

  • Results from your sensor walk assignments
  • Questions from Arduino assignments – anything you’d like to show us, talk about?  You should have…

Rationale

Today will be a quite practical session – looking at the input and output options for your Arduino systems.  We’ll also go through some tips and trips for programming with Arduino.

From Last Week

  • Go through the Arduino_SecondExamples.zip – what’s going on in there…
  • We’ll develop a few more practical examples in class

Details »

DOING – 19/10/11 – Intro to Electronics and Microcontrollers

Housekeeping

Rationale

Today we’ll look at what is happening underneath the hood of the Arduino a little – how it represents and processes “the world.”

As well, we’ll look at some further elements you should know about for control of and measurement in your projects.

From Last Week

  • What is happening when we ask the Arduino to ‘blink’?
  • Analog = Analogous
    • Hold hands!
    • The squeezing of a hand… –> Drawing on the board
    • What are the characteristics of this (instantaneous/atemporal, subjective)?
  • More than one link in the chain…
    • Transferring a signal between more than one person
    • What about long distances (or even short distances accurately)?
    • What would be a better way to do this?What are the characteristics of this (synchronous, memory based, objective)?

Details »

DOING – 05/10/11 – This Thing We Call Technology

Housekeeping

Rationale

So. This class iis about creative reflections on technology, and using technology. We’re not necessarily always interested in the ‘right way’ to do things, in terms of commercial production, or how the manual tells you to use software, etc. We are, however, interested in looking critically at tools, their use, and the assumptions and values they embody.

Most generally – the approach we’ll take in this class is about establishing a playful relationship with technology. Something akin to playing with physical materials – an outlook that speaks of having some understanding of the fact that there is no technical difference between the ‘digital’ and ‘analog’… It’s all the same damn world, the same “reality.”

Details »

DOING – 11/05/11 – Max MSP 2

Hello,

FIRSTLY: THE THEME FOR THE SUBMISSION IS ‘FRAGMENTATION

Today we had a look at Jitter – the video part of max. This hopefully brings out some of the sublime fun you can have when you are treating everything as data, and interconnecting audio, math and video processes. Max MSP is particularly good for this kind of thing, giving you an environment where you can improvise + explore this interconnectedness.

Here is a bundle of patches, with instructions + explanations:

http://www.mediafire.com/?dldq4olh57jqbv3

Adam

DOING – 27/04/11 – Introduction to Max MSP

We had a look at some of the basic principles of Max MSP and Pure Data

*Max MSP and Pure Data are both based on the ‘Max’ paradigm developed by Miller Puckette at Ircam in the 1980s. Both are very similar: Max can be visually more accessible, and a little more user friendly, but unlike Pure Data you have to pay for it. There are some different ‘objects’ and approaches in each, but nothing too significant: if you learn one, you’ll be able to figure out the other.

*Both are (almost) ‘object oriented’ programming languages. Objects are basically little boxes that do a job, and we connect objects together with patch cords. Objects communicate to each other with messages.

Here is a small bundle of simple Max patches with some instructions in the comments:

http://www.mediafire.com/?v92fmved0937kpc

If you don’t know what an object does, look at it’s help files (shift-cmd-h). In the help file, if you click ‘open reference’ at the top of the window, you’ll find out what messages and arguments the object takes. Also take a look at the tutorials if you can.

THINKING 4 – 23/03/11 – Art & Science 2: The Philosophy and Science of Experience



Art & Science 2: The Philosophy and Science of Experience

  • Maurice Merleau-Ponty’s approach to consciousness and embodiement

Reading Material: Page 3-12 http://www.scribd.com/doc/4877219/M-MerleauPonty-Phenomenology-of-Perception

THINKING 3 – 09/03/11 – What is Consciousness? Consciousness Studies and Applied Philosophy

Art & Science 1: What is Consciousness? (Atau/Brigitta)

  • Introduction into the philosophical and scientific concept of cognition
  • Descartes, Body-Mind problem
  • Cognitive Sciences, Scientific Methods



Reading: Susan Blackmore – Consciousness: An Introduction 2003



More info: http://www.susanblackmore.co.uk/Books/Consciousness/cons.htm

 

Processing – 1 – Intro to Programming (Tom Schofield), 2/2/11

Intro to Processing
Rationale

Today we shift focus to a kind of programming paradigm that uses a much more typical for of computer graphics control. We’ll look at the basics of procedural control, and the way that the drawing ‘engine’ inside processing interprets these controls. Some of this will be familiar (BUT DIFFERENT) to experience you have of Arduino coding from last term. Details »

THINKING 6 – 15/12/10 – Umberto Eco’s Openess and Interactive Art & Design/ Aesthetics/ Semantics



THINKING 5 – 01/12/10 – Applied Philosophy: Philosophy of Technology 2

Applied Philosophy: Philosophy of Technology 2

  • Don Ihde’s Experimental Phenomenology
  • Paul Dourish’ Embodied Interaction
  • Concept of Embodiment /Disembodiment and Immersion




Philosophy of Technology 2: Embodiment, Disembodiment and Immersion Details »

THINKING 4 – 24/11/10 – Applied Philosophy: Philosophy of Technology 1

Applied Philosophy: Philosophy of Technology 1

  • Introduction to Phenomenology
  • Martin Heidegger and the Tool
  • Concept of Embodiment and Immersion

Applied Philosophy: Philosophy of Technology 1
Reading Material: Martin Heidegger: Being and Time

DOING 4 – 24/11/10 (with Tom Schofield) – Arduino into Software, A First Look

Housekeeping

  • Review projects from Lalya’s pound store challenge

Rationale: This week will look at basic Processing scripts… for getting a single piece, then more than one piece of info into and out of Processing. We will also have a bit of background about communication protocols and how different ones work. Details »

DOING 3 – 10/11/10 (with Lalya Gaye) – DIY and Prototyping

Housekeeping

  • Assignments from previous week
  • Prior readings: “What Do Prototypes Prototype?” – Stephanie Houde and Charles Hill [PDF]
    “Experience Prototyping” – Marion Buchenau and Jane Fulton Suri [PDF]
  • Bring scrap from your local 1-Pound shop (do not spend more than £3!) Details »

THINKING 2 – 27/10/10 – Open Source Culture & Transdisciplinary Practice

This session explored the impact and the potentials of the creative transformation of the open source initiative and how the open source culture might introduce new types of creative practices, artists and collaborative communities. See the sessions’ slides below:
Open Source Culture and Transdisciplinary Practice

Media Art Dynamic Archive: MediaArtTube: http://www.youtube.com/user/MediaArtTube

THINKING 1 – 06/10/10

- An introduction of the sessions as they are planned
- Going over the Module Handbook

-”Why Theory” and the different meanings of the words theory and research in different domains relevant to us

WhyTheory061010.pdf

- Reading:
Lev Manovich, “The Language of New Media”. MIT Press. 1999
http://www.manovich.net/LNM/

PDF version available on his own website
http://www.manovich.net/LNM/Manovich.pdf

pp. 43-44 “What is New Media?”
pp. 49-65 “Principles of New Media”