sukibabyandteejusb 6f497f70e7 Use SetPosition_hard instead of SetPosition_toc for the mp3 position, remove dependency on accurate sync boolean
Resolves #610.

`RageSoundReader_MP3` has three different methods of setting the position. The default choice of `SetPosition_toc` is unable to provide an accurate result. The reason Edit Mode has such a severe desync when working with MP3's is due to the preference of using `SetPosition_toc`.

We can prevent this by using `SetPosition_hard` which works very well.  Judging by comments in the file, it seems like `SetPosition_hard` was too resource intensive to use as the default method, 20+ years ago.

The only downside is, if you start from an arbitrary position (which is **only** possible in Edit Mode), you have a few milliseconds of corrupted audio, but then the sync is perfect.  You can hear this in the demonstration video below.

When we start from the beginning of a file, such as playing a song, or using `Play whole song` in edit mode, `MADLIB_rewind` will be used.

`SetPosition_hard` provides an accurate result, and is consistent with the offset provided by `MADLIB_rewind`. The result is a consistent sync experience whether the MP3 is started from the beginning, or from an arbitrary position midway thru the file.

The `m_bAccurateSync` boolean dependency has been removed from SetPosition since it does not seem to provide any benefit on modern hardware. It seems fine to remove it so that we can call `MADLIB_rewind` or `SetPosition_hard` as fast as possible.

In my testing I never got `SetPosition_estimate` to be used, but I've left it in as a backup option.
2025-03-02 22:21:30 -08:00
2025-03-02 08:41:35 -08:00
2011-09-07 17:42:29 -05:00
2013-07-18 17:41:10 -04:00
2025-01-05 16:30:48 -08:00
2012-07-20 12:08:54 -07:00
2025-03-02 12:05:52 -08:00
2022-05-28 11:21:13 +02:00
2024-09-03 21:19:57 -07:00
2024-10-06 17:43:13 -07:00
2024-08-26 17:31:08 -07:00
2024-08-26 10:52:19 -07:00
2022-06-29 21:26:52 +02:00
2019-09-08 13:05:52 +02:00
2024-10-06 17:43:13 -07:00
2022-06-03 19:47:45 +02:00
2024-09-20 15:45:53 -07:00
2024-12-01 14:31:33 -08:00

ITGmania

ITGmania is a fork of StepMania 5.1, an advanced cross-platform rhythm game for home and arcade use.

Continuous integration

Changes to StepMania 5.1

  • Built-in network functionality
  • Fully 64-bit, optimized for modern OSes
  • Reload new songs from within the song select screen
  • The mine fix applied (courtesy of DinsFire64)
  • Held misses tracked in the engine for pad debugging
  • Fixed overlapping hold bug
  • Per-player visual delay
  • Per-player disabling of timing windows
  • New preference to control note render ordering
  • Increased the Stats.xml file size limit to 100MB
  • Changed the default binding for P2/back from hyphen to backslash

Installation

You can choose between using the installer or using the portable build. Using the installer is recommended, because it makes upgrading to new versions easier.

Windows

Windows 7 is the minimum supported version.

  • You will likely have to manually allow the installer to start.

macOS

macOS users need to have macOS 11 (Big Sur) or higher to run ITGmania.

  • Move ITGmania.app to the Applications folder, and then run the following command in Terminal:

    • xattr -dr com.apple.quarantine /Applications/ITGmania
  • You should then add ITGmania to the "Input Monitoring" section of System Preferences (under Security & Privacy)

Linux

Linux users should receive all they need from the package manager of their choice.

  • Debian-based:

    • sudo apt install libgdk-pixbuf-2.0-0 libgl1 libglvnd0 libgtk-3-0 libusb-0.1-4 libxinerama1 libxtst6
  • Fedora-based:

    • sudo yum install gdk-pixbuf2 gtk3 libusb-compat-0.1 libXinerama libXtst
  • Arch Linux:

    • sudo pacman -S mesa gtk3 libusb-compat libxinerama libxtst llvm-libs
  • OpenSUSE:

    • OpenSUSE comes with everything you need pre-installed.

Build From Source

ITGmania can be compiled using CMake. More information about using CMake to build ITGmania can be found in both the Build directory and CMake's documentation.

Resources

Licensing Terms

ITGmania, as well as the Simply Love theme, are both under the GPLv3 license, or at your option, any later version.

If ITGmania code is used in your project, we would also appreciate it if you link back to ITGmania as well as StepMania.

For specific information/legalese:

  • All of our source code is under the GPLv3 license.
  • Songs included within the 'StepMania 5' folder are under the CC-NC license.
  • Simply Love is licensed under the GPLv3, or, at your option, any later version.
  • The copyright for songs in the 'Club Fantastic' folders rests with the original authors. The content is explicitly NOT placed under a Creative Commons license (or similar license), but has been provided free of charge, for personal or public use, including online broadcasting, tournaments, and other purposes. Go to the Club Fantastic website for more information.
  • The MAD library and FFmpeg codecs when built with our code use the GPL license.

Credits

ITGmania Team

  • Martin Natano (natano)
  • teejusb

Contributors

S
Languages
C++ 85.7%
Lua 4.3%
C 4.3%
Rich Text Format 2.3%
CMake 1.1%
Other 2%