« December 2006 | Main | February 2007 »

January 30, 2007

Magic Flute

Magic Flute 028
I've built a "Magic Flute" for my Living Art Finite State Machine project.

The Magic Flute is a simple wind-style MIDI controller interface which can play all of the notes in a C-major scale. I'm a keyboard player by training, but I've always wanted to try playing a wind instrument -- particularly the clarinet.

The major purpose of this assignment, however, was to create a Finite State Machine:
Finite State Machine
As we discussed in class, the Finite State Machine is characterized by inputs, outputs, and a memory of previous states. In the case of the Magic Flute controller, the inputs are the keys. The outputs are a slight clicking sound as the keys contact the body of the instrument, but more importantly the MIDI messages the controller sends. The memory is in the code that runs on the ATMEGA chip on the Arduino board. The code remembers which buttons were pressed and sends MIDI messages according to the Finite State Machine.

You may notice that there is no mention of wind pressure in the Finite State Machine. I spent the better part of last weekend trying to get a sound level circuit to work. The circuit I used worked fine for amplifying audio, but was very unreliable when I tried to use Arduino to measure the amplitude of sound coming into it.

I came up with some other possibilities for measuring the wind speed inside the controller:
- Using a tiny encoder wheel with a opto interrupter to measure the speed
- Looking for a vibration sensor that outputs a good signal
- Hot-wire anemometer

There are some other extensions I would like to make to the controller's firmware if I have time to build it again:
- A button-triggered mini sequencer function so I can record and playback a short motif. This could be really cool for live performance. I could sample a short loop as accompaniment and then play a live melody on top of it. - A transposition function so I can play notes outside of the C-major scale
- Key combinations to allow me to play semitones which are fundamental to playing other scales
- A volume knob

Magic Flute 011 Magic Flute 025 Magic Flute 017 Flute - Finger Positions - 4

/*
 Magic Flute v1.0
 
 2007-01-30
 Michael Chladil
 
 - 8-button MIDI controller using the Arduino's digital inputs
 - Sends MIDI note-on and note-off commands for the C-major scale
*/

#define DEBUG      1
#define FIRST_SWITCH 2
#define LAST_SWITCH  9

#define SERIAL_MODE BYTE
/* HEX | BINARY | ASCII | DECIMAL
   Useful for changing debugging schemes.  If I want to look at the serial data without a 
   MIDI connection, I can change SERIAL_MODE to something else
*/ 

int  switchStates[8];
int  lastSwitchStates[8];
char notes[8] = {62, 64, 66, 67, 69, 71, 73, 74};
int i;

void setup ()
{
   for (i = FIRST_SWITCH; i <= LAST_SWITCH; i++)
      pinMode (i, INPUT);
      
   Serial.begin (31250);
}

void loop ()
{
   for (i = FIRST_SWITCH; i <= LAST_SWITCH; i++)
   {
      switchStates[i - FIRST_SWITCH] = digitalRead (i);
      if (lastSwitchStates[i - FIRST_SWITCH] != switchStates[i - FIRST_SWITCH])
      {
         if (switchStates[i - FIRST_SWITCH] == 1) // PRESS -- switch has transitioned from low to high
            noteOn (0x90, notes[i - FIRST_SWITCH], 100);
         else                                     // RELEASE -- switch has tranistioned from high to low
            noteOn (0x90, notes[i - FIRST_SWITCH], 0);
            
         lastSwitchStates[i - FIRST_SWITCH] = switchStates[i - FIRST_SWITCH];
      }
   }
}

//  plays a MIDI note.  Doesn't check to see that
//  cmd is greater than 127, or that data values are less than 127
void noteOn(char cmd, char data1, char data2) {
  Serial.print(cmd, SERIAL_MODE);
  Serial.print(data1, SERIAL_MODE);
  Serial.print(data2, SERIAL_MODE);
}

January 29, 2007

User Interface Demo Program

I created a quick demo program to explore the slider behavior, where quick=1.5 hours. I found a library in Processing to do the slider, but I had trouble getting it to work quickly.

Mockup Screenshot

import mkv.MyGUI.*;

/*
 User Interface Mockup for TG77 jogwheel mode
 
 Michael Chladil
 2007-01-29
 
 Designing for Constraints
 Interactive Telecommunications Program
 NYU
 
 with much assistance from http://mkv25.net/applets/MyGUI_a2/MyGUI_a2.pde
 
*/

String PatchNames[];

PImage bgImage;

MyGUI          gui;
MyGUIPinSlider DataEntrySlider;
   
