Category Archives: Feldman Project

Tom 5.15.2012

Start: 10:00

  • Worked on new schematics for electronics board.
  • It is going to be tough to fit everything on an atx board but I am pretty sure its doable
  • reduced the size of the three sensor circuits to be about the size of 1
  • Reorganized the preamp circuit so 5 can be closer together
  • Found 2/5 connectors.  Still have trouble finding elbow serial ports, ribbons were not as hard
  • Trying to figure out the best place for the power and ground to run.  Also need to figure out how to run the new leads to the arduino

End: 6:00

Phil 5.15.12

8:00 – 4:30 FP

  • Working on the SoundController class. Going to try out the basic mechanisms in the sandbox before trying them on the arduino.
  • Got the JSON key/value search working. Now I need to organize all the unique sound objects.
  • SoundController class is working in the sandbox
  • Meeting over at UMBC to go over SIGCHI
  • Have SoundController on the arduino and am currently testing.  If all fingers are updating data, the communication gets bandwidth limited. This is ok to work out the sounds, particularly on a finger-by-finger basis, but it will need to be optimized to keep the refresh rate up.

Tom 5.14.2012

Start: 10:00

  • Pitch bend is a little tricky to use.  The midi command is (0xE(channel), byte 1, byte 2) .  The two bytes are signed but negative values are not used so the range of each byte is 0-127(0x00-0x7f).  The two bytes combine to make a 14-bit number with a range of 0-16383, with zero being the most flat and 16383 being the most sharp.  This means to have no pitch bend it has to be set 8192.  And example of the three bytes sent for this command on channel 0 is (oxE0, 0x00, 0x40).  It is important to remember that this is not equal to 0x4000 but instead 0x2000 as the most significant bit of the first byte is dropped.
  • Decided to change the way I was designing the new board in a way to minimize making mistakes on things which are still working.  Instead of starting from scratch I copied the board.   Things will still need to be moved but at least the traces are already connected.
  • Phil suggested having the new board follow the atx form factor so it can be mounted in a computer case.  The area will have to be 24.5x25cm all output ports will be in the 16x5cm rectangle where the pc outputs are usually.
  • Using a computer case gave me the idea that we might be able to use a pc power supply.  The peak current is fine the only problem is the minimum current on the 12 volt is 1 amp.  I will have to do some tests when the new stuff comes in.
  • Measured and placed the mounting holes for the arduino on the new board schematics
  • Found some of the connectors which will be needed to use ribbon wiring for the arduino in the pad2pad tool.

End: 6:00

Phil 5.11.12

8:00 – 2:30 FP

  • Working on finger sound management
  • Building the Hysterisis class – done
  • Building sound class: volume, id, sound state, ..?
  • Adding SoundWrapper into FingerIO

Tom 5.10.2012

Start: 10:30

  • Found parts needed so that I can have a working finger to experiment with sounds
  • Considered some alternative size exciters and different high power amplifiers but determined they would not be as good as the ones we had
  • Looked into playing midi sequences
  • Found that you can use a program called a midi sequencer to create sequence files
  • I loaded a midi file from Final fantasy 7 into the sequenecer and was able to see a list of the midi commands.  I am not sure how you load this to our boards though.
  • There are lots of libraries in java that make midi easy.  I haven’t found the ones for c++ yet or anything specific to the board for sending sequences

End: 6:30

Phil 5.10.12

8:00 – 2:00 FP

  • Came in this morning to happily running communication 🙂
  • Sound design
    • Finger moving forward
    • Finger moving backwards
    • initial contact
    • sustained contact
    • release
    • Hysterisis box or something similar to slow down the amount of calls to the sound class
    • I think I need individual messages for each finger
      • {“nm”:f1, “cmd”:start, “srl”:2, “nt”:3, “vol”:0.7, “chnl”:4} // normal command
      • {“nm”:none} // nothing new, keep on doing the same thing for all fingers
  • Restructuring FingerIO to contain the logic for producing the above JSON strings

2:00 – 4:30 ESSO

  • VISIBILITY meeting

Phil 5.9.12

8:00 – 5:00 FP

  • The wired network was down since yesterday around 3:30. Bounced everything which didn’t seem to work, but everything came back up in 20 minutes.
  • Moving my DataElement/BaseDataObject classes back over to the Arduino for evaluation and testing.
  • Grr. Memory leaks. Because I’m using strcat, I needed to ensure that the buffer[0] was set to NULL before starting.
  • Looks like that did it. Need to test in the sim, and then it’s time to add the sound in!
  • Sound is working. The system freezes after a few minutes’ use. I’m testing the communication in the sim alone now and it doesn’t seem to be breaking. I’ll run an overnight test.

Tom 5.9.2012

