Sensor (camera) based instrument
by Andreas Wittich
Local files under dr-B/reBootSeminar/reboot1/Andreas_Wittich-soundEmotion
Indoor proximity sensor.
By Alasdair Allan and Sandeep Mistry at Make Magazine
http://makezine.com/2014/01/03/reverse-engineering-the-estimote/
How many musicians do you know that play with their eyes closed? Not many computer music apps allow this. Bloom is an exception. http://www.generativemusic.com/bloom.html
As an exercise, I tried to make something like Bloom, using Leap Motion. With your eyes closed you can accurately position your hand at the level of eyes, shoulders, hips, etc., And you can quickly move to a point directly outward from your nose, or shoulders. This is the basis of sobriety tests.
The interface, works with a hand motion like sprinkling seeds. Every time you open your hand, it triggers a note based on the height of your hand. It also triggers one of the “Bloom” circles at the XY position.
The prototype was done in Max/MSP Jitter. It was derived from a “bloom clone” project by John Mayrose at: http://www.johnmayrose.com/maxmsp.html
Here’s an example:
https://github.com/tkzic/max-projects
folder: bloom
patches
Note: If you don’t have a Leap Motion sensor, you can use a mouse.
If you are using Leap Motion, download the aka.leapmotion external – and add it to your Max file path in options | file preferences: http://akamatsu.org/aka/max/objects/
(if not using Leap Motion sensor, skip to step 4)
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++
Here is a PID controller (proportional, integral, derivative) in Max that controls the pitch of an oscillator so you can watch how a process responds to various setting of PID coefficients. It features an external perturbance generator (ie., noise maker) to check how fast the system can adjust and continue.
Tried using fiddle~ for frequency detection (as the sensor input) but it provides faulty data below about 200hz – and that totally messes up the PID. so I am just using the actually frequency being used to set the oscillator as the response sensor.
update: Tristan Jehan wrote a Max external that extends lower frequency range of [fiddle~]. It would be worth trying for this patch.
The PID algorithm is written in javascript.
https://github.com/tkzic/max-projects
folder: pid-controller
patch: pid-mrmapes2.maxpat
javascript code: pid.js
wikipedia page: http://en.wikipedia.org/wiki/PID_controller
When using the sphere vector, if you make a fist – the sphere Y value goes straight up (as radius decreases) also, x value decreases slightly and z value increases significantly
So its probably better to use palm position as a vector – if you want to detect sphere radius
By Emmanuel Jordan at Cycling 74