Preparing for Worldcon

August 10th, 2011

One of my hobbies is running live sound and recording such concerts. Over the last four years I’ve built up my sound system into quite a nice system.

I’ve also learned a lot about what is and isn’t compatible amongst systems that should just plug and play. Earlier this year I got a new recording rig, specifically for multitrack recording in a portable studio type configuration. In such a setting I would not have my full sound system (which at the time was a Mackie Onyx 1640 with the Firewire option providing 18 x 2 channels). So I got a system based on the Mackie Onyx Blackbird which provides 8 channels of input including Mackie’s nice preamps, and 8 channels of ADAT. The Firewire interface on the system is a 16 x 18 channel system.

The Firewire implementation is the Dice II system–used in a lot of the high-channel systems on the market–which (I found out after I got it) pretty much requires the Texas Instruments Firewire chipset on the computer. The computer I’d been using for all of my prior recording with the Mackie 1640 would not sync with the Blackbird.

After much research and trying to connect to many systems at the local computer store, I finally bought a laptop from ADK Pro Audio configured and tweaked specifically for use as a DAW (Digital Audio Workstation). I had planned on this being a computer for general laptop use (including software development) and proceeded to load lots of development tools and such as well as the DAW software (Mackie Tracktion 3).

Even with this system I was having problems. I finally reset the configuration as shipped from ADK and found that it worked much better.

One of the critical measures for such a system is the Deferred Procedure Call (DPC) Latency. This can be measured with a tool called DPCLat . With all of the stuff I had loaded the average latencies were in the 700-800 µs with excursions greater than 2000 µs (2 ms). This was causing loss of sync, dropouts, etc.

After resetting it to factory fresh, and installing just the minimal drivers, the average DPC latency is now in the 80-200 µs range.

I’m going to be providing sound and recording for the Filk track at Renovation, the 69th World Science Fiction Convention. For this I’ll be using my new sound system, an Allen & Heath iLive system. This uses yet a different audio transport for recording: Audinate’s Dante system, transporting up to 64 x 64 channels via Gigabit Ethernet. The ADK laptop is working nicely with this system, and I’ve upgraded to using Reaper for recording.

However, the concert for the Filk Guest of Honor, Tricky Pixie will be in a different (larger) room than the one my system will be set up in, and that system is not set up for recording. So I’ll be bringing the Mackie Blackbird (and a Behringer 8×8 ADAT converter) and an analog mic splitter and record the concert with that system.

Just to be certain that the laptop is fully operational for recording from the Blackbird (since I haven’t used it since flattening the system), I’m running a bit of a stress test. The laptop is currently performing a recording test by sending 16 channels of pre-recorded tracks of  via ethernet and simultaneously recording these tracks coming in over firewire.

The signal chain is as follows:

  • Mackie Tracktion playing 16 pre-recorded tracks (recorded at 44.1K/16, transcoded and output at 48K/24) via
  • ASIO driver to Audinate’s Dante Virtual Sound Card via
  • Ethernet to the iLive Mixrack (Mixrack being controlled via WiFi from a Windows tablet running the iLive Editor)
  • Mixrack routes the Dante channels 1-16 to analog outputs 1-16
  • Two 8-channel cable snakes connect the iLive outputs to the Blackbird and Behringer inputs where they are digitized
    • The Behringer system encodes its 8 channels (48K/24) and sends them via ADAT lightpipe to the Blackbird.
  • Blackbird encodes its analog inputs at 48K/24 and sends these and the 8 ADAT inputs via Firewire to
  • ASIO Blackbird firewire driver to
  • Reaper which is recording the 16 channels.

I’ll be running this stress test for the rest of the night, to be sure everything stays in sync and properly playing and recording. In actual operation, I’ll only be doing the recording, so it will be running far less than I’m running right now.

5000 Downloads and an Update

March 23rd, 2010

I’ve been working off and on for a while on an update to SolvPhit. I wanted to better support the different models of Android phones and add trackball and D-Pad support.

 The initial version of the free app was limited in the size of puzzle that it could solve, leaving the paid app for solving larger puzzles. As the installed base grew to over 1500, I became intrigued by the possibility of adding one of the advertizing mechanisms, just to see how they work.

Therefore, I integrated an ad service and adjusted my layouts to handle the smaller space available and removed the puzzle size limitation. Now the distinction between the paid and free apps is whether they have the ads.

I was also approached (as was everyone, I’m sure) by the French company Archos. Their Archos 5 tablet is a large-screen, medium resolution device. Therefore, even though it has the same number of pixels as a Nexus One, it has a physically larger screen. Android therefore scales images differently, putting more information, at lower resolution onto the screen.  For example, a font that is 20 pixels high on a G1 would be 30 pixels high on a Droid or Nexus One, taking the same proportion of the screen (so the characters look nicer on the higher-res screens). But on an Archos 5, it would still be a 20 pixel high font, and would be the same physical size, but takes a smaller portion of the screen.

In my original application, the Android layout mechanisms would have taken care of most of this. However, with the addition of the ad banners, I now have screen elements that are fixed size, and this affected the overall layouts.

Fortunately, targetting the later versions of the Android OS, I was able to include layouts specific to the large screen, and thus have one app that will support every version that I’m aware of–except for the small-screen devices–of which I’m not even sure if any are shipping yet.

As I finished up this release, the free version topped 5000 downloads, and just a couple of days after release, the paid app crossed the 100 downloads mark.

So thank you to all who have downloaded and/or purchased SolvPhit.  Enjoy the updates.

1008 Downloads!

November 5th, 2009

It’s fun to watch the number of downloads creep up. As it’s crossed each of the major milestones I’ve gone and checked the market and it had crossed to the next range. It’s now displaying 1000-5000 downloads, so I figure it will stay there for quite some time.

I am working on an update, and I suspect that will boost the rate again as it goes on the “Just In” list again. It’s not very clear exactly how the apps are ranked there, but it’s interesting to see the behavior.

Anyway, just wanted to celebrate the milestone!

Virtualization, Part Two

October 28th, 2009

I’d mentioned last post that we are trying out the Team Foundation Server (TFS) 2010 Beta. More specifically, the QA team is examining some of the new features available for managing manual test cases and some of the other tools related to test and bug management. Well…Microsoft just made the TFS 2010 Beta 2 available, and we are eager to see what progress has been made in these areas.

While there will be support for converting from TFS 2008 to 2010, and even from Beta 2 to RTM, there is no official support (and little unofficial either) for migrating from Beta 1 to Beta 2.  They specifically wanted people to start evaluating it starting with Beta 1…but one doesn’t want to have to start over with the evaluation process when jumping to the next beta!

I’d cloned the VM when I copied everything from my old machine to the new one. There had been a little glitch in that because the new machine had put my domain profile data at c:\Users\<login>.<domain>\ instead of the c:\Users\<login>\ that the old machine had used. The Transfer Wizard did an excellent job of separating the data from program parts and migrating the data to the new machine and had moved all of the profile data into the new directory structure. However, the .vmcx file that is the pointer to the .vmc machine description file and .vhd Virtual Hard Drives associated with a Virtual PC VM have full-path links to these files. Thus, the links pointed to paths and files that didn’t exist.  The Very Helpful™ vm manager decided that I didn’t need that file any more since it obviously was erroneous.

Fortunately, I still had the old machine available, pulled the file back across, edited the paths, and had a fully working VM, just the same as I had on the old machine.

Let me recap:

  1. TFS 2010 Beta 1 won’t upgrade to Beta 2
  2. It’s possible, but unsupported, that I can do such an upgrade and preserve the data–but maybe not.
  3. I currently have two identical VMs with TFS Beta 1

So how about I rename the new VM to make it distinct from the old VM and have them both running? I can do a clean reinstall of Beta 2, and have the Beta 1 server running too.  It should be possible to do some bulk transfers between them, possibly using Excel as the go-between.

