Categories
Audio Channel Uncategorized

Plan a BarCamp

BarCampMadison While waiting around for BarCampMadison3 to start, Matt Gauger and I started talking about how to plan a BarCamp. Luckily, the recorder was rolling to capture this incredibly insightful conversation.

And when I say “incredibly insightful conversation” what I really mean is File Under: Silly.

Also, listen carefully for a guest appearance by Ashe Dryden.

You can also download an MP3 file if you’d like. (And for our freedom loving friends, enjoy an Ogg file.)

Also, if you want to get all of the audio automagically downloaded podcasting style, subscribe to the feed. Why you would want to do this, I’m not really sure.

Categories
Uncategorized

The Pfister Hotel Tree Lighting (Time Lapse)

https://player.vimeo.com/video/17681997

Time Lapse Bot was quite proud to be called into service to help create this time lapse video of the process of assembling and lighting the Christmas Tree at The Pfister Hotel in Milwaukee, Wisconsin.

Time Lapse Bot I realized that I never got any good photos of Time Lapse Bot 3. I’ll have to schedule a session and get some shots… We’re also planning a series of upgrades for Time Lapse Bot, with the goals of: better mobility, better picture quality, and more interesting time lapsing abilities. 2011 should be the quite the year for Time Lapse Bot technology.

Categories
Uncategorized

Logic Express Migration

Logic Express

Over the years I’ve become a fan of Apple’s Logic Studio (which I use at work) and Logic Express (which I use for personal projects.) They’re both pretty powerful applications for audio engineering. We’ve done a lot of good stuff with these apps.

About a year ago I tried using Apple’s Migration Assistant to move a user to a new Mac. There was some failure, mainly involving Final Cut Studio. I ended up having to call Apple and finally talked to a guy who straightened it out (it was serial number issues) and pretty told me to AVOID using Migration Assistant for Apple’s Pro Apps (Final Cut Studio, Logic Studio, Aperture.) He told me it doesn’t work… usually due to how the installs bind to the hardware of the machine, or something like that.

I’ll ignore the fact that Apple’s Migration Assistant can’t deal with it’s own applications properly for now… I’ve got Logic Express to deal with…

I finally got Migration Assistant to work really well on my last Mac move. Everything seemed fine. All of my applications, settings, etc. appeared to be in working order. All except for Logic Express 9.

No matter what I did, I could not launch it under my normal user account. I tried reboots, a reinstall, and nothing, It just hung there. I tried another reboot and reinstall. Nothing. I created a new user account, and it launched fine. Tried the install under the new user account, and it seemed fine. Went back to my user account… no good. I tried trashing it and another install, and this time it didn’t even show up in the Applications folder! I found this Apple Support Article: Pro Applications: Entering serial number after migrating causes the application to stop responding and tried to trash /Library/LaunchDaemons/com.apple.aelwriter.plist this didn’t work either. I was getting a little bit annoyed by now. I’ve been taking care of Macs professionally for 15 years, and this one had me a bit stumped. (And I wasn’t about to do a system reinstall!)

But finally… I fixed it! I ended up watching Console.app for a while when trying to launch Logic, and saw that it was trying to launch /usr/sbin/AELWriter which didn’t exist. I copied /usr/sbin/AELWriter to my new Mac from the original Mac I migrated from, and also copied /Library/LaunchDaemons/com.apple.aelwriter.plist as well, and we were back in business. Logic Express launched, asked for a serial number, I provided it, and it’s running right now.

I don’t give up easily.

Categories
Uncategorized

BarCampMilwaukee5 Intros

BarCampMilwaukee5 was held October 2nd and 3rd, 2010 at Bucketworks in Milwaukee, Wisconsin.

When we were planning BarCampMilwaukee5, Gabe asked if there was a way to point a video camera at people as they introduced themselves and project it on the wall. My answer was “yes” and we pulled together all the equipment to do it, and I somehow became the camera operator. As long as I was rolling, I threw a tape in, and this is the result.

