Build Report: Tactile Immersion in Motion

I'd just built what seemed to me the perfect immersive racing platform. What had started off as a modest attempt to dust off an old hobby had turned into something of an obsession -- messy, mismatched, and ridiculously inadequate at first, but now finally coming together.

After years of disuse, I'd pulled an old Thrustmaster wheelstand, wheel base, and pedal set out of the basement, plopped it down in front of a large screen television, sat myself in a comfy chair and gone racing.

50023647202_665d33cdca_c.jpg


I'd had an on-again-off-again interest in SIM racing since the early nineties, culminating in the release of GP Legends, which I'd played with a wheel bolted to my computer desk. That's about as far as I'd gotten in terms of hardware. But even I could recognize that this whole setup left a lot to be desired. It was of course annoying to have the stand slide out from under my feet under even light braking, to have only minimum feedback from the wheel and no resistance from the pedals, and to endure the 60Hz television refresh rate. I was having fun, but wanted more. So I started out on a project that I thought had reached its pinnacle before this thread even starts.

846FCBA1-960F-4C65-853D-1CD22D971438.jpeg


Over the course of the next four of five months, I took a jagged path through a stand just rigid enough to support a direct drive wheel, a better chair that still had to be strapped to the stand once I added a hydraulic brake pedal, eventually forcing a decision to build an 80/20 cockpit, install a proper racing seat, add a motion platform, belt myself in, and put on a VR headset. It was everything I had imagined it could possibly be and was responding beautifully to my efforts to dial it in.

50023090151_d466c01e28_c.jpg


Then, on a whim, I decided to try out one of those Buttkicker Gamer2 packages. I honestly thought it was a gimmick and didn't expect it to add much to the immersive experience. Even so, despite my already low expectations, I found it singularly unimpressive. Almost every other step I'd taken in this process had not only shown promise, but delivered a substantially improved experience. This thing just did nothing for me at all. I sent it back almost immediately.

Still, the idea of adding tactile stimuli made sense to me. Although that specific product in that particular configuration on my individual platform had not delivered, I couldn't stop turning over in my head that it could be done right and in a way that wouldn't just add a bit of rumbling noise, but would complement the immersive experience of motion and VR. I soon discovered the exhaustive tactile immersion tread and began a correspondence with @Mr Latte that has transformed my thinking about what it should be possible to achieve. Without his guidance, I'm sure I would have given up on this idea.

This thread will chronicle my efforts integrating tactile stimuli on my platform. It may take me a while to cover everything, but here's the plan: After describing my starting point and some of its idiosyncrasies, I'll outline my objectives, general philosophy, specific hardware choices, challenges I've faced and solutions discovered for isolating the 80/20 frame and motion platform while conducting stimuli to the body, explore a few dead ends that haven't worked for me but may be instructive for others, and finally look at software configuration and tuning, which I've only just begun to explore.

50017665468_f5a353c9e4_c.jpg
 
Last edited:
Starting Point

The basis for this project is a Sim-Lab P1-X chassis, a Next Level Racing Motion Platform v3 attached with SIM-LAB's L brackets, and a Sparco EVO QRT seat on Sparco side mount aluminum hd seat brackets. The chassis rides on 8 locking rubber casters and the seat brackets were attached to the motion platform via two laterally mounted 40x40 sections of aluminum profile. I'd done this for two reasons: first because, in mounting the brackets directly to the seat, they ended up slightly closer together at the back than at the front, so it made alignment with the motion platform easier and secondly, to provide attachment points for the seat harness. With he SIM-LAB brackets, the NLRv3 raises the seat about 95mm above where it would be if mounted directly to the chassis. This is within the range of adjustability of the wheel and pedal platforms, but I will try to avoid pushing it up any higher.

Here's a photo and sketch of this arrangement:

49745948018_38cf10cf8f_o.jpg


Initial Seat Configuration.jpg


