Korg nanoKONTROL2 won’t update?

September 2, 2011 07:46 by docbliny 

Having trouble getting the Korg nanoKONTROL2 to update to the latest firmware? The Kontrol Editor application not finding your controller? Try rolling back to the default Windows driver. I had to uncheck the “Use Korg driver only”" (or similar) in the configuration dialog, too.

I kept getting an error message with horrible grammar. It was something like “No midi port is exist”.


Don’t install PreSonus FaderPort 1.3.5 Firmware

August 13, 2011 16:30 by docbliny 

Installing the current driver for the PreSonus FaderPort will stop the motorized fader from working. There were several comments on this in the forums. I had to download the 1.2 installation package and downgrade the firmware that comes with that (version 1.3.3 of the FaderPort Firmware Updater).

As a side note, to get the device working with 64-bit Cubase 6, you’ll probably want the latest driver package. To install, make sure Cubase isn’t running and copy the FaderPort.dll from C:\Program Files (x86)\PreSonus\FaderPort\FaderPort Dll\Cubase\x64 to C:\Program Files\Steinberg\Cubase 6\Components adjusting to your local drive mappings.


Is your Ajax application really slow on IE7? Here’s a tip

July 11, 2011 11:56 by docbliny 

Is your Ajax application running really slowly for users on IE7 (poor folks)? Have you narrowed down the cause to updating the history with location.hash? Is dynaTrace showing you that it’s actually the native DOM call hanging for more than 5 seconds?

If so, disable the Internet Explorer 7 Developer Toolbar and associated Browser Helper Object (BHO).


R.I.P. Shuttle Program and Sony MiniDisc

July 8, 2011 08:26 by docbliny 

You’ll both live on in my memories as important indicators of “living in the future”.

Good luck, and godspeed, Atlantis!

MiniDisc, I’ll keep playing you while you still work.


Samsung Galaxy Tab 10.1 and Android #FAIL update

July 8, 2011 08:23 by docbliny 

In a previous post, I gave my impressions on Android on tablets based on my experience with the pre-release Samsung Galaxy Tab 10.1 with Android 3.0. The final version has come out, along with the all-important Android 3.1 update. So how do things look now?

  • The time zone issue has been resolved. I can now set the time and date without formatting the device.
  • The word “phone” has been cleaned out, and I see “tablet” as expected.
  • The worst Chrome rendering issues have been resolved.

Unfortunately, the worst problem, jumpy and unresponsive scrolling, still exists. This is of course a comparison against iOS, but the different is substantial. On iOS you don’t even notice you’re scrolling. On the Galaxy Tab, it’s like turning pages in a book that are slightly stuck together: irritating.


Home Automation History Month

May 22, 2011 16:06 by docbliny 

It’s May which equates to Home Automation month. OK, I just made that up, but it is somewhat fitting since Google announced Android@Home this month, and the last version of VoiceShell for the Commodore Amiga I published is dated May 2nd, 1996.

VoiceShell

VoiceShell was my speech recognition application that could be trained to understand up to 60 different phrases and run a different command for each. With the magic of ARexx, a scripting language that allowed communication between applications, I was able to send commands to other applications. It also allowed me to switch vocabularies to both extend the available number of commands, and to maximize the recognition accuracy (today I can simply construct a hierarchy of commands using SRGS XML files).

Here’s the description from the Hyperlinked documentation:

WHAT DOES IT DO?

This program is a 'replacement' for VCLI. It doesn't have the fancy graphics etc. but it seems to eat less CPU time and should be faster overall. It also has some extra options.

"So what is VCLI?" I hear you ask. VCLI is a program by Richard Horne that uses his voice.library to recognize speech. With VCLI and VoiceShell you can start programs by saying the program's name. You can teach VoiceShell 60 (VCLI allows 48) different words. You also have the possibility to load a new set of words, thus giving limitless possibilities. The more words you teach, the less accurate the result will be. Thus having more than one project might be a good idea. All you have to do to get started is to set the correct preferences, teach some words, set the commands and away you go!

