First of all, the instrument currently looks like this:
Essential Hardware
- Laser module: 1mW, 4.5V x 5 or x 6 (about AU$12.35 ea)
- Stands for the lasers
- Light dependent resistor (LDR) x 5 or x 6 (about AU$2.48 ea, but you can pick them up for around AU$1.40 or less)
- 100KΩ resistor x 5 or x 6 (select an appropriate value to balance against your LDR - can also use pots...)
- An interface, such as the AVR-HID (more information here: http://milkcrate.com.au/sensing/). Can be built for around AU$15, but it is up to you. It is very easy to build and actually works!
- A host computer. Mac or PC should be fine. Does not work with current MacBooks, though.
- A clear, large dish or other clear vessel. In the above example, I have used a cake dish.
- ...Some water...
By using a voltage divider for each laser (that is where the 100KΩ resistors come in), the physical interface can see changes in voltage (as opposed to just resistance, as caused by the LDR's alone). The LDR connects between ground and the analog in channel. The 100KΩ (pot) or similar connects the analog in channel and +5V. That is it. Repeat for all five or six lasers.
Software Overview
The software used in the above configuration has been written using Max/MSP. However, any software than can 'see' HID data can be used. In addition, I have made a little HID -> MIDI Max patch so that people without HID interpretting software can use virtual or physical routing to map the data to whatever synths, samplers etc etc they wish to. Visit: http://milkcrate.com.au/sensing/ for more info and to download this patch. It should run using the free, downloadable Max/MSP runtime for Mac and Windows.
Data Mapping and Routing Overview
- ADC channels 1-6 received as HID elements 7-12
- For channels 2-5
- These are light receivers.
- A zero point is calculated by the average mean over a time period of at least one second during a user activated routine.
- The maximum and minimum points above and below a defined zero point are calculated during a user activated routine.
- The highest absolute value of either the maximum or minimum points are used as an upper limit for linearly scaling the data between 0 and 1 as a floating point value. The lower limit is the zero point.
- The data is linearly inverted.
- The data is exponentially scaled from 0 to 1 with a factor of 1.06.
- The data is linearly inverted, and sent to two places
- Firstly controlling the amplitude of a fundamental sine wave
- Secondly, an average of over 2400ms with 12 sampling points in that period controls the amplitude of four other sine waves with frequencies 3/2, 2, 3 and 4 times that of the fundamental.
- The amplitude of the 3/2 multiplier wave has a scaling range of 0 to 1 for when the average is 0/1000 to 25/1000. Exceeding this range does not result in an amplitude greater than 1.
- The amplitude of the 2 multiplier wave has a scaling range of 0 to 1 for when the average is 25/1000 to 50/1000. Exceeding this range does not result in an amplitude greater than 1. The amplitude of the 2 multiplier wave has a
- The amplitude of the 3 multiplier wave has a scaling range of 0 to 1 for when the average is 50/1000 to 75/1000. Exceeding this range does not result in an amplitude greater than 1. The amplitude of the 2 multiplier wave has a
- The amplitude of the 4 multiplier wave has a scaling range of 0 to 1 for when the average is 75/1000 to 100/1000. Exceeding this range does not result in an amplitude greater than 1. The amplitude of the 2 multiplier wave has a
- Channel 1 is the keypad
- Each button is independently obtained by applying a range filter on the incoming 10bit HID data. The following ranges are approximate:
- For button 1, 80 - 106
- For button 2, 220 - 266
- For button 3, 331 - 377
- For button 4, 157 - 189
- For button 5, 277 - 325
- For button 6, 380 - 420
- For button 7, 421 - 455
- For button 8, 484 - 505
- For button 9, 530 - 550
- For button *, 454 - 484
- For button 0, 506 - 529
- For button #, 560 – 600
- The buttons 1-6 each correspond to the appropriate laser receiver output, and step through a predefined pitch set. Each laser receiver output has an individual pitch set. The pitch controls the fundamental frequency of the appropriate laser receiver output.
- For the two channel version, the five laser receiver outputs are spread evenly across the stereo space.
- For the five channel version, each laser receiver output has a dedicated audio channel and speaker, set up in an equilateral pentagon simulating the positions of the laser receivers on the instrument.
9 comments:
Nice... a very cool project!
-jason
Now that's comprehensive! I'm currently writing a technical breakdown for my metal bowl piece and currently I'm getting no further than: "turn up volume, tilt bowl", oh well. I've been checking out the progress on YouTube, sounds good.
Hoping to be able to play around a bit with your HID/MIDI-Converter with a mouse I downloaded your software. But no device is detected. Do you have any suggestions, what I could try to get it working? I'm using Windows XP.
Hi h0b0,
What model of mouse are you using? Please email to my email address - stomczak (at) e-access (dot) com (dot) au...
Seb
Great work, thanks for putting up so much info about how you built this instrument.
Ever look at work by David Rokeby? The mixture of electronic media with water is really reminiscent of his work.
Is there any way of getting in contact with you via email or anything?
yep sure email me at: stomczak (at) e-access (dot) com (dot) au
Hi.. i really loved the project..so i am planning on doing the project with my friend. Is it possible that we can get the actual procedure on how to do the water surface controller? We would be really thankful.
-Estefany (a high school student)
Thanks for sharing! nice post
Post a Comment