On this platform, I also have a Fanatec DD2 wheelbase and HPP 3P-JBV pedal set. I won't have much more to say about those, at least for now. I had originally thought about adding tactile stimulus to the pedals, and have some thoughts on that, but have decided to bracket the idea for the time being and to focus my attention entirely on the seat.

I run all of this from an Intel i9-9900K CPU, NVIDIA GeForce RTX 2028 Ti GPU, and 32 GB DRAM, with 1TB SSD and 2TB HDD, and an internal 7.1 audio card. Although I have a single 27" monitor on an integrated mount, I run primarily in VR with a Valve Index HMD. I run mostly in iRacing and occasionally in Assetto Corsa.

In the next installment, I'll outline what I hope to accomplish and then turn to a plan for how to get there from here.
 
Last edited:
Upvote 0
Objectives and Design Philosophy

My first thought was just to throw some better hardware at the problem. Maybe I could get a better experience with a decent amplifier and a more capable transducer mounted more directly to the seat instead of to the motion platform. So I played around with mounting a BK4 between my legs on the lateral seat rails.

IMG_4895.jpg


I was still at least a year or two behind the conversation on the Tactile Immersion thread and hadn't yet realized that I didn't need to constrain myself to what was possible in SimVibe. I knew I didn't want to have anything to do with the SimVibe Chassis Mode, where each corner of the rig presented to be a wheel. I'd already been through that debate on motion platforms, where my experience had led me to favor the application of direct stimulation of the body over trying to move the whole rig. While I could still appreciate the arguments for a full chassis motion platform, the idea that vibrations of the four corners of an 80/20 platform would be even remotely satisfying seemed implausible. At the same time, the SimVibe Extensions Mode didn't seem to support more than a single channel to the seat.

It wasn't until I read a little bit further ahead, opened a correspondence with @Mr Latte, and discovered that SimHub would allow independent configuration of a more or less unlimited number of channels that I began to realize what I really wanted to do and that this was going to be a much bigger project than I'd previously anticipated.

Here are some of the objectives I set for myself. Some have become clearer or more refined along the way and this is just a snapshot of how I'm thinking about them now, but they've remained surprisingly stable as I've worked my way through figuring out how to design a platform that would instantiate them. I don't think there's anything novel here. In fact, I'm pretty sure I've just cherry picked from observations that resonated with me on the Tactile Immersion thread.
  • Direct application of multiple stimuli to the body through the seat. I did think briefly about adding tactile stimuli to the pedal plate; but I'd worked hard to get that part of the rig as rigid as possible and didn't want to undermine that for what seemed like a lot of work on something that had a low chance of noticeably improving the driving experience;

  • Isolation of those stimuli from the chassis and also from the motion platform, which already provides some chassis isolation, but I didn't want to risk damaging with excessive vibration;

  • Don't raise the seat any higher than absolutely necessary;

  • Avoid drilling any holes in the NLRv3. I had to send the first one back and really don't want to void the warranty;

  • No interest in isolating the whole chassis from the floor. The rubber casters isolate it enough not to skate around and there's only a storage room below me;

  • Lateral isolation of certain stereo effects;

  • Central application of certain mono effects;

  • Ability to deliver some specific effects to specific parts of the body;

  • Division of labour among transducers to avoid muddying their response;

  • Exploit availability of multiple transducers with different frequency response profiles to cover a wide dynamic range, asking each one to focus on delivering stimuli within its strongest range;

  • Everything should work well together with motion from the NLRv3
 
Last edited:
Upvote 0
Plan of Action

The first thing I need to do was remove those lateral rails under the seat. Although they had first seems like convenient mounting points for a transducer, they would undermine any attempt to separate stereo inputs.

The second thing I need to do was figure out how to isolate the seat from the motion platform without raising it too much and in a way that would allow me to mount a couple of large transducers to deliver effects through the seat rails. This part has posed the greatest challenges, but as of today, I can say with reasonable confidence that it has been solved to my satisfaction.

