what a 3 frame delay looks like

When shopping for digital HD video equipment, the magic phrase is “3 frames or less”; supposedly, this is the magic number where the frame delay is not noticeable to us mere mortals.  At a standard video rate of 30fps, a 3 frame delay would be exactly 100ms.  When talking about pure digital video in a professional setting, it is CRAZY hard to get anything less than a 3 frame delay on your final output:

  • 1st frame delay comes from the time difference between your camera optics and your digital output,
  • 2nd frame delay comes from the time it takes your switch/mixer to process the video feeds,
  • 3rd frame delay comes from your output source (monitor, projector, TV, etc).

This is basically the best case scenario, and if any of your equipment adds an extra frame in there anywhere, it becomes almost unusable in a live venue setting.

So, in a recent setup I’ve worked on we wanted to make sure that we were within that magical “3 frame” range, so we set up a little test.  I built some timer software that would display the current time down to a precision of 1ms; we ran it on a computer and filmed the computer screen.  We ran the camera through the video switch, and then the video switch out to a monitor sitting beside the computer.  This way, we should have been able to see any delay introduced by the system.  We bumped up the shutter speed on a still camera and snapped this picture:

Yay!  The delay is EXACTLY 100ms; you don’t get better results than that.  So, we hit our 3 frame cutoff mark; that’s great because it really is the best you could possibly hope to get (for the reasons above).  But this left me scratching my head, and this is why:

That video was produced with all of the same equipment (in exactly the same configuration); so, believe it or not, this is a 3 frame delay (100ms).  Obviously, 100ms is detectable by the human eye (yours detected it right?).  From more empirical testing, we saw that 100ms is approximately equal to the time it takes to blink or close/open the palm of your hand.  So, the moral of the story is, don’t let any video equipment sales/marketing person tell you that 3 frames is what you need to shoot for because you will never see the delay.  You should shoot for 3 frames because it’s a best case scenario and…

That’s not the end of the story, and if I left it there I would be doing a disservice.  While this short of a delay is detectable (with your eye), it is not always observable.  See, when not standing directly in front of the screen we could not see the delay at all.  For example, when filming someone speaking in the middle of the stage, there was no noticeable difference in what our ears heard and what our eyes saw on the screen.  Even though, there is a real 100ms delay.

Then, because light travels faster than sound, it would even be possible to reverse any perceivable delay at certain distances.  At room temperature, sound will travel approximately 110 feet in the 100ms time frame.  Here’s what that means:

  • At less than 110 feet from the screen, what you see will be ahead of what you hear.  However, as I said earlier, the difference is hardly noticable.
  • At 110 feet from the screen, what you see and what you hear will reach you at about the same time.
  • Further than 110 feet, the images from the video will be ahead of the sound.  Thus reversing the delay all together.

The real moral of the story:  don’t make a butt of yourself complaining about a 3 frame delay that (while measurable and detectable) isn’t going to be noticeable in any real-world situation.  Take it from somebody who knows first hand; this ruined a whole week of my life!

sometimes I even confuse myself

I’ve got this long standing personal project that I just can’t seem to finish.  It’s this file encryption program that I only seem to find time to work on in the 30 minutes before bed time.  I’ve got the core written and it’s working mostly everywhere (even on my Droid).  All I’ve got left is to wrap a GUI around it, and I’ll at least have a releasable beta.  I don’t care much for front-end development, so perhaps that’s why I’ve hit a roadblock… No sure.

Anyway, I’m sitting here looking at some of the high level crypto functions and I’m having trouble following the logic.  I can’t tell if my own code is genius or just plain dumb.

Creating your own self-signed certificates and keys (UPDATED)

I’ve set up a little PHP page that will generate self-signed certificates and bundle the associated private key in a PKCS12 file:


Basically it uses OpenSSL like this:

openssl genrsa -aes256 2048 > temp.key
openssl req -new -x509 -key temp.key -out temp.crt -days 365 -subj "/CN=John\ Doe/emailAddress=john.doe@mail.com"
openssl pkcs12 -export -in temp.crt -out temp.p12 -name "my self signed P12 from cryptofreek.org" -inkey temp.key

It’s a handy little utility; a quick and dirty way to generate certificates for testing. I’m sure that I will be broaden the features soon.

Originally wrote some bash scripts that used the “openssl” command on the server, but it was kinda hokey with a bit too much file IO.