void setup ()
{
   size (486, 283);
   PFont displayFont = loadFont ("ArialMT-40.vlw");
   
   textFont (displayFont);
   
   PatchNames = loadStrings ("Voices.txt");
   bgImage = loadImage ("tg77 front panel small.jpg");
   
   background (bgImage);
   
   gui =  new MyGUI (this);
   DataEntrySlider = new MyGUIPinSlider(this, 455, 100, 100, 30, 0, PatchNames.length - 1);
   DataEntrySlider.rotate (-90);
   gui.add (DataEntrySlider);
}


void draw ()
{
   background(bgImage); 

   fill(0,0,0);
   text (PatchNames[DataEntrySlider.getValue()], 75, 150);
   
   delay (20);
}

January 26, 2007

User Interface Testing - Yamaha TG77 - Overview

tg77 front panel

Objective: Change the selected voice to "DreamRodes"
Assumptions: TG77 already in VOICE mode and on MEMORY I (internal). (1)

Notation (2):
[Button]
\ - Press
/ - Release
* - Number of repeats
s - Number of seconds

Ex: [Y \ /]*52 / 10s

I have produced short movie clips illustrating each of the ways to select a new voice

(1) This assumption is made to constrain the number of possible ways to change the voice. Without these assumptions, it would be necessary to consider many other paths from different modes. This study would be useful in the evaluation of the ease of use of the Yamaha TG77 in live performance. In live performance environments it is crucial to be able to switch quickly between the most important modes related to the performance.

(2) I considered an XML-based notation format, as I thought it might be useful later on to have the format easily machine-parseable. It seems from first glance that there is a heirarchy of presses and releases. By nesting presses, it is easy to see what happened and when.

<Yes/><Yes/>
<Yes>
<Left/>
</Yes>

This is likely overkill, so I'll abandon it for now.

User Interface Testing: Yamaha TG77 - Suggested Improvement

I have two suggestions related to voice selection on the TG77:
1. Implementation of a "jog wheel" function in order to scroll through the voice names at variables speeds
2. Implementation of a "search" function to locate the voice without having to scroll through the various banks

"Jog Wheel"
Interestingly, the TG77's keyboard-counterpart (the Yamaha SY77) has a rotary wheel control which can be used to scroll through voices. I wonder why the designers didn't do this for the TG77 using the DATA ENTRY slider.

The video below shows the mocked-up jog wheel operation. The DATA ENTRY slider on the TG77 doesn't have a function when the unit is in Voice Display mode, so I feel this would be a logical use for it. I mocked up the interaction by holding down the "+1/YES" button while moving the slider.

Notation:
[Slider /] / 3s [Slider /] / 2s = 2 operations / 5s

Notes:
This interaction raises several interesting questions.
1. How quickly should the slider move through the voices? A rotary knob with detents has an implied mapping: 1 voice per click. The slider has no detents.
2. What happens if the slider is at the top of its range when the user wants to jog through the voices? The answer to this question is related to how we answer #1... This probably is an area that requires some user testing. Unless moving the slider back down a bit will allow access to the full remaining range of voices, this could
be very frustrating to use. The data entry slider on my Studio Logic SL-1100 behaves a bit like this -- and can be frustrating.

Voice Search
In Voice Display Mode, only two of the function buttons are used (F7 and F8). Another button (F6) could be used as a "Search" button. Pressing "F6" would cause a search dialog box to appear. I think dialogs are beyond the scope of this assignment.

User Interface Testing: Yamaha TG77 - Test 5

Test 5: Selecting the "DreamRodes" voice by direct numeric entry

When the DreamRodes is selected in Voice display mode, the upper left portion of the screen displays "VOICE-I D05(53)", which translates to "Voice Mode, Internal Bank - D, patch number 53". Using this knowledge, we can jump immediately to the DreamRodes any time we have the Internal memory bank selected.

Buttons:
"5" - [5]
"3" - [3]
"Enter" - [E]

Notation:
[5 \ /]*1 / 0.5s [3 \ /]*1 / 0.5s [E \ /]*1 / 0.5s = 3 operations / 1.5s

Quality:
If you know the number of the voice you're selecting, this is the way to go. It requires the least number of operations in the least amount of time. The downside is that it requires what Donald Norman refers to as "knowledge in your head" of a system. You must already know the voice number corresponding to DreamRodes.

Notes:
I assigned short durations to these button presses as they are located close to one another.

User Interface Testing: Yamaha TG77 - Test 4

Test 4: Selecting the "DreamRodes" voice by using the voice directory