So I go into VM-2 and rename it (did I mention the VMs are members of the Domain?). Now I fire up VM-1 and log in…oh wait…I can’t log in with my Domain Admin accpimt. “The security database on the server does not have a computer account for this workstation trust relationship.” Sure enough, when VM-2 changed its name, it cleaned the original name out of the Active Directory. What was that administrator password? After flailing a bit, I dredged the password out of my memory and was able to change VM-1 to a Workgroup computer and then rejoin it to the Domain under its original name. Being of the original name is very important to TFS.

Now check that all of the network bridging is correct.  Try pinging VM-1 from the new workstation…no connectivity??? Doublecheck that the VM networking is set to bridged, Check. Try accessing TFS from old computer. That works. Try from new computer, no joy. After an hour of Googling, looking at firewalls, etc., I realize a ramification of point 3 above: The network setups are identical.  I’d already changed VM-2 to use DHCP instead of the static IP VM-1 was using, but I didn’t think to check on the MAC addresses. MAC addresses are normally set by the manufacturer of the hardware NIC (Network Interface Card) and are guaranteed to be unique. If they are not unique, LAN physical addressing gets messed up. Emulated NICs have their MAC addresses defined in the virtual machine files, and these files were identical. Running “ipconfig /all” on the two VMs confirmed that they each had the same MAC addresses.

I found some comments online about re-registering the VM causing it to reassign the MAC address, but this seemed to refer to ealier versions of Virtual PC. I also found a powershell script to do it, but that failed with the error that this VM was already defined. However, the VMC file that holds the machine configuration is an XML file and sure enough, there was the offending MAC address…but what to change it to? I really didn’t know of a good way of determining a good new value, so I tried just deleting it. Sure enough, when I started VM-2, it created a new MAC address and proper connectivity.  Rebooting VM-1 also restored the network.

Windows 7 and Virtual Machines

October 28th, 2009

My work involves creating software for cell phones that integrates tightly with the OEM applications. This sometimes requires us to use different operating systems and various virtual machines for emulators and development environments.

I also use VMs for trying out new things. For example I’m currently running a VM with Windows Server 2008 hosting the Beta of Team Foundation Server 2010 so that we can try out various features of the new version. I also have a Sun VirtualBox VM running Ubuntu for building the Android Open Source Project (AOSP). The Palm webOS SDK uses a Sun VirtualBox VM to run its emulator. Then I’ll also be running emulators for Windows Mobile and Android–but those are not using quite the same kind of VM technology. They are more software emulators–actually running a virtualization of the phone’s hardware rather than trying to run a virtualized PC.

I’ve been running Windows 7 since January, first Beta1, then RC. I finally upgraded to the release version–and did so by doing a clean install on a new box. It is a nice upgrade, from an AMD Athlon 64 X2 to a Core 2 Quad. The first real hitch I ran into was trying to run two VM products at once. I’d been doing it all along on the earlier versions of Windows 7, so I didn’t understand why it wasn’t working.

To make a long story somewhat shorter, it appears that the primary problem was the difference between AMD and Intel hardware virtualization technology. It seems that Sun’s VirtualBox is better able to co-exist in the AMD realm. Note that I had VirtualBox set to not use hardware virtualization, but if the Windows 7 Virtual PC was running, I could not start the VirtualBox emulation.

Granted that VirtualBox seems to be behaving badly here, Windows 7 actually behaved even worse. Sun at least gave an error message and shut down. Trying to start the Win7 VPC while having VirtualBox running caused an immediate Blue Screen of Death (and a kitten died). Not wanting to kill any more kittens, I started looking for workarounds.

Windows VPC and Sun’s VirtualBox have the virtues of being free. They do not, however, have the crown of the king of virtualization products. That belongs to VMWare–which is not free. However, my work is certainly willing to buy us the tools we need…so I started working to see if this would do what I needed.