Start: 9:00

  • Finished writing the readme for the MidiAmp Library
  • Added a couple of things to add to the MidiAmp library to our checklist.
  • First thing is to change the Amp class to use SoftwareSerial.h instead of wire.h if possible, so that one arduino can control more then 8 fingers
  • Secondly I need to test the aftertouch and pitchbend midi commands and update the documentation once I figure out how they work.  Also I need to add the ability to play midi sequences.
  • Started rewriting my control module to work with Phil’s framework but quickly hit a wall because I wasn’t sure how his code worked.
  • Worked out this class with him and got sound working
  • Phil says by the time we get to two hands we will probably be using a different micro controller so don’t worry about changing the amp class.
  • We need to order an extra exciter and midi card so I can have something to test sequences and stuff on.   An additional midi card could be useful if we decide to use the base shaker for whole hand collision.
  • Currently the hand is reverberating on the metal frame of the table.  This is making it louder but also giving it a metallic sound.  Mounting it firmly to a wooden box would produce much cleaner sounds as well as maybe absorb some of the excess vibration.

End: 5:00

Phil 5.8.12

8:00 – 4:00 FP

Tom 5.8.2012

Start: 10:30

  • Wrote the readme for the Midiamp library and test program
  • I think there was a little confusion of what the test program actually is.  the test program is literally a test of the basic functions of the library.  It is not a controller prototype which is why is it not made to be scalable or anything like that.  I have partial prototypes of what the controller should be but I was not sure what route Phil wanted to take so I gave him the basic classes.  Now that the hardware isn’t of as dire need as it was the Saturday when I posted the sound libraries I can put more focus into fleshing out this controller.  Basically the only reason this is up there in its current form was because time was a factor and I didn’t want Phil to stumble through my controller without knowing the basics of how it worked.
  • The sound controller prototype only needs the logic written.  I made a few models for this so I will have to determine which one is best as they work somewhat differently.  If I know what and how many objects need to be processed by the controller it should be easy to finish these.
  • The readme took a while longer than I thought and I still want to proof read before I post it.  Maybe I went a little too deep in writing it as well as there is a lot of how things work at an electronics level in there.  Considering the electronics doesn’t have any documentation of its own this is probably a good thing.
  • Added some stuff to the checklist for designing the new board so I don’t forget them.

End: 6:30

Tom 5.4.2012

Start: 10:30

  • Started a new file for the board
  • Decided on the general layout of the board.  Power goes in on top the i/o from the hand comes out at the bottom.
  • This may work with only one power plug.  I have to test the currents to know for sure.
  • Added mounting holes to the new board.  Dimensions will change as stuff is added.
  • Copied the sensor circuits over.
  • Commented code for the Midiamp library.

End: 6:30

Phil 5.7.12

8:00 – 4:30 FP

  • The kinetic sculpture race was a blast. Here are pix: http://www.flickr.com/photos/21701734@N04/sets/72157629972340647/
  • Let’s see if we can get sound working today!
  • And now a short pause while we install video driver updates…
  • Looking through the port_test code
  • Having problems with the serial code again. It appears that the arduino is getting into a condition where it thinks that there is always a character waiting to be sent
  • I’ve gone back to the test harness, which is having the same problems. It appears that there is something wrong with the workingBuf[]. If I don’t put characters into it, then the rest of the code works fine. Nope, it seems fine. Moving onto the aJSON and DataObject classes.
  • aJsonObject* jsonObject = aJson.parse(workingBuf); and aJson.deleteItem(jsonObject); seem to reliably crash things. I think it’s a memory leak. That would explain the randomness of the errors.
  • Putting a parser in the BaseDataObject class. Going to see if I can use this hashmap: http://www.arduino.cc/playground/Code/HashMap
  • I really can’t believe I’m hand-rolling a parser. Ah, well. Onward.
  • Built a DataElement class (with static declarations!) Handles char[16], int and float. Mostly done. Integrate with HashMap and test tomorrow.

Phil 5.4.12

8:00 – 4:00 FP

  • May the 4th be with you!
  • PAD lab – spent some time going over the serial library
  • Hooked up Tom’s full rig to the sim. The sensors work, and the sound works using his sketch. He’s going to comment his code and I’ll start to integrate sound on Monday.
  • Bent the fingers on the hand to be a bit more ergonomic

Tom 5.3.2012

Start: 10:40

  • Assembled a secondary connector for the sensors so Phil can test his stuff independently of the main electronic boards
  • Started making changes to the board design.
  • Added a power switch
  • Added mounting holes
  • Sent the negative input signal to ground to fix that feedback problem.
  • Considering a single board approach for the new boards now that I know the electronics will work.

End 6:40

Phil 5.3.12

8:00 – 9:30 ESSO

  • Added my presence to the search for solutions.

9:30 – 4:30 FP

  • Integrate pressures today
  • Run sound from the PC until the Arduino is working? Synth shield (http://shop.moderndevice.com/products/fluxamasynth)
  • The sim is now sending sound ID and volume to the Arduino, and getting pressures!
  • Measuring presures from the force sensors.
  • The board seems to get stuck in the WAITING state occasionally. Added a RESET if there is no character read for 1/2 second.