Offical release of Crew chief version 4 - auto updating and shiny

Discussion in 'Community Workshop' started by mr_belowski, Jul 29, 2015.

  1. mr_belowski

    mr_belowski Well-Known Member Beta tester

    Joined:
    Apr 23, 2015
    Ratings:
    +1,194 / 0
    This is my little Crew Chief application, which works for most modern racing games, but Raceroom is the best supported because it's the best game. The app changes a lot so this post may contain incomplete information, but I'll try and keep it reasonably accurate.

    This application runs in the background while you play RaceRoom. It reads data from the Shared Memory block that RaceRoom writes to, and it uses it to trigger audio messages. To run this windows 7 and 8 / 8.1 users will need to install the .Net framework version 4.5 or higher. It works out-of-the-box on windows 10.

    Download V4 here:

    http://crewchief.isnais.de/CrewChiefV4.msi

    This is an MSI installer which your browser will probably warn you about - "not commonly downloaded and could be dangerous". This is simply because the .msi file isn't digitally signed - there's nothing I can do about this at the moment.

    And a massive Thankyou to Robert Winkler from these very forums for the hosting awesomeness.


    Here's a video of an older version, with some DTM 2014 action with me using the app but being too engrossed in the race to ask it many questions..



    The app includes many driver name recordings for AI drivers. For those with a mic, the app also has speech recognition - you can ask it stuff.


    Righty, here's the readme....



    CrewChief version 4.

    Changelog
    ---------
    Version 4.8.x.x loads of stuff
    ....[to long to post here]


    Known Issues Which Aren't Fixable
    ---------------------------------
    Joining a session part way through (practice or qualify session online) will result in the app having an incomplete set of data for opponent lap and sector times. In such cases the best opponent lap and sector data is inaccurate. For Raceroom we can get the fastest opponent lap time, but if this lap was completed before the app was running, the sectors within that lap aren't accessible. In this case the pace report will include the lap time delta, but there'll be no sector delta reports. As soon as an opponent sets a faster lap, the app will have up to date best lap data so the pace and sector reports will be accurate and complete.


    RaceRoom uses a 'slot_id' field to uniquely identify drivers in a race. However, this field doesn't really work properly (there are lots of issues with it), so the app has to use the driver's names. Driver names for AI driver are not unique. All the lap time and other data held for each driver is indexed by driver name so if a race has 2 or more drivers with the same name, the app will get things like lap and sector times wrong. This is only a problem racing the AI - be aware that if you have a car class with a limited number of unique AI drivers (German Nationals / Americal Nationals / Hill Climb Legends / etc), but select a field size greater than this, the app will do weird things.

    RaceRoom doesn't have a pre-start procedure phase for offline races, and in the pre-start phase online ("Gridwalk") very little valid and accurate data is available, so there are no messages about pit window, race position, etc before the lights come on.

    Detecting 'good' passes isn't really feasible. I've tried to limit the 'good pass' messages to overtakes that are reasonably 'secure', don't result in the other car slowing excessively, and don't involve the player going off-track. I can't, for example, tell the difference between a clean pass and a bump-and-run punt, so you might get congratulated for driving like a berk.


    Quick start
    -----------
    Windows 7 and 8 / 8.1 users will need to install .net 4.5 to use the app. This is already part of windows 10. Download the CrewChiefV4.msi installer and install the app. This will create a start menu shortcut - use this to run the app. On the first run, you'll be prompted to download the sounds and driver name packs (the big green buttons). Once this is done the app will ask to be restarted, then you're good to go.

    One Windows 10 user reported that, once he'd installed the app, he had to run the app as administrator the first time he launched. Try this if the app fails to run first time.


    Running with voice recognition
    ------------------------------
    If you want to use voice recognition, download the correct speech recognition installers for your system (speech_recognition_32bit.zip or speech_recognition_64bit.zip).

    The 64 bit installers are here:
    https://drive.google.com/file/d/0B4KQS820QNFbY05tVnhiNVFnYkU/view?usp=sharing

    The 32 bit installers are here:
    https://drive.google.com/file/d/0B4KQS820QNFbRVJrVjU4X1NxSEU/view?usp=sharing

    Alternatively, the Microsoft download links are, for the runtime installer (do this one first)
    https://www.microsoft.com/en-gb/download/details.aspx?id=27225

    For the language packs (use which ever en-XX best suits your location / accent)
    https://www.microsoft.com/en-us/download/details.aspx?id=27224


    Run SpeechPlatformRuntime.msi (this is the MS speech recognition engine), then run MSSpeech_SR_en-GB_TELE.msi or MSSpeech_SR_en-US_TELE.msi depending on your preferred accent (these are the 'cultural info' installers). If you want to use US speech recognition (MSSpeech_SR_en-US_TELE.msi) you must modify the "speech_recognition_location" property to "en-US". This can be done by modifying the property value in the application's Properties area. If you're happy with en-GB you don't need to do anything other than run the 2 speech recognition installers.

    For speech recognition, you need a microphone configured as the default "Recording" device in Windows.

    To get started, run the app and choose a "Voice recognition mode". There are 3 modes (the radio buttons at the bottom right). "Disabled" means that the app won't attempt any speech recognition. "Hold button" means you have to hold down a button while you speak, and release the button when you're finished. "Toggle button" means you press a button once to start the speech recognition, and the app will continue to listen and process your spoken requests until you press the button again to switch it off (while the app is listening you can make as many voice requests as you like, you don't need to toggle speech recognition off and back on again if you want to ask another question). "Always on" means the app is always listening for and processing speech commands. Selecting "Disabled" or "Always on" from this list makes the app ignore the button assigned to "Talk to crew chief".

    If you want to use Hold button or Toggle button mode, select a controller device ("Available controllers" list, bottom left), choose "Talk to crew chief" in the "Available actions" list and click "Assign control". Then press the button you want to assign to your radio button.

    You need to speak clearly and your mic needs to be properly set up - you might need to experiment with levels and gain (Microphone boost) in the Windows control panel. If he understood he'll respond - perhaps with helpful info, perhaps with "we don't have that data". If he doesn't quite understand he'll ask you to repeat yourself. If he can't even tell if you've said something he'll remain silent. There's some debug logging in the main window that might be useful.

    The list of voice commands grows all the time. The list below is incomplete - I'll update it soon:

    "how's my [fuel / tyre wear / body work / aero / engine / transmission / suspension / pace ]"
    "how are my [tyre temps / tyre temperatures / brakes / brake temps / brake temperatures / engine temps / engine temperatures]" (gives a good / bad type response)
    "What are my [brake temps / tyre temps]" (gives the actual temps)
    "what's my [gap in front / gap ahead / gap behind / last lap / last lap time / lap time / position / fuel level / best lap / best lap time]"
    "what's the fastest lap" (reports the fastest lap in the session for the player's car class)
    "keep quiet / I know what I'm doing / leave me alone" (switches off messages)
    "keep me informed / keep me posted / keep me updated" (switches messages back on)
    "how long's left / how many laps are left / how many laps to go"
    "spot / don't spot" (switches the spotter on and off - note even in "leave me alone" mode the spotter still operates unless you explicitly switch it off)
    "do I still have a penalty / do I have a penalty / have I served my penalty"
    "do I have to pit / do I need to pit / do I have a mandatory pit stop / do I have a mandatory stop / do I have to make a pit stop"
    "where's [opponent driver last name]"
    "what's [opponent driver last name]'s last lap"
    "what's [opponent driver last name]'s best lap"
    "what's [opponent race position]'s last lap" (for example, "what's p 4's best lap", or "what's position 4's last lap")
    "what's [opponent race position]'s best lap"
    "what's [the car in front / the guy in front / the car ahead / the guy ahead]'s last lap"
    "what's [the car in front / the guy in front / the car ahead / the guy ahead]'s best lap"
    "what's [the car behind / the guy behind]'s last lap"
    "what's [the car behind / the guy behind]'s best lap"
    "what tyre(s) is [opponent driver last name / opponent race position] on" (DTM 2014 only - reports "options" or "primes")
    "what are my sector times"
    "what's my last sector time"
    "who's leading" (this one only works if you have the driver name recording for the lead car)
    "who's [ahead / ahead in the race / in front / in front in the race / behind / behind in the race]" (gives the name of the car in front / behind in the race or on the timing sheet for qual / practice. This one only works if you have the driver name recording for that driver)
    "who's [ahead on track / in front on track / behind on track]" (gives the name of the car in front / behind in on track, regardless of his race / qual position. This one only works if you have the driver name recording for that driver)
    "tell me the gaps / give me the gaps / tell me the deltas / give me the deltas" (switch on 'deltas' mode where the time deltas in front and behind get read out on each lap. Note that these messages will play even if you have disabled messages)
    "don't tell me the gaps / don't tell me the deltas / no more gaps / no more deltas" (switch off deltas mode)
    "repeat last message / say again" (replays the last message)
    "What are my [brake / tyre] [temperatures / temps]"
    "What time is it / what's the time" (reports current real-world time)


    Other button assignments
    ------------------------
    You can assign the 'toggle spotter on/off' and 'toggle race updates on/off' to separate buttons if you want to be able to toggle the spotter function and toggle the crew chief's updates on or off during the race. This doesn't require voice recognition to be installed - simply run the app, assign a button to one or both of these functions, and when in-race pressing that button will toggle the spotter or crew chief on and off.


    Properties
    ----------
    The settings can be accessed by clicking the "Properties" button in the app. This displays a popup window where you can tweak stuff if you want to. This interface is a bit rubbish but should let you tweak settings if you want to, although the properties are all (currently) undocumented. If you do change something in this interface, the app needs to restart to pick up the change - the "Save and restart" button should do this.

    Each property has a "reset to default" button, or if you get completely stuck you can close the app and delete the user configuration folder and it should reset everything.


    Custom controllers
    ------------------
    This is untested. If your controller doesn't show up in the list of available controllers you can set the "custom_controller_guid" property to the GUID of your controller device. If this is a valid controller GUID the app will attempt to initialise it an add it to the list of available controllers.


    Program start arguments
    -----------------------
    If you want to have the game pre-selected, start the app like this for RaceRoom: [full path]\CrewChiefV4.exe RACE_ROOM.
    This can be used in conjunction with the launch_pcars / launch_raceroom / [game]_launch_exe / [game]_launch_params and run_immediately options to set crew chief up to start the game selected in the app launch argument, and start its own process.

    If you want to run Crew Chief on your 4th CPU core only, and want have the application launch RaceRoom and start running immediately (i.e. just launch Crew Chief and everything else is done for you, no need to click anything else to start Crew Chief listening or launch RaceRoom) you first need to make a couple of Properties changes. Go to the properties screen and set the r3e_launch_exe" property to c:/games/steam/steam.exe (assuming steam is installed in c:/games), check the "launch_raceroom" option, and check the "run_immediately" option. Then create a shortcut to CrewChiefV4.exe with the parameters cpu4 and RACE_ROOM, so the "target" field in the short cut properties looks like this:

    "C:\games\CrewChiefV4\CrewChiefV4.exe" cpu4 RACE_ROOM


    Running on a single CPU
    -----------------------
    You can set the processor affinity for Crew Chief in TaskManager, but this will have to be done each time you start the app. Alternatively, you can start the app with an addition argument "cpu1", "cpu2", ... "cpu8", like this:
    [full path]\CrewChiefV4.exe cpu4
    this will set the processor affinity to the 4th CPU in your system (usually referred to as CPU3 - they're zero-indexed).


    Updating the app
    ----------------
    The app will tell you when there's a new version, or when the sound packs have been updated. App updates are handled by a 3rd party component which will download and execute a new installer. Sound updates are from within the app - just click the download button / buttons and the app takes care of it all.

    Donations
    ---------
    I made this because I wanted to make it and I enjoy making stuff. Working with the various quirks, errors and omissions in the shared data which the games provide hasn't been much fun, but it's all part of the challenge. Having said that, there are many many hours of hard work invested in this.
    If you use it and like it and it becomes a regular and positive part of your sim racing, I'd be grateful if you would consider making a small donation. If only to stop my wife from complaining at me.

    My paypal address and a handy "Donate" button are in my signature.


    Would be great to recoup some of the investment in making this, but the most important thing is that the app is used 'in anger' and enjoyed as part of the sim racing experience. To this end, I'm always on the lookout for bug reports and feature suggestions.

    One final point. If the app says "Jim is faster than you", let him through
     
    • Winner x 55
    • Like x 27
    • Wonderful x 22
    • Love it! x 16
    • Creative x 2
    • Agree x 1
    Last edited: Oct 25, 2017
  2. Gerbuho

    Gerbuho Well-Known Member

    Joined:
    Jun 7, 2015
    Ratings:
    +252 / 0
    Amazing! Hope to understand the installation procedures right. It's exciting to see if I'll be able to make it work, since english is not my language, a challenge in deed. I'll try it as soon as I set my rig a little later.

    Thanks man.

    Cheers.
     
  3. Bailey Lagstrum

    Bailey Lagstrum Well-Known Member

    Joined:
    Jan 29, 2015
    Ratings:
    +104 / 0
    Mrbelowski, we are indeed fortunate to have you in our little community. Thank you for all the time and effort you've put into making our great hobby even better!
    Bailey
     
    • Agree Agree x 10
    • Like Like x 1
  4. mr_belowski

    mr_belowski Well-Known Member Beta tester

    Joined:
    Apr 23, 2015
    Ratings:
    +1,194 / 0
    Anyone managed to get this working yet? The steps aren't as awkward as they sound, but I will make it simpler soon :)
     
    • Like Like x 2
  5. Gerbuho

    Gerbuho Well-Known Member

    Joined:
    Jun 7, 2015
    Ratings:
    +252 / 0
    I'll report in about half an hour. :)
     
  6. GooseCreature

    GooseCreature Well-Known Member

    Joined:
    May 30, 2015
    Ratings:
    +360 / 0
    Again concur, crew chief has been invaluable to me and this sounds fantastic, you mr_beloski are indeed an asset of ever increasing value to this sim (hope dev's value you as much) please keep up the good work!!
    Look forward to laying off the medication to try get head round using it, then again maybe Christmas dose is in order! o_O
     
  7. Rodger Davies

    Rodger Davies Well-Known Member

    Joined:
    Jan 29, 2015
    Ratings:
    +550 / 0
    No way......!!

    Might not be for a week, but I'm looking forward to giving this a try. You're adding functionalities that other studios haven't even considered, way to go.
     
    • Agree Agree x 4
    Last edited: Jul 29, 2015
  8. Gerbuho

    Gerbuho Well-Known Member

    Joined:
    Jun 7, 2015
    Ratings:
    +252 / 0
    Can't make it work. Everything ok up to step 4, but when I try to run CrewChiefV2.exe nothing happens. I think it's my pc though.

    Edit: I'll try doing it all over again.
     
    Last edited: Jul 29, 2015
  9. mr_belowski

    mr_belowski Well-Known Member Beta tester

    Joined:
    Apr 23, 2015
    Ratings:
    +1,194 / 0
    Weird... You got .net 4.0 or 4.5 installed?
     
    • Like Like x 1
  10. mr_belowski

    mr_belowski Well-Known Member Beta tester

    Joined:
    Apr 23, 2015
    Ratings:
    +1,194 / 0
    Also, you need to extract the contents of the zip file before running it
     
    • Like Like x 1
  11. nipzon

    nipzon Well-Known Member

    Joined:
    Jan 30, 2015
    Ratings:
    +55 / 0
    This is freaking me out reading this, awesome. This is more exciting than a free month and content from RRE.

    I can unfortunately only get to this in the afternoon, Aussie 16:00 time. Can't wait.
     
  12. Gerbuho

    Gerbuho Well-Known Member

    Joined:
    Jun 7, 2015
    Ratings:
    +252 / 0
    I don't know. :confused:
    First version of Crew Chief always working fine (if this information helps).

    Thanks.

    Edit: Did my homework and now I know, is 4.5.2 (DWORD 379893)
     
    Last edited: Jul 30, 2015
  13. mr_belowski

    mr_belowski Well-Known Member Beta tester

    Joined:
    Apr 23, 2015
    Ratings:
    +1,194 / 0
    4.5.2 should be fine. I'll see if I can work out what's wrong
     
    • Like Like x 1
  14. mr_belowski

    mr_belowski Well-Known Member Beta tester

    Joined:
    Apr 23, 2015
    Ratings:
    +1,194 / 0
    Just ran a couple of tests on my other box. If you run the app without having the speech recognition stuff installed, it doesn't run and the Windows Event Log (application events) contains the following .net error:

    Application: CrewChiefV2.exe
    Framework Version: v4.0.30319
    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.Runtime.InteropServices.COMException
    Stack:
    at Microsoft.Speech.Internal.ObjectTokens.RegistryDataKey..ctor(System.String, IntPtr)
    at Microsoft.Speech.Internal.ObjectTokens.RegistryDataKey.Open(System.String, Boolean)
    at Microsoft.Speech.Recognition.SpeechRecognitionEngine.InstalledRecognizers()
    at Microsoft.Speech.Recognition.SpeechRecognitionEngine..ctor(System.Globalization.CultureInfo)
    at CrewChiefV2.SpeechRecogniser.initialiseSpeechEngine()
    at CrewChiefV2.SpeechRecogniser..ctor(CrewChiefV2.CrewChief)
    at CrewChiefV2.MainWindow..ctor()
    at CrewChiefV2.Program.Main()


    If you install the speech recognition stuff but don't install the en-GB language pack you get the following .net error in the application event log:

    Application: CrewChiefV2.exe
    Framework Version: v4.0.30319
    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.ArgumentException
    Stack:
    at Microsoft.Speech.Recognition.SpeechRecognitionEngine..ctor(System.Globalization.CultureInfo)
    at CrewChiefV2.SpeechRecogniser.initialiseSpeechEngine()
    at CrewChiefV2.SpeechRecogniser..ctor(CrewChiefV2.CrewChief)
    at CrewChiefV2.MainWindow..ctor()
    at CrewChiefV2.Program.Main()



    After I've installed SpeechPlatformRuntime.msi and MSSpeech_SR_en-GB_TELE.msi is does work on my second box (which has never had these things installed or been used for any .Net development stuff).


    So I'm a bit confused as to why it's not working. Are you sure the two speech installers ran successfully?
     
  15. GooseCreature

    GooseCreature Well-Known Member

    Joined:
    May 30, 2015
    Ratings:
    +360 / 0
    Have just given V2 a quick check out, worked flawlessly (after boosting mike, lazy git!!) another gem from mr_belowski, at this rate my delusions of being a real racing driver appear (in my addled mind) to be coming to fruition! BOOM!! :D
     
  16. mr_belowski

    mr_belowski Well-Known Member Beta tester

    Joined:
    Apr 23, 2015
    Ratings:
    +1,194 / 0
    Thanks for the update fella, it's a relief to hear that it works on someone else's box.

    I'm sorting out the UI mess at the moment and trying to make it so it only depends on the speech recognition stuff if you choose to use it
     
  17. Der Kiebitz

    Der Kiebitz New Member

    Joined:
    Jul 30, 2015
    Ratings:
    +2 / 0
    Hi,
    installed both (Speech + UK-Pack), but nothing happened when I start V2, also.
    Framework 4 + 4.5 on Win7 64bit.
    1.9 runs great! Thanks for that again, Mr. B.!!!
     
  18. Gerbuho

    Gerbuho Well-Known Member

    Joined:
    Jun 7, 2015
    Ratings:
    +252 / 0
    Thanks a lot for your effort and taking the time to check it. I'm supposed to be doing everything right, but surely there must be something I'm not. I'll try again and check the logs later when I'm back form work (first day after vacation :confused:).

    Cheers.
     
  19. mr_belowski

    mr_belowski Well-Known Member Beta tester

    Joined:
    Apr 23, 2015
    Ratings:
    +1,194 / 0
    It'd be helpful if you could check your Windows Application event log and tell me what .Net errors are in there
     
  20. Der Kiebitz

    Der Kiebitz New Member

    Joined:
    Jul 30, 2015
    Ratings:
    +2 / 0
    Sure, but my log is german...
    Perhaps MS Framework is still to old?


    First LOG:

    Anwendung: CrewChiefV2.exe
    Frameworkversion: v4.0.30319
    Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
    Ausnahmeinformationen: System.InvalidOperationException
    Stapel:
    bei Microsoft.Speech.Recognition.RecognizerBase.LoadGrammar(Microsoft.Speech.Recognition.Grammar)
    bei CrewChiefV2.SpeechRecogniser.initialiseSpeechEngine()
    bei CrewChiefV2.SpeechRecogniser..ctor(CrewChiefV2.CrewChief)
    bei CrewChiefV2.MainWindow..ctor()
    bei CrewChiefV2.Program.Main()

    And this:
    Name der fehlerhaften Anwendung: CrewChiefV2.exe, Version: 1.0.0.0, Zeitstempel: 0x55b8e88d
    Name des fehlerhaften Moduls: KERNELBASE.dll, Version: 6.1.7601.18869, Zeitstempel: 0x556366fd
    Ausnahmecode: 0xe0434352
    Fehleroffset: 0x000000000000b3dd
    ID des fehlerhaften Prozesses: 0x1f68
    Startzeit der fehlerhaften Anwendung: 0x01d0cac2d9a4c4da
    Pfad der fehlerhaften Anwendung: C:\Users\me\Desktop\CrewChiefV2\CrewChiefV2.exe
    Pfad des fehlerhaften Moduls: C:\Windows\system32\KERNELBASE.dll
    Berichtskennung: 17fa9a2d-36b6-11e5-b771-50e54949e506

    And last:
    Fehlerbucket 33029030, Typ 30
    Ereignisname: CLR20r3
    Antwort: Nicht verfügbar
    CAB-Datei-ID: 0

    Problemsignatur:
    P1: CrewChiefV2.exe
    P2: 1.0.0.0
    P3: 55b8e88d
    P4: Microsoft.Speech
    P5: 11.0.7400.345
    P6: 4eddab75
    P7: a0c
    P8: 1c
    P9: System.InvalidOperationException
    P10:

    Angefügte Dateien:
    C:\Users\me\AppData\Local\Temp\WERE66A.tmp.WERInternalMetadata.xml

    Diese Dateien befinden sich möglicherweise hier:
    C:\Users\me\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_CrewChiefV2.exe_90fec1f034db50163779347a95f98cbba892dfba_1fdffc88

    Analysesymbol:
    Es wird erneut nach einer Lösung gesucht: 0
    Berichts-ID: 17fa9a2d-36b6-11e5-b771-50e54949e506
    Berichtstatus: 0


    Kind regards!