Of course, like everything I wrote back then, this was written using assembly language for the Motorola 68000 series CPU. The application had an installation utility, hyperlinked documentation, support for startup arguments for both Command Line Interface (CLI) and Workbench icons, ARexx scripting interface, and hotkey support. I know it got published in at least one Amiga magazine on their floppy disk (I believe in the U.K., but I’d need to dig up the copy they sent me) and was available on the Internet as early as 1993. I had at least 26 releases with incremental feature additions and bug fixes.

I was contacted by Alex C. last year to get a copy of the source code and there is a thread on AmigaWorld.net discussing adapting it for the current crop of emulators and Amiga OS versions. It’s amazing how code will live on!

CompleteControl

Of course, VoiceShell was only part of the picture. CompleteControl was the software part of the automation suite that controlled devices via relays. It comprised of a set of ARexx scripts, sounds, images, and an application that would run on a MS-DOS PC. These applications, along with an Input/Output board and a custom power strip, would allow me to turn on and off devices such as lamps. I even rigged a relay into my bedroom light switch, so that I could turn it on and off.

It was a total hackfest with a lot of moving pieces: Custom PCBs, two computers (an Amiga and a PC), sound sampler dongle, a custom power strip, custom DB9 cables, an I/O card, voice recognition, custom sound samples for responses, and hardware control software. But hey, it actually worked!

Present Day

There have been many iterations on the same basic premise over the years. I’ve cobbled together various X10 and ZWave solutions with PCs using custom and off-the-shelf software over the years. The current project is named “Remoat” and it’s in a prototype stage controlling lights in the whole house along with supporting media playback. It’s a labor of love that has had to take the backseat over the past several years, but the goal is to evolve it further and make available online.

Screenshots

Screenshot of the VoiceShell Application

Screenshot of the VoiceShell application

VoiceShell Hyperlinked Documentation

VoiceShell hyperlinked documentation

PCB Board Image Opened In DeluxePaint

PCB Board Image Opened In DeluxePaint


Where Google and Android #fail

May 15, 2011 11:39 by docbliny 

Google handed out a stack of Samsung Galaxy Tab 10.1 tablets at Google I/O 2011, and just like last year, I’m not impressed with Android. I got my first iPhone from a contest, and I’ve never been a fan of iTunes, but iOS is so much more user-friendly and refined. The experience has improved from my tests with last year’s Evo giveaway (wow, what a dud), but still not there. Here are some of the highlights:

  • If you set “Network preferred” (or similar) to allow the device to set the time/time zone automatically during the initial setup, YOU CANNOT change the time zone manually without a factory reset!?!
  • The device has a dual core processor, yet scrolling is less-than-refined and touch input seems slow, or at least not as responsive as iOS.
  • Tablet-specific: The OS states “phone” in many places. For example, when you hold the power button, you get a “Phone options” dialog. I know I saw similar wording elsewhere, too.
  • The device has two cameras, microphones, and such, and yet there is no Google Voice application available!
  • Chrome has horrendous rendering issues when you scroll longer pages. I need to zoom in/out to get it to render the rest of the page.

Yes, yes. The device isn’t even on sale yet, but these issues seem to have more to do with the Android OS than the device.

The best feature so far has been the cloud/Google account integration for backing up settings (all the apps I’d installed got automatically reinstalled after the factory reset to get the damn clock to show the right time), syncing with Chrome and other Google services.


System.Speech.SpeechRecognizer works, SpeechRecognitionEngine doesn’t

April 24, 2011 08:53 by docbliny 

I believe I've found an issue with the managed speech recognition libraries. The short problem description is that I am unable to use SRGS/.grxml files that contain "ruleref" elements pointing to other files with System.Speech.Recognition.SpeechRecognitionEngine (InProc). They load fine when using SpeechRecognizer.

