Pd workshop log - Cairo 2010

From Giss

Open Lab Egypt :: Master Class 2010

OLE Master CLass 2010 is the following step of previous collaborations with Cairo based artist association aiming at creating a permanent infra-structure and laboratory for the development of digital arts in Egypt, promoting the use of Open Source tools ( FLOSS tools ) for digital creation.

It is an initiative supported by [Hangar,org] ( AAVC, Asociacion de Artistas Visuales de Catalunya ), Barcelona and the spanish embassy in Cairo.

It will take place in the premises of [Medrar] from the 22th of April to the 6th of May.

The goals of this master-class is to start a local community in Cairo of autonomous people that can start a support for production of digital artworks in the future, using all the open source and accessible technologies that might be necessary.

Two main techniques will be taught in the workshop :

  • Pure Data : real-time multi-media environment and programming language.
  • Arduino : electronic interface to the real world and control devices.

Some other techniques and technologies will be taught when necessary : soldering, circuit building ( basic level ), sound editing, ...

This master-class will be also known and referred to as the 't b b' ( trigger bang bang ) workshop.


Medrar for Contemporary Art is a common cultural corporate and philanthropic platform for young emerging artists based in Egypt.

It aims to contribute to the motivation of different means of communication, developing experiences and financial support for contemporary praxis on the national, regional and international level.

Medrar members involved in the project includes :

 * Dia Hamed, workshop organizer
 * Mohammed Allam, workshop organizer
 * Rami Douzy, technical support

Hangar is a visual arts production centre situated in the Poblenou area of Barcelona.

