Metadata-Version: 2.1
Name: synth_mapping_helper
Version: 1.4.3
Summary: Toolbox for manipulating the JSON-Format used by Synth Riders Beatmap Editor in the clipboard
Author: adosikas
License: MIT License
        
        Copyright (c) 2024 adosikas
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/adosikas/synth_mapping_helper
Project-URL: Documentation, https://github.com/adosikas/synth_mapping_helper/wiki
Project-URL: Repository, https://github.com/adosikas/synth_mapping_helper
Project-URL: Bug Tracker, https://github.com/adosikas/synth_mapping_helper/issues
Project-URL: Changelog, https://github.com/adosikas/synth_mapping_helper/releases
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: End Users/Desktop
Classifier: Topic :: Artistic Software
Classifier: Topic :: Games/Entertainment
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.26.4
Requires-Dist: scipy>=1.13.0
Requires-Dist: matplotlib>=3.8.4
Requires-Dist: plotly>=5.22.0
Requires-Dist: pyperclip>=1.8.2
Requires-Dist: watchdog>=4.0.0
Requires-Dist: requests>=2.31.0
Requires-Dist: nicegui>=1.4.24
Requires-Dist: librosa>=0.10.2
Requires-Dist: pywin32>=306; sys_platform == "win32"

# Synth Mapping Helper

Toolbox for manipulating the JSON-Format used by *Synth Riders Beatmap Editor* in the clipboard.

## Features

For more info on each feature, check out [the wiki](https://github.com/adosikas/synth_mapping_helper/wiki) 

* Filter by note and wall types for all operations
* Changing type of notes and walls
  * Can cycle between multiple colors to make "rainbows" or alternate between single hand specials and regular notes
* Change BPM indepenent of note timing (helpful if you have a map with different BPM sections)
* Movement in XY and Time:  
    Note: All operation can be done in regards to grid center, a pivot point, or the start of rails
    * Rotate
    * Scale and mirror
    * Outset (moving outwards/away by a fixed distance)
    * Offset (Translate/Move)
    * Stacking patterns
* Pattern generation
    * Spirals/Zigzags
    * Spike/Buzz-Rails
    * Stack along rails
* Rail manipulation
    * Merging
    * Splitting
    * Interpolation
    * Convert between single notes and rails
    * Snapping single notes to rails
* Cross-Platform (Windows, Linux)
    * For Windows, supports drag and drop actions (fully usable without command prompt)
* Imports directly from clipboard, and export to it
* Uses an internal format that is easy to work with ([wiki page](https://github.com/adosikas/synth_mapping_helper/wiki/Glossary#measurement-system)):
    * Position in editor grid coordinates (+x=right, +y=up)
    * Time in measures (starting from start of selection)
    * Angles in degrees (positive=counterclockwise)
    * Notes/Rails seperated by color and as `n x 3` numpy-arrays (x, y, time)
    * Walls as `1 x 5` numpy-arrays (x, y, time, type, rotation)
    * Walls positions are adjusted to match their rotation center
* [Companion application](https://github.com/adosikas/synth_mapping_helper/wiki/Companion):
    * **Automatic backups** while mapping
    * Plot notes to spot outliers
    * View hand velocity and acceleration to find sections to smooth out
    * Show wall density and estimatation which ones will not render on quest
    * Fix **wall offset** between editor and game ("Finalize")

### Maybe (contributions welcome)
* GUI for common operations
* Automatic smoothing

## How to Install and use

### Advanced users
* Install via `pip3 install synth_mapping_helper` (requires Python 3.9 or higher)
* See `python3 -m synth_mapping_helper.cli -h` for usage of the clipboard manipulation
* See `python3 -m synth_mapping_helper.companion -h` for usage of the companion
* Feel free to experiment with extending functionality by using the module functions directly. If you have something that you think could help other mappers, please make a PR

### Windows

See [this wiki page](https://github.com/adosikas/synth_mapping_helper/wiki/Installation-and-Usage-on-Windows) for detailed instructions, including screenshots.
