Modern simfile library for Python
Project description
simfile
A modern simfile parsing & editing library for Python 3.
Features
- Supports both SM and SSC files
- Format-agnostic API for reading & writing simfiles
- SM ↔︎ SSC conversion
- Timing data support
- Beat ↔︎ song time conversion
- Handles BPM changes, stops, delays and warps
- Accepts "split timing" from SSC charts
- Note streams from charts
- Algorithms for grouping jumps & hold/roll head/tail notes
- Flexible note counting functions
- Timing data integration
- Fully typed & documented API
Installation
simfile is available on PyPI. During the current beta phase, make sure to pass --pre
to pip
, otherwise you will fetch the 1.0 release:
pip3 install --pre simfile
Version 2.0 is a substantial departure from the 1.0 release. Read Migrating from simfile 1.0 to 2.0 for a breakdown of the changes. While 2.0 is currently in beta, no further breaking API changes are anticipated before the official 2.0 release.
Quickstart
Load simfiles from disk using simfile.open
or simfile.load
:
>>> import simfile
>>> springtime = simfile.open('testdata/Springtime.ssc')
>>> springtime
<SSCSimfile: Springtime>
>>> with open('testdata/Robotix.sm', 'r') as infile:
... robotix = simfile.load(infile)
...
>>> robotix
<SMSimfile: Robotix>
Access simfile properties through uppercase keys:
>>> springtime['ARTIST']
'Kommisar'
>>> list(springtime.keys())[:7]
['VERSION', 'TITLE', 'SUBTITLE', 'ARTIST', 'TITLETRANSLIT', 'SUBTITLETRANSLIT', 'ARTISTTRANSLIT']
Alternatively, you can use lowercase attributes for known properties:
>>> robotix.displaybpm
'150.000'
>>> robotix.displaybpm is robotix['DISPLAYBPM']
True
Charts are stored in a list under the .charts
attribute and function similarly to simfile objects:
>>> len(springtime.charts)
9
>>> chart = springtime.charts[0]
>>> chart
<SSCChart: dance-single Challenge 12>
>>> list(chart.keys())[:7]
['CHARTNAME', 'STEPSTYPE', 'DESCRIPTION', 'CHARTSTYLE', 'DIFFICULTY', 'METER', 'RADARVALUES']
Documentation
Full documentation can be found on Read the Docs.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for simfile-2.0.0b6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1092b30dd0a26e1e2cdfcbf23c7fe0d9c464b9ebc5628a855806ba36c818ddd9 |
|
MD5 | cc070f0d6426f0e70ecee06f43130fe8 |
|
BLAKE2b-256 | d7c10abbea8e5deb6bda5f732ab122b94d9a0f285eb9fb862ca7e7859dbabfd5 |