Skip to content

Repository files navigation

AC Rally Pacenote Pal

Pacenote Pal is an application for Assetto Corsa Rally that replaces the in-game codriver with an external one. This way you can use custom voices, edit the pacenotes per stage, and change the timing.

A demo can be found here: https://www.youtube.com/watch?v=VI0bbsEnCY0
Seeing it in action: https://www.youtube.com/watch?v=n4uWh0Z00i8

How it works

  1. Set the audio for the in-game spotter to 0%
  2. Start the program
  3. Select your stage or select "-- Automatically select stage --" to let Pacenote Pal load the correct pacenotes file
  4. Press start

Adding a voice can be done by adding a folder in the folder voices. Changing the pacenotes can be done by editing the YAML files in the pacenotes folder, or adding a new file.

Changing settings

In the UI

Settings can be changed by clicking the "Settings" button in the UI.

Manually

All settings can be found in the config.yml file. You can change them by right-clicking on the file and selecting "Edit in Notepad". Changes only come into effect after restarting the application.

Creating your own pacenotes by hand

A pacenote consists of three things:

  1. distance - This is the distance into the stage for this pacenote in metres. Press the "Odometer" button to show the current distance, this window will stay on top of the game if set to windowed or borderless. The codriver will call out this pacenote some time before the pacenote (depending on your settings), so this should be where the corner/obstacle/thing actually is.
  2. link_to_next - Whether when the notes from the current pacenote are called out, the next one will be called out immediately after it as well.
  3. notes - A list of the audio files to call out at this pacenote. The notes are the audio files from the voices folder, and you can also add your own audio files if you want notes that are not in the game (e.g. sumppu). If the file does not exist it will be skipped. The audio files have to be .wav. Additionally, you can add fixed pauses by adding PauseX.Ys, e.g. Pause1.5s to pause for 1.5 seconds. The file names are case-sensitive.

The easiest way is to use the pacenote editor. You can also do it manually.

Pacenote Editor

Load an existing file from the box on the top left, and select the voice to use. The voice influences the example that plays, and highlights which notes are missing from the audio. You can also type freely into this textbox.

The first column is for removing the note, the second column for the distance in metres (see the odometer for your current distance in the stage), it automatically reorders them based on the distance. The third column is whether this note should be linked to the next. The fourth column are the notes that it should play, and their ordering. The fifth column shows which audio files the pacenote is translated to, and allows you to play a demo of what it will sound like in the stage. Missing files will be highlighted in red.

Pacenote Editor

Tips for recording pacenotes

Everyone likes to make their pacenotes in their own way. Here are some ways that you can use to record your pacenotes:

  • Using a program like OBS Studio or the XBOX Game Bar, you can record your run in ACR, calling out which pacenotes you think should happen where. Keep Pacenote Pal's odometer on screen and inside the recording area, so that later you can put the recording side-by-side with the Pacenote Pal editor.
  • You can also use the pacenote editor directly while on the stage. Like the odometer it stays on top if the game is in windowed or borderless mode. Using the odometer you can create your pacenotes as you go along.

Manually

Create an empty YAML file for your pacenotes in the pacenotes folder, e.g. My Notes.yml. Add a single empty pacenote to it and save the file, i.e.:

- distance: 0
  link_to_next: false
  notes: []

When you (re)start Pacenote Pal, you should see the file in the list. Select it and press start. Now you can start the stage as normal and start making your pacenotes.

The pacenote editor can help verify that the pacenotes you entered are the ones you intended, and you did not make typos or other errors.

Creating your own voices

Create a folder in the folder voices. The name of the folder will be the name of your voice. Add all the .wav files for the notes. The default list the game uses is:

