Leap Motion example using Cinder and c++ audio

This is a prototype from October – just getting around to posting it.

The hand position (x,y,z) is sensed by LeapMotion to control parameters of an FM synth with feedback delay written in Cinder audio (c++). The graphics were adapted from a Cinder LeapMotion demo.

Local source is in: cinder/cinder_dev/blocks/Cinder-LeapSdk/samples/LeapApp/xcode/LeapAppTZ2.xcodeproj

Uses cinder Leap demo code combined with simple audio synthesis using callbacks in c++

 

 

libpd, Leap Motion, and Osc, in Openframeworks

On Mac OS 10.8 using Xcode 5, and openframeworks version 8

  1. Install and test openframeworks from http://www.openframeworks.cc/download/ 
  2. Install and test libpd https://github.com/danomatika/ofxPd (you should be able to run the example programs)
  3. Install and test leap motion https://github.com/ofTheo/ofxLeapMotion  (you should be able to run the example programs)
  4. Install Pd (I installed pd-extended, even though this project is limitied to Pd ‘vanilla’) http://puredata.info/downloads

Note: The Osc addon is already provided with openframeworks distribution. At this point you have everything you need to run the test example.

  • Download the project: http://zerokidz.com/downloads/leadPdTest5.zip
  • Copy the leapPdTest5 folder into the ofx8/addons/ofxLeapMotion folder
  • Launch the xcode project: leapPdTest5.xcodeproj
  • plug in a leap and turn up the volume
  • Compile and run (you may need to compile the openframeworks scheme first)

Notes:

 

pdlib, csoundapi, openframeworks, coreAudio, Cinder, and Leap Motion

Notes on developing an architecture for Leap Motion ‘Muse’.

  1. pdlib is the vehicle for the Pd sound engine in RJDJ. It runs Pd patches in iOS and Android – but also has potential in MacOS, Windows, and Linux
  2. After many frustrating attempts I was able to get only as far as getting a simple pdlib example from Rich Eakin to run in Xcode. Couldn’t get it running under Cinder. The code is a hodgepodge of c, c++, and obj-c so these projects can easily get bogged down in compiler and linker errors.
  3. I was able to get Chris Adamson’s chapter 8 input/output example running in Mac OS by using updated files from his blog.
  4. By merging some of Adamson’s and Eakin’s code we got audio output but not input – although I see no reason it couldn’t be done.
  5. At some point I decided to try openframeworks instead of Cinder. Within about 10 minutes I had ofxPd (Dan Wilcox) addon running input and output in Pd.
  6. Next I got a leapMotion example running from an ofxLeap archive.
  7. Today after much confusion, I got the csoundapi~ source code link (its in Csound archive, not in Pd) And then using the Csound.Framework and a few include files, along with great instructions from oxfPd author – got csoundapi~ running in pdlib.
  8. Next I duplicated the ofxLeap example and tried to add in the ofxPd code. This worked – but the instructions aren’t complete. You need to add the lib folder and the extras folder (which doesn’t add folders ending with tilde when you drag and drop the parent folder) But I have a working example now – The most important thing to remember with the ofx projects is NOT TO LET XCODE UPDATE VALID PROJECT SETTINGS. I’m not sure which setting that ofx doesn’t like – but once you update the settings you are screwed and not even a snapshot restore will fix it.
  9. The final result is an app which uses leap hand movement to change the pitch of an oscillator in a Pd patch by sending messages via pdlib. The app also uses csoundapi~ external.
  10. Next project should be to clean up and document the pdlib ofx process and try the whole thing on windows and linux.