Skip to content

Companion

adosikas edited this page Apr 11, 2023 · 5 revisions

annotated screenshot of the notes tab

Usage

The companion is a application that is designed to stay open parallel with the editor, eg. on a second screen (but alt-tabbing works fine too).

To open it, drag a .synth file onto the smh_companion.bat.You can place the smh_companion.bat anywhere (ie the CustomSongs folder) and its location determines where the backups and output.synth will be stored.
You can also configure Windows via "Open With" to automatically open the companion when you doubleclick a map (point it to the .bat).
Another option is having the .bat in one location, and creating shortcuts to it. Dragging .synth files onto the short will work.

Plot Tab, Difficulty and Platform

You can use the three radio-buttons to select the data you want to look at. The selection platform is only relevant for the walls tab and has no effect on the notes tab.

Note that while most of the calculation is done when (re)loading the map, it still takes some time to draw all the plots, so avoid spamming them.

Zooming

You press the Drag or Zoom buttons (in my screenshot they are at the top, but they may also be at the bottom of the window), to get a closer look at parts of the plot. Note that the time axis is linked between all plots.

In addition to the "obvious" left mouse button, the right mouse button also works in both modes, but the behavior is hard to describe in text - I recommend just trying it out yourself.

You can use the Home button to zoom out again.

Notes Tab

This shows the X (+=right) and Y (+=up) position of notes (as defined in the Glossary), as well as plots of velocity and acceleration over time.

You may want to investigate sudden spikes to see if there is a misplaced note or a sharp jump/turn where you didn't expect one.

I am not quite how velocity and acceleration can best be used for mapping. If you want to give input on this section, feel free to create an Issue.

Walls Tab

First of all, thanks to Marinus for doing most of the research on how walls render (or not) on quest.
Second, there are still some uncertainties, so unfortunately this is just a guideline and may not reflect how it actually works in the game. So right now you still have to try it out to find out how exactly it renders.

The top plot shows how many walls of a given type would be rendered at any given time (The game always renders objects for the upcoming 4 seconds). If you exceed the limit (80 on PC, 40 on Quest), earlier walls will despawn, which can create nice animations.

The bottom plot shows the state for each wall. Each wall type has its own row in the plot, as well as a unique symbol which matches the shape of the wall with some imagination.

  • Green symbols: These walls will likely render and stay visible until they pass the player
  • Orange symbols: These walls will likely render, but despawn before reaching the player due to the wall limit
  • Red symbols (Only when Quest is selected): These walls will likely not render, as they are less than 50 ms after another wall of the same type

Note that the symbols are drawn in order of importance, so red symbols may cover the others and you may want to zoom in to get a better look.

Note that the 50 ms delay is not perfect. First of all this assumes that all quest players will have wall density at the maximum, and also there appears to be some rounding errors (?), making walls with 45-55 ms delay show up on quest seemingly randomly.
Further research is needed here for a more accurate classification, feel free to create an Issue if you have information to share.

Heatmap Tab

heatmap

This shows you the heatmap of positions for the four different note types, as well as the average position (the x).

You can configure this via these command line options (you may add them to call the smh_companion.bat):

  • --interpolation=1/16 changes the number of positions per beat. If you have fast rails, may you want to increase this to avoid "skipping" in the heatmap (like in the screenshot above for the green plot)
  • --heatmap-bin-count=5 changes the number of bins per grid square, leading to "more pixels".
  • --heatmap-norm-power=0.6 modifies the curve used to calculate the color from the density. You can use this to make rare positions more or less visible compared to often used positions.

AutoReload

The companion automatically detects when you save the map in the editor and updates the plots when AutoReload is enabled.
This is indicated by the AutoReload button having a green color.
You can of course also manually reload.

AutoBackup

When AutoBackup is enabled, and the last backup was more than the minimum age ago, a timestamped backup will be created on reload, by default in a smh_backup directory located where the smh_companion.bat is executed from.
The AutoBackup button will be green when enabled, and the slider below can be used to configure the interval (can be 0 to backup on every save).
Below the slider, the time of last reload and backup are displayed.

Finalize & Output

Pressing Finalize and then Output will create a output.synth file where the smh_companion.bat is located.

Note: This works this way so we don't overwrite the input file, as that may still be opened by the editor. You can currently change the output filename by editing the smh_companion.bat

Finalizing has the following effects:

  • The walls are moved such that they appear in the game like they appear in the editor
  • A "#smh_finalized" bookmark is added at the start such that finalized maps can be recognized in the editor and by the companion.

Note: If you have any additional ideas on what would make sense here, feel free to create an Issue.

You can also "UnFinalize" maps if you want to undo the above and work on them them further (the button will change text to reflect the detected state), but instead I recommend keeping the original (before finalizing) around and continuing from there.