Hardware & Technical Throttle recommandations

Hi there! Greetings to all of you. I want to get started with Elite: Dangerous, but you need to help my with setting up a (special) HOTAS setup first.

I actually own a HOTAS device (Saitek X45) but, to be honest, I don't like it.
Every HOTAS on the marked is simply bloated. I have limited space on my desk and I don't want to waste 40% of it with bigass niche controllers.
In contrast to that, I like to have all my controllers readily available.
I'm a compulsive gamer who values his free gaming time above everything else. I always want to play what I like and I want to play it now, not after five minutes of setting stuff up. So cleaning my desk and haul the HOTAS out of the closet is no option either.

I found a Joystick which is perfect for the above criteria: The Saitek ST90! It feels great, it's somewhat accurate and durable for the price (15 bucks back then - they're not available anymore 'though) and it's not small but compact! It looks like a skeleton of a controller and despite it's size, it takes only a tiny amount of space.
It has a drawback though: 3 buttons! That's it! nothing more. It has a throttle theoratically but it's "digital" and not functual or practical at all.
I can live with the low number of buttons, because I don't mind using the keyboard occasionally.
I can live with lack of POV-hats because I got a (veeery old but functional) TrackIR.
I can live with the lack of a rudder, because I shamelessly stole a Saitek Pro Flight Rudder from a relative (He doesn't need it anymore, because he got a real plane ^^).

What I can't live without is a throttle. And that's a problem, because there are no compact throttles, that I know of! I would like one which I can put on the small space leftmost to my keyboard (about 4 cm / 1,5 inches).

So far I found two options:
1. The "Palette" Kickstarter. It looks good, but it's very expensive, esp. if you have to import it to Europe. And it's not available yet. And the developers are constantly delaying since september.

2. Building it myself. Slider parts and cables would cost me ca. 15 bucks. USB joystick controller 30-70 depending on how much soldering etc. I would do by myself. I've never done anything like that and even though a friend would probably help me with soldering etc. there's a big chance I buy the wrong parts or f this up in other ways.

tl;dr: I need a compact throttle, suggestions?
 
As far as buttons go, buy a USB keypad. There are 32 key versions available. I personally use a 30 key. I have loads of spare keys for the future.

As for a throttle, if you can find one, a single variable joystick might work.

Personally, I'd rather lash out on a Speedlink Blackwidow. It would be a lot cheaper than the DIY setup you are thinking about
 
Hi,

You can actually bind two buttons to act as digital throttles in Elite Dangerous.
One button to "Increase Throttle", another button to "Decrease Throttle".

Just bind two keys on your keyboard, or even use your mouse buttons if you like.
You can place your mouse to your left or right of your joystick to simulate a throttle :D :D

To bind it, just launch Elite Dangerous,
go to OPTIONS - CONTROLS - FLIGHT THROTTLE
then set the "INCREASE THROTTLE" and "DECREASE THROTTLE" to your desired buttons.
Ensure that "THROTTLE INCREMENTS" is set to "CONTINUOUS"

click Apply and test it out in the Tutorial section.

Below is a screenshot of my test settings with the mouse.
Note: You can even bind the throttle to the mouse scroll-wheel as shown in the screenshot below
[+ MOUSE Z-AXIS]

uc
 
Hi,

You can actually bind two buttons to act as digital throttles in Elite Dangerous.
One button to "Increase Throttle", another button to "Decrease Throttle".

Just bind two keys on your keyboard, or even use your mouse buttons if you like.
You can place your mouse to your left or right of your joystick to simulate a throttle :D :D

To bind it, just launch Elite Dangerous,
go to OPTIONS - CONTROLS - FLIGHT THROTTLE
then set the "INCREASE THROTTLE" and "DECREASE THROTTLE" to your desired buttons.
Ensure that "THROTTLE INCREMENTS" is set to "CONTINUOUS"

click Apply and test it out in the Tutorial section.

Below is a screenshot of my test settings with the mouse.
Note: You can even bind the throttle to the mouse scroll-wheel as shown in the screenshot below
[+ MOUSE Z-AXIS]

Good point Neutral. The button on your Saitek ST90 would be ideal.

The advantage of buying a separate 30 key number pad is you can relabel the keys.

But whatever you choose, good luck.
 
Thank you for the feedback!
Yes! Keys/buttons can be quite effective for throttle input. I'm using it myself in games like Mechwarrior, but I think that Elite needs a bit of a special treatment, even if it's just for the immersion.

I plundered the internet on the topic the last two days and there really seems to be no marked at all for smaller throttles or single sliders. And even DIY kits are ridiculously expensive (Flight Sim nuts seem to have really big pockets).

At least I found one interesting item. The "Curious Inventor VMeter". It's a "slider" with touch-input and line of LEDs to indicate the current position. It's compact, reasonably priced for what it does (got it for 60) and, from what I've read, it's reliable as well.
It's marketed to DJs, musicians and and producers and thus operates through the MIDI interface, but it should be easy to hack a joystick throttle out of it via PPJoy or similar Joystick-emulating-software which allow MIDI input.


BTW: Is it somehow possible to control joystick or MIDI input/output through WLAN? If it's possible, I bet you could earn some money with a slider app for smartphones.
 
My ideal left hand hotas throttle would be one with force feedback (haptic feedback) so I could FEEL the engines throttle up and down in various ways, force on the throttle and also vibrations. Now that would be something no one has done yet. And I'd buy that!
 
I managed to get the Vmeter working using GlovePIE and PPJoy.
The line you'll need in GlovePIE is:

PPJoy.Analog0 = ((midi.Channel1.Control20)*2.1)-1.05

It addresses the virtual Joystick and the correct MIDI input and does some basic math because of inputrange and deadzones.

You need to make sure GlovePIE is the first program to grab the MIDI input, because otherwise it does get nothing
(that drove me insane before I knew it, because no matter what I did the script wasn't working - apparently it was because the MIDI analyzation program I used grabbed it all)

It's no optimal solution because you'll need to run unsigned drivers and thus activate testmode for PPJoy nowadays.

EDIT:
Unfortunately PPJoy is causing BSODs on my system probably because of it being unsigned and test mode.

New solution:
1. Use "Bome's Midi Translator Classic" to grab the MIDI input and turn it into keystrokes.
2. Use FreePIE to feed above Keystrokes into VJoy
3. Use VJoy as a throttle in Elite.

Neither VJoy nor FreePIE allow MIDI input, so a have to go through three programs to use Vmeter as proper joystick throttle. But it works at least.
 
Last edited:
Just a short slightly necromantic update:

I pestered the developer of FreePIE until he implented MIDI input (even though he doesn't own a MIDI device himself :D)
So if you have some USB MIDI equiment you can now easily use FreePIE and vJoy to emulate a Joystick with it! It has been recently updated to support the latest version of vJoy as well!

http://andersmalmgren.github.io/FreePIE/
http://vjoystick.sourceforge.net/site/

Like I said - very nice for a simple, small, low cost throttle. Especialy considering the scarcity of dedicated PC-Sim equipment right now.
If you own an DJ slider/ array you could use it for all kinds of "analog" ingame actions as well.
You could even use an USB piano as a keyboard replacement :D

For my MIDI slider (VMeter) the FreePIE script looks like this:

def update():

vJoy[0].slider = filters.mapRange(midi[0].data.buffer[1], 0, 127, 17873, -17873)​

if starting:
midi[0].update += update​

Your device may have different values. You can use the diagnostics function and observe the "watch" tab when the script is running to look up your input and then change the script accordingly.

a diagnostic script may look like this:

def update():
diagnostics.watch(midi[0].data.channel)​
diagnostics.watch(midi[0].data.status)​
diagnostics.watch(midi[0].data.buffer[0])​
diagnostics.watch(midi[0].data.buffer[1])​

if starting:
midi[0].update += update​

When you have multiple MIDI devices connected you may need to change midi[X] to the correct port number of the desired device.

I hope this necro is warrantable and it will help someone :D

EDIT:
BTW: FreePIE has android support as well. If I find some motivation and time, I'll try to get my android smartphone into a throttle as well and post a how-to. I'll post the solution in another thread in the actual Elite Dangerous forum because that'll be more software than hardware.

EDIT2:
You can only use the gyro of the phone - not the touchscreen. So no FreePIE smartphone throttle for now.
 
Last edited:
剣 真;1787527 said:
Just a short slightly necromantic update:

I pestered the developer of FreePIE until he implented MIDI input (even though he doesn't own a MIDI device himself :D)
So if you have some USB MIDI equiment you can now easily use FreePIE and vJoy to emulate a Joystick with it! It has been recently updated to support the latest version of vJoy as well!

http://andersmalmgren.github.io/FreePIE/
http://vjoystick.sourceforge.net/site/

Like I said - very nice for a simple, small, low cost throttle. Especialy considering the scarcity of dedicated PC-Sim equipment right now.
If you own an DJ slider/ array you could use it for all kinds of "analog" ingame actions as well.
You could even use an USB piano as a keyboard replacement :D

For my MIDI slider (VMeter) the FreePIE script looks like this:



Your device may have different values. You can use the diagnostics function and observe the "watch" tab when the script is running to look up your input and then change the script accordingly.

a diagnostic script may look like this:



When you have multiple MIDI devices connected you may need to change midi[X] to the correct port number of the desired device.

I hope this necro is warrantable and it will help someone :D

EDIT:
BTW: FreePIE has android support as well. If I find some motivation and time, I'll try to get my android smartphone into a throttle as well and post a how-to. I'll post the solution in another thread in the actual Elite Dangerous forum because that'll be more software than hardware.

EDIT2:
You can only use the gyro of the phone - not the touchscreen. So no FreePIE smartphone throttle for now.

Hi there,

I really appreciate this last post, as it got me started with being able to map my MIDI expression pedal to the throttle up/down function in ED.
I was wondering if you could expand on that a bit and show an example of how you could map different MIDI Control Channels (still on the same single MIDI device) to different vJoy buttons/axes?
The example script you have up there pretty much reads every MIDI input on my MIDI device the same way and moves the vJoy slider.

That diagnostic script is useful and lets me see which MIDI channels are being read, but I am not sure how to write the script out to assign these channels to vJoy buttons/axes.
I'm not sure proficient with coding/scripting, so any help is greatly appreciated!
 
Hi there,

I really appreciate this last post, as it got me started with being able to map my MIDI expression pedal to the throttle up/down function in ED.
I was wondering if you could expand on that a bit and show an example of how you could map different MIDI Control Channels (still on the same single MIDI device) to different vJoy buttons/axes?
The example script you have up there pretty much reads every MIDI input on my MIDI device the same way and moves the vJoy slider.

That diagnostic script is useful and lets me see which MIDI channels are being read, but I am not sure how to write the script out to assign these channels to vJoy buttons/axes.
I'm not sure proficient with coding/scripting, so any help is greatly appreciated!

I would guess you need to make an "if statement" to read only the right control buffer.

Let's say you have two midi sliders. With the diagnostic script you see the following:
One is MIDI Control Channel 19 (midi[0].data.buffer[0] = 19) and the value in buffer[1] goes from 0 to 127. The other one is MIDI Control Channel 20 (midi[0].data.buffer[0] = 20) with the same values.

To read only buffer[1] when midi channel 19 is active I guess this could work:

Code:
[COLOR=#0000ff][B]def[/B][/COLOR] [COLOR=#191970][B]update[/B][/COLOR]():[INDENT][COLOR=#0000ff][B]if[/B][/COLOR] midi[[COLOR=#00008b]0[/COLOR]].data.buffer[[COLOR=#00008b]0[/COLOR]] == [COLOR=#00008b]19[/COLOR]:
[/INDENT]
[INDENT=2]vJoy[[COLOR=#00008b]0[/COLOR]].slider = filters.[COLOR=#191970][B]mapRange[/B][/COLOR](midi[[COLOR=#00008b]0[/COLOR]].data.buffer[[COLOR=#00008b]1[/COLOR]], [COLOR=#00008b]0[/COLOR], [COLOR=#00008b]127[/COLOR], [COLOR=#00008b]17873[/COLOR], -[COLOR=#00008b]17873[/COLOR])

[/INDENT]
[COLOR=#0000ff][B]if[/B][/COLOR] starting:[INDENT]midi[[COLOR=#00008b]0[/COLOR]].update += update
[/INDENT]


To assign different joystick axis, just change vJoy[0].slider to another value. FreePIE has autocomplete, so you should see all possible inputs. For example, in the example above, if you want 19 to be the x axis and 20 to be the y axis you could try this:
Code:
[COLOR=#0000ff][B]def[/B][/COLOR] [COLOR=#191970][B]update[/B][/COLOR]():[INDENT][COLOR=#0000ff][B]if[/B][/COLOR] midi[[COLOR=#00008b]0[/COLOR]].data.buffer[[COLOR=#00008b]0[/COLOR]] == [COLOR=#00008b]19[/COLOR]:
[/INDENT]
[INDENT=2]vJoy[[COLOR=#00008b]0[/COLOR]].x = filters.[COLOR=#191970][B]mapRange[/B][/COLOR](midi[[COLOR=#00008b]0[/COLOR]].data.buffer[[COLOR=#00008b]1[/COLOR]], [COLOR=#00008b]0[/COLOR], [COLOR=#00008b]127[/COLOR], [COLOR=#00008b]17873[/COLOR], -[COLOR=#00008b]17873[/COLOR])
[/INDENT]
[INDENT][COLOR=#0000ff][B]if[/B][/COLOR] midi[[COLOR=#00008b]0[/COLOR]].data.buffer[[COLOR=#00008b]0[/COLOR]] == [COLOR=#00008b]20[/COLOR]:
[/INDENT]
[INDENT=2]vJoy[[COLOR=#00008b]0[/COLOR]].y = filters.[COLOR=#191970][B]mapRange[/B][/COLOR](midi[[COLOR=#00008b]0[/COLOR]].data.buffer[[COLOR=#00008b]1[/COLOR]], [COLOR=#00008b]0[/COLOR], [COLOR=#00008b]127[/COLOR], [COLOR=#00008b]17873[/COLOR], -[COLOR=#00008b]17873[/COLOR])
[/INDENT]

[COLOR=#0000ff][B]
if[/B][/COLOR] starting:[INDENT]midi[[COLOR=#00008b]0[/COLOR]].update += update
[/INDENT]


Maybe you have to tinker with the values a bit to make better deadzones etc.

Buttons can be addressed with the vJoy[0].setButton command. For example pressing button 1 would be
Code:
vJoy[[COLOR=#00008b]0[/COLOR]].[COLOR=#191970][B]setButton[/B][/COLOR] ([COLOR=#00008b]0[/COLOR],[COLOR=#0000ff]True[/COLOR])

You could do if...else statements to work on those. Lets say Control 18 is a button and either has value 0 or 1:
Code:
[COLOR=#0000ff][B]if[/B][/COLOR] midi[[COLOR=#00008b]0[/COLOR]].data.buffer[[COLOR=#00008b]0[/COLOR]] == [COLOR=#00008b]18[/COLOR]:[INDENT][COLOR=#0000ff][B]if[/B][/COLOR] midi[[COLOR=#00008b]0[/COLOR]].data.buffer[[COLOR=#00008b]1[/COLOR]] == [COLOR=#00008b]1[/COLOR]:[/INDENT]
[INDENT=2]vJoy[[COLOR=#00008b]0[/COLOR]].[COLOR=#191970][B]setButton[/B][/COLOR] ([COLOR=#00008b]0[/COLOR],[COLOR=#0000ff]True[/COLOR])
[/INDENT]
[INDENT][COLOR=#0000ff][B]else[/B][/COLOR]:
[/INDENT]
[INDENT=2]vJoy[[COLOR=#00008b]0[/COLOR]].[COLOR=#191970][B]setButton[/B][/COLOR] ([COLOR=#00008b]0[/COLOR],[COLOR=#0000ff]False[/COLOR])
[/INDENT]

I hope this helps! (And you actually read this :p)
 
Last edited:
Hi there,

I really appreciate this last post, as it got me started with being able to map my MIDI expression pedal to the throttle up/down function in ED.
I was wondering if you could expand on that a bit and show an example of how you could map different MIDI Control Channels (still on the same single MIDI device) to different vJoy buttons/axes?
The example script you have up there pretty much reads every MIDI input on my MIDI device the same way and moves the vJoy slider.

That diagnostic script is useful and lets me see which MIDI channels are being read, but I am not sure how to write the script out to assign these channels to vJoy buttons/axes.
I'm not sure proficient with coding/scripting, so any help is greatly appreciated!

I know this is an old post but I was wondering if anyone has a full script file for this ? because I don't know anything about python but I want it to work with my akai lpd8. Thanks in advance
 
Back
Top Bottom