Having successfully isolated the seat, the next step would be to mount all the other transducers directly to the seat. I have a rough idea of how this will work, but expect it will need a lot of trail and error to dial in.

Everything beyond that is largely experiments in orchestration.
 
Last edited:
Upvote 0
Hardware Selection

Since I'd already purchased one Buttkicker Advance (BK4-4) and hadn't yet thought beyond going stereo, my first additional piece of hardware was a second BK4-4 and a Behringer NX3000D amplifier to drive them. This was a choice I made on the strength of @Mr Latte's recommendation and other comments on the Tactile Immersion thread.

To deliver focused effects to specific parts of the body, I chose to go with four Dayton Audio DAEX32EP-4 exciters. These are compact and easily placed, have a range significantly higher than the Buttkicker transducers, and seem to have been well received by others. I'm driving these with a Behringer EPQ304 amplifier. Since the EPQ304 lacks the DSP control of the NX3000D, I plan to control the frequency sent to these units with the Equalizer APO software.

For mono effects, I will split duty between a Buttkicker LFE, mounted under the seat, and a Clark Synthesis TST 329, mounted at the based of the spine. These are driven by a second NX3000D.

Although the on-board 7.1 audio controller would be sufficient to feed this system, I've again followed @Mr Latte's advice in running the Dayton Audio exciters from an external USB sound card.

I wish there were some reliable source of information about the frequency range and response of these transducers. Buttkicker says the LFE and BK4-4 both have a range of 5 to 200 Hz, which seems a little bit optimistic to me. Clark says the TST 329 has a range from 10 Hz to 17 KHz (!). And Dayton Audio publishes a frequency response graph for the DAEX32EP-4 that covers a range from 70 Hz to about 5 KHz and seems to peak around 150 Hz. This will involve some trial and error, but I'm expecting the Buttkicker transducers to carry the load under 100 Hz, the Clark to pick up somewhere in the middle, and the DA exciters to cover the high end, with everything above 200 or 250 Hz filtered out.

Here is a visual representation of the audio components:

Audio Components.jpg


I had initially also put an unbalanced/balanced level converter between the sound card and amplifiers, but am hopeful that, over such a short distance, this won't be necessary.

Here is the initial plan of where each unit will live on and around the seat.
device_placement.jpg


I'll devote the next post to the most challenging part of this project so far: figuring out how to isolate the seat and mount the first two stereo transducers.
 
Last edited:
Upvote 0
Mounting Options

The next step on the path to mounting the main stereo transducers would be to remove the lateral profiles and find a way to isolate the seat from the motion platform. At first I had thought I would use a pair of aluminum plates under each seat rail with some isolators sandwiched between them. This struck me as the most straightforward approach, but it would raise the already high seat by about 10 cm. As an alternative, @Mr Latte suggested I consider suspending the lower plate from the underside of the NLRv3. This would keep the height in check, but posed all sorts of challenges to keep the lower plate from fouling the motion platform hardware.

Mounting Options.jpg


As I began to remove parts of the lower plate to avoid these obstacles, I also began to have some doubts about whether I could still find enough support to fix the suspended plate securely. So I decided to proceed along two parallel paths, keeping both options open. I won't bore you with all the false starts, cardboard mockups, and dumb mistakes. Instead, let's move straight to final two candidate designs.
 
Last edited:
Upvote 0
Design

The upper plate would be the same along both paths. It needed to extend behind the seat where it would carry the BK4-4 transducers, support the seat rail, and sit securely on the isolators (more on these below). I also decided to include some extra holes in case I later decided to replace the BK4-4s with larger LFE transducers. I planned to have this cut from 1/4" sheets of 6061 aluminum and wanted the lines to complement the geometry of the Sparco aluminum seat mount. Here's a sketch from the design file for the upper plate:

Top Plate.jpg


The path to putting the lower plate on top of the NLRv3 was also pretty straightforward. After a few iterations, this is the design I settled upon:

Bottom Plate High.jpg