Buttons:
"F8", to be abbreviated [F8]
"Bank/Select", to be abbreviated [Bank]
"Right Arrow", to be abbreviated [>]

Notation:
[F8 \ /] / 1s [Bank \ /]*2 / 2s [> \ /]*1 / 1s = 4 operations / 4s
Quality: It is much easier to find a voice when you can see a bunch of them at a time. The downside of this method is that you must be close to the face of the unit in order to read the names.

Notes:
When the TG77 is in Voice Display mode
TG77-Voice Mode
the F8 button displays a list of the voices.


User Interface Testing: Yamaha TG77 - Test 3

Test 3: Selecting the "DreamRodes" voice by pressing and release the "+1/YES" button in cycles

Buttons: "+1/YES", to be abbreviated [+1]

Notation: ( [+1 \ ] / 1.5s [+1 /] ) * 12 = 24 operations / 18s

Quality: This seems better than simply holding down the "+1" button if you're looking for a particular instrument.

User Interface Testing: Yahama TG77 - Test 2

Test 2: Selecting the "DreamRodes" voice by holding down the "+1/YES" button

Buttons: "+1/YES", to be abbreviated [+1]

Notation: [+1 \]*1 / 7s [+1 /]*1 / 0s [-1 \ /]*1 / 1s = 3 operations / 8s

Quality: It is very easy to overshoot the desired voice while holding down the "+1" button. This technique is not recommended if you don't remember the name of the instrument you're looking for.

User Interface Testing: Yamaha TG77 - Test 1

Test 1: Selecting the "DreamRodes" voice using multiple presses of the "+1/YES" button

Buttons:
"+1/YES", to be abbreviated [+1]
"-1/NO", to be abbreviated [-1]

Notation: [+1 \ /]*52 / 10s [-1 \ /]*2 / 1s = 54 operations / 11s

Quality: While pressing [Y] rapidly, I found it was easy to overshoot the desired voice. I would like to try this with someone who is unfamiliar with the instrument as I have grown accustomed to the names of the instruments which precede "DreamRodes"

Note: The video segment lasts longer than the reported 11 seconds because I found later that I could press the button more rapidly than I did while filming and still read the name of the voice.

January 25, 2007

Assignment 1 - Listen Close

* Listen Close – Listen to a discrete repeatable sound. Listen for the detail in the sound.
I couldn't find any good close-up sounds to listen to at the library, so I went back to ITP. I wanted to listen to something other than the relentless clacking of keyboards, shuffling feet on creaking hardwood floors, or mobile phone conversations. I wanted to listen to something simple, yet complex.

First stop -- the Equipment Room. (thanks, Andrew, for humoring my request for a piece of equipment that made an interesting sound) . I left with a Panasonic CT-1030M pro video monitor and the goal of capturing in words the experience of listening to it turn on. When I checked it out of the ER, I had been hoping for the metallic, fuzzy honk of the de-Gaussing circuit on my home Dell monitor. The Panasonic had no soul.

I returned the tv monitor and sat down by the Deer Park water cooler next to the men's room. This is the sound of water flowing from the spigot into a disposable plastic drinking cup.

There is a filtered, hollow sound as water drops into the empty cup. Air bubbles spatter as they burst at the surface of the water. The valve hisses slightly while it is open. When my head is against the base of the water cooler, I hear a hard muted reflection of the plastic valve as it opens and closes at my touch.

I pour water from the cooler into a stainless steel thermos and note the metallic "spang" of the water in the deeper cavity. As the water rises, one set of frequencies increases while another decreases. I enjoy the sound of the metal thermos as I flick it with my finger tip. "Bloing" "Buwoing" The frequency changes as I move the thermos around and the water within it sloshes back and forth.


Reactions to "Fashion"

Fashion by Georg Simmel, The American Journal of Sociology, Vol 62, No. 6 (may, 1957), pp. 541-558

Georg Simmel explores at great length the dynamics of fashion, commenting on the affect of class distinction and economic progress on the transitory nature of the sociological phenomenon.


Quotes that stood out:

Thus fashion represents nothing more than one of the many forms of life by the aid of which we seek to combine in uniform spheres of activity the tendency towards social equalization with the desire for individual differentiation and change.

- I was struck by the consequence of this -- as well as the point Simmel makes later in his essay, which is that it is impossible to avoid the influence of fashion. Even by attempting to ignore fashion, I still participate in it in the negative.

[Fashion] has overstepped the bounds of its original domain, which comprised only personal externals, and has acquired an increasing influence over taste, over theoretical convictions, and even over the moral foundations of life.
- I think this has increased beyond what Simmel observed in 1957. The television and more recently the internet have accelerated this consumeristic trend.

