Automating Sample-loading for the Roland SP-404SX


I own a Roland SP-404SX Wave Sampler. It stores audio clips onto an SD card. There are two ways to assign new clips (“samples”) to the device’s buttons (“pads”):

  1. Using the Record button on the device to record from the line-in ports or the built-in microphone.
  2. Loading WAV files from a computer onto an SD card with Roland’s Windows-based Wave Converter utility.

Since I run Linux, I first tried BankRobber, an Adobe Air clone of Wave Converter which purportedly writes to the SD card using Roland’s proprietary file format. This failed for a reason I can’t recall.

Later, I discovered that Wave Converter runs just fine with Wine if you do two things:

  1. Map a drive letter to your mounted SD card. E.g. “D:”->”/media/tyler/SP-404SX”
  2. Run sync(1) before removing the SD card from your computer.

Recently I’ve been working on some projects that necessitate batch assignment of handfuls of WAVs from my laptop. Unfortunately, the Wave Converter utility is “manual” – for each sample you have to…

  1. Click the pad on the GUI.
  2. Click “Import”.
  3. Browse to the WAV.
  4. Click “Open”.

This becomes tedious and error-prone when dealing with a full bank of 12 pads.

I decided to automate the process.

xdotool and friends failed to handle the nuances of Wine so I decided to take the opportunity to learn Sikuli - a clever GUI automation tool that marries OpenCV with a WYSIWYG script editor.

The Sikuli script I wrote takes WAV filenames as commandline arguments and assigns each to subsequent pads.

One challenge I encountered was the “browse for WAV” file-finder dialog – it begins in the last-used directory and clicking arbitrary filenames with Sikuli seemed difficult. Luckily, the last-used directory and filename are stored in the Windows registry. So, I pre-populate these values with reg.exe, open the dialog, and simply click “Open”.

Here’s the script for previewing and the script with all the graphics it depends on.

Previous Articles

Priorities: Bump in the Trunk


Stepper-drive Plastruder Demo


Backpacking Gear Unboxing Photos


Miami Road Trip 2009


Storing file metadata with fnmeta.py


libhasp: Repurposing a copy-protection dongle for general-purpose data storage


Adding a dimension to your photos


Visiting Boston


Creds101 v0.1 Release


Welcome to my blog

Feel free to look around. You might also want to visit...