Home   Arduino/PD   OpenRabbit   SWK-8630   TcpSrv   DV300F   Accumulator   Mail me 
I love Vim! 
Welcome at my Arduino to PureData interface made easy site!

What is it NOT?
This is not a replacement for the Pduino (Firmata firmware) that are often used when hooking up an Arduino to PureData directly. It neither is, but might solve the same problem as the SimpleMessageSystem. Both are found in the Arduino playground.

Also this software is not provided by Arduino. They might not give any support or whatever regarding this website or software.

Tell me, what is it.
It is a collection of software written in GNU C and C++ to make it possible to send messages from and to an Arduino board/firmware from PureData.
On the PureData end it works in a similar way as the internal send and receive objects that exist inside PureData to communicate between patches.
Data is tagged with a string of max. 32 characters. The value will be transfered along as a float as this is the internal format of PureData. On the Arduino side this is not always most efficient, but carefull programming can solve this. On the other hand I think for most applications this won't be an issue.

Don't you have something I can understand?
YES!!! Finally we do, see here for a PDoE board at Protonoir where do you don't have to do any firmware programming at all. You even get streaming audio with it!

Why do I need this?
Opposed to the earlier mentioned Pduino/Firmata you now have the ability to program your 'real time' parts in Arduino, for instance implement a shift register to clock out a NES controller. Next send the received buttons to PureData to do some serious audio generation. Of course with some hacking you can get Firmata to do this or use the SimpleMessageSystem which IMHO takes some hacking on the PureData side to do this. With my implementation you don't have to think about communication on neither end. Very handy for new comers.

For instance check out the PureData patch (left) for toggling a LED on the Arduino and the Arduino code (right) that actually toggles that LED:
// the number of the LED pin
const int ledPin =  13;

void setup() { 
  // have the PureData library setup

  // pin 13 has an LED connected on most Arduino boards
  pinMode(ledPin, OUTPUT);     

void loop() { 
  // check for a value from PD tagged LED
  float receivedValue;
  if(PureData.receive("led", &receivedValue)) {
    if(receivedValue == 0.0) {
      // turn LED off
      digitalWrite(ledPin, LOW);
    } else {
      // turn LED on
      digitalWrite(ledPin, HIGH);

Tell me about the copyright.
The software you can download here is spread under terms and conditions of the GNU General Public License (version 2 or higher). This license can be found in the COPYING file in the package downloadable below.

I want to Donate!

Ok, so where do I get it?
Arduino partAny/ArduinoThis is the Arduino part for Arduino version 22n/aarduino-0022-part.tar.gz0.12011-05-07
Arduino partAny/ArduinoThis is the Arduino part for Arduino version 1.0n/aarduino-1.0_part_src_r1773.zip0.22012-04-08
PureData partWindows/x86_32This is the PureData part for Windows XP 32-bitpuredata_part_win32_r1772.zippuredata_part_src_r1774.tar.gz0.22011-04-08
Mac OS X/IntelThis is the PureData part for Mac OS X on Intelpuredata_part_macosx_r1774.tar.gz0.22012-04-08
Linux/x86_64This is the PureData part for Linux 64-bitpuredata_part_linux64_r1772.tar.gz0.22012-04-08

How do I install the Arduino part?
Just extract the contents of the Arduino package over your Arduino installation. Then the library and most important the example will be automatically available. Check for the PureData example under 4. Communications in your examples menu.

What version of Arduino does it work on?
The latest package is tested on Arduino version 1.0, so make sure you're using the same version. Of course feel free to test it in other versions, but be warned.

How do I install the PureData part?
You don't necessarily need to install this. Just download and extract the PureData part that fits your OS and architecture and open the help patch or create your own. Just make sure the external is located beside your patch or if you like place it in your externals folder.

How do I start it?
First compile and upload an Arduino project that uses the PureData class into your board. Next make sure the serial console of Arduino is closed. Next open your PureData patch.

Where does it run on?
The Arduino part was made using Arduino version 1.0 on the Arduino Uno board. It might need extension to understand boards that have multiple Serial objects, however I think it'll probably already work. Also it might work fine on order versions of the Arduino IDE
The PureData part was developed on Windows first and then ported to Mac OS X and Linux, so it should run in almost any PureData.

Where did you test it?
I have tested it on:
  • Windows XP inside VirtualBox with PureData 0.43-extended.
  • Windows XP on Medion Atom netbook with PureData 0.43-extended.
  • Gentoo Linux 64-bit on some AMD with PureData 0.42.6-extended.
  • Mac OS X 10.4.11 on the cheapest Mac Mini I once found with Puredata 0.43-extended.
  • Mac OS X 10.6.7 on 2.53Ghz Intel Core i5 with Puredata 0.42.5-extended. (Thanks to Benjamin Gaulon)

  • Who takes the blame?
    NOT ME! USE AT YOUR OWN RISK! I'M NOT RESPONSIBLE IF YOUR ARDUINOS DIE! (but please mail me, if they do...)

    My Arduino got COM10 or higher assigned and now PureData won't connect?!?
    When using COM10 or higher trying adding //./ in front of the comport. So 'Arduino open //./COM10' works on my Win XP netbook.

    I found bugs, what to do?
    Currently I'm the only developer, so you can send bug reports to me. If you're a programmer and made changes or extensions then please send me the patches. If there is enough interest in this software I might put it into a version control somewhere public. For now I'll keep it simple.

    All information on this site is provided 'as is'. The author assumes no responsibility for completeness or accuracy of the information provided and makes no warranty, express or implied, regarding the quality or accuracy of any content displayed on, downloaded from, or linked to this site. Use of this site constitutes agreement with these terms and conditions and you agree to hold the author blameless for any loss or damage sustained.

    All trademarks, service marks, and copyrights are property of their respective owners.

    © 2003-2011 by Lourens Rozema