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!)

Categories
Uncategorized

MilwaukeeDevHouse5 Time Lapse

[ There should be a video here but blip.tv disappeared from the Internet… ]

Time Lapse Bot was at Bucketworks for MilwaukeeDevHouse5 on December 3rd, 2010. If you weren’t there, well, at least you can enjoy this video.

This video is released under a Creative Commons Attribution License. The music titled “cyber seeds” is from cypher tales via Jamendo and has a Creative Commons Attribution License. You can also find this video at blip.tv as well as Vimeo. Enjoy!

Categories
Uncategorized

DHMN

DHMN

Our friends to the north are working on building something called the [D]istributed [H]acker [M]aker [N]etwork. (or DHMN for short) and they’ve got a new web site at dhmn.net and they mentioned needing a logo… so after a bit of talk about what DHMN is and represents, Tim came up with one, and I came up with a variation on it, which you see above.

See all the logos and if you have a better idea, let me/us/them know, or feel free to create one yourself and tell us about it.

The logo I designed was quick ‘n dirty, still very rough, but the ideas I was thinking about were: network, node, circuits, wrench, tools, big/little dipper. I also wanted something fairly simple, which would also work at small sizes.

Thoughts?