Category Archives: Feldman Project

Phil 5.30.12

7:30 – 4:30, 6:30 – 8:30 FP

  • Put together all my semester info for reimbursement.
  • Working on the tone structure for the fingers.
  • Here’s a nice chord that works:
    • thumbIO.setContactNote(52);
    • indexIO.setContactNote(55);
    • middleIO.setContactNote(60);
    • ringIO.setContactNote(64);
    • pinkyIO.setContactNote(67);
  • Adding some PC-side data throttling so that we don’t overwhelm the Arduino
    • Setting up the sandbox to play with buffer management.
  • Brought over one of the other PhD students to look at the system and see what kind of study/paper can be done with it

Tom 5.29.2012

Start: 9:30

  • Found the footprint for a hard drive power plug and placed it on the board
  • Found the footprint for the D-sub connectors for the hands sensors and speakers
  • Drew the traces for the sensor voltage divider.  It is now much smaller
  • Still trying to figure out how to mount the ribbon cables wiring slot on the board
  • Ribbon cables are easy to attach to the female connector.  All that is needed is to line them up and then squeeze the top part
  • Cleaned up the lab area a bit
  • Phil was able to get the hand working so we tried it out.  It feels really good and I can see a potentially low learning curve once everything is tuned properly.  Tuning includes adjusting sensitivity, add more dynamic range to the volume, figure out a way to isolate each finger to an extent(it might be good if you feel some vibration in the other fingers), and selecting notes and  chords
  • http://www.8notes.com/piano_chord_chart/
  • I tried to find a list of cords in midi numbering format but couldn’t.  We will have to convert them using the chart.

End: 5:30

Phil 5.29.12

7:30 – 4:30FP

  • Adding in more sounds.
  • Looks like the contact sound is never enabled.
  • Sounds are all fixed and working. If too many characters come in, the Arduino crashes, but it seems pretty robust. I’m going to give each finger a different pitch tomorrow. For now, hit and movement sounds are off.

Interview at 10:00. Here’s hoping that I find out who it’s with and where it is before I have to leave. Yay. I have an address and contact info.

Phil 5.25.12

8:00 – 5:00 FP

  • Added set and get byte methods to DataElement.
  • Tested sounds. Things are working much better. Nice job, Tom!
  • Working through note change/on/off logic in sim – done
  • The midi boards need to have power cycled to get a reset?
  • PAD lab meeting
  • Got the collision sound working reliably. Calling it a day.
    • >>{“nm”:f1Ht,”vol”:128,”nt”:84,”instrument”:116}<< // hit
    • >>{“nm”:f1Ct,”vol”:128,”nt”:72,”instrument”:59}<< // contact
    • >>{“nm”:f1Mv,”vol”:128,”nt”:60,”instrument”:20}<< // move

10:00 phone interview

Tom DeVito 5.24.2012

Start: 6:00

  • My wrong pin theory was incorrect.  Yesterday, I thought that the top pins on the aux IO pin block might be pin 22 and 23, throwing off my numbering.  It turns out, the reason these pins were hot(putting out voltage) was because they were in fact 5 volt pins.  This means the numbering is correct.
  • The middle and rings midi controllers were swapped.  Problem solved.
  • I found while running my testing sketch that the reset method does work on all but the index finger.  Upon inspection of the midi board, I found that a surface mounted capacitor had a broken connection.
  • Tried to repair the problem but it was beyond fixing.  Cut all the wires and confirmed that this was the one having problems.
  • After replacing the Midi shield, the reset method was still not working.  The connector for the reset was not connecting properly.  I guess it was just a coincidence that the capacitor was also loose.  I am not sure how the capacitor was effecting the functionality of the shield as it seemed to work but wouldn’t reset.  Regardless it is probably best that it was replaced.
  • Everything seems to be working now.  I changed the instrument from church organ to viola 42 because the organ wasn’t sustaining properly.  I am pretty sure the organ is supposed to but I couldn’t get it to do it.
  • It just occurred to me that maybe you were not selecting church organ properly.  Change instrument accepts bytes and you are passing it an int.  There is likely a loss of data issue there.  I am pretty sure all the midi class parameters are signed bytes are what the midi protocol uses.
  • Tested this by hard coding the instrument settings and it sustained properly.
  • When it first starts up it does not sustain the first note but when you start one through the console it sustains properly
  • I tried a few different strings and they all seemed to work as expected.
  • If you have any problems call me 301-787-0490.  I am hoping to hit the road by noon at the latest so if you can me before then I may be able to drop by if necessary.
  • I will clean up the office Monday.

