Monthly Archives: May 2012

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.

Mike 5.23.2012

  • Production backups
  • Worked with Dong to try and mesh the COGNOS data and our data, we had a bit of trouble matching things up so we went and spoke with Jessica R..  She seems to have a very good picture of how the budgets are organized and also showed us some reports she’d like to be able to produce.  There are a few fields that need to be added to Reqs to produce them: type, physical location, and Org.
  • We also have a meeting/demo set up with her tomorrow morning at my desk.
  • Contacted my old badge sponsor to try and transfer my badge
  • Charting stuff…

Working on the Config Screen.  Here are my current list of config screens and options:

General

  • Legend On/Off
  • Legend Position
  • Base at Zero = true|false

Series: Each chartable field will have enabled and type selector, changing types will change the options available.  Types:

  • AreaSeries – Stackable
    • yField
    • Fill Color
    • Fill Alpha
    • Form = segment|curve|horizontal|reverseStep|step|vertical
    • strokeEnable = true|false
    • Stroke Color
    • Stroke Width
  • BubbleSeries
    • yField
    • radiusField
    • minRadius=0
    • maxRadius=50
    • Fill Color
    • Fill Alpha
    • strokeEnable = true|false
    • Stroke Color
    • Stroke Width
  • CandlestickSeries
    • openField
    • closeField
    • highField
    • lowField
    • Fill Color
    • Fill Alpha
  • ColumnSeries – Stackable
    • yField
    • Fill Color
    • Fill Alpha
  • HLOCSeries
    • openField
    • closeField
    • highField
    • lowField
    • Fill Color
    • Fill Alpha
  • LineSeries
    • yField
    • Form = “segment|curve|horizontal|reverseStep|step|vertical”
    • Stroke Color
    • Stroke Width
  • PlotSeries
    • yField
    • Fill Color
    • Fill Alpha
    • Stroke Color

Sets: AreaSeries and ColumnSeries will both be members of sets with the following options:

  • AreaSet
    • series = []
    • type = “100%|clustered|overlaid|stacked”
    • allowNegative= true|false
  • ColumnSet
    • series = []
    • type = “100%|clustered|overlaid|stacked”
    • allowNegative= true|false

That’s all the options I can think of for now, always room for more.

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

Dong Shin 05.22.2012

  • stopped by the Fort, computers were down. Could not get V badge….
  • a bug in VisibilityScripting not returning data fields in correct format for complex SQL queries (Join tables?)
  • fixed COGNOS SQL using CAST function
    • SELECT f.*,
      CAST(
      CASE WHEN SUBSTR(FY_Month, 8, 3) = ‘Oct’ THEN  month_1
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Nov’ THEN  month_2
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Dec’ THEN  month_3
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jan’ THEN  month_4
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Feb’ THEN  month_5
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Mar’ THEN  month_6
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Apr’ THEN  month_7
      WHEN SUBSTR(FY_Month, 8, 3) = ‘May’ THEN  month_8
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jun’ THEN  month_9
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jul’ THEN  month_10
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Aug’ THEN  month_11
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Sep’ THEN  month_12
      ELSE ‘other’
      END AS DECIMAL) AS PM_Actuals
      FROM visibility_dev2.facts_fy12 f, project_portfolio.budget_centers c, project_portfolio.obligations_outlays o
      WHERE c.uid = o.funding_id
      AND f.Program = c.facts_pe
      AND f.BC = c.center_number
      AND f.Approp = c.appropriation
      AND o.year = SUBSTR(FY_Month, 3, 4)
      AND o.year_count = 1
      AND o.type LIKE “PM Actuals%”

Mike 5.22.2012

  • Production backups
  • Imported Dong’s script to merge data sources, it ran but returned zero rows so the data must not be matching up well
  • My sponsor is letting my badge expire next month so I sent Jim from TASC a note about it
  • Working on configurable chart
  • Submitted my proof of concept with toXml and fromXml

