Skip to main content

AbletonParsing

CI PyPI version

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)

Source distribution for abletonparsing 0.1.3
File Size Uploaded Provenance
abletonparsing-0.1.3.tar.gz 5.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for abletonparsing 0.1.3
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page