Rez TranceVibrator

=Description=

History

 * Game Girl Advance Article
 * Rez
 * Space Channel 5
 * TranceVibe not sexual

=Hardware= Judging only by the board pictures available below, the Rez TranceVibe's design seems quite complex for the simple task that it performs. A possible explanation is that, when Rez was released in 2001, highly-integrated microcontrollers incorporating USB interface, ADC/DACs and PWM circuitry were not as widely available as they are today, forcing a cumbersome discrete analog approach. The detail is not enough to get a full picture of how the circuitry operates, but some educated guesses can be made:

The 2x8 resistor array at top is most likely a crude 8-bit DAC.

IC4: JRC7072D (cross: NJU7072D) Dual opamp. One of them is probably buffering the "DAC" output. Can't really see from the pictures, but it's possible the other one is driving the nearby transistor as a beefed-up current source. Linear, wtf? (It's probably not driving the motor directly, judging by the big boys near the bottom)

IC3: Unknown TI part (can't read the partnumber in the photo)

IC1: some big microcontroller with entirely too many pins.

Large inductor marked "100". Maybe to filter noise / voltage spikes as the voltage into the motor (also an inductor) is changed.

A1, A2, A3 (not populated): Look like footprints for LEDs, possibly one of each primary color (see comments below about redundant data fields in the USB communications). Betcha a probe on the processor side of some of the non-stuffed resistors nearby will show them flipping up and down with the music.

DIY Projects

 * The Drmn' Trance Vibe project - Building a full after market TranceVibe from scratch
 * Modded Trance Vibe - Runs any vibrator. Project description page now defunct, blog post is only record of project

=Software=

Coding Specifics
The TranceVibrator has a USB Vendor ID (VID) of 0x0B49 and Product ID (PID) of 0x064F. This pair of values is used by the game, Rez, to identify the device. Other unique descriptors, e.g. vendor string, are ignored and may contain arbitrary data. The USB communication protocol of the Rez TranceVibrator is very simple: commands are sent as an 8-byte Control Transfer on Endpoint 0; Request type = Vendor and Recipient = Interface. The only known command is to set the vibration intensity, a 1-byte unsigned value. The specific format of this command is:

bRequest: 0x00 wValue: Both bytes set to (unsigned char) vibration level wIndex: Low byte is lower nibble of vibration level; high byte 0x03 always. Count: 0x00 (no data phase)

Ex: setting vibration level to 0x42 bRequest: 0x00 wValue: 0x4242 wIndex: 0x0302 Count: 0x0000

This information is obtained by capturing USB data from Rez during play. Aside from the first byte of wValue, it's quite likely that these fields are ignored by the TranceVibrator and can contain arbitrary values.


 * Archive.org link to original japanese site with USB dumps
 * USB Description Header Dump

Drivers

 * libtrancevibe - Cross Platform, Open Source Trance Vibrator Drivers and Projects
 * Windows Driver and Test Program
 * Linux/MacOSX Driver - Uses LibUSB
 * Windows GUI test program - Uses LibUSB-Win32

Interface Programs

 * AppleScriptTV - AppleScript Interface for the TranceVibrator - OSX
 * BeepSex - TranceVibrator Patch for Max/MSP - Requires (commercial) Max/MSP
 * fingervibed - Specialized version of the fingerd command to control a TranceVibrator - Requires *nix/OSX/LibUSB
 * TranceSharp - TranceVibrator Controller - Requires Windows/.Net >= 2.0
 * Wiibrator - Control Interface for the TranceVibrator using the Nintendo Wii Controller - Requires Python/Linux/OSX/LibUSB
 * rezTunes - an iTunes plugin by curious that runs a Rez Trance Vibrator (binaries for OSX/Intel)

=Related Links=


 * Rez Wikipedia Article
 * EBay Search for Rez Vibrator
 * TranceVibe@Everything2
 * TranceVibe Review at TeamFremont.com