Archive for the Category » ICM «

Friday, December 12th, 2008 | Author: fiona

 

In our final week we decided to use the plastic curved half. The styrofoam encases the breadboard and arduino. 

For the rest of the week we have had some people play with the I-Ve and give us some feedback about their experience.  Based on their experience, we have tweaked the visual design of I-Ve.  We have altered the instructions and added small features.  Below is the demo of I-Ve in action.

 

 

The user uses the remote to navigate through the menus.  The top button allows the user to select an option. The bottom button allows the user to go back or cancel their option.  The remote is labeled with the the functions of the remote.

Depending on what menu or screen the user is on, the right sice of bottom portion of the screen displays feedback to let the user know how to rotate the remote.  If they want to select an option they simply press on the top select button.  The LED lights up when the button had been pressed.

During this last week, we also received very shaky values from the accelerometer and it was sometimes jumpy when trying to navigate through the menus.  Professor Shiffman suggested that we use the LERP function to average out the values.  After doing this, our accelerometer seemed to work smoothly.

Processing code

Arduino Code – Serial Communication

 

Also check out David\’s Blog

In our presentation displayed above, we wanted to make this more of a product pitch than a physical computing project.  Below is our breakdown of I-Ve’s birth and what we hope to accomplish with it. 

Observations:
Editing video often requires much equipment and a powerful computer.
They often include too many features, while cool, are distracting and unnecessary to patching together a simple home movie – such as crazy transitions and filters/effects.
The interface is convoluted and not intuitive for the amateur or beginner.

Concept:
 We want a simple, yet robust physical interface that anyone can pick up and start editing right away.
We want this to be a fun experience that can be had by any family member at their leisure and without any familiarity with editing systems/techniques.
 We would also like to propose a prototype for the professional of an alternative and hopefully more efficient video editing tool.
Research:
Linear editing techniques: 3-point editing – in/out/timeline
 jog/shuttle device (pic)
 TV remote controls – the fact that everyone is comfortable with a TV remote and when asked if they would enjoy using such a device, people responded positively.
Process:
Our original idea was to create a music-based video game – we were fascinated by the use of an accelerometer to match audio patterns.
However, after brainstorming, our love of the video editing process, and the realization that the use of an accelerometer could match the editing process so well, we came to I-Ve!
We loved the idea of a physical “cut” motion mapping to the cut of a video track.
Process 2:
Code design had to include multiple features.
Foremost, a way to browse different video files.
A way to scrub the selected video.
A way to cut the video, aka set in/out points.
A way to review the shots and export finished movie.
Feedback of accelerometer position.
Process 3:
Remote design had to lead to intuitive use and natural movements.
Mimic TV remote to offer familiarity, yet keep number of buttons to a minimum.
Select and back/cancel button to navigate menus.
Accelerometer to do everything else.
LED for feedback of button pushes.
Challenges:
Built-in processing library crashed – pursued alternative library
Making processing interface intuitive and well-suited for our remote
Unstable accelerometer values
Perf-board is difficult to solder correctly
Finding suitable materials for construction
Lots of user testing
Next Steps:
Wireless capability
More features: transitions, titles, etc.
 Smaller remote construction/improved design
Exporting audio for final edited movie
Lots and lots of user testing, especially in a living room with people unfamiliar with video editing.
Category: ICM, PhysComp  | Leave a Comment
Tuesday, November 04th, 2008 | Author: fiona

Piano Hero Demo!

 

For my final project I’m doing an extension of my very basic midterm project Make Your Own Sountrack

I’m a big fan of Guitar Hero, therefore I decided I wanted to do something that was similar.  I also wanted to create a simple interface that would somewhat mimic real piano keys.  I am still keeping my midterm idea of allocating keys to certain notes.  The midterm will be much more visual and interactive.  And I am also using Arduino to create my interface. 

The idea of the project (which hasn’t been fully worked out yet) is to have actually notes (whole notes, half note) falling.

Processing sketch(In progress)

 

 Each key would represent a note. The user would have to press the corresponding keys to match the notes that are about to touch the top of the key.  After having pressed the key the note will either disappear or turn another color (for testing purposes it turns another color). My intention is that if a user does not press a the correct key at the right time the song will either stop or the user will hear some type of sound effect.