This video is about 43 minutes long, and while I compressed it as much as I could without losing too much quality, it’s still about 480MB. I hope it serves as a historic element of the fifth BarCamp held in Milwaukee. You’ll see the people who were at the opening session and hear just a little bit about them.

This video is released under a Creative Commons Attribution License. You can also find this video at blip.tv or download an MP4. Enjoy!

Categories
Uncategorized

Accelerometer Art

Accelerometer Art

Accelerometer Art

Accelerometer Art

At MilwaukeeDevHouse5 Matt and I played with Arduinos, so here, with the fairly uninspiring name of “Accelerometer Art” I present three screen shots of a Processing application displaying data from an ADXL335 accelerometer connected to my MacBook via an Arduino.

Here’s the code that runs on the Arduino…

/*
 * Accelerometer.pde
 */

#define aref_voltage 3.3

int xpin = 1;
int ypin = 2;
int zpin = 3;

void setup(void) {
  Serial.begin(9600);   
  analogReference(EXTERNAL);
}

void loop(void) {
  int xval = (analogRead(xpin));
  int yval = (analogRead(ypin));
  int zval = (analogRead(zpin));

  Serial.print (xval);
  Serial.print (" ");
  Serial.print (yval);
  Serial.print (" ");
  Serial.print (zval);
  Serial.print (" \n");
  
  delay(10);
}

And here’s the code that runs in Processing…

/*
 * Accelerometer_Graph.pde
 */

import processing.serial.*;

Serial myPort;
int xPos = 0;
int yPos = 0;
int zPos = 0;

void setup () {
  size(1024, 768);
  println(Serial.list());
  myPort = new Serial(this, Serial.list()[0], 9600);
  myPort.bufferUntil('\n');
  background(0);
}

void draw () {
  // everything happens in the serialEvent()
}

void serialEvent (Serial myPort) {
  String inString = myPort.readStringUntil('\n');

  String[] nums = split(inString, ' ');
  String inStringx = nums[0];
  String inStringy = nums[1];
  String inStringz = nums[2];


  if (inStringx != null) {
    inStringx = trim(inStringx);
    float inBytex = float(inStringx);
    inBytex = map(inBytex, 0, 1023, 0, height);

    stroke(255,0,0);
    point(xPos, height - inBytex);
    strokeWeight(3);

    if (xPos >= width) {
      xPos = 1;
      background(0);
    }
    else {
      xPos = xPos + 1;
    }
  }

  if (inStringy != null) {
    inStringy = trim(inStringy);
    float inBytey = float(inStringy);
    inBytey = map(inBytey, 0, 1023, 0, height);

    stroke(0,255,0);
    point(yPos, height - inBytey);
    strokeWeight(3);

    if (yPos >= width) {
      yPos = 2;
      background(0);
    }
    else {
      yPos = yPos + 1;
    }
  }

  if (inStringz != null) {
    inStringz = trim(inStringz);
    float inBytez = float(inStringz);
    inBytez = map(inBytez, 0, 1023, 0, height);

    stroke(0,0,255);
    point(zPos, height - inBytez);
    strokeWeight(3);

    if (zPos >= width) {
      zPos = 3;
      background(0);
    }
    else {
      zPos = zPos + 1;
    }
  }
}

void keyPressed() {
  if (int(key) == 113) {
    exit();
  }
}

The Processing code was based on an example from Tom Igoe which he placed in the public domain. (Thanks Tom!)

I heavily violated the DRY rule with this code, so it should really be re-written to be more efficient. Besides all that, it does actually work, as you can see from the awesome graphics above. (Thanks to Matt Gauger for helping with the code, and yes, he scolded me for violating the DRY rule.)

This was a great first step into Processing for me, and I look forward to improving this code, as well as explore some other ideas I have for graphing data.

(If you’ve got any pointers to great tutorials, blogs, or web sites focusing on Processing, let me know!)