Two collaborators of Hangar will animate the workshop :

 * David Pello : electronics & arduino : [http://ladecadence.net]
 * Yves Degoyon : Pure Data & Open Source tools : [Open CV for PD]


The participants to the workshop have been assisting to the former OLE workshops in Cairo and/or Alexandria.

The participants have been limited to 8 due to the amount of knowledge to transmit in a limited time.

They have been chosen on their motivation shown in previous workshops and their ability to become autonomous advisers on technical subjects in the future, with the objective to make the medialab an independent structure able to function on its own.

The participants includes :

 * Ahmed Basiony : musician and new media artist
 * Ahmed El-Azma : musician and new media artist
 * Mohammed Ezz : visual artist and programmer
 * Kanzy Taha : student in applied arts in the german university
 * Emma Benany : student in media design in the german university
 * Dalia Hassan Abdelhaziz : visual artist
 * Nork Zakarian : musician and interactive installation artist
 * Ahmed El Shaer : web designer and visual artist

You can find all the material of the workshop here [Patches and ressources]

Phase 1 : Pure Data : basic concepts and real-timeprocessing

Duration : 4 days : 22-25/03

Day 1

 General presentation of real-time programs for art : history and difference between Max/MSP and Pure Data
 Introduction to objects and connections
 Review of types of units : objects, messages, numbers, symbols and list
 A special message : bang !
 Time and event processing
 Start of the first example : a stop watch in pd using metro

Day 2

 Conditional processing
 Routing messages and process data
 First example complete : a stop watch in textual mode


Day 3

 Introduction to Gem library
 Transformation of the previous watch in a graphical mode
 Scaling data
 Second example : Stop watch in graphical mode

Day 4

 Explaining gem chains and spaces ( rotation, translation )
 Introduction of sub-patches
 Building an interface that everybody ( think about your mother ) can use
 Third example : control interface for the stop watch


Phase 2 : Pure Data : sound processing and synthesis

Duration : 3 days : 27-29/03

Day 5

 Playing sound with tables ( tabxxx )
 Recording sound 
 Introduction of abstractions
 Start of fourth example : an 8 steps sound sequencer

Day 6

 Finishing an abstraction ( the $0 trick in pd )
 Building an interface using Graph On Parent feature
 Basics of sound synthesis ( waveforms, additive synthesis, ... )
 Example of sound design by obiwannabe
 Finishing fourth example : an 8 steps sound sequencer


Day 7

 Connecting sound processing to animations in Gem
 Creating a context in Gem 
 Details about geometries and rendering
 Finishing fifth example : an animation connected with sound : the fish tank


Phase 3 : Pure Data : extensions and specific processing : 3d, video processing, computer vision, physical modelling, ...

Duration : 5 days : 31/03 :: 1,3-5/04

Day 8

 Using textures and models in Gem
 Using gemlists and separators to sequence processing
 Starting seventh example : using models in Gem

Day 9

 Mapping video on surfaces : curves3d, ...
 Using gemlists to create several models
 Finishing seventh example : a bowling game in pd


Day 10

 Combining Gem and PDP for video effects
 Simple tracking in pdp : pdp_shape...
 Video effects in Gem : colour keying, ...


Day 11

 Choosing video input in pd
 OpenCV introduction : tracking with pix_opencv_camshift
 Detection of contours and connection to a sound processing unit


Day 12

 OpenCV : motion detection
 OpenCV : filtering noise for better tracking
 Use of infra-red cameras for more precise tracking
 Introduction to OSC


Phase 4 : Electronics & Arduino: basic concepts, circuitry and programming...

Duration : 5 days : 7-8,10-12/04

Day 13

 Introduction to electricity. Static, current, voltage drop, intensity, resistance, Ohm's Law.
 Components: Resistor. Variable Resistor. Uses. Experiments.
 Components: Capacitor. Types. Uses. Experiments.
 Components: Coils. Transformers.
 Semiconductors. Silicon crystals. N and P Types. PN junction.
 Components: Diode. LED. Uses. Experiments.
 Components: Bipolar transistor. Transistor as a switch. Transistor as an amplifier. Experiments.
 Components: FET Transistor. MOSFET Transistor.
 Components: Integrated Circuits. Construction.
 Book : http://www.general-search.com/fileinfo/10996093

Day 14

 Introduction to the arduino platform
 Arduino Board, main parts, connectors.
 Arduino IDE, installation, configuration...
 Hello world, LED blink.
 Arduino sketches, parts, setup() and loop() functions.
 Variables, types.
 Digital logic levels, true and false, high and low, 1 and 0.
 Digital output. LED blink, two LED's.
 Digital input. Push button.
 Analog input. ADC, Voltage divider, reading the input.
 Using the serial monitor.

Day 15

 Sending data using the serial-usb port. Data as ascii and as raw bytes. Mapping ranges.
 Connecting Arduino to puredata, comport.
 Connecting Arduino to puredata, video mixer example.
 The amazing binary world. Introduction to binary numeral system. Introduction to binary arithmetics.
 Hexadecimal numeral system.
 More components. Motors: DC motors, servos and steppers.


Day 16

  Arduino Programming Language
  Functions. Defining functions, calling them.
  Operators. Arithmetic, logic. 
  Loops. While, do..until, for.
  Conditionals. If, if...else, switch.

Day 17

  Arduino Programming Language
  Control of RGB LEDS.
  Use of distance and/or pressure sensors to control LEDS.

Phase 5 : Arduino & electronics : sensors, interfaces, extending arduino and advanced programming, ...

Duration : 5 days : 14-15,17-19/04

Day 18

  Arduino Programming Language.
  Arduino Libraries, importing, creating instances of objects, using objects in libraries.
  Servo Motors, types. Interfacing.
  Servo Library.
  Control of servo motors using sensors.

Day 19

  Arduino Programming Language:
  Advanced digital output. Shifting bits.
  The 595 shift register. Pinout. Interfacing.
  LED Binary counter, a 595 example.
  7 segments displays.

Day 20

  7 segments circuit with a 595.
  Programming of the 7 segments display with arduino.
  Use of arrays to control the 7 segments display.
  Sensors. Ultrasonic. LDR's.
  PDuino & Firmata.

Day 21

  Treating sensor data : scaling.
  Mapping library in pd.
  XBee introduction : sending data from the computer.


Day 22

  Receiving sensor datas from Xbees.
  Use of an applicative protocol to distinguish sensors.
  Persistence Of Vision ( POV ) with Arduino and LEDS.