This plugin connects Falcon 4 BMS's telemetry output to SimHub, allowing the use of SimHub to control bass shakers, LEDs, wind simulators, etc., based on Falcon BMS' telemetry.
This project relies on lightingtools' F4SharedMem tool to read the telemetry out of the BMS shared memory.
- Standardizes variables names according to their underlying F4SharedMem names
- Automatic extraction of all telemetry variables, as opposed to old hardcoded system
- Automatic expansion of all telemetry bit objects (lightBits, bettyBits, etc) into individual boolean flags
- e.g., Master Caution light status is now published directly to
FalconBMS.lights1.MasterCaution, you no longer need to do byte conversion and bitwise flag parsing.
- e.g., Master Caution light status is now published directly to
- Download the prebuilt FalconBMS plugin: RGeada.FalconBMS.dll
- Download the F4SharedMem.dll: F4SharedMem.dll
- Move both downloaded
dlls to your SimHub folder in$DRIVE:\\Program Files (x86)\SimHub - Restart SimHub
You can check that the plugin has installed succesfully by looking in the "Available Properties" tab of SimHub and searching for FalconBMS: you should see a bunch of available properties.
From @gumby in the Falcon BMS forums:
- From Simhub, go to Settings.
- Select the “Custom games” tab
- Create a new game called BMS and in Process Detection put Falcon BMS
- You may also need to run SimHub as administrator - there’s an option for that in the General tab of the settings page
- Run BMS, and at the top of the SimHub interface click Change active game > change it to BMS, then click activate.
Alternatively, I've included the source code for the plugin, so if you're familiar with the SimHub plugin SDK, you can build and modify the plugin yourself!
After loading the plugin in Simhub, check "Available properties" and search for "Falcon BMS". Everything from the F4SharedMem telemetry is exposed in the plugin, so one way to investigate the available properties is to check out the F4SharedMem flight data and its various data types.
This is how I've got my bass shakers set up for Falcon BMS. I've got a Dayton BST-1 under my seat and a Dayton TT25 under each of my shoulders, so some of my effects are in stereo. You'll probably need to tune frequencies and intensities of these effects to your specific rig.
SimHub's built-in bass shaker effects are pretty car-focused, so we'll have to write our own custom effects. Here are a few custom effects that I use as examples:
To set up a custom bass shaker effect in SimHub, go to ShakeIt Bass Shakers, select Add Effect, then scroll to the bottom to find Custom Effect.
In the effect settings, hit edit, then toggle Use Javascript, then paste the following into the Javascript field:
//turn off effects if not in plane
if ($prop("FalconBMS.Utility.stopEffects")){
return 0
}
gs = $prop("FalconBMS.flightData.gs")
gsFromOne = Math.abs(gs - 1) ** 2
bump = Math.random() > .5 // waver the output volume randomly between 0 and 100, to add sensation of bumps
return bump*(gsFromOne*100/64) // scale effect by gsI run this effect at 25hz.
//turn off effects if not in plane
if ($prop("FalconBMS.Utility.stopEffects")){
return 0
}
gun = $prop("FalconBMS.IntelliVibe.IsFiringGun")
bump = (Math.random()<.5) * .2 + .8 // waver the output volume between 80% and 100%, to add organic fluctions to sound
return gun * bump * 100The F16 cannon fires at 6,000 rpm, so run this effect at 100hz to exactly match the firing frequency. For added oomph, add a duplicate of this effect at 50hz.
Adds bumps when taxiing
if ($prop("FalconBMS.Utility.stopEffects")){
return 0
}
speed = Math.min(1, $prop('FalconBMS.flightData.kias') / 50)
bumpIntensity = $prop("FalconBMS.flightData.bumpIntensity") * 100 * speed
bump = Math.random() < .5
return bump*bumpIntensityAdds bumps when wheels hit runway
In the "Run once javascript code" section of the custom effect editor:
prev_ground = $prop("FalconBMS.IntelliVibe.IsOnGround")
bumps = 0 In the "Javascript" section of the custom effect editor:
if ($prop("FalconBMS.Utility.stopEffects")){
return 0
}
ground = $prop("FalconBMS.IntelliVibe.IsOnGround")
if (!prev_ground && ground){
if (bumps < 5){ // change "5" to a bigger/smaller number to lengthen or shorten the thump
bumps += 1
return 100;
} else {
bumps = 0
prev_ground = ground
return 0;
}
}
bumps = 0
prev_ground = ground
return 0;This will thump your bass shaker as a missile releases, providing feedback to let you know when it's fired.
In the "Run once javascript code" section of the custom effect editor:
var oldAA = $prop("DataPluginDemo.FalconBMS.IntelliVibe.AAMissileFired")
var len = 0;In the "Javascript" section of the custom effect editor:
if ($prop("FalconBMS.Utility.stopEffects")){
return 0
}
var newAA = $prop("FalconBMS.IntelliVibe.AAMissileFired")
if (newAA != oldAA){
if (len < 5){ // change "5" to a bigger/smaller number to lengthen or shorten the thump
len++;
return 100;
} else {
len = 0
oldAA = newAA;
}
}
return 0;In the "Run once javascript code" section of the custom effect editor:
var oldAG = $prop("FalconBMS.IntelliVibe.AGMissileFired") + $prop("FalconBMS.IntelliVibe.BombDropped")
var len = 0;In the "Javascript" section of the custom effect editor:
if ($prop("FalconBMS.Utility.stopEffects")){
return 0
}
var newAG = $prop("FalconBMS.IntelliVibe.AGMissileFired") + $prop("FalconBMS.IntelliVibe.BombDropped")
if (newAG != oldAG){
if (len < 5){ // change "5" to a bigger/smaller number to lengthen or shorten the thump
len++;
return 100;
} else {
len = 0
oldAG = newAG;
}
}
return 0;In the "Run once javascript code" section of the custom effect editor:
var oldCM = $prop("FalconBMS.IntelliVibe.ChaffDropped") + $prop("FalconBMS.IntelliVibe.FlareDropped")
var len = 0;In the "Javascript" section of the custom effect editor:
if ($prop("FalconBMS.Utility.stopEffects")){
return 0
}
var newCM = $prop("FalconBMS.IntelliVibe.ChaffDropped") + $prop("FalconBMS.IntelliVibe.FlareDropped")
if (newCM != oldCM){
if (len < 5){ // change "5" to a bigger/smaller number to lengthen or shorten the thump
len++;
return 100;
} else {
len = 0
oldCM = newCM;
}
}
return 0;This is just a few of the effects I've set up for my rig, I've got others for things like airbrake turbulence and landing gear raising/lowering. Feel free to open an issue here, or message me the Falcon Lounge or SimHub discords (I'm @robgeada) to talk more about the plugin or custom SimHub effects!
I've tested this with BMS 4.38.1 and (licensed) SimHub 9.10.13. While I'll do my best to maintain this in the future, there is no guarantee that it will continue to work with future BMS/SimHub updates.