PURE DATA WORKSHOP -- Moholy Nagy Művészeti Egyetem, 2006. 07.24.-07.29.
 


A Pure Data (http://www.puredata.info) egy szabad és nyílt forráskódú, valós idejű grafikus programozói környezet, amelyet széles skálán alkalmaznak művészek a vizuális művészetekhez, színházhoz, tánchoz, hanghoz, installációhoz, perfomanszhoz és egyéb kísérleti médiaművészeti
alkotásokhoz.

A Pure Data ideális azok számára, akik szeretnék a digitális technológiát munkáikba integrálni, és képzett médiaművészek számára is, akik új eszközökkel és módszerekkel szeretnék kombinálni eddigi tapasztalataikat. A Pure Datával könnyen készíthetőek interaktív környezetek, valós idoben generált zene és kép, könnyen összekapcsolható a vizuális tartalom a hanggal.

Az öt napos kurzus bevezetés a programkörnyezetbe, és annak főbb
kiterjesztéseibe (audio, 3d, video).




1. nap

- Installálás
- Bevezetés a Pure Datába:
-- az elso patch - objektumok, kapcsolatok, adattípusok
-- patch a patchben - sub-patch-ok, send/receive

PATCH-ok (zip)



2. nap

- A digitális kép és hang (DSP) alapjai
-- a kép digitális reprezentációja
-- a hang digitális reprezentációja
-- alapvető hangmanipulációk (összeadás, szorzás stb.)
-- hangminták alkalmazása

PATCH-ok (zip)



3. nap

- GUI építése (Graphical User Interface)
-- absztrakciók készítése
-- a dollárjel ($0-foo)
-- Graph-on-parent GUI-k

PATCH-ok (zip)



4. nap

- Pure Data és 3D: GEM (Graphic Environment for Multimedia)
-- egyszerű 3D transzformációk
-- textúra
-- élő video alkalmazása
-- egyszerű effektek

- Betekintés a Pure Data további kiegészítéseibe
-- PMPD (Physical Modelling for Pure Data)

PATCH-ok (zip)



5. nap

- Kommunikáció külső eszközökkel és más programokkal
-- MIDI (Music Instrument Digital Interface)
-- OSC (Open Sound Control)

- Interaktív demonstráció
-- kép és hang feldolgozása, mapping.

PATCH-ok (zip)





--------(fotók a kurzusról)--------------------------------------------------

-----------------------------------------------------------------------------






PURE DATA linkek

miller puckette's original site
http://www-crca.ucsd.edu/~msp/software.html

pd wiki
http://en.wikipedia.org/wiki/Pure_data

blogs
http://neural.it
http://pixelsumo.com
http://generatorx.no

installers
http://at.or.at/hans/pd/installers.html

activities
http://umatic.nl/
http://www.piksel.no/
http://www.goto10.org/






-----------------------------------------------------------------------------

OBJEKTUM REFERENCIA

---------------------------- GLUE -------------------------------------------
bang - output a bang message
float - store and recall a number
symbol - store and recall a symbol
int - store and recall an integer
send - send a message to a named object
receive - catch "sent" messages
select - test for matching numbers or symbols
route - route messages according to first element
pack - make compound messages
unpack - get elements of compound messages
trigger - sequence and convert messagess
spigot - interruptible message connection
moses - part a numeric stream
until - looping mechanism
print - print out messages
makefilename - format a symbol with a variable field
change - remove repeated numbers from a stream
swap - swap two numbers
value - shared numeric value
------------------------------ TIME -----------------------------------------
delay - send a message after a time delay
metro - send a message periodically
line - send a series of linearly stepped numbers
timer - measure time intervals
cputime - measure CPU time
realtime -measure real time
pipe - dynamically growable delay line for numbers
------------------------------ MATH -----------------------------------------
+ - * / pow arithmetic
== != > < >= <= relational tests
& && | || % bit twiddling
mtof ftom powtodb rmstodb dbtopow dbtorms convert acoustical units
mod div sin cos tan atan atan2 sqrt log exp abs higher math
random lower math
max min greater or lesser of 2 numbers
clip force a number into a range
------------------------------ MIDI -----------------------------------------
notein ctlin pgmin bendin touchin polytouchin midiin sysexin - MIDI input
noteout ctlout pgmout bendout touchout polytouchout midiout - MIDI output
makenote - schedule a delayed "note off" message corresponding to a note-on
stripnote - strip "note off" messages
------------------------------ TABLES----------------------------------------
tabread - read a number from a table
tabread4 - read a number from a table, with 4 point interpolation
tabwrite - write a number to a table
soundfiler - read and write tables to soundfiles
------------------------------ MISC -----------------------------------------
loadbang - bang on load
serial - serial device control for NT only
netsend - send messages over the internet
netreceive - receive them
qlist - message sequencer
textfile - file to message converter
openpanel - "Open" dialog
savepanel - "Save as" dialog
bag - set of numbers
poly - polyphonic voice allocation
key, keyup - numeric key values from keyboard
keyname - symbolic key name
-------------------------- AUDIO MATH ---------------------------------------
+~ -~ *~ /~ arithmetic on audio signals
max~ min~ - maximum or minimum of 2 inputs
clip~ - constrict signal to lie between two bounds
q8_rsqrt~ - cheap reciprocal square root (beware -- 8 bits!)
q8_sqrt~ - cheap square root (beware -- 8 bits!)
wrap~ - wraparound (fractional part, sort of)
fft~ - complex forward discrete Fourier transform
ifft~ - complex inverse discrete Fourier transform
rfft~ - real forward discrete Fourier transform
rifft~ - real inverse discrete Fourier transform
framp~ - output a ramp for each block
mtof~, ftom~, rmstodb~, dbtorms~, rmstopow~, powtorms~ - acoustic conversions
-------------------------- AUDIO GLUE ---------------------------------------
dac~ - audio output
adc~ - audio input
sig~ - convert numbers to audio signals
line~ - generate audio ramps
vline~ - deluxe line~
threshold~ detect signal thresholds
snapshot~ - sample a signal (convert it back to a number)
vsnapshot~ deluxe snapshot~
bang~ - send a bang message after each DSP block
samplerate~ get the sample rate
send~ - nonlocal signal connection with fanout
receive~ - get signal from send~
throw~ - add to a summing bus
catch~ - define and read a summing bus
block~ - specify block size and overlap
switch~ - switch DSP computation on and off
readsf~ - soundfile playback from disk
writesf~ - record sound to disk
-------------------- AUDIO OSCILLATORS AND TABLES ---------------------------
phasor~ - sawtooth oscillator
cos~ - cosine
osc~ - cosine oscillator
tabwrite~ - write to a table
tabplay~ - play back from a table (non-transposing)
tabread~ - non-interpolating table read
tabread4~ - four-point interpolating table read
tabosc4~ - wavetable oscillator
tabsend~ - write one block continuously to a table
tabreceive~ read one block continuously from a table
-------------------- AUDIO FILTERS ------------------------------------------
vcf~ - voltage controlled filter
noise~ - white noise generator
env~ - envelope follower
hip~ - high pass filter
lop~ - low pass filter
bp~ - band pass filter
biquad~ - raw filter
samphold~ - sample and hold unit
print~ - print out one or more "blocks"
rpole~ - raw real-valued one-pole filter
rzero~ - raw real-valued one-zero filter
rzero_rev~ rzero~, time-reversed
cpole~, czero~, czero_rev - corresponding complex-valued filters
-------------------- AUDIO DELAY ------------------------
delwrite~ - write to a delay line
delread~ - read from a delay line
vd~ - read from a delay line at a variable delay time
------------------------------ SUBWINDOWS -----------------------------------
pd - define a subwindow
table - array of numbers in a subwindow
inlet - add an inlet to a pd
outlet - add an outlet to a pd
inlet~, outlet~ - signal versions of inlet, outlet
------------------------------ DATA TEMPLATES -------------------------------
struct - define a data structure
drawcurve, filledcurve - draw a curve
drawpolygon, filledpolygon - draw a polygon
plot - plot an array field
drawnumber - print a numeric value
------------------------------ ACCESSING DATA -------------------------------
pointer - point to an object belonging to a template
get - get numeric fields
set - change numeric fields
element - get an array element
getsize - get the size of an array
setsize - change the size of an array
append - add an element to a list
sublist - get a pointer into a list which is an element of another scalar
scalar - draw a scalar on parent
------------------------------ OBSOLETE -------------------------------------
scope~ (use tabwrite~ now)
namecanvas
template (use struct now)

=====================================================================================
*GEM*

Controls
gemhead - the start of rendering chain
gemwin - the window manager
gemmouse - outputs the mouse position and buttons in the GEM window
gemkeyboard - outputs the keycode of a key pressed when you are in the GEM window (there might be different keycodes in Windows/Linux)
gemkeyname - outputs a symbolic description of a key pressed when you are in the GEM window (there might be different symbols in Windows/Linux)
gemorb - outputs the position, rotation, and buttons for a Space Orb
gemtablet - outputs the pen position, pressure, and buttons in the GEM window

Manipulators
accumrotate - accumulate a rotation
alpha - enable/disable alpha blending
ambient - set the ambient color with a vector
ambientRGB - set the ambient color with 3 discrete values
camera -
color - set the color with a vector
colorRGB - set the color with 3 discrete values
depth - enable/disable depth testing
diffuse - set the diffuse color with a vector
diffuseRGB - set the diffuse color with 3 discrete values
emission - set the emissive color with a vector
emissionRGB - set the emissive color with 3 discrete values
linear_path - generate a path from an array of points
ortho - change the view to orthogonal, with the viewport the size of the window
polygon_smooth - turn on anti-aliasing for the objects below
rotate - rotate with an angle and vector
rotateXYZ - rotate with 3 discrete values
scale - scale with a vector
scaleXYZ - scale with 3 discrete values
separator - push the OpenGL state for the rest of the chain and pop when done
shininess - set the shininess of an object
specular - set the specular color with a vector
specularRGB - set the specular color with 3 discrete values
spline_path - generate a spline from an array of knots
translate - translate with a vector
translateXYZ - translate with 3 discrete values

Geos
circle - render a circle
colorSquare - render a colored square (evtl. with color gradients)
cone - render a cone
cube - render a cube
cuboid - render a box
curve - render a Bezier curve
curve3d - render a surface
cylinder - render a cylinder
disk - render a disk
imageVert - make pixel colors to a height field map
model - render an Alias|Wavefront model
multimodel - render a series of Alias|Wavefront models, render by number
newWave - render a wave (that is evolving over time)
polygon - render a polygon
primTri - a triangle primitive
rectangle - render a rectangle
ripple - a rectangle with distorted (over time) texture-coordinates
rubber - a grid where you can move one of the grid-points
slideSquare - render a number of sliding squares
sphere - render a sphere
square - render a square
teapot - render a teapot
text2d - render 2-D text (a bitmap)
text3d - render 3-D text (polygonal)
textextruded - render an extruded 3D-text
textoutline - render outlined text (polygonal)
triangle - render a triangle

Particles
part_head - The start of a particle group
part_color - Set the range of colors for the new particles
part_damp - set the damping for particles
part_draw - Apply the actions and render the particles. Accepts a message "draw line" or "draw point" to change the drawing style.
part_follow - Particles will follow each other like a snake
part_gravity - Have the particles accelerate in a direction
part_info - get the information (position, color, size,...) of each particle
part_killold - Remove particles past a certain age
part_killslow - Remove particles below a certain speed
part_orbitpoint - Orbit the particles around a specified point
part_render - render the remaining gem-tree as particles.
part_size - Set the size of new particles
part_source - Generate particles
part_targetcolor - Change color of the particles toward the specified color
part_targetsize - Change size of the particles toward the specified size
part_velocity - Set the velocity domain (distribution like CONE and the appropriate arguments)
part_vertex - emit a single particle

Nongeos
light - make a point light
world_light - make a light at infinity

Pixes
pix_2grey - convert rgb pixels to grey (still an RGBA image)
pix_a_2grey - convert rgb pixels to grey based on alpha channel
pix_add - add two pixes together
pix_aging - super8-like aging effect
pix_alpha - set the alpha value of a pix
pix_background - let through only pixels that differ from a static "background" image
pix_backlight - a backlight photo effect
pix_biquad - 2p2z-filter for subsequent images
pix_bitmask - apply a bitmask to a pix
pix_blob - get center of gravity
pix_buf - buffer a pix
pix_buffer - storage room for pixes (like [table] for floats)
pix_buffer_read/pix_buffer_write - put/get pixes into/from a pix_buffer
pix_chroma_key - color keying (like "blue-box")
pix_coloralpha - set the alpha-channel of a pix as a mean-value of the color-components
pix_colormatrix - recombine the RGBA-channels with matrix-operation
pix_color - set the color of a pix (leaving alpha alone)
pix_colorreduce - reduce the number of colors (statistically)
pix_composite - composite two pixes together
pix_convolve - convolve a pix with a kernal
pix_coordinate - set the texture coordinates
pix_crop - get a sub-image of a pix
pix_curve - apply color-curves onto a pix
pix_data - get pixel data information
pix_delay - frame-wise delay
pix_diff - get absolute difference of two pixes
pix_dot - rasterize a pix with big dots
pix_draw - draw a pix
pix_dump - dump the pixel-data as a long list of floats
pix_duotone - reduce the number of colors by thresholding
pix_film - use a movie file as a pix source for image-processing
pix_flip - flip the pixels of a pix
pix_gain - apply a gain to a pix
pix_grey - convert any pix into greyscale colorspace
pix_halftone - rasterize a pix like it was printed in a newspaper
pix_histo - get the histogram of a pix
pix_hsv2rgb - transform a pix from HSV-colorspace into RGB-colorspace
pix_image - load in an image file
pix_imageInPlace - load a series of image files directly into texture-buffer, display by number
pix_info - get information about the pix (like dimension, colorspace,...)
pix_invert - invert a pix
pix_kaleidoscope - as if you were looking at the pix through a kaleidoscope
pix_levels - level adjustment
pix_lumaoffset - y-offset pixels depending on their luminance
pix_mask - mask a pix based on another pix
pix_metaimage - recompose an image out of smaller versions of itself
pix_mix - mix to pixes together
pix_motionblur - motionblur an image
pix_movie - use a movie file as a pix source and load it immediately into the texture-buffer
pix_movement - set the alpha-channel with respect to the change between two frames
pix_multiply - multiply two pixes
pix_multiimage - load in a series of image files, display by number
pix_normalize - normalize a pix
pix_offset - add an offset to a pix (wrapping instead of clipping)
pix_pix2sig~ - interpret a pix as 4 (RGBA) audio-signals
pix_posterize - posterization photo effect
pix_puzzle - shuffle an image
pix_rds - generate a Random Dot Stereogram out of the image (aka: Magic Eye (tm))
pix_rectangle - generate a rectangle in a pix buffer
pix_refraction - break up an image into coloured "glass-bricks"
pix_resize - resize a pix to next power of 2
pix_rgb2hsv - transform a pix from RGB-colorspace into HSV-colorspace
pix_rgba - transform a pix of any format into RGBA
pix_roll - (sc)roll through an image (wrapping)
pix_rtx - swap time-axis and x-axis
pix_scanline - take every nth line of the original image
pix_set - set the pixel-data with a long list of floats
pix_sig2pix~ - interpret 4 audio-signals as (RGBA) image-data
pix_snap - capture the render window into a pix
pix_snap2tex - capture the render window directly as a texture
pix_subtract - subtract two pixes
pix_tIIR - time-base Infinite-Impulse-Response filter (for motion-bluring,...) with settable number of poles/zeros
pix_takealpha - take the alpha channel of one pix and put it into another pix
pix_texture - use a pix as a texture map
pix_threshold - apply a threshold to a pix
pix_video - use a video camera as a pix source
pix_write - capture the render window to disk
pix_zoom - zoom into a pix (using OpenGL)

openGL there are more than 250 objects that form a complete wrapper around the openGL set of functions (as defined in the openGL-1.2 standard).
each openGL-function is prefixed with "GEM", eg: [GEMglVertex3f] is wrapped around glVertex3f.

MarkEx
alternate - alternate between two outlets
average - average a sequence of numbers
change - only output on change
counter - count bangs
invert - non-zero numbers to zero, zero to 1
multiselect/multisel - a select object which accepts a list in the right inlet
oneshot - send a bang, then block until reset
randomF / randF - floating point random numbers
strcat - string concatentation
tripleLine - do a line with three numbers
tripleRand - random with three numbers
vector+ / v+ - add a scalar to a vector
vector- / v- - subtract a scalar from a vector
vector* / v* - multiply a vector by a scalar
vector/ / v/ - divide a vector by a scalar
vectorpack / vpack - attach a scalar to the end of a vector
rgb2hsv - convert a list of three floats from RGB to an HSV value
hsv2rgb - convert a list of three floats from HSV to an RGB value
abs~ - absolute value of a signal
reson~ - resonant filter




2006 stc(at)basilar.net