Finding a solution to suspending the lower plate below the NLRv3 rails was much more difficult. Every time I cut away one offending piece of the plate, it seemed like I found two more that would foul the hardware once the platform was in motion. I ended up having to remove the section of the plate that would have mated with the foreword mounting point and was then faced with a dilemma, either drill a new hole in the NLRv3 rail or come up with some way to use other holes on the side of the rail. Drilling would be a last resort, but I didn't know what would work, so I cut the plate to accommodate both options:

Bottom Plate Low.jpg


The suspended path would also require special attention to keep the upper plate from bottoming out anything under compression. I decided I need to have a minimum of 45cm between the plates, which was also about the maximum I thought reasonable in case I ended up on the other path. With that spacing in mind, here's a perspective view of what I imagined each approach would look like:

Perspective.jpg


I went through a bunch of different ideas about how to isolate the plates. Based again on advice from @Mr Latte, I decided early on to use a pair of these RDB-220 isolators from Kinetics Noise Control along the outside of each pair of plates. If you decide to use these, be aware that although the tapped hole at the top is specified in the documentation as 10mm, it is actually threaded for an SAE 3/8" bolt.

Screen Shot 2020-06-22 at 11.18.15 AM.png


These seemed like an excellent choice, but I didn't have room on the inside plates for a second pair, so I began exploring other options. @Mr Latte had some useful suggestions and the one that looked like it would work best involved stacking a couple of Buttkicker RI-4 rubber isolators. These are 2" in diameter and 1" tall. I planned to run a bolt through them and, since they are softer and slightly taller than the RDB-200, preload them with some compression to level them out. Also be aware that the center holes in the RI-4 are 6mm in diameter. I didn't trust an M6 bolt for this application, so drilled them out to take an M8. Because I wanted to minimize vibration transferred by the through bolt, I followed another piece of advice from @Mr Latte to assemble them like this:

RI-4 Isolators.jpg


In the next post, I'll show you how these drawings turned out in real life and begin the process of assembling them.
 
Last edited:
Upvote 0
Assembly

Although it was somewhat discouraging to know that at least half of the work I'd do in this stage would have to be undone and set aside, piecing it together was still the most exciting part of this journey. First I tried the stacked path, then the suspended path, then I took it all apart and tried the stacked path, then I slept on it for a few days, took it all apart reassembled the suspended option.

Stacked option:

50034059343_acdf0d9a7b_k.jpg


50034601366_b2202681ae_k.jpg


50034860047_ca8646863f_k.jpg


Suspended option (held in place with one through bolt and three corner brackets):

50034059198_ea636bbafd_k.jpg


50034860072_f9bea48705_k.jpg


50034601196_1116a6c5e4_k.jpg


Once I'd convinced myself that the suspended option was secure and cleared the motion platform, the difference in seat height became the deciding factor:

Stacked (>160mm):

50034601071_4ac29b1d3d_k.jpg


Suspended (<130mm):

50034859977_364bb7a27a_k.jpg


I had to replaced the rear seat bolts and the suspended plate bolt with button heads to give them more clearance. They are offset from each other by about half an inch, so not quite as tight as it looks in this photo:

50034859792_3a4641a8e8_k.jpg


View from above:

50034860087_943b1642b8_k.jpg


Once more, at @Mr Latte's suggestion, I dressed the cables in pants and banana plugs.

50034601186_cbcd595ada_k.jpg


Note that although these Nakamichi plugs are very nice, the insulation is just a thin lacquer finish, so I covered these with 11mm clear shrink tubing.

50034601076_a97da787a3_k.jpg
 
Last edited:
Upvote 0
As is probably apparent, I’ve just now managed to catch up on reporting on the work that’s been going on behind the scenes for the past couple of months. Today, for the first time since April, I have had my rig all put together, hooked up, and drivable. I’ve confirmed that the two BKA transducers receive a signal through SimHub and am just beginning to test out configuration of the NX3000D. That’s going to be an iterative process and I don’t want to confuse readers by having to walk back any hasty conclusions, so it may be a few days before I come back to report on any of that.

