pysspm-rhythia


Namepysspm-rhythia JSON
Version 2.0.0 PyPI version JSON
download
home_pageNone
SummaryA Python library dedicated to reading, writing, and modifying the Rhythia SSPM (.sspm) file format
upload_time2025-07-28 07:29:14
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseLGPL-3.0
keywords rhythia sound space sspm rhythm game pysspm-rhythia pysspm nova phoenyx ss+m sspm
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pysspm-rhythia

The official python library dedicated to reading, writing, and modifying the SSPM file format from the video game "Rhythia".

> ***Note: This is V2 of `PYSSPM`. This version is a complete rewrite of the original V1, with more "support" and type hinting***

## SSPM libray information

The main library includes these features:

> 1. Reading .SSPM files
> 2. Modifying SSPM data
> 3. Writing .SSPM files

Extras:

> 1. Difficulty Calculation (Not implemented in V2.0)
> 2. Note Classification (Not implmented in V2.0)

## How to install/use

To install the library, run:

```bash
pip install pysspm-rythia
```

to start using the library, create a python script and load up pysspm.

```python
from pysspm_rhythia import read_sspm


# Example of loading a SSPMfile
sspm = read_sspm("*.sspm")

# Example of turning it into a roblox sound space file

with open("output.txt", "w") as f:
    f.write(sspm.NOTES2TEXT())

```

> *Functionality does not end there. When reading files, you have full access to all the metadata, and other information stored in the variables.*

**Some common variables you will find are:**

1. `cover_bytes` the byteform of the image if cover was found
2. `audio_bytes` the byteform of the audio in `.mp3` form if audio was found
3. `header`: {"Signature": ..., "Version": ...}
4. `hash`: a SHA-1 hash of the markers (notes) in the map
5. `map_id`: A unique combination using the mappers and map name*
6. `mappers`: a list containing each mapper.
7. `map_name`: The name given to the map.
8. `song_name`: The original name of the audio before imported. Usually left as artist name - song name
9. `custom_values`: NOT IMPLEMENTED | will return a dictionary of found custom blocks.
10. `quantum`: Determins if the level contains ANY float value notes.
11. `notes`: A list of tuples containing all notes. | Example of what it Notes is: `[(x, y, ms), (x, y, ms), (x, y, ms) . . .]`

```python
from pysspm_rhythia import read_sspm, write_sspm

# Example of loading a SSPMfile
sspm = read_sspm("*.sspm")

# changing the decal to be a different image
if sspm.has_cover():
    sspm.add_cover() # takes location OR bytes

    with open("cover.png", 'rb') as f: # alternate method
        sspm.cover_bytes = f.read() # reading the BYTES of the image

# Finally save the sspm file with the newly configured settings
sspm.write('sspmFile.sspm')

# alternatively:
write_sspm(sspm, 'sspmFile.sspm') # takes a pre-configured sspm object

```

you can modify metadata information within sspm with ease

```py
from pysspm_rhythia import read_sspm, write_sspm

sspm = read_sspm("*.sspm")

sspm.mappers.extend('DigitalDemon') # adding another mapper to the mapper list
sspm.write('SSPMFile.sspm')

```

## Advanced guide (W.I.P)

This shows the more advanced things you can do by giving examples of custom written code.

```python

# Not implemented yet...
# Support for custom blocks and AI tagging coming soon..

```

*More advanced documentation will be added in the near future...*

## Function Documentation

A in-depth list of things you can do with this library

WIP FOR V2

## Roadmap (May get completed)

TODO LIST FOR V2: (In order of priority)

- Refactor codebase (~40% done) ⛔
- Add typing support for library ✅
- add proper documentation on github ✅
- add proper documentation in code ✅
- add loading of sspmV2  ✅
- add support for creating sspmV2 ✅
- add support for sspmv1 loading 🔴 (Use Pre-V2.0.0 release to use this for now)
- add custom block support in loading
- Drop numpy dependency
- Implement Extras difficulty calculation (Obsiids method, rhythia-online starCalculation)
- Support for Pheonix/Nova Filetype (When I get my hands on the data structure)

