Hacking the Beamz

by shotintoeternity

The Beamz (available at thebeamz.com) is a MIDI-controlled, musical instrument called a laser harp.

It uses laser beams as an interface to trigger music samples in WAV, MIDI, and SGT formats.  When you interrupt the laser beams with your hands, you can play any of the pre-recorded music segments.  The Beamz is powered via USB, and a proprietary application and driver control it.

Here's the problem: although the hardware is solid and, at $400, much less expensive than other laser harps, there's no way to modify the sound samples within the application itself.  Unfortunately, the proprietary Beamz application is currently the only software which interfaces with the device.  This tutorial will help you modify the sounds which the application triggers so you can edit the sounds which the device can play.  After editing the files as shown below, you can make the Beamz into a laser MIDI controller for your own samples.

Editing Process

The easiest way to drop in your own sample into your laser harp is by a simple WAV file swap.

To do this, go to the Beamz music information in the default location:

C:\Documents and Settings\All Users\Documents\Beamz\Beamz_Music

First, you need to rename the .WAV files in the directory to a different extension, to back up the original samples.  If you accidentally delete a sound, you can always restore the sounds from the Beamz software that shipped with the device.  I use the .WAX extension, but you can use anything you like.  Then, substitute your own WAV file with the exact same name as the original Beamz file that you renamed.

Make sure the WAV file is recorded at the exact same BPM (beats per minute) as the default BPM on your Beamz track.  Rather than playing the pre-recorded Beamz sample, you will then be able to hear whatever sound you dropped into the Beamz music directory.

As an example, let's take a look at this directory:

C:\Documents and Settings\All Users\Documents\Beamz\Beamz_Music\Get'n Chilly\

The following files comprise the rhythm section of the song Get'n Chilly in the Beamz application:

BREAKDOWN.wav         
DRUMSnBASS.wav        
DRUMS ONLY.wav
INTRO GROOVE.wav
INTRO.wav    
MAIN GROOVE.wav

To change them, I recorded six different drum beats at exactly 97 BPM using some freely available drum machine software called Hammerhead (threechords.com/hammerhead).

After substituting my samples with the Beamz built-in samples, I was able to completely control the rhythm of the song.

On some songs, like Rastafari, these beats are notated in the names of the WAV files.  For instance, Groove A 4.wav is a four measure WAV, whereas Groove D 8.wav is an eight measure WAV.  By swapping these files for your own, you can entirely replace the pre-made samples in the song.

Advanced Editing

The Beamz music was originally composed using Microsoft's DirectMusic Producer software, freely available as a download from Microsoft.

The software uses SGT files, which are very small audio sequences that contain segments of a larger file in addition to standard WAV and MIDI files.

For advanced editing of the sounds - including MIDI triggering, frequency, and pitch - you need to edit the HB files (*.hb) located inside of the Beamz song directories.  The files are coded in XML, and any number of beam attributes can be changed.

Each HB file starts out with an XML tag similar to the one below:

<Program UseBundle="0" Name="Get'n Chilly" Genre="HipHop" GUID="9cc86704-86cf-4b78-a2e9-721819951f27" AudioPath="StandardMusic.aud" VideoStart="0.000000" BPM="4" Beat="4" Tempo="0.000000" TempoRange="0.40000" UseTempo="1" LockPitch="1" Volume="-360" DynamicChannels="0">

This code gives information about the Beamz track (each with its own unique GUID) to the application.

Afterwards, you will see code in this general format:

<Beam ID="256" Name="Bells N Whistles" Description="One Shot" PulseRate="16" PulseTriplet="0" PulseDelay="44" StartRate="0" StartTriplet="0" StepInterval="4" StepMult="1" Mode="Secondary" Poly="10" Trigger="OneShot" Step="0" FreeWheel="0" Slave="0" Master="0" Volume="0" TimeShift="0" NoCutOff="0" GroupCount="-1" GroupID="-2">
   <Regions>
      <Region Name="Default" Title="Bells N Whistles" Comment="One Shot">
         <Segments>
            <Segment File="BellTree hit.wav" Vol="-570" EndTime="1" LoopEnd="1" />
            <Segment File="Ding hit.wav" Vol="-370" EndTime="1" LoopEnd="1" />
            <Segment File="CHIMES.wav" EndTime="1" LoopEnd="1" />
            <Segment File="CYM 5.wav" Vol="-570" EndTime="1" LoopEnd="1" />
         </Segments>
      </Region>
   </Regions>
</Beam>

The description of this Beam as "One Shot" indicates that at any point during the sequencing of the Beamz track, the sound will play once without looping.  This attribute is defined in the Trigger section of the tag.

Other sounds are "Pulsed" sounds, which indicates that a number of notes will be played and looped on that particular Beam.  Each attribute within the tag corresponds to MIDI data, which controls the sound the laser produces.

Data under the <Segments> tag of the HB file controls which WAV files the Beam will trigger.  In this case, the Beam will play one of four WAV files (BellTree hit.wav, Ding hit.wav, etc.).

When swapping your WAV files with the built-in sounds, you can edit the Segment File attribute to point to your own sounds.

If you need some sources for your samples, check out music software like FruityLoops or Reason, along with the open-source sound editor Audacity (audacity.sourceforge.net).

Please e-mail me at shotintoeternity@gmail.com if you have any questions or are interested in collaborating on this project.

Return to $2600 Index