Assignment 1 - Listen Far

* Listen Far – spend 5 minutes in an undistracted setting. Park bench, your apartment, or a street corner. Listen. Listen to the faintest sound you can hear. Now try to listen beyond that sound.
Bobst Library, Second Floor -- seated at a table facing away from the central lobby. My ears are toward the reference area where students are typing.

Immediately above my head, the HVAC system rumbles.

I hear the electronic ding of the lobby elevator out in the central lobby. It reverberates briefly against the smooth tiled surface of the lobby floor. I am seated in a carpeted area, so the sounds immediately around me are muffled.

A door slams ("guuuhm") in the distance and its echo lingers in the lobby area.

I hear light female footsteps, the sharp attack of boot heels against the tile ringed with bright reverberation. They approach and become slightly muffled on carpet. They come up the stairs located behind me then continue further up until my listening is interrupted by someone whistling a melody out in the lobby. I presume it's the lobby by the reverberation.

As I look over my left shoulder, I see a young woman typing at a Macintosh computer. I can hear the faint mechanical clacking of the keys from her keyboard even at a distance of 50 feet. I wonder if I can hear anything beyond the sounds of her typing. Can I hear her shift in her chair?

She doesn't move.

I wonder what my experience would be like if I could hear the whirring of the hard drive in the computer in front of her.

A pen falls ("taakkkk") onto the surface of a desk in front of me and my focus changes.

I'm aware of the difference in frequency responses between my right and left ears. Last semester, a large mass of wax built up inside my right ear. It's starting to happen again. The high frequencies are not as bright in my right ear as they are in my left. It's time to start using the Murine again to loosen the wax.

A sneeze echoes from the lobby.

How deafening the world would be if louder if I could hear the hard drives spinning -- the rustle of clothing -- the scratch of pen or pencil against paper... What if the lowest frequencies were perceptable -- the atoms in the objects at rest: books, maybe still echoing with the sound of the typesetting equipment that deposited the ink upon their pages.

Then I would be listening deeply and I would understand.

First Class

Our first reading assignment was Quantum Listening by Pauline Oliveros.

I have to admit that the structure (or apparent lack of) made it very difficult for me to read. I had a very hard time following her train of thought. Thanks to Rob Faludi's BlogBlender, I discovered Gian Pablo's reaction to it which encourages me to read it in a different way. Despite having played music for years, I had not considered reading an essay as music before.

Some of the themes she discussed with respect to deep listening reminded me of Aaron Copland's What to Listen for in Music and also of Barry Green's The Inner Game of Music

I wondered what she meant by "practice practice", though.

Two things about her essay resonated with me.
1: the desire to create music collaboratively with people who don't have formal musical training. To this end, I may try out to work out a "simple set of rules" by which we can do this in my Living Art class.
2: when I was in college and worked in a recording studio, I began to experience a deeper listening than I had ever done before. Part of my job was to verify that transfers we made from digital audio tapes (DATs) into ProTools didn't contain glitches. I listened to the recordings very intently through headphones and through the process, I began to hear details I hadn't experienced before. I developed a deeper sense of appreciation for clarity and fidelity in recordings.
-

January 24, 2007

Create a Personal Object

Embodiment of Personality-5

Embodiment of Personality-4

We are asked to create a personal "Venus of Willendorf". The operative idea behind this is exploring the possibility of expression through a personal object.

I have chosen to "embody" myself in a small, pocket-sized ball which serves both as a Rosary and as a reminder of the committment Kelly and I share in our marriage. We are bound together by agreement, but more than that by the grace of God.

The two-toned ball has ten "flowers" on it which correspond to the ten beads on a Rosary. The juxtaposition of the Rosary with the reminder of our marital committment is also a reminder to continually pray for grace in our marriage.




Embodiment of Personality-0I started with a simple ball of foil and covered it with Sculpey I (polymer clay). After baking the sphere for 25 minutes at 250 degrees, I mixed some Sculpey Premo colors together and applied them to the cooled sphere to create the two colored hemispheres.
Embodiment of Personality-1Using a metal stylus, I carved paths and "beads" into the sphere. There is a single continuous path which travels through all of the beads and joins the hemispheres.
Embodiment of Personality-2I baked the sphere again and after it cooled I sanded it with 400, 600, 800, then 1000 grit sandpaper to give it a smooth surface. I tried to polish the Rosary Ball with my Dremel using a muslin wheel, but the surface began to melt. I sanded away the burnt spots and enhanced the texture by rubbing drawing ink into the carvings. After the ink dried, I sanded it off with the 1000 grit sandpaper.