Mike 5.21.2012

  • Production backups at site
  • meeting being set up to discuss moving SSPs?
  • Per Jessica R.’s request to show column charts with line trends on them, I’m looking in to making a customizable chart
    • Will allows users to change series types
      • AreaSeries
      • BubbleSeries
      • CandlestickSeries
      • ColumnSeries
      • HLOCSeries
      • LineSeries
      • PlotSeries
    • Will allow users to select series color
    • Will save these settings to dashboards / slideshows
    • Will have some kind of copy / paste functionality to copy settings between multiple similar charts
    • The configuration menu will be accessed through either a button or right-clicking the chart if the button is too obnoxious looking

Dong Shin 05.21.2012

  • decided to use SQL query to genenrate COGNOS supporting data (PM Actuals) instead of a lengthy Python script
  • working on SQL queries…
  • COGNOS with matching PM Actuals
    • SELECT f.*,
      CASE WHEN SUBSTR(FY_Month, 8, 3) = ‘Oct’ THEN  month_1
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Nov’ THEN  month_2
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Dec’ THEN  month_3
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jan’ THEN  month_4
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Feb’ THEN  month_5
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Mar’ THEN  month_6
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Apr’ THEN  month_7
      WHEN SUBSTR(FY_Month, 8, 3) = ‘May’ THEN  month_8
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jun’ THEN  month_9
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jul’ THEN  month_10
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Aug’ THEN  month_11
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Sep’ THEN  month_12
      ELSE ‘other’
      END AS PM_Actuals
      FROM visibility_dev2.facts_fy12 f, project_portfolio.budget_centers c, project_portfolio.obligations_outlays o
      WHERE c.uid = o.funding_id
      AND f.Program = c.facts_pe
      AND f.BC = c.center_number
      AND f.Approp = c.appropriation
      AND o.year = SUBSTR(FY_Month, 3, 4)
      AND o.year_count = 1
      AND o.type LIKE “PM Actuals%”
      ORDER BY f.uid
  • match COGNOS data with PPM data
    • SELECT f.*, o.month_1 as PM_Actuals FROM visibility_dev2.facts_fy12 f, project_portfolio.budget_centers c, project_portfolio.obligations_outlays o
      WHERE c.uid = o.funding_id
      AND f.Program = c.facts_pe
      AND f.BC = c.center_number
      AND f.Approp = c.appropriation
      AND o.year = 2012
      AND o.year_count = 1
      AND o.type LIKE “PM Actuals%”
  • parse FY_Month field for year and month
    • SELECT f.FY_Month, SUBSTR(FY_Month, 3, 4) as year,
      CASE WHEN SUBSTR(FY_Month, 8, 3) = ‘Oct’ THEN  ‘month_1’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Nov’ THEN  ‘month_2’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Dec’ THEN  ‘month_3’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jan’ THEN  ‘month_4’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Feb’ THEN  ‘month_5’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Mar’ THEN  ‘month_6’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Apr’ THEN  ‘month_7’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘May’ THEN  ‘month_8’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jun’ THEN  ‘month_9’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Jul’ THEN  ‘month_10’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Aug’ THEN  ‘month_11’
      WHEN SUBSTR(FY_Month, 8, 3) = ‘Sep’ THEN  ‘month_12’
      ELSE ‘other’
      END AS month
      FROM visibility_dev2.facts_fy12 f

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

Mike 5.18.2012

  • Production backups
  • Wrote up our weekly status and submitted it to Mike H., Dave W., and Jim from TASC
  • No word back yet from the data center about our connectivity problems
  • Looking in to some neat javascript only things for simple websites

Dong Shin 05.18.2012

  • spent sometime setting up Visibility and Scripting Servers for COGNOS data
  • COGNOS data fields mapping to the PPM database fields, others are calculated…
    • FY Month (FYYYYY MMM) – FY2012 Oct
    • Capability
    • Program (FACTS)
    • Service
    • Sub-Project (Expenditure Center)
    • BC  (Budget Center)
    • Approp
    • Current Budget (FY Budget)

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

Mike 5.17.2012

  • Production system backup
  • Met with Dong and went over the COGNOS data, we should be able to write a script that will mesh the desired data in to one table in visibility
  • Got a response from the other person having connection problems.  They are still having problems and gave me their IP.  I submitted a ticket with the enterprise help desk so hopefully they will have an idea of what is going wrong.
  • Finished up my manifest reader library and wrote a short users guide.  Shared in my sandbox svn folder for now.

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