Now, the backend has been rewritten to use the (sparsely documented) OpenSSL functions in PHP.

Question for my audiophile buddies out there…

In my recent quest to sell some gear, I had an interesting encounter that I am curious about.

I am no audio equipment expert (never claimed to be), but I know enough to be dangerous.  One of the pieces of equipment I was selling was a rack mount effects processor; standard issue, nothing special.  The guys I sold it too (professional audio guys) were going through everything and testing it out, but they never could get this effects processor to work.  I was bummed at this point because I had the thing working just a few days before.

I have always used an Aux/Effects send and return to run these type of external units.  But, I go over there to have a look and the (professional) guy had the input for the processor plugged into the aux send, but instead of using the aux return he was going straight out of the processor into the line jack of another channel.  He said that this was the preferred way to do it because you had more control over the effect volume?  Although I kinda understand the theory, I have honestly never seen this done before.

Nothing worked hooked up this way, and it just struck me as odd.  I wondered why every manual I had ever read for mixers and effects processors showed it hooked up through aux sends/returns.  I also wondered why you would want to take up twice the board real estate by occupying two channels with the same input.  It made no sense to me.

So, I ask if I can rewire a few thing … hooked it up the way I normally would and everything worked just fine.  Then they were perplexed because that’s just not “not they way you do it.”  In the end though, they bought the unit because it did work.

My question is this:  Am I off base here?  Is it really standard practice to hook this effect processor that other way?  If so, please help me understand the rational (because I really want to know).

Free PKI Certificates from CAcert.org

If you don’t know what a digital certificate is or why you might need one, I’ll save you the effort and you can stop reading here.

If, like me, you are either too poor or too cheap to give VeriSign your money … CAcert.org seems like an ok option.

I know, I know … This IS NOT an enterprise class, super reliable way of certifying users.  However, it is probably good enough for playing with your friends.

Signup is easy, issuing certificates is easy, revoking your certificates is easy.  Go give it a try…

Here’s my cert:


You can also grab the root and intermediate certificates here.

gear for sale update…

I listed some stuff I’m selling here.  I’ve got to move it pretty quickly, so it looks like I’m going to let it go to a third party reseller.  As such, I’ve had to drop how much I’m asking.

Anyway, just listing one last time here before it all goes away.

  • Behringer JM150 amp w/J3 footswitch:  $200
  • 1999 Epiphone G-400 Custom (triple humbuckers, hardshell case): $175
  • 1997 Series Danelectro Pedals (DC-1, DD-1, DE-1, and D0-1): $15 each
  • Shure SM58:  $30
  • Behringer B-1 Condenser Mic (with case, shockmount, and windscreen): $30
  • Johnson J-Station amp modeler:  $45
  • Yahama DGX-500 88-key keyboard w/Stand:  $100
  • Carvin XP2 Vocal DSP (1u rack):  $30
  • Behringer 12 channel mixer:  $35
  • Behringer Autocom Compressor:  $30
  • Behringer FCB1010 MIDI foot controller:  $45

If you’re so inclined, you can have it all for $700.


stuff for sale (for those that asked)

I’m getting rid of a few things, and wanted to give you guys the opportunity to take a look before I eBay ’em.  There may be more to come as well.

Asking prices are negotiable (but folks are asking what I want), so don’t be afraid to make an offer.  I’m not shipping anything so you’d have be pretty close.  MSRP is just a reference point; some of these items are discontinued so MSRP is from original release.

I treat my gear very well, all of this is in like new condition.  But your welcome to test drive any of it.  Let me know if you have questions.

