Bang, Beep, Buzz, Blip: Introducing Pure Data - PowerPoint PPT Presentation

1 / 42
About This Presentation
Title:

Bang, Beep, Buzz, Blip: Introducing Pure Data

Description:

A visual data-flow programming environment. An extensible library of components ... Venturi tube made of Lego! Interface box. 1U EIA rack enclosure ... – PowerPoint PPT presentation

Number of Views:133
Avg rating:3.0/5.0
Slides: 43
Provided by: chris704
Category:
Tags: bang | beep | blip | buzz | data | introducing | pure | venturi

less

Transcript and Presenter's Notes

Title: Bang, Beep, Buzz, Blip: Introducing Pure Data


1
Bang, Beep, Buzz, Blip Introducing Pure Data
  • Chris Edwards
  • Teaching Fellow
  • Department of Information Science
  • University of Otago

2
Pd What is it?
  • Not my invention!
  • A digital audio system
  • Real-time synthesis and signal processing
  • Also video, network, 3D, etc. capabilities
  • A visual data-flow programming environment
  • An extensible library of components
  • A global community
  • Developers, technicians, artists

3
Like a Moog modular synth, but digital
4
LEGO for sound and video?
5
Pd basic elements (1)
  • Object types by function/appearance
  • Object (processing)
  • Message (events)
  • GUI (user interaction)
  • Comment (documentation)
  • Object types by topology
  • Source (outlet only)
  • Sink (inlet only)
  • Filter (inlet and outlet)
  • Atoms
  • Float, symbol or pointer

6
Pd basic elements (2)
  • Patch network or graph of data flows
  • Connections/Streams
  • Signals (continuous audio)
  • Messages (sporadic events)
  • Typ. control-oriented
  • Made up of multiple atoms
  • Data streams flow from top to bottom
  • Audio I/O adc, dac
  • Abstraction
  • Editing and Interaction modes

7
Quick demo
  • Sinusoidal signal generator with pitch and volume
    controls

8
Origins
  • Miller S. Puckette
  • PhD in maths from Harvard in 1986
  • Currently at CRCA (Center for Research in
    Computing and the Arts), UCSD
  • INRIA (FR) (1980s)
  • Was common for technicians to develop systems to
    support artists
  • Puckette developed Max to enable artists to do it
    themselves
  • Pure Data (Puckette, 1996)
  • Design based on Max
  • Open source
  • New graphical data structures

9
How I stumbled upon it
10
Amiga photo
11
Amiga mainboard photo
12
(No Transcript)
13
SoundTracker family(Obarski, 1987)
  • Amiga platform
  • Sample/wavetable bank (instruments)
  • Vary playback frequency for note pitches
  • Numeric sequencer
  • Steps
  • Patterns
  • Basic control (jump, stop, repeat, etc.)
  • Real-time effects

14
Protracker screenshot/demo
15
Jeskola Buzz (Tammelin, 1997)
  • Sound synthesis and signal processing as a
    network
  • Waveforms generated and processed in real-time
  • Traditional step/pattern sequencer
  • Source code lost in 2000

16
Is everything in musica function?
  • Waveforms
  • Envelopes
  • Spectra
  • Melodies, motifs, etc.
  • Dynamics
  • Patterns
  • Sequences
  • Modulation
  • Its already been done!
  • (though somewhat differently in places)

17
Pds philosophy and architecture
  • Graphical literate programming
  • Visual appearance of the patch is the program
  • DSP block diagrams are pseudocode
  • Comment objects can be placed anywhere on a patch
  • Object-oriented/functional paradigm
  • Classes and instantiation
  • Message passing
  • Outlets pass data to inlets
  • Patch document program/subprogram
  • Object network must be acyclic
  • But feedback (recirculation of data) is possible
    using special delay objects
  • Data processed in real time

18
Other design features
  • Patches can be edited while running
  • Abstraction and re-use of patches
  • Ad hoc, one-off sub-patches
  • External patches (re-usable)
  • All look like objects from the outside
  • Data structures arrays, lists, graphics
  • Entire libraries of externals
  • Help file conventions make objects
    self-documenting

19
Implementation details
  • All numbers are 32-bit floating-point
  • Audio h/w usually 16-24 bit integer precision
  • Primitive objects typ. implemented in C
  • Many audio APIs supported
  • PortAudio, ASIO, MMIO, Core Audio, ALSA, OSS,
    JACK
  • Audio rate processing runs continuously, in
    blocks
  • Usually driven by audio hardware clock
  • Patches stored as plain text, describing topology
    and layout
  • GUI is implemented using Tcl/Tk

20
Input/Output
  • print, snapshot
  • Load/save audio files to/from Pd arrays
  • MIDI, OSC
  • USB HID-class devices hid
  • Keyboard, mouse, joystick, etc.
  • Bluetooth (e.g. Wii remote control)
  • Network (TCP or UDP)
  • Messages and uncompressed audio
  • Compressed audio, e.g. oggcast
  • Local IPC pdsend/pdreceive
  • COMEDI (Linux)
  • Video capture

21
Subtleties
  • Using messages for control of audio-rate data
  • Quantisation, low data rate (10-1000 Hz)
  • Zipper noise, clicks on toggling, noise
  • Add interpolation (line, line, vline)
  • Foldover distortion (sampling Nyquist limit)
  • Clipping on audio I/O
  • NaN
  • Platform-dependent features
  • Graphics, codecs, tablets, etc.

