Rez TranceVibrator

From Opendildonics.org

Jump to: navigation, search

Contents

Description

Hardware Description

History

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.

Pictures

Schematic

DIY Projects

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.

Drivers

Interface Programs

  • AppleScriptTV - AppleScript Interface for the TranceVibrator - OSX
  • BeepSex - TranceVibrator Patch for Max/MSP - Requires (commercial) Max/MSP [1]
  • 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

Personal tools