January 22, 2007

Clock for the Blind or Visually Impaired (prototyping 2)

Clock Prototype v1-0 Clock Prototype v1-4 Clock Prototype v1-3

I built a base for the clock last night and asked Kelly to try reading the time. We learned several things in the process:
- Tracing a circle is difficult when you can't see. Kelly didn't have a sense of the size of the outer ring with her eyes closed, so her fingers went off the ring several times. Each time, she had to return to the 12 o'clock index marker and start again.

- I built a prototype with a visual mapping that doesn't correspond with the way we speak the time. Since Kelly and I have been using clocks for a long time (although she can read the non-digital ones much more quickly), we expect the longer hand to always point to the number of minutes. When I designed this clock, I thought the outer ring should also represent the minutes in order to mimic the way we're used to seeing a clock. This would be a positive thing for a visually impaired person with memories of clock faces. For a person blind from birth, however, this visual/spatial mapping doesn't exist. The way we speak the time, "four forty-nine, pm" rather than "eleven minutes to five o'clock, pm" defines a mental sequence: hours, then minutes. With this mental sequence, it makes sense that the outer ring is the hours and the inner ring the minutes. Despite our visual/spatial maps, Kelly and I both found our minds wanted to use the outer ring to represent hours when our eyes were closed.

- 12 != 1 != 0 (or twelve doesn't equal one doesn't equal zero). Another problem of the traditional clock face is tied to starting with twelve. Kelly experienced difficulty remapping the 12 o'clock position as zero when she couldn't see the clock face. I realized that it doesn't make sense if you haven't grown up looking at a clock. My instructions to her were to "trace clockwise around the circle, counting each depression until you reach the raised marker." I could either clarify my instructions or try another prototype which addresses some of these issues.

I began to experience firsthand some of the blocks we put in place as we consider designs. I stereotyped the user of my clock (in this case a visually impaired or completely blind person) as a sighted person in several key areas.

January 20, 2007

Clock for the Visually Impaired - Prototyping

I started with another approach to the clock design. I wanted to try prototyping a tactile clock face that would eliminate the need for a talking clock. Allistar noted in his blog that "[s]tyle is something that’s also apparent - never assume because someone is blind they don’t embrace style. After all others can see us."

I wanted to see if I could propose something more stylish that would be enjoyable for both sighted and blind people.

Disassembled view of the prototype.Clock for the Blind - Prototype 003Clock for the Blind - Prototype 006

To tell time using this clock, the user begins by locating the raised marker at the 12 o'clock position on the outer rim of the clock face. They move their finger toward the center of the clock (moving up two levels) until they find the depressions on the hours layer. Starting at the 12 o'clock position, they will trace clockwise around the circle, counting each depression until they reach the raised hour marker. To determine the number of minutes, they return to the 12 o'clock marker on the outter rim and move their finger toward the center of the clock (moving up one level) until they find the depressions on the minutes layer. Starting at the 12 o'clock position, they will track clockwise around the circle, counting each depression until they reach the raised minute marker.

January 18, 2007

Clock for the Blind or Visually Impaired (1)

In class on Tuesday evening, we were given a problem to solve in ten minutes: design a clock for a blind person. This short exercise became the first assignment of the class. Although I played with several concepts, only one stayed with me through the end of the ten minute brainstorming period. I proposed a talking clock.

Link to notebook page with proposal sketch

I began by brainstorming what I believed to be the user's needs:
- Telling time on demand
- Waking up at a specific time
- Easily setting the time

As I started sketching from there, other needs emerged:
- Reliable power source (AC line voltage + battery backup) so the blind person should be able to obtain the current time under either battery or main power failure conditions
- Volume control in order to avoid unnecessarily disturbing others
- Automatic time setting radio signal

When I returned to the problem yesterday afternoon, I researched current products marketed to the blind and visually impaired:

pyramind_clock.jpg
Pyramid talking clock
thermo-clock.jpg
Talking Thermometer Clock
I wonder how the blind or visually impaired person will know where to aim the infrared remote.
keychain_clock.jpg
Keychain clock
Seems similar to a product that might be used to "remember everything"
simple_talking_clock.jpg
Simple clock

My initial impression was that few appeared to have been designed specifically with this market in mind. I did find a another design feature to inform my previous brainstorming:
- A heavy base with non-slip feet might be useful for the blind

I researched braille numbers in order to see other possible ways to design the clock.