In the meantime, @Mr Latte has brought an interesting prospect to my attention. As you may have noted, I drilled out the plates running under the seat rails to accommodate either the BK Advance or the larger LFE transducers. Since I now have an LFE on hand, this would be an ideal platform for performing some literal A/B testing of the two units. Once I get a handle on the basic configuration and before more permanently mounting the LFE under my knees, I will devote some time to this. Let me know if you have any suggestions, specific comparisons, or hypothesis you’d like to tested.

For now, here’s a view of the lab environment:

9F979532-524F-44C2-BB95-5455EAE1B265.jpeg


and some of the chaos I’m trying to keep at bay:

0EE3FC2B-37B2-47D0-BC00-E1EA83F53B4B.jpeg
 
Upvote 0
Design Files

In case anyone would like to use my work as a starting point for their own, here are the design files I created for the aluminum plates.

Lower plate
Top plate

And here is the alternative lower plate — the one I didn’t end up using. I wouldn’t recommend this for use with the NLRv3. It raises the seat too high and would need a bit of tweaking to get around some small bolt heads I forgot to consider on the top of the unit. However, if you aren’t trying to work with a motion platform, you may find this an effective approach for isolating the seat from the chassis while providing good stereo mounting points for a pair of BK-Advance or LFE transducers.

Alternative lower plate
 
Last edited:
Upvote 0
A Note on Cabling

My rig sits in casters. I move it around sometimes. Sometimes I have to take it apart. Sometimes I move the computer and amps that feed it. So I need an approach to cabling that will accommodate this. I want it to be neat. I don’t want it to get fouled in the wheels. I want to be able to disconnect individual components. And I don’t want to have to undo any permanent wiring to perform routine maintenance.

I use Speakon speaker cables to connect the amp to a panel under my knees. The panel is a standard 19” rack accessory with 4-pole Speakon sockets. Note that while we are only using two of the four poles, 2-pole sockets will not accept the 4-pole connectors used in most cabling. Since the inside of the rig is 500mm (19.685”), I have a couple of small brackets attached with t-nuts to bridge the gap.

188C816F-D5D6-4459-95B7-B22100B82462.jpeg


I’m using 14 AWG oxygen free copper wiring throughout. This connects to the Speakon sockets with spade connectors. But those connections are fragile and difficult to remove. Even if you could get in to pry them apart, the crimps would not survive frequent separation. So I decided to put a short section of wiring behind each Speakon socket and join that to the wire that leads to each transducer with a pair of Anderson PowerPole connectors. These connectors are frequently used for DC power supplies, but they don’t seem to have any drawbacks when used for audio and provide a secure connection with a very convenient and robust means of disconnection.

I’m using some cable tie guides to keep the wiring off the floor and will eventually put a box around these to keep it all neat, safe, out of the way, but easily accessible.
 
Upvote 0
With the Buttkicker LFE on hand, I decided it could be interesting to make some head to head measurements between it and Buttkicker Advance transducer. Both the LFE and Advance are specified by Guithammer to cover a frequency rage of 5 to 200 Hz, but the LFE's piston weighs 1.48 kg and can be driven up to a maximum of 1500 Watts, while the Advance's piston weighs only 0.45 kg and is can be driven up to 400 Watts. Since I plan to have both on my rig, I wanted to get a better sense of how they compare and whether I am right in thinking they will complement each other in the ways I have imagine.

The test mule:

Test Mule.jpg


As I'd mentioned previously, I'd drilled out the top platform with holes to accommodate either the LFE (left) or Advance (right). My plan has been to use put the LFE under the seat to deliver the lowest frequency mono effects, giving way to the a TST 329 mounted near the spine for higher frequencies, and to use the Advance units to deliver stereo effects across a similar range as the LFE and TST together.