After, AfterCrossroad, AfterEnd, AfterJunction, AfterTheSign, AfterTheSigns, And, AroundBale, AroundBarrel, AroundPole, AroundSign, AroundSigns, AroundTyres, Asphalt, AtJunction, AtTheBale, AtTheBarrel, AtTheCrossroad, AtTheGate, AtTheHouse, AtThePoles, AtTheRail, AtTheRoundabout, AtTheSign, AtTheSigns, AtTheTyres, BadCamber, Bale, Barrel, BigCrest, BigCut, BigDip, Blind, Brake, Bridge, Bump, Bumps, Caution, CautionInside, CautionOutside, Chicane, Cobbles, Concrete, Crest, Crossroad, Cut, CutIn, Dip, Dist100, Dist130, Dist150, Dist170, Dist200, Dist250, Dist300, Dist350, Dist40, Dist400, Dist50, Dist60, Dist70, Dist80, Dist90, Ditch, DitchInside, DitchOutside, Dont, DontCut, Down, Downhill, Early, Finish, FlatCrest, FlatOut, Ford, Gate, GoLeft, GoRight, GoStraight, Gravel, Handbrake, HeavyBrake, Hidden, Hole, Holes, Ice, Immediate, Inside, Into, IntoDip, Jump, JumpBig, JumpMaybe, JumpSmall, Junction, KeepIn, KeepLeft, KeepMiddle, KeepOut, KeepRight, Kinks, KinksStartingLeft, KinksStartingRight, Late, Left1, Left2, Left3, Left4, Left5, Left6, LeftAcuteHP, LeftChicane, LeftChicaneEntry, LeftFlat, LeftHP, LeftKink, LeftOpenHP, LeftRight, LeftSquare, Logs, LogsInside, LogsOutside, Long, LongStraight, Loose, LoseGravel, Minus, Mud, Narrows, NarrowsInside, NarrowsLeft, NarrowsOutside, NarrowsRight, OnAsphalt, OnCobbles, OnConcrete, OnGravel, OnIce, OnLooseGravel, OnPavement, OnSnow, OnSnowAndIce, Opens, OpensLate, Outside, Over, OverBigJump, OverBridge, OverBump, OverBumps, OverCrest, OverJump, OverJumpSmall, Pavement, Plus, Pole, Pothole1, Pothole2, Potholes1, Potholes2, Right1, Right2, Right3, Right4, Right5, Right6, RightAcuteHP, RightChicane, RightChicaneEntry, RightFlat, RightHP, RightKink, RightLeft, RightOpenHP, RightSquare, Rock, Rocks, RocksInside, RocksOutside, Rough, Roundabout, Ruts, Short, Sign, Signs, Slippery, SlowDown, SmallCrest, SmallCut, Snow, SnowAndIce, StopAtMarshals, Sudden, SuddenLeft, SuddenRight, Threes, ThreesInside, ThreesOutside, ThroughGate, ThroughTunnel, ThroughWater, Tighten1, Tighten2, Tighten3, Tighten4, Tighten5, Tightens, TightensLate, Tree, TreeInside, TreeOutside, Tunnel, Tyres, UnderBridge, Up, UpHill, VeryLong, VeryLongStraight, Water, WaterSplash, Wet, Widens, WidensInside, WidensLeft, WidensOutside, WidensRight, Yes

I'm aware there are typos in that list (e.g. ThreesOutside), but that matches what ACR uses internally as well.

If a file is missing, it will be skipped. It is also possible to add multiple variants of a note by doing e.g. After.wav, After_1.wav, After_2.wav. It will randomly pick one of the options.

It is also possible to add files that are not in this list (e.g. Sumppu.wav). They will not appear in the default pacenotes, but can be used in custom pacenotes.

ACR uses 6 for the widest turn and 1 for the tightest turn. Depending on the voice you could make the audio for Left6 sound like "1 Left", "Fast Left", or something else instead to make it work with the default pacenotes.

It is possible to create a combination of notes by chaining them using a dash (-). This way it is possible to create e.g. Into-Left6.wav which will play for the pacenote [Into, Left6] rather than Into.wav and Left6.wav. There is no limit to this, so Into-Left6-And-Right5-VeryLong.wav will also work. It is also possible to create multiple options for this by adding a _1, _2, etc., like Into-Left6_2.wav. It will pick one at random. When one is used it will also show in the Pacenote Editor. They will not be shown as one note in the Pacenote Editor.

Custom notes should ideally consist of letters and numbers. Please use the UpperCamelCase convention, and avoid names with only numbers and special characters. The wave files should be PCM signed 16-bit little-endian, with one channel and a sampling rate of 44100 Hz.

You can add translations to the notes for the notes in the Pacenote Editor by creating a dictionary.yml file and adding a list of Translation: FileName pairs, e.g. Links 6: Left6. Translations must be unique, and every file can have only one translation.

Custom voices

These are custom voices others made that work with Pacenote Pal. If you made one as well, and you want it added to the list, send me a message :-)

Name URL
Maciek Handwerker (Polish) https://www.patreon.com/posts/assetto-corsa-144820495
Polish https://www.youtube.com/watch?v=87DIPBfmpts
Polish Stilo https://www.overtake.gg/downloads/polish-stilo-intercom-co-driver-voice-pack.85489/
Russian https://kupvadim.github.io/game-notes/Games/Assetto%20Corsa%20Rally/PacenotePal_VadimInGame_RU/
Paul Coleman (English) https://www.patreon.com/posts/144292538?collection=1852289
Lucato (Italian) https://www.youtube.com/watch?v=4i1QHbwA8FI
Czech Bbuchy https://www.overtake.gg/downloads/czech-co-driver.82985/
Czech czbf https://www.overtake.gg/downloads/czech-voice-nav-by-czbf.85375/
Korean https://www.patreon.com/posts/aseto-koreusa-ac-144278418

Thanks to

About

A custom pacenote app for Assetto Corsa Rally

Resources

Stars

13 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages