Research code for basic Rhythmic Segment Analysis.
Project description
Rhythmic Segments
This project provides some basic code to simplify Rhythmic Segment Analysis in Python. A rhythmic segment analysis (RSA) analyzes every fixed-length segment of a sequence of time intervals: the short groups you obtain by sliding a window across the data. Each segment has a duration and a pattern. The pattern captures the relative durations of a segment’s intervals, either as a normalized vector or as a ratio. For example, the segment (2, 4, 4) has the pattern (.2, .4, .4) or 1 : 2 : 2; both descriptions are interchangeable. Thinking of patterns as normalized vectors shows that all patterns of a given length live on a simplex: a line for length 2, a triangle for length 3, and so on. The goal is to study rhythmic material by analysing how its segments are distributed of that simplex.
Computing patterns is as simple as normalising the segment, and so you can absolutely do a rhythmic segment analysis without using this package. This package however provides some utilities that make things easier: the RhythmicSegments class allows you to conveniently store large numbers of segments and handle associated metadata.
For more details, have a look at the docs.
Installation
The package has been tested with Python 3.11 and 3.12. You can install the package using pip:
pip install rhythmic-segments
Getting started
from rhythmic_segments import RhythmicSegments
intervals = [1, 2, 3, 4, 5, 6, 7, 8, 9]
rs = RhythmicSegments.from_intervals(intervals, length=3)
rs.segments
# array([[1., 2., 3.], [2., 3., 4.], [3., 4., 5.], ... ])
License
The code is distributed under an MIT license.
Contributing
Feel free to contribute via GitHub: https://github.com/bacor/rhythmic-segments
Citation
A paper describing the idea in more details is currently in preparation. Until a formal reference is available, please cite the repository:
@misc{cornelissen_rhythmic_segments,
author = {Bas Cornelissen},
title = {rhythmic_segments},
howpublished = {\url{https://github.com/bascornelissen/rhythmic-segments}},
year = {2025},
note = {Version 0.1.3}
}
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rhythmic_segments-0.1.9.tar.gz.
File metadata
- Download URL: rhythmic_segments-0.1.9.tar.gz
- Upload date:
- Size: 15.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.14.0-1012-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b57762dcfec478c991f4c2f9f588055172d5fba0c145c759d8db6ef1cfe18775
|
|
| MD5 |
9a49a79a53f19126a31577c7af0ad6ce
|
|
| BLAKE2b-256 |
188504d3b376c3bce4a4aa409300cac67211c2cb93dedc86a96576e85d447a57
|
File details
Details for the file rhythmic_segments-0.1.9-py3-none-any.whl.
File metadata
- Download URL: rhythmic_segments-0.1.9-py3-none-any.whl
- Upload date:
- Size: 16.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/6.14.0-1012-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c23f82dd8778f43cc6da3f19ff3be18fd881e5640b764e35501ece1c83b11ba
|
|
| MD5 |
0e632c29269b9949c0544e019eabf4d7
|
|
| BLAKE2b-256 |
02f986117acd56a152714f3486876b4dfd4004c32b1a757a33071182f098adf3
|