Vibeboard

January 15, 2023 ยท View on GitHub

Overview

Vibeboard is a JavaScript-based, customizable soundboard application which interfaces with Buttplug.io to activate Bluetooth- enabled vibrators in conjunction with sounds. Intended to be use in conjunction with headphones, it could be used as a conditioning tool or in remote-control fantasies.

Installation

Regardless of whether you intend to use Vibeboard on a computer or a mobile device, download and install Intiface Central on the device on which you intend to access Vibeboard.

For Desktop

Download Vibeboard from GitHub and open vibeboard.html in a Chrome-based browser such as Google Chrome or [Microsoft Edge] (https://microsoft.com/edge/download).

For Mobile

To use Vibeboard on a mobile device, you will need both a mobile device and a Windows, Linux or Mac computer on the same WiFi network. Vibeboard could conceivably be deployed on an Internet-accessible server, but the necessary security configuration to do so is beyond the scope of this README at this time. To access Vibeboard on a mobile device, first download Vibeboard to your computer. You will then need a web server which can serve vibeboard.html up for your mobile device's browser. The easiest way to do this is to use Python's http.server module. Linux and Mac computers should have Python installed. On a Windows device, you can either download it from Python.org, or via the Microsoft App store. Once Python is installed, open your preferred command shell, cd into the Vibeboard directory, and start the server by executing python3 -m http.server. Find your computer's IP address (ipconfig on Windows, ip addr on Linux or ipconfig ifaddr en1 on Mac). On your mobile device, open Chrome, and go to http://<your IP address>:8000/vibeboard.html. You should now see Vibeboard.

Usage

Start Intiface Central on the device on which you will be using vibeboard. Be sure to press the play button at the top of the window to actually start the Buttplug server. Note the server address, likely null:12345. Power on whatever toy or toys you'd like to use with Vibeboard. Access vibeboard.html as described in the Installation section above. In Vibeboard, set the Intiface address to the address shown in Intiface Central. If the address is null:12345, use ws://127.0.0.1:12345, which is the default IP.

Press Connect and Scan. After a moment, Vibeboard will populate with the devices identified by Intiface. Press the Stop Scan button once all devices have been identified. Note: Vibeboard currently will not pick up devices that are already associated with Intiface Central when Vibeboard connects. If you need to disconnect Vibeboard from Intiface, you will need to reload the Vibeboard page, then stop and start the Buttplug server by pressing the big blue button at the top of the Intiface window. You do not need to power-cycle your toys, they will not reassociate with Intiface until you start a scan from Vibeboard. Handling this more gracefully is on my to-do list.

The remainder of the controls are fairly self explanatory. You can select a background sound, set its volume, set it to play once or loop; you can set the vibration intensity for a vibrator, stop and start it. The main functionality is in the clips section, where you can for each configured clip, set the clip's volumne, select which vibrator you want to activate when that clip is played, and set the intensity for the vibrator. The vibrator will activate for one second when the clip finishes playing.

Configuration

Vibeboard ships with three innocuous sound clips, but is intended to be used with clips you choose or create yourself. To make Vibeboard use your clips, place your clips into the vibeboard/sounds/clips/ directory, then find the following chunk of code in vibeboard.html

	var clipSounds = [["./sounds/clips/chirp.mp3","Chirp", "clip:0"],
	["./sounds/clips/drum.mp3", "Drum", "clip:1"],
	["./sounds/clips/hawk.mp3", "Hawk", "clip:2"]];

Using the existing code as a template replace the existing sounds. Each entry in the sounds array consists of a three parts: the path to the file, the label for the clip which will be displayed in Vibeboard, an then a tag, consisting of "clip:N", where N is the number of the clip in the list of clips. Vibeboard will read the array when it executes, and automatically populate the page with the clips and their controls.

Similarly, you can replace the background sounds, by placing the sounds into the vibeboard/sounds/background/ directory, and editing the following bit of code:

var backgroundSounds = [["./sounds/background/white-noise.mp3", "White Noise"],
	["./sounds/background/pink-noise.mp3", "Pink Noise"],
	["./sounds/background/binaural-204Hz.mp3", "Binaural 204Hz"],
	["./sounds/background/binaural-154Hz.mp3", "Binaural 154Hz"]];

The background sound entries consist of only two parts, the file path, and the display name. Background sounds should either be long, or loopable.

To-Do

  • Write a configuration tool capable of importing sounds and filling out the backgroundSounds and clipSounds arrays
  • Add the ability to create vibration patterns which can be executed on demand
  • Add a floating intensity control usable for more interactive direct use of the vibrators
  • Add the ability to define for how long a vibrator activates after a given clip is played
  • Improve the UI