Let me just say that converting the virtual hard disks from VirtualBox (VDI) to VMWare (VMDK) is not as easy or straightforward as one would like. It turns out that you have to use the procedure shown here to first convert the disk to the fully-expanded raw format, and then convert it to the VMDK format that VMware needs.

I now have the AOSP building on that virtual box (and I increased it to a dual-core VM). I’m also running the virtual server for the TFS beta. I still need to verify that I can convert and run the webOS emulator in VMWare, but I’m pretty confident in that.

Xari Genesis

October 23rd, 2009

It was late ‘82 or early ‘83. I’d completed Realsports Soccer for the Atari 5200 (and 800) in Spring/Summer of ‘82 and helped Leo Salinas ship his Countermeasure game later that summer. I’d flown to London to talk with Peter Yates, the director of Krull–a SciFi Horror movie–about doing a game based on the movie. I got the trip, but Dave Staugas did the game on the 2600.

I started working on an ET game for the 5200–completely different than Howard Warshaw’s  2600 ET game. But after the disappointing sales (disappointing only because they didn’t sell as many as produced–by earlier standards it sold rather well) and poor reviews, they pulled the plug on any other ET games.

So it was that a group of us converged on a condo complex near Moss Landing¹ on the shore of Monterey Bay to come up with recommendations for the next Atari video game console. There were a lot of really great ideas flying around there, but the hardware never materialized. During this retreat, however, I had a vision of a two-player reverse breakout type of game, with balls flying everywhere…and I knew exactly how I was going to do it on the console. I suggested it to my boss and got the go-ahead to develop the sprite engine it would need.

Thus began Xari Arena. Although the final game had at most 16 fireballs flying around the screen at a time, early tests had more than 60 on screen at a time, using the four hardware “players” available for sprite use on the system.

Xari Arena broke ground on a number of fronts: graphics, gameplay, music. It was an original game on a system where most of the games were conversions of well known games. Unfortunately, this also led to it not being released. Even though it focus tested very well, it was playtested alongside a conversion of the very popular arcade game Robotron 2084 and another conversion that I don’t recall at the moment. Even so it fell just a few percent short of Marketing’s requirements for manufacturing the game.

That’s it for now, but I’ll write more about it in future posts.

¹I’m not sure that’s the condo complex, but it seems to be in the right place and looks about right.

Update and a Free version

October 16th, 2009

I made my first update to SolvPhit! Fixed a crash that I found while working on the Free version.

The Free version is limited to puzzles up to 25 blocks. And I found out how to link directly to the Android Marketplace from within my app. That way I have a menu item in the Free app that points directly to the paid app.  And, both of them have a link that shows all of my apps… right now, that’s the two versions of SolvPhit…but later it may be more.

Speaking of Android

October 13th, 2009

This Saturday evening I released my first Android Application to the Android Marketplace: SolvPhit.

I’d downloaded a game, Torect, from the market and had some fun with it. It’s one where you put pieces of various blocky shapes together to form a rectangle. These have become known as Phit-type puzzles due to the online game of that name. There is another, Phit Droid, that is of a similar nature. I had spent quite a while one of the puzzles and had not solved it. And you can’t just skip it and come back, since you have to solve the one to move forward. So I wrote a solver on the PC.

Then I thought, “This would be a fun app to write for the Android.” It’s a nice little project that had a bit of meat in it as well since the solver must run in a background thread to avoid the dreaded “Force Close” dialog, and yet I wanted to continuously update the display to show the progress on finding a solution–and the Android only lets the main thread interact with the widgets and views. Add to that needing to manually handle the reconfiguration of the display when rotating from portrait to landscape while the solver is running. Yes, as is common with little software toys, there’s a lot going on under the covers for what seems like a simple little app.

It’s also amusing to watch the analytics about how many downloads there have been and how many are still active. And there’s a significant delay in these numbers versus the Google order inbox where I see the purchases (and alas, the cancellations).

Welcome to Xari Tech!

October 13th, 2009

This is my space to talk about tech. Be that software, hardware, live sound reinforcement and recording, things Android and anything else that comes to mind.