After debugging (and finally making a custom build of System.Speech.dll), I've narrowed down on the issue. When you use an InProc recognizer, RecognizerBase.cs sets a custom grammar loader (ISpGrammarResourceLoader). Unfortunately, the RecognizerBase.LoadResource method that is used will receive a null value for the last argument ("pbstrRedirectUrl"), and cause a null exception when it tries to do a split on the null string. This also explains why SpeechRecognizer does not have any issues with the same files.

The same issue happens with both 3.5 and 4.0 versions of the Framework.

Problem

I can’t get a speech recognition project I started in 2008 to correctly load the grammar definition files (.grxml / SRGS) in my current environment (Windows 7 64-bit) with SpeechRecognitionEngine.

STATUS

Well, turns out that the shared SpeechRecognizer will correctly load the exact same GRXML files with external ruleref definitions. After hunting through the .NET source code, the culprit might be in the RecognizerBase.cs method named LoadSapiGrammarFromCfg(). It sets a custom grammar loader for SAPI only when using an InProc recognizer (which SpeechRecognitionEngine is). The comments even state “The rulerefs will be resolved locally.”

So, I have the following options:

  • Continue debugging .NET to see if the behavior has changed, and I’m simply missing some element in the XML file. This doesn’t seem likely, as ProcMonitor clearly states that only the first file even gets a open/read attempt. I’ve tried setting the base URI, used absolute paths, did a quick attempt at loading from a URL. The problem is made worse by the fact that I can’t step through the .NET code in either Visual Studio 2008 or 2010. Fixing that will take its own time… I could try using the .NET Framework code (fingers crossed all the required files are available) directly.
  • Switch to using SpeechRecognizer. I don’t want this, because I’d end up with a broader dictionary which will reduce accuracy.
  • Merge my GRXML files. Yuck. There’s a reason for ruleref support in the files. In addition, the app is meant to be extensible, and having to merge files just makes things harder for the developer and end users.
  • Go down the path of using SpeechLib/SAPI, but looking at the amount of code in the Framework, this seems totally redundant.

Error Info

  • SapiErrorInvalidImport A rule reference to an imported grammar cannot be resolved.
  • SAPIErrorCodes.SPERR_INVALID_IMPORT
  • 0x80045024
  • -2147200988

Why does System.Speech.Internal.SrgsCompiler.CompileStream() default to “es-us” CultureInfo?

April 23, 2011 09:16 by docbliny 

UPDATE: Nevermind, this is a patch for the "es-us" culture which has the ID 0x540A.

I been trying to track down why I can’t get GRXML files that have ruleref elements pointing to external files working with Windows 7 (64-bit), and ran into the following line of code:

culture = (backend.LangId == 0x540a) ? new CultureInfo("es-us") : new CultureInfo(backend.LangId);

Note the "es-us" locale. Weird. Now back to banging my head against the original problem.


Setting up GWT Development - Quick Start

March 23, 2011 20:21 by docbliny 

The following assumes you’re starting from scratch and need to install the basic software to get going.

  1. Install Eclipse.
    1. Download the appropriate version from http://www.eclipse.org/downloads/ . I usually get the Java EE version.
    2. Unzipping this will take a moment. I highly recommend using 7-Zip and making sure you don’t unzip over/on a network drive.
    3. Copy the extracted files to an appropriate place. I drop mine in the Program Files folder.
    4. Create a desktop icon / shortcut for eclipse.exe.
  2. Download and install Java Development Kit JDK.
    1. Download the appropriate version from http://www.oracle.com/technetwork/java/javase/downloads/index.html
    2. This takes even longer.
  3. Start Eclipse and set up the Google Eclipse plug-in. The first time you start Eclipse, it’ll prompt you for a location for the workspace.
    1. Click the Help-menu, and then click Install New Software….
    2. Enter the appropriate plug-in installation path from http://code.google.com/eclipse/docs/download.html, and then click Add….
    3. Enter Google Plug-in or similar into the Name field, and then click OK.
    4. Check Plugin and SDKs.
    5. Follow the instructions to finish the wizard.
    6. Restart Eclipse when prompted.