Dawtool
Reverse-engineered parsers for Ableton Live & FL Studio project files.
Install / Use
/learn @offlinemark/DawtoolREADME
dawtool
dawtool parses and extracts data from Digital Audio Workstation (DAW) file formats.
It provides a high accuracy implementation of time marker extraction, including support for projects with tempo automation.
Supported formats:
- Ableton Live set (.als) [v8-12]
- FL Studio project (.flp) [v10-11, 20]
- Cue sheet (.cue)
Just browsing? Here are a few points of interest in the codebase.
About
Time markers allow users to annotate the DAW timeline with text. Certain use cases benefit from the ability to export these annotations, such as timestamping a DJ mix, podcast, or film.
dawtool implements time marker export for DAWs that do not implement it natively, showcasing how DAWs can be extended through project file manipulation.

For more on how dawtool works, see the talk about it at the 2020 Audio Developer Conference.
Usage
Time markers are the only officially supported output. However much more of the formats are available through internal APIs, such as tempo automation data.
Python API
Simple API (Markers Only)
import sys
import dawtool
filename = sys.argv[1]
with open(filename, 'rb') as f:
markers = dawtool.extract_markers(filename, f)
for marker in markers:
print(marker.time, marker.text)
Advanced API (Markers & Other Data)
import sys
import dawtool
filename = sys.argv[1]
with open(filename, 'rb') as f:
# Load project based on file extension
proj = dawtool.load_project(filename, f)
# Parse project, recompute time markers
proj.parse()
# Access project data
for marker in proj.markers:
print(marker.time, marker.text)
Command line tool
$ dawtool -m my-dj-mix.als
00:00.000 nciku - peaceofmind
02:15.115 comfort - a n g e l _ w i n g s
05:18.654 rose bride rings - femme fatale
06:52.654 ranov - butterfly
08:47.077 scalade - tempura VIP
10:57.423 mirvs - defrosted
Installation
dawtool requires Python 3.7 or greater.
pip install git+https://github.com/offlinemark/dawtool
Status
dawtool is production ready. A hosted version has processed 10,000+ project files since March 2020.
Both the API and CLI should be considered unstable and subject to change.
Tempo automation is supported for linear automation only. Nonlinear automation may cause inaccuracies.
Credits
dawtool's .flp parser is based on work from the LMMS, PyDaw, and FLParser projects.
Related Skills
qqbot-channel
346.4kQQ 频道管理技能。查询频道列表、子频道、成员、发帖、公告、日程等操作。使用 qqbot_channel_api 工具代理 QQ 开放平台 HTTP 接口,自动处理 Token 鉴权。当用户需要查看频道、管理子频道、查询成员、发布帖子/公告/日程时使用。
docs-writer
100.1k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
346.4kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
Design
Campus Second-Hand Trading Platform \- General Design Document (v5.0 \- React Architecture \- Complete Final Version)1\. System Overall Design 1.1. Project Overview This project aims t