what where mspr how much notes
Danelectro “Cool Cat” link (pdf) $99.00 $35.00 Original DanO chorus pedal; cast metal housing. Runs on 9V batteries or 9V adapter (not included). I could probably do a good deal on the whole set if needed.
Danelectro “FAB Tone” link (pdf) $79.00 $30.00 Original DanO distortion pedal; cast metal housing. Runs on 9V batteries or 9V adapter (not included). I could probably do a good deal on the whole set if needed.
Danelectro “Dan-Echo” link (pdf) $129.00 $45.00 Original DanO tape echo (simulated) pedal; cast metal housing. Runs on 9V batteries (x2) or 18V adapter (not included). I could probably do a good deal on the whole set if needed.
Danelectro “Daddy O” link (pdf) $79.00 $30.00 Original DanO overdrive pedal; cast metal housing. Runs on 9V batteries or 9V adapter (not included). I could probably do a good deal on the whole set if needed.
Johnson J-Station link $450.00 $75.00 The J-Station was the only competetion for the original Line6 POD. I bought it for studio/recording to when I didn’t want to carry around the JM150 below.
Behringer FCB1010 link $285.99 $60.00 MIDI foot controller I used with the J-Station and JM150.
Johnson Millennium JM150 link $1,600.00 $500.00 One of the first (if not the first) digital modeling amps; it’s very loud and very heavy :). I may throw in the FCB1010 foot controller if the price is right.
Epiphone G-400 Custom (Black) link $832.00 $275.00 It’s an Epi SG series; this is the ebony model, and it’s a bit hard to find. Includes hardshell case.
Shure SM58 link $124.00 $45.00 It’s an SM58… I don’t think anything else needs to be said.
Yamaha DGX-500 link $1,099.95 $275.00 88 (semi-weighted) key portable grand.
Behringer Mixer   ??? $40.00 12 channel audio mixer, everything works except the effects processor. I don’t have the exact model #, I’ll look it up when I get home.
Behringer B-1 Condenser Mic link $197.99 $40.00 With case and accessories.
Behringer Limiter/Expander/Compressor   ??? $30.00 1U rack mount. I don’t have the exact model #, I’ll look it up when I get home.
Carvin Stereo XP2 (Vocal) DSP link (pdf) ??? $30.00 1U rack mount, digital effects processor.

ah oh…

How did I miss THIS yesterday?

Seems the web developers at MySQL skipped out on their best practices 101 class … you know, the day they talked about binding parameters.

Of course, that’s every developer’s knee-jerk reaction.  I’m sure if you searched all of our code long enough, you’d see some improperly escaped SQL in there somewhere.

Although, I’m puzzled as to how this would have gotten through a formal code review.  Interesting, no doubt.

Now, I’m off to change my MySQL.com account passwords…

More Java stuff

Before you read, just keep in mind that I am a Java developer by trade.  I may be a bit biased, but I try to be somewhat objective.

As I mentioned in a previous post, Java will be absent from future versions of OS X.  It’s not surprise, and we’ve known about it for months.  Apple is handing the reigns over to Oracle so that the actual “java people” can do the Java development.

Really, this is a long time coming and it’s absolutely the best move.  The big down side is that it just won’t be there by default (like it has been since the beginning of OS X).  Mac OS X was supposed to be the operating system of choice for Java developers, but I digress.

With all that said, Java is not a totally lost cause on OS X Lion.  While it will not be installed by default, you will be prompted to download the 1.6.0 release from Apple when trying to launch any Java applications.  At present it will install 1.6.0_24, which is the latest release from Oracle.  It seems that applet support is missing though (I would love to be proved wrong).  You may recoil in horror at the thought of applets, but you’d probably be surprised how ofter you encounter them (for legitimate purposes) and never know it.

I’m beyond overjoyed that the OpenJDK project is taking over development on the OS X port, but I am a bit dismayed at the current attitude toward Java in the Apple community.  After all, they have quite a bit of experience with resurrecting obsolete/near-dead programming languages … I’m looking at you Objective-C :)

But hey, maybe I really shouldn’t care.  Nobody uses OS X in the server world; Apple killed Xserver and OS X server may be on the same path.  It’s also not going to be too long before the only people with a need for an OS X computer are iOS application developers.

And as always, I take great comfort in knowing the “cloud” (that makes everyone’s iDevice usable) lives and breathes on linux and java :)

Java SE 7 Developer Preview

It’s probably been 9 months since I’ve played with Java SE 7, and now the Developer Preview window is just about over.

I’ve been on a crazy release schedule since late October, so I haven’t had the time or energy to go play with it.  I’m downloading now though to test out our software.  The GA date is set for mid-summer 2011.

Go get it HERE and try to break it :)

On a related note, it is looking more and more definite that a version 7 release will not be ready for OS X at launch.  We’ve been told as much, but there’s been a bit of wishful thinking on everybody’s part none the less.  It seems a shame, as OS X Lion will not be shipping with Java out of the box (and the version you download from Apple does not include applet support).