22
Thinking in data flows
  • Where are the loops? Conditionals? Variables?
    Assignment operations? Flow of control?

23
No visible flow of control
  • Messages happen virtually simultaneously
  • Audio signals processed continuously
  • But in finite blocks
  • Power-of-2 samples in duration
  • Some latency (1.45 ms typ. _at_ 44.1 kHz)
  • Interleaved with message processing
  • Implicit event loop, effectively
  • However, its not stateless

24
Some procedural counterparts
  • Variables (typed)
  • integer, float and symbol
  • Store received input values, emit when banged
  • until for iteration
  • Expressions
  • Network of objects (inverted expression tree)
  • expr (formula in a box)
  • spigot conditionally enables data flow
  • moses, select and route resemble CASE or IF
    as functions
  • Numeric messages can be interpreted as Booleans
  • Objects for logical and relational operators
  • , , , lt, lt, et al.

25
Certain tasks are easier in a data-flow
environment
  • Real-time, interactive tasks
  • Function-oriented tasks
  • Dealing with continuous signals (streams)
  • e.g. capture and playback, analysis and synthesis
  • Event-driven stuff
  • External triggers, physical devices
  • Timed events (e.g. metro (metronome))

26
Examples
  • Converting decibels to multiplication factors
  • Gaussian random number generator
  • random for uniformly-distributed integers
  • Polar Box-Muller transformation
  • Turing Machine

27
Going beyond sound
  • 3D GEM (OpenGL)
  • Video capture, processing, compositing, etc.
  • PDP, PiDiP
  • Physical modelling
  • Physical transducers and other I/O

28
The digital fipple flute
  • Home-made electronic controller
  • No actual fipple, just an MPX2010 differential
    pressure sensor
  • 8 force-sensing resistors for fingering
  • Main flute body is a diving snorkel!
  • Venturi tube made of Lego!

29
Interface box
  • 1U EIA rack enclosure
  • USBDUX-fast data acquisition board
  • Analog signal processing
  • Gain
  • Polarity
  • Differential to single-ended conversion
  • Power supply for sensors and op-amps
  • Very tedious cable and socket wiring
  • Power and sensor line count meant multiple cables

30
DUXbox photo
31
Light sensors
  • Ordinary cadmium sulfide devices
  • More light, less resistance
  • Some analog pre-processing required before DAC

32
Drum pads
  • Rubber practice pads
  • Piezoelectric transducer element
  • Suitable for use with Pds bonk object
  • Takes audio signal as input
  • Detects hits
  • Outputs messages (including intensity)

33
Wii remote controller
  • Buttons
  • 3-axis accelerometer
  • IR camera for tracking reference points
  • Vibration
  • Speaker
  • LEDs

34
Another Demo!
35
What Ive used Pd for
  • Hands-On Science Snack activities
  • Simple, intuitive way to introduce topics such as
    data processing and events without requiring any
    coding ability/experience
  • Otago Technology Innovation Challenge
  • General-purpose enough not to constrain their
    thinking and ideas
  • Not limited to creative/artistic applications
  • Real-time performance at Fringe Festival 2009
    with Andrew Long
  • Sequencing drums and bass parts for my own
    recording projects

36
Further ideas and plans
  • Flute fingering logic
  • Loose quantiser for fitting slurs to musical
    scales
  • Psychoacoustic level meters (Stevens?)
  • Integrate with Arduino, Mindstorms
  • MIDI feedback and other processing
  • More weird instruments/hardware

37
Potential Pd applications
  • General signal processing
  • suitable for real-time, audio frequency work
  • Data visualisation
  • Simulation
  • (damped mass on spring demo)
  • Prototyping
  • (simple flight sim in one patch)
  • DIY groupware systems
  • VJ (video jockey) performance
  • Sound design
  • Game development

38
Potential improvements
  • Define aliases for object classes
  • Attach comments to specific objects, groups or
    regions
  • An on-demand signal snooper for testing and
    troubleshooting
  • Macro capability?
  • Hierarchical namespace for objects?
  • UI refinements

39
Conclusions
  • Modularity and generality are great strengths
  • Need abstractions to manage complexity
  • Libraries are important
  • Be willing to DIY
  • Literate graphical programming has benefits
  • Everything is a function works well for audio
  • Ability to edit running patches is useful
  • Invisible connections (send/receive, etc.)?
  • Undermine graphical approach
  • but avoid clutter on complex graphs

40
More conclusions
  • I feel like Ive scarcely scratched the surface
  • Your imagination is probably the limiting factor!
  • Pd is still has underground cachet, AFAICT
  • Open Source benefits
  • Community strength and longevity
  • Co-operation beats competition
  • Tangible facets to software make it more
    accessible and fun

41
Linkies
  • Pd vanilla/official home pages
  • http//www-crca.ucsd.edu/msp/software.html
  • Pd community pages
  • http//puredata.info/
  • http//puredata.hurleur.com/
  • Miller Puckette interview
  • http//solipsisticnation.com/?p165

42
More linkies
  • USBDUX-fast data acquisition board
  • http//www.linux-usb-daq.co.uk/prod2_duxfast/
  • COMEDI (Linux)
  • http//www.comedi.org/
  • Pd Turing Machine
  • http//footils.org/cms/weblog/2007/feb/07/turing-m
    achine-pd/
Write a Comment
User Comments (0)
About PowerShow.com