Over-engineering Electroplay
I bought my first EMS unit at Mr. S in the leather district. It's a box they don't seem to carry anymore. One of these. I'm not one to wax poetic about my kinks, but it was a big day. After wandering around the kink scene for awhile, this was the first specific fetish I could identify with directly. There were other things I was in to, but they were (and are) difficult to describe, and too abstract to relate to. This was different. It was specific. Dramatic. I could point to photo shoots and say "I'm in to that."
I only made it out to a meet-up once. It was in a church conference room (go figure), and I believe I was the only person there under fifty. They were all men, and the meeting was mostly about the equipment. I don't recall the slightest bit of sexual energy to the proceedings. It was guys showing off equipment.
In a way I get it. The technical details of electro-play are both important to its practice and also somewhat removed from the drama of that practice. There's nothing particularly sexy about a lecture on the proper way to put on a condom, and were you to delve into the merits of different polymers and their wear characteristics, you'd probably even forget you were going to get laid in the first place. Estim just has more of this sort of thing. It naturally attracts a very technical sort of kinkster.
So let's get technical.
Building My Own Electro-play Box
Even a not-particularly-kinky nerd, once exposed to the idea of estim toys, will probably catch themselves thinking of building their own unit. I've seen a few plans online, ironically mostly by well-meaning university students looking to lower the price of these important medical devices which can be so crucial to pain relief1. By all means, more power to them, and I hope they won't mind my borrowing their schematics.
But, I'm not quite young enough to just go building a dilapidated pile of circuits that vaguely emulate the function of a commercial product purely "for the experience." If I intend to do this, I intend to do it well, and I will have specific goals for the project. And those goals are:
- I want a wider variety of control tools. Momentary buttons for sending pulses, hand-held potentiometers, possibly even a dead-man switch for easy safe-wording. I'd like these on the end of a wire, so I can be with the sub during play and not have to reach back to the box.
- On a related note, it'd be nice to have a sort of GFI feature, so if electrodes come loose during play, they turn off.
- I'd like to be able to play with waveforms themselves. Different medical devices use different current waveforms, and I'd like to be able to explore the entire range, possibly forge new territory.
- I'd like to be able to modulate both the waveforms themselves and the amplitudes in real time in sophisticated ways.
- I want a touch-screen computer-controlled interface from which I can control all of this.
- While we're being technical, let's collect some stats! "Wow, your little pussy absorbed 3,1722 mAh of electricity during our thirty-minute scene! Such a good girl!" (okay, maybe I'm finding the sexual energy in the technical stuff after all).
Safety
Medical research on what the human body can tolerate in terms of electricity tends to be biased towards dangerous accidents rather than us kids having fun with the tingly stuff. The best chart I could find previously on what levels of electricity might cause injury was specifically around shocks that entered the left hand and left through the left foot. No sane electro-player who so much as read the manual that came with their first box would ever wire someone up like that.
I have been able to find an IEC standard on medical electro-therapy devices, so I should have some good numbers on what sort of electricity won't kill you. Wikipedia nicely summarizes the numbers in its article on electro play. A day with an oscilloscope should be enough to verify we're doing the right thing. One surprising bit from Wikipedia's summary is that waveforms are expected to have equal and opposite positive and negative pulses over time to avoid "electrolytic effects." This isn't well-defined on Wikipedia, but I'll make a note to avoid the problem anyway, and purchase a copy of the actual paper.
The biggest unknown safety question is how much can we afford to rely on software. If the circuit can drive dangerous loads, but our software won't let the user tell it to do so, how acceptable is that risk? To some extent the answer to this question might simply be RACK, and making sure my test partners know about what I've built before we test it. That said, as we get into the details of the hardware, I'll evaluate further what we can physically limit in the name of safety.
The Bits and Pieces
Most custom electro-play boxes seem to be based around speakers or some other audio output device. You amplify the waveform, put on a sound file with the appropriate wave shape and you're all set. Here's our helpful students with the fiddly bits. Thanks!
So now we just need a small computer that can generate sound out of a 1/8" jack. Why not a Raspberry Pi? Specifically a Pi 4, and more specifically the one sitting on my couch, blinking away right now. I have some professional experience with NXP's i.MX series, and if I want to get fancier in version two3, that will be where I go, but for now, I want something ultra-familiar with a lot of public documentation. I'm a software person primarily, so picking the easiest possible hardware platform seems like the best way to get started. Let's keep this a software problem for as long as possible.
I went with this display. Seven inches is about the size I'm looking for. I would have preferred something with capacitative touch, but I didn't want the gigantic bezel on the standard Raspberry Pi display. DSI would also have been nice for compactness though. And, oh look! My Adafruit search turns up another display with a higher resolution for the same price now! I feel good about my purchase!
The obvious way forward would be to build a sound-producing GUI to run on Raspbian, but no! As an instinctive stripper-downer with more than ten years in OS development, it is my duty to have a purpose-built operating system for my over-engineered sex toy! So we'll be using Yocto. I've already managed to boot the Pi on a custom image, based on Poky, with the Yocto project's Raspberry Pi layer, and the somewhat new Rust layer.
Which gives away the next bit: I'll be writing in Rust. I may be a fanboy but there's just no other language I'd rather write in right now. I've already played with doing some custom audio wave output with cpal, and for the GUI, we'll probably go with Rust's GTK support. There are Rustier GUI options, and there are sure as hell lighter options, but it's got the best feature set, and the proximity to Cairo is going to be helpful when we want to draw graphs (and oh, dear reader, we will draw graphs).
Meeting our Requirements
In terms of buttons, there's already a ton of stuff out there that meets the physical requirements. All of it seems to be generic USB HIDs or keyboards, so that's the target: we need a way to map arbitrary USB HIDs onto assorted functions on the box. We'll want to be able to modulate amplitude, and possibly fancier things like duty cycle, or even a cross-fade between two different wave patterns.
The GFI question, like the safety question, is something to be dealt with when we get to the electronic bits. I'll probably get as far as I can in software, then see if I can bring in an engineer to help with those things.
To play with waveforms, I'm thinking we can draw them with bezier curves. We'll allow the user to draw a half-period, then automatically invert it to create the rest of the period, thereby avoiding the very scary "electrolytic effects." We might want longer-period curves (think seconds) that can modulate amplitudes, recreating the pulsing effects on simpler toys, so basically we need a whole suite for editing curves.
For stats, we'll need to put a volt meter and ammeter into the appropriate parts on the circuit, and send signals back via the UART or USB or some other interconnect. The i.MX might've given us more options here come to think of it, but we should manage.
Off We Go!
I'm flaky about projects in general, but I'm going to try to both get this one done, and update about it regularly. Stay tuned for the shocking conclusion4
I've tried it on serious back pain once. It worked, until I moved after turning it off. On balance I think it made it worse.
Random number for illustrative effect. If you do the math to figure out whether that's a lot and what it would do to a person, you will be awarded one (1) cookie and a pat on the head.
Perhaps even, dare I suggest, go commercial.
Booooooo!