Question about groove effect in ForceTest.exe

Discussions and general chat

Moderator: RussDirks

Post Reply
jmirage
Posts: 2
Joined: Sun Feb 21, 2021 4:24 am

Question about groove effect in ForceTest.exe

Post by jmirage » Sun Feb 21, 2021 4:33 am

Hi!

I have been working on my own DirectX Force Feedback driver that I'm using with an Arduino. I have the device almost ready and I was testing with ForceTest.exe if I got everything working.

I have a problem in the Groove effect that I'm finding difficult to debug. In my device it just vibrates very fast. I have detected it's a Sine Force effect with a fast frequency but I don't know what exactly makes it stop with an specific frequency.

Does anyone know exactly how this parameter is generated? Ideally I'd love to know all details of it like frequency, phase, period, etc.

Thanks!

RussDirks
Site Admin
Posts: 694
Joined: Sat Sep 13, 2003 1:18 pm
Location: Chilliwack, Canada

Re: Question about groove effect in ForceTest.exe

Post by RussDirks » Sun Feb 21, 2021 5:00 am

Hi. I had to go dig up my code to find out how I did that, lol. The effect is 1/2 of a sine wave. So the duration of the effect is 1/2 the period of the sine wave. The effect is set to play infinitely, and the dwStartDelay value is set to the time space between pulses. I'm assuming your familiar with the DirectInput FF SDK.

I remember there was an issue with Saitek joysticks, because their driver implemenations did not properly implement the dwStartDelay value, so it would just vibrate very fast, like what you are describing. So I had to detect Saitek controllers and use a timer instead to do the short pulses with a delay in between.

What kind of FF device are you building?
Russel Dirks
Forum Moderator

jmirage
Posts: 2
Joined: Sun Feb 21, 2021 4:24 am

Re: Question about groove effect in ForceTest.exe

Post by jmirage » Sun Feb 21, 2021 5:27 am

Oh that sounds really helpful! I'm sure this will be enough to debug the issue. Thanks a lot!

I'm implementing a sketch for Arduino that basically makes it work as a hardware version of VJoy. You can query that device and get the current strength of the force for the x and y axes.
The main use for me is to create an adapter to make the Brunner base work as a DirectX joystick

Post Reply