For these tests I am running both units from the L/R output of the sound card with its internal volume setting fixed in Windows at 50%. Signals for both are sent to the Behringer NX3000D amplifier where they will be processed identically, except that the Advance will have a peak limit set at 395 Watts to avoid overdriving the unit. No EQ is applied to either signal chain, but I will try out two different crossover profiles as shown below.

Profile 1 supresses most of the signal above 40 Hz:

50048645338_3aa64b76db_o.png


Profile 2 supresses most of the signal above 100 Hz:

50049461562_f1970680f7_o.png


Volume knobs on the NX3000D were set to 12 o'clock. Test signals were generated in SimHub using a test profile kindly provided by @Mr Latte that allows a gear shift effect to be generated at difference frequencies and intensities. Effects were observed in Assetto Corsa Competizione using the Ferrari 488GT3 while seated in the driver's seat. The master volume in SimHub was set to 50%.

The data are necessarily subjective, but I tried to be as consistent as possible in my observations. For each gear shift frequency, I determined the effect of volume levels corresponding to the following three criteria:

1) the minimum threshold value at which any effect was perceptible to me. These thresholds are obviously far below any usable level for effects, but provided a consistent points of comparison of the signals getting through in each profile and the response of each unit.

2) the volume levels for each frequency at which each unit produced what I considered to be a satisfying stimulus -- i.e., one that would, at least in isolation, provide meaningful feedback to the driver. I've called this the "Optimal Output Level" here, but it's really the minimum satisfying level and there are levels above this which others may prefer. It's harder to maintain consistency with this impression, but I've done my best.

3) the level above which the units produce either a distorted response or resonate with the rig, or are otherwise more distracting or annoying than, in my opinion, any reasonable person would want to bear. In some cases, this level was not reached as the output was still within what I considered a satisfying range at 100% volume.
 
Upvote 0
Results for Profile 2:

Profile 2 Threshold.jpg


Profile 2 Optimal.jpg


Profile 2 Max.jpg


While the BK-LFE is more powerful than the BK-Advance and would likely show greater differences below 10 Hz, in these measurements, the results are very similar. What you can't tell from the numbers, however, is that the LFE has a much smoother tone overall and seems under less stress throughout these tests. The Advance seems brighter overall and livelier at the higher frequencies when these were opened up in Profile 2.

I came away from these tests with a greater appreciation of the LFE and am very tempted to change my plans and replace the Advance with LFE for the stereo effects. However, I also feel like a single LFE is plenty powerful enough to do the job and that two of them in stereo on the seat rails would be overpowering, at least on my rig.
 
Upvote 0
Next up... comparing the LFE, Advance, and TST329. For this, I will probably use a calibrated tone generator that I can easily sweep over a wide range of frequencies, rather than a SimHub profile. This won't fully reflect performance in the game, but I'm looking at relative strengths and for data that will help establish the optimal crossover values between the three units.

Threesome.jpg
 
Upvote 0
Creative work!

In my experience cantilevering transducers throws away a LOT of energy, but with LFE's you have plenty to spare. It looks like they would create more of a seat rocking movement rather than direct impact.

That said, your design is far more advanced than anything I've tried. I also suspect that with LFE's you have the ability to find a frequencies that might make a rocking motion a completely different effect. I was trying to maximize the effect out of less powerful Aura's and didn't have power to waste.

I also found that with my Sim-Lab P1 and vertical steering wheel mount that I'm completely out of space under my steering wheel. To raise by seat on my NLRv3 I would have to replace my vertical wheel supports with taller pieces.

Very curious how it all works out!
 
Upvote 0

Latest News

Online or Offline racing?

  • 100% online racing

    Votes: 96 7.7%
  • 75% online 25% offline

    Votes: 130 10.5%
  • 50% online 50% offline

    Votes: 175 14.1%
  • 25% online 75% offline

    Votes: 350 28.2%
  • 100% offline racing

    Votes: 484 39.0%
  • Something else, explain in comment

    Votes: 5 0.4%
Back
Top