TerraLine · posted by vaibhav bhawsar 137 days ago
TerraLine
The TerraLine instrument re-appropriates the magnetic compass to show directions that are not cardinal but indicators of economic states. It is an instrument that helps one navigate Earth using such directions.Navigating or orienting ourselves in such ways could offer opportunities of envisioning and exploring our world from different perspectives.
Udder-Utter · posted by vaibhav bhawsar 138 days ago

New Interfaces For Musical Expression – NIME
Udder-Utter is an instrument that utters syllabic sounds derived from the Devanāgarī alphabet, which is used to write Hindi and other Indo-Arayan languages. It’s playability is inspired by the gestures involved in milking a cow. The sounds that this instrument utters are intended to be a mix of discrete and continuous in nature and are rhythmic due to their syllabic/phonetic origins. I see the Udder as an instrument for constructing and rupturing meaning through its playability by using syllabic sounds to construct monosyllabic meanings and imagery to extract formal elements.
Playing the instrument primarily involves manipulating and generating phonetic sounds. In addition the instrument allows its player to control a visual system explained below.
Screenshots of the visual system
The screen component for the performance reacted to the instrument. For this I had to interface MAX/MSP to C++ via openFrameworks and OSC.
The visual idea was to extract colours out of images and simultaneously erase them in the process. Image pixels were used to read colours and then the colours were mapped onto a stroke that was modulated depending on sensor values from the instrument. The speed with which the image lost colours depended on how the instrument was played (fast/slow gestures) and on certain other parameters.
A short video from the ITP NIME performance
Notes on the Imagery: I was interested in playing with the expression “milking the cash cow” by literally having the instrument sap colours out of currencies (notes/bills). I selected a series of currencies from nations that celebrate their abundance of natural resources and manpower through use of illustrations. These illustrations are references to their “cash cow”. One sees patterns of representation through iconography- such as farmers, tractors, cash crops, chimneys, industrial sheds, mineral deposits, mines etc, all of which serve as mastheads of development for emerging economies. In the globalized landscape such countries see themselves as offshore providers of resources to larger and richer countries. In turn such emerging economies are in ways the cash cow for richer nations who often sift for foreign resources before they start to consume their own as an act of self-preservation or find it cheaper to do so in their neo-imperialistic spirit. It is this vicious underrepresented portrait of national interests vs vested interests that I wanted to express through this instrument and performance. To me it was important to represent the consumed and less the consumer.
HMC6352 Sparkfun Compass Module and Arduino · posted by vaibhav bhawsar 449 days ago
Ok so I struggled a bit to get this to work so it makes sense to post it here in case you are having a similar problem getting HMC6352 compass module to work with Arduino. The code below is not mine- I got it from Sparkfun’s forums
Using Arduino NG rev C board and Arduino IDE v.0008. It didn’t work when I compiled and uploaded the code with v.0007. So don’t use it. SDL and SCL lines don’t have any pullup resistors in my setup. Probably because v.0008 enables the pullup resistors on ATmega168.
From v.0008 UPDATES file
Activating TWI/I2C pullup resistors on the ATmega168 (in addition to the ATmega8).
NOTES
*Using Arduino NG rev C board and Arduino IDE v.0008
*SDA to Analog pin 4 and SCL to analog pin 5
*No pullup resistors on SDA and SCL
*Using 3v instead of 5v to the Vcc of the compass module.
CODE:
#include <Wire.h>
int HMC6352Address = 0x42;
// This is calculated in the setup() function
int slaveAddress;
int ledPin = 13;
boolean ledState = false;
byte headingData[2];
int i, headingValue;
void setup()
{
// Shift the device's documented slave address (0x42) 1 bit right
// This compensates for how the TWI library only wants the
// 7 most significant bits (with the high bit padded with 0)
slaveAddress = HMC6352Address >> 1; // This results in 0x21 as the address to pass to TWI
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // Set the LED pin as output
Wire.begin();
}
void loop()
{
// Flash the LED on pin 13 just to show that something is happening
// Also serves as an indication that we're not "stuck" waiting for TWI data
ledState = !ledState;
if (ledState) {
digitalWrite(ledPin,HIGH);
}
else
{
digitalWrite(ledPin,LOW);
}
// Send a "A" command to the HMC6352
// This requests the current heading data
Wire.beginTransmission(slaveAddress);
Wire.send("A"); // The "Get Data" command
Wire.endTransmission();
delay(10); // The HMC6352 needs at least a 70us (microsecond) delay
// after this command. Using 10ms just makes it safe
// Read the 2 heading bytes, MSB first
// The resulting 16bit word is the compass heading in 10th's of a degree
// For example: a heading of 1345 would be 134.5 degrees
Wire.requestFrom(slaveAddress, 2); // Request the 2 byte heading (MSB comes first)
i = 0;
while(Wire.available() && i < 2)
{
headingData[i] = Wire.receive();
i++;
}
headingValue = headingData[0]*256 + headingData[1]; // Put the MSB and LSB together
Serial.print("Current heading: ");
Serial.print(int (headingValue / 10)); // The whole number part of the heading
Serial.print(".");
Serial.print(int (headingValue % 10)); // The fractional part of the heading
Serial.println(" degrees");
delay(500);
}
