Made with 💖 by DigitalDemon (David Jed)

> Documentation last updated: `2025-07-22` | `V2.0.0`

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pysspm-rhythia",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "Rhythia, Sound space, SSPM, Rhythm game, pysspm-rhythia, pysspm, nova, phoenyx, SS+M, sspm",
    "author": null,
    "author_email": "David Jedlovsky <Dev.DavidJed@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/c3/a1/f6374d530c774df2aa330bec8da2ce07100bb6d95df72f4f93f5ff99122b/pysspm-rhythia-2.0.0.tar.gz",
    "platform": null,
    "description": "# pysspm-rhythia\r\n\r\nThe official python library dedicated to reading, writing, and modifying the SSPM file format from the video game \"Rhythia\".\r\n\r\n> ***Note: This is V2 of `PYSSPM`. This version is a complete rewrite of the original V1, with more \"support\" and type hinting***\r\n\r\n## SSPM libray information\r\n\r\nThe main library includes these features:\r\n\r\n> 1. Reading .SSPM files\r\n> 2. Modifying SSPM data\r\n> 3. Writing .SSPM files\r\n\r\nExtras:\r\n\r\n> 1. Difficulty Calculation (Not implemented in V2.0)\r\n> 2. Note Classification (Not implmented in V2.0)\r\n\r\n## How to install/use\r\n\r\nTo install the library, run:\r\n\r\n```bash\r\npip install pysspm-rythia\r\n```\r\n\r\nto start using the library, create a python script and load up pysspm.\r\n\r\n```python\r\nfrom pysspm_rhythia import read_sspm\r\n\r\n\r\n# Example of loading a SSPMfile\r\nsspm = read_sspm(\"*.sspm\")\r\n\r\n# Example of turning it into a roblox sound space file\r\n\r\nwith open(\"output.txt\", \"w\") as f:\r\n    f.write(sspm.NOTES2TEXT())\r\n\r\n```\r\n\r\n> *Functionality does not end there. When reading files, you have full access to all the metadata, and other information stored in the variables.*\r\n\r\n**Some common variables you will find are:**\r\n\r\n1. `cover_bytes` the byteform of the image if cover was found\r\n2. `audio_bytes` the byteform of the audio in `.mp3` form if audio was found\r\n3. `header`: {\"Signature\": ..., \"Version\": ...}\r\n4. `hash`: a SHA-1 hash of the markers (notes) in the map\r\n5. `map_id`: A unique combination using the mappers and map name*\r\n6. `mappers`: a list containing each mapper.\r\n7. `map_name`: The name given to the map.\r\n8. `song_name`: The original name of the audio before imported. Usually left as artist name - song name\r\n9. `custom_values`: NOT IMPLEMENTED | will return a dictionary of found custom blocks.\r\n10. `quantum`: Determins if the level contains ANY float value notes.\r\n11. `notes`: A list of tuples containing all notes. | Example of what it Notes is: `[(x, y, ms), (x, y, ms), (x, y, ms) . . .]`\r\n\r\n```python\r\nfrom pysspm_rhythia import read_sspm, write_sspm\r\n\r\n# Example of loading a SSPMfile\r\nsspm = read_sspm(\"*.sspm\")\r\n\r\n# changing the decal to be a different image\r\nif sspm.has_cover():\r\n    sspm.add_cover() # takes location OR bytes\r\n\r\n    with open(\"cover.png\", 'rb') as f: # alternate method\r\n        sspm.cover_bytes = f.read() # reading the BYTES of the image\r\n\r\n# Finally save the sspm file with the newly configured settings\r\nsspm.write('sspmFile.sspm')\r\n\r\n# alternatively:\r\nwrite_sspm(sspm, 'sspmFile.sspm') # takes a pre-configured sspm object\r\n\r\n```\r\n\r\nyou can modify metadata information within sspm with ease\r\n\r\n```py\r\nfrom pysspm_rhythia import read_sspm, write_sspm\r\n\r\nsspm = read_sspm(\"*.sspm\")\r\n\r\nsspm.mappers.extend('DigitalDemon') # adding another mapper to the mapper list\r\nsspm.write('SSPMFile.sspm')\r\n\r\n```\r\n\r\n## Advanced guide (W.I.P)\r\n\r\nThis shows the more advanced things you can do by giving examples of custom written code.\r\n\r\n```python\r\n\r\n# Not implemented yet...\r\n# Support for custom blocks and AI tagging coming soon..\r\n\r\n```\r\n\r\n*More advanced documentation will be added in the near future...*\r\n\r\n## Function Documentation\r\n\r\nA in-depth list of things you can do with this library\r\n\r\nWIP FOR V2\r\n\r\n## Roadmap (May get completed)\r\n\r\nTODO LIST FOR V2: (In order of priority)\r\n\r\n- Refactor codebase (~40% done) \u26d4\r\n- Add typing support for library \u2705\r\n- add proper documentation on github \u2705\r\n- add proper documentation in code \u2705\r\n- add loading of sspmV2  \u2705\r\n- add support for creating sspmV2 \u2705\r\n- add support for sspmv1 loading \ud83d\udd34 (Use Pre-V2.0.0 release to use this for now)\r\n- add custom block support in loading\r\n- Drop numpy dependency\r\n- Implement Extras difficulty calculation (Obsiids method, rhythia-online starCalculation)\r\n- Support for Pheonix/Nova Filetype (When I get my hands on the data structure)\r\n\r\nMade with \ud83d\udc96 by DigitalDemon (David Jed)\r\n\r\n> Documentation last updated: `2025-07-22` | `V2.0.0`\r\n",
    "bugtrack_url": null,
    "license": "LGPL-3.0",
    "summary": "A Python library dedicated to reading, writing, and modifying the Rhythia SSPM (.sspm) file format",
    "version": "2.0.0",
    "project_urls": {
        "Homepage": "https://github.com/David-Jed/pysspm",
        "Issues": "https://github.com/David-Jed/pysspm/issues"
    },
    "split_keywords": [
        "rhythia",
        " sound space",
        " sspm",
        " rhythm game",
        " pysspm-rhythia",
        " pysspm",
        " nova",
        " phoenyx",
        " ss+m",
        " sspm"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6f583efda733095bffd7f7d10229915c3dff9f34d32bf283496d04f3e0133fa5",
                "md5": "96dee8ca84994911cdbf8b45001bd8f8",
                "sha256": "3b80ff18b1753dc3f0b911d37e1001abf17d637b6d9b55b9109fc14766e89bf0"
            },
            "downloads": -1,
            "filename": "pysspm_rhythia-2.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "96dee8ca84994911cdbf8b45001bd8f8",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 25769,
            "upload_time": "2025-07-28T07:29:13",
            "upload_time_iso_8601": "2025-07-28T07:29:13.597552Z",
            "url": "https://files.pythonhosted.org/packages/6f/58/3efda733095bffd7f7d10229915c3dff9f34d32bf283496d04f3e0133fa5/pysspm_rhythia-2.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c3a1f6374d530c774df2aa330bec8da2ce07100bb6d95df72f4f93f5ff99122b",
                "md5": "fec5b0279e6ab1b9c8821e83e4b31e74",
                "sha256": "704dcf27acb5de360ed439b0112521c58ddcdc489ad1adc06e63cc130446cec8"
            },
            "downloads": -1,
            "filename": "pysspm-rhythia-2.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "fec5b0279e6ab1b9c8821e83e4b31e74",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 26070,
            "upload_time": "2025-07-28T07:29:14",
            "upload_time_iso_8601": "2025-07-28T07:29:14.428931Z",
            "url": "https://files.pythonhosted.org/packages/c3/a1/f6374d530c774df2aa330bec8da2ce07100bb6d95df72f4f93f5ff99122b/pysspm-rhythia-2.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-28 07:29:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "David-Jed",
    "github_project": "pysspm",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "pysspm-rhythia"
}
        
Elapsed time: 1.11015s