AbletonParsing
Parse an Ableton ASD clip file and its warp markers in Python. This module has been tested with .asd files saved with Ableton 9 and Ableton 10.
Note: Ableton Live 12 uses a different binary format that is not yet supported by this library.
Install
pip install abletonparsing
Development Dependencies
To run the tests, you'll need to install additional dependencies:
# On macOS
brew install rubberband
# On Ubuntu/Debian
sudo apt-get install -y rubberband-cli
# Install Python test dependencies
pip install abletonparsing[test]
# or
pip install -e ".[test]" # for development
API
Clip class:
- .loop_on - ( bool , READ/WRITE ) - Loop toggle is on
- .start_marker - ( float , READ/WRITE ) - Start marker in beats relative to 1.1.1
- .end_marker - ( float , READ/WRITE ) - End marker in beats relative to 1.1.1
- .loop_start - ( float , READ/WRITE ) - Loop start in beats relative to 1.1.1
- .loop_end - ( float , READ/WRITE ) - Loop end in beats relative to 1.1.1
- .hidden_loop_start - ( float , READ/WRITE ) - Hidden loop start in beats relative to 1.1.1
- .hidden_loop_end - ( float , READ/WRITE ) - Hidden loop end in beats relative to 1.1.1
- .warp_markers - ( list[WarpMarker] , READ/WRITE ) - List of warp markers
- .warp_on - ( bool , READ/WRITE ) - Warping is on
- .sr - ( float , READ/WRITE ) - Sample rate of audio data
WarpMarker class:
- .seconds - ( float , READ/WRITE ) - Position in seconds in the audio data.
- .beats - ( float , READ/WRITE ) - Position in "beats" (typically quarter note) relative to 1.1.1
If loop_on is false, then loop_start will equal the start_marker, and loop_end will equal the end_marker.
Example
import abletonparsing
import librosa
import soundfile as sf
import pyrubberband as pyrb
bpm = 130.
audio_path = 'drums.wav'
clip_path = audio_path + '.asd'
audio_data, sr = librosa.load(audio_path, sr=None, mono=False)
num_samples = audio_data.shape[1]
clip = abletonparsing.Clip(clip_path, sr, num_samples)
time_map = clip.get_time_map(bpm)
# Time-stretch the audio to the requested bpm.
output_audio = pyrb.timemap_stretch(audio_data.transpose(), sr, time_map)
with sf.SoundFile('output.wav', 'w', sr, 2, 'PCM_24') as f:
f.write(output_audio)
Metadata
Release files for abletonparsing 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| abletonparsing-0.1.3.tar.gz | 5.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| abletonparsing-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.3 kB
Release files / abletonparsing-0.1.3.tar.gz
| Download URL | abletonparsing-0.1.3.tar.gz |
|---|---|
| Size | 5.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bc32a2dc96ac1b78f6cd47e11fbaf74c777f6b67f130ee7b49b1cea8b9cd85ba
|
|
BLAKE2b-256 checksum How to use checksums |
2ef55386f74659926a8851577305f1083ceccfb62803e7e47aed29bd392de62c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Release files / abletonparsing-0.1.3-py3-none-any.whl
| Download URL | abletonparsing-0.1.3-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
444eac38daa6e160c7be5f8ceff2bff1d151e76d849ba265ce94b82c2b6dc289
|
|
BLAKE2b-256 checksum How to use checksums |
cf5ef8e31535f6483801d8790c65871ea8416429234a578d46aee7e898b0166d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Security for abletonparsing 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.