End 4:30

Phil 5.24.12

8:00 – 9:30, 2:30-4:00 FP

  • Probably going to take a few hours to go to Salisbury today. Tom needs the time to make the electronics work anyway.
  • Adding the note on/off code to SoundWrapper
    • Use pitch to set up note changes
    • If a new note comes in (either as a new note or from pitch), then we need to turn the old not off, then add a new JSON string that turns the new note on.
    • Start thinking about polyphony.

Phil 5.23.12

8:00 – 4:00 FP

  • Back from the mini-vacation, which was fine until it became horrible.
  • Working with Tom on getting sounds to behave. It turns out that a single channel/instrument can be polyphonic, which is very cool, but it means that you have to turn a note on and off. I adjusted the SoundDataObject.update() method so that a JSON element of {"nt":72} will play middle C, while {"nt":-72} will turn it off. Setting {"nt":0} will trigger a reset of the Midi for that finger. Or at least it should. Reset isn’t working. Tom thinks it may be a mislabeled pin.
  • Cool thing for the day: https://live.leapmotion.com/. It strikes me that the Leap could be used as the basis for a finger chasing robot.

Tom DeVito 5.23.2012

Start: 5:30

  • Due to the tediousness of how I was testing the sounds and not being to sure which sounds were wanted, I put together a way to test sounds easier.  I cut the headphones port off of some broken headphones I have so I can hook the speaker to my computer to test the sounds using a keyboard software on my computer.
  • I found that the poor sound quality is a problem with the hardware.  I am not sure how I had clean sounds at one time but I will have to examine what I am doing to see if I can fix the problem.  Sadly that test was done way before I started taking pictures.
  • The connection works so I can demo various sounds and pitch much more easily than before so we can determine what works best.
  • Looking at entries made in October of last year the problem seemed to be with midi shields.  The ground is not connected to a pin directly  as most shields would.  Maybe this ground can be attached in a different way.
  • Did a test with the extra boards I have, apparently the boards have more then 2 layers of traces.  All the ground ports work as ground and the one I am using is for the negative of the signal which may not be filtered properly like the others.  Plugging a headphone into this proved this theory.  When I touch the ground to the negative of the speaker it buzzes but when I touch it to the other ground ports it does not.
  • Sound quality issue has been resolved.  I tested it using my test_sensor sketch and it seems all fingers work fine.  Vibration quality is much better volume might be a bit lower or maybe its just the low notes used in the test.
  • Correction sound quality is mostly resolved.  Still need the improvements to resonance discussed in the previous entry.
  • The case came in looks really cool
  • Need to add rubber to where the metal touches the wood.  It might be best to get rid of the metal entirely.
  • There is plenty of room to add a wooden plank where the drive bay would be to have a hollowed out section
  • Power supply works as expected.  The fan is nice and quiet.  On the molex connector, red is the 5 volt line and yellow is the 12 volt line.
  • I don’t think the reset method of the midi is working properly.  Perhaps the delay needs to be longer.
  • Seems there are a few other issues that need to be worked out.  I am not certain why the fingers match u in my sketch but don’t seem to in this one.  I will have to examine the sketch a bit closer tomorrow and compare it to mine.  I will also make sure that mine is actually working.

End: 2:00

Tom DeVito 5.22.2012

Start: 10:00

  • Problems with sound quality cannot be resolved on the current design.  When I had one finger attached firmly to my desk it sounded perfect as if it was coming from a regular speaker.  The current design has way to much rigid area to resonate anything but the highest frequencies well.  This makes the high pitch sound of the white noise much more apparent.
  • Thoughts on new design:
  1. Make individual fingers and attach them directly to the wood box
  2. The connection must be very firm and insulated by some type of hard rubber
  3. I think some type of C clamp is optimal as very little energy is lost from the screw holes but if screws are needed they should be thick and the hole should also be insulated with rubber.  Large washers are needed to ensure the maximum amount of area is in contact with the wood.
  4. If there is room and the top of the box comes off easily enough, a hollow section could be added for further resonance.
  • Movement sounds:  I think for movement the goblin sounds are good.  They provide a very airy sound that does not create a lot of vibration.  Soundtrack may also be good for the same reasons.  Muted trumpet has a kinda robotic sound to it on the low end.  Polysynth might also do.
  • Contact sounds: Crystal sounds maybe
  • I came up with a  better way to test sounds quicker.  I should have a better list with more specific number by the time you get in tomorrow.

End: 6:00

Tom 5.18.2012

Start: 12:00

  • Bought some connectors and ribbon cable.   I am not sure how to mount them as they use different shapes for pins.  I will have to see if I can find a footprint that matches up in the pad to pad software.
  • Downloaded the source for the ardino side
  • Spent some time getting familiar with the code and tried out  a couple sounds.

End: 6:00

Phil 5.18.12

8:00 – 2:00 FP

  • Leaving early to prep for a long weekend of riding around the Delmarva. I’ll be back on Wednesday. Texting to my cell (410.300.7293) is probably the best way to get ahold of me
  • Now that the framework is in place, adding in multiple sounds per finger.
  • Got some sounds kind of working, but there may be some state problems. For example, I can turn the amp volume down, but only once. After that, sounds don’t seem to play, even though the volume is back up. Since everything can be testedthrough the serial console, I handed things off to Tom to see what he can do while I’m out.

Tom 5.17.2012

Start 10:00

  • Confirmed that hp/compaq is my least favorite computer manufacturer.  Not only have I replaced more hard drives out of these brands than any other but they use proprietary power supplies and mother boards.  This power supply has a different pin configuration and the power on works in a way that is mysterious to me and probably needs the motherboard to do it.  A standard power supply you can jump the power on to the ground and it powers up.  This one the power on is set low by default instead of high.  There was a 5v hot line that I thought might pull this high to turn it on but I got no results.
  • The good news is this should definitely work for our purposes with a standard power supply.  Independent of the large p1 connector, each of the little  4-pinmolex connectors output both 5 and 12 volts.  This means I can put one of these ports, the same as hard drives use, on the board to plug in the power.  A SPST(single pole single throw) switch can be used to turn the supply on or off.  Here is a youtube video on it:  http://www.youtube.com/watch?v=29vhuKbwLno
  • Phil found a really cool wooden case for the electronics.  If we attach the devise firmly too it, we should get very good sound quality.
  • I found the auto routing function for trace routing.  I tested it on a dummy circuit I made to see how it works.  Basically you set up the net and it does it.  We’ll see how well it does on the actual circuit as its much more complex

End: 6:00

Phil 5.17.12

8:30 – 4:30 FP

  • Going to see if all the code I wrote yesterday actually works…
  • Everything compiles and appears to be working. I’m going to increase the hysteresis on pitch so it doesn’t update continuously.
  • Note that an individual sound that gets two sets of information in between a send will only send the last one. That means that on the Arduino side, a command like ‘sustain’ has to have an implicit ‘start’. Maybe sustain should just have no start required?
  • Having a bit of trouble with the hysteresis function. It’s triggering on transitions between +0 and -0. Added an equals(double a, double b, double precision) to SoundWrapper to fix this. Better, but not entirely fixed. Ah – I was clamping the value for pitch and volume inside the toJsonStr() method, so the edge conditions would set newJSON = TRUE. Moved the clamp to inside the set().
  • Ordered a cool case and power supply for the electronics
  • Added a mapFloatToInt() method in DataElement so we can transpose the values from the sim to the midi easier. The code was looking *very* messy.

OH

  • Updated my resume
  • Interview for Jessie

Tom 5.16.2012

Start: 10:00

  • Figured out how much room mounting the boards will take
  • Decicded that the preamps should go under the the main amps.  They will be attached to the other side
  • built one of the amps that came in the mail.  I will start testing the power supply tomorrow

End 6:00

 

Phil 5.16.12

8:00 – 4:30 FP

  • The communications test ran all night and was still working and responsive when I came in. Time to make some sounds!
  • Fixing up the messages, and eliminating redundant/unneeded info in the Json packet – all done, and the data transfer seems much happier
  • Added clamping to keep volume and pitch from getting out of hand.
  • Moving the hardware initialization from SoundDataObject to SoundController. I think I’ll also explicitly set up the sound objects, at least for now.