A Python package to read songs in the iRealPro fromat.
Project description
pyRealParser
A Python package to read songs in the iRealPro format.
Introduction & Usage
Here's an example of how to import an iReal link and print the information it contains:
>from pyRealParser import Tune
>my_tune = Tune.parse_ireal_url('irealb://%44%65%61%72<link shortened>')[0]
>print(my_tune)
<pyRealParser.Tune object at 0x107305e80>
Title: Dear Old Stockholm
Composer: Traditional
Style: Medium Swing
Key: D-
Transpose: None
Comp style: 0
BPM: 0
Repeats: None
Time signature: 4/4
Chord string:
*A{T44D- |Eh7 A7b9|G-7 C7|F^7 |Eh7 A7b9|D- |Eh7 |A7b9 |D-7 |D-6 |D-7 |D-6 }*B[F^7 |G-7 C7|F^7 |Eh7 A7b9 ]*C[D- |Eh7 A7b9|G-7 C7|F^7 |Eh7 A7b9|D- |C7sus |x |C7sus |x |x |x |C7sus A7b9|D- |x
Flattened measures:
| D- | Eh7A7b9 | G-7C7 | F^7 |
| Eh7A7b9 | D- | Eh7 | A7b9 |
| D-7 | D-6 | D-7 | D-6 |
| D- | Eh7A7b9 | G-7C7 | F^7 |
| Eh7A7b9 | D- | Eh7 | A7b9 |
| D-7 | D-6 | D-7 | D-6 |
| F^7 | G-7C7 | F^7 | Eh7A7b9 |
| D- | Eh7A7b9 | G-7C7 | F^7 |
| Eh7A7b9 | D- | C7sus | C7sus |
| C7sus | C7sus | C7sus | C7sus |
| C7susA7b9 | D- | D- |
parse_ireal_urlreturns a list of Tune objects, each representing a song contained in the input url. They contain a number of member variables, containing the chords as well as some meta information:
chord_string: A single string that has all chords of the tune, with bar lines, repeat markers, endings, codas etc:
>print(my_tune.chord_string)
*A{T44D- |Eh7 A7b9|G-7 C7|F^7 |Eh7 A7b9|D- |Eh7 |A7b9 |D-7 |D-6 |D-7 |D-6 }*B[F^7 |G-7 C7|F^7 |Eh7 A7b9 ]*C[D- |Eh7 A7b9|G-7 C7|F^7 |Eh7 A7b9|D- |C7sus |x |C7sus |x |x |x |C7sus A7b9|D- |x
measures_as_strings: A list, for which every element corresponds to a single bar, containing the chords in string form. Repeats, codas etc. have been flattened.
>print(my_tune.measures_as_strings)
*['D-', 'Eh7A7b9', 'G-7C7', 'F^7', 'Eh7A7b9', 'D-', 'Eh7', 'A7b9', 'D-7', 'D-6', 'D-7', 'D-6', 'D-', 'Eh7A7b9', 'G-7C7', 'F^7', 'Eh7A7b9', 'D-', 'Eh7', 'A7b9', 'D-7', 'D-6', 'D-7', 'D-6', 'F^7', 'G-7C7', 'F^7', 'Eh7A7b9', 'D-', 'Eh7A7b9', 'G-7C7', 'F^7', 'Eh7A7b9', 'D-', 'C7sus', 'C7sus', 'C7sus', 'C7sus', 'C7sus', 'C7sus', 'C7susA7b9', 'D-', 'D-']
title: The titlecomposer: The composerstyle: The style (e.g. 'Swing', 'Bossa', 'Blues' etc.)key: The key (e.g. 'A', 'F#' etc)transpose: How many semitones to transposecomp_style: Accompaniment style (usually empty)bpm: Tempo in BPM (usually empty)repeats: How many repeats (usually empty)time_signature: Time signature as a tuple (e.g. (3,4), (4, 4), (5, 8) etc.)
Notice, that some of these meta-data fields might be empty, depending on the input url.
Tune objects are designed to have a nice textual representation in Jupyter notebooks, but can be used outside of a notebook perfectly well.
For more documentation, please read the code.
Contributions are welcome, please submit a PR.
Installation
pip install pyRealParser
Acknowledgements
Kudos to @pianosnake and @ironss for figuring out the iReal url format!
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
File details
Details for the file pyRealParser-0.1.0.tar.gz.
File metadata
- Download URL: pyRealParser-0.1.0.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a532dabb21909dc82d68fa82ad9bfb95ebc3f1d6a3c8398616d87081415fca4
|
|
| MD5 |
a4671c3dae2cb3497f6f50ce657d8eb9
|
|
| BLAKE2b-256 |
e708fadfd3ffc69624dd34a05cb33a7e067dc1dad876572375f8478b221079e2
|