David is joining me on this project. We researched piano hero and found out that there is an actual piano hero already out there. We brainstormed many ideas and we thought it would be cool to also do something visual.  Having a stick figure move on screen according to the piano chords or maybe having an actual wooden model move (this can be done in physical computing).  Having the user create some sort of avatar of themselves. We also brainstormed the idea of people being able to collaborate and play over a network.

 

 David has more video on his blog.

Category: ICM, PhysComp  | Leave a Comment
Tuesday, October 28th, 2008 | Author: fiona

Make Your Own Sountrack

 

For the midterm project I initially wanted to work with audio.  I wanted to do something similar to guitar hero. I wasn’t quite clear what exactly I wanted to do, but I did like the idea of working with audio.  My thoughts then shifted to the piano.  I received some suggestions in class about maybe allocating certain keys to certain piano sounds.  Since having only one week to work on this project, the idea of “Make Your Own Soundtrack” is very very basic and will be worked on as a larger scale in the future.  

I downloaded some piano audio clips and saved them into the data folder.  In writing the code, keys A,S,D,F,J,L would play a specific sound file when pressed. 

After having downloaded and installed the minim library, I tweaked the sample code to my liking.  The original code would not compile.  Then I found out that I had to use objects in the first part of the code. The only other changes I made were to the audio files, and initializing a keyPressed function for each audio clip.  The initial code would play the audio file once.  Therefore, adding a rewind and play function would allow the user to press the key as many times as needed for audio playback.

 

There was another code for a waveform of the audio that I also incorporated into the first part of my final code.  

 

Below are some pictures of what the waveform looks like upon playing an audio file.  

    

This site was very helpful for installing and using the Minim Library

http://code.compartmental.net/tools/minim/

 

 

Here is my final code.  

 

import ddf.minim.*;

import ddf.minim.analysis.*;

 

Minim minim;

AudioPlayer groove;

FFT fft;

 

void setup(){

  size(512, 400);

  minim = new Minim(this);

  groove = minim.loadFile(“piano.mp3″, 512);

 

}

 void draw(){

  background(0);

  fft = new FFT(groove.bufferSize(), groove.sampleRate());

  fft.forward(groove.mix);

  stroke (255,0,0,128);

  for(int i = 0; i < fft.specSize(); i++)

  {

    line(i, height, i, height – fft.getBand(i)*4);

  }

 

  stroke(255);

for(int i = 0; i < groove.left.size() – 1; i++)

  {

    line(i, 50 + groove.left.get(i)*50, i+1, 50 + groove.left.get(i+1)*50);

    line(i, 150 + groove.right.get(i)*50, i+1, 150 + groove.right.get(i+1)*50);

 

  }

}

 

 void keyPressed() {

   if (key == ‘a’ || key == ‘A’) {

       println (“playing groove 1″);

       groove = minim.loadFile(“piano.mp3″, 512);

       groove.rewind();

       groove.play();

 

   } else if (key == ’s’ || key == ‘S’) {

      groove = minim.loadFile(“piano1.mp3″, 512);

       println (“playing groove 2″);

       groove.rewind();

       groove.play();

 

   } else if (key == ‘d’ || key == ‘D’) {

      groove = minim.loadFile(“piano2.mp3″, 512);

       println (“playing groove 3″);

       groove.rewind();

       groove.play();

 

    } else if (key == ‘f’ || key == ‘F’) {

      groove = minim.loadFile(“piano3.mp3″, 512);

       println (“playing groove 4″);

       groove.rewind();

       groove.play();   

 

     } else if (key == ‘j’ || key == ‘J’) {

      groove = minim.loadFile(“piano4.mp3″, 512);

       println (“playing groove 5″);

       groove.rewind();

       groove.play();

 

        } else if (key == ‘k’ || key == ‘K’) {

      groove = minim.loadFile(“piano5.mp3″, 512);

       println (“playing groove 6″);

       groove.rewind();

       groove.play();

 

        } else if (key == ‘l’ || key == ‘L’) {

      groove = minim.loadFile(“piano6.mp3″, 512);

       println (“playing groove 7″);

       groove.rewind();

       groove.play();

 

 

      }

 }

 

On a larger Scale I want to create some type of game such as a guitar hero where the user matches up audio cues.

Category: ICM  | Leave a Comment