Wednesday, November 15, 2006

Toriton Plus

Recently, i have had a number of people asking me how Toriton Plus works. For youtube.com viewers, Toriton corrresponds to the video "Toriton Plus: Water Surface as Music Controller II".

First of all, the instrument currently looks like this:


Essential Hardware
  1. Laser module: 1mW, 4.5V x 5 or x 6 (about AU$12.35 ea)
  2. Stands for the lasers
  3. 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)
  4. 100KΩ resistor x 5 or x 6 (select an appropriate value to balance against your LDR - can also use pots...)
  5. 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!
  6. A host computer. Mac or PC should be fine. Does not work with current MacBooks, though.
  7. A clear, large dish or other clear vessel. In the above example, I have used a cake dish.
  8. ...Some water...
It is really very easy. I do not claim to be an electronics professional, or even know anything about anything. The laser shines through the water in the dish, and LDR's on the other side respond to the position of the laser points (whether they are fully on the LDR or not).

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.
Naturally, the data can be mapped in whatever way you like. I like it the way I have described above, that is all. It is a matter of tastes...

9 comments:

Anonymous said...

Nice... a very cool project!

-jason

Tristan Louth-Robins said...

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.

h0b0 said...

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.

Sebastian Tomczak said...

Hi h0b0,
What model of mouse are you using? Please email to my email address - stomczak (at) e-access (dot) com (dot) au...

Seb

Unknown said...

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.

Cory said...

Is there any way of getting in contact with you via email or anything?

Sebastian Tomczak said...

yep sure email me at: stomczak (at) e-access (dot) com (dot) au

Anonymous said...

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)

Xenical said...

Thanks for sharing! nice post