tonable 0.5.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. tonable-0.5.2/.gitignore +39 -0
  2. tonable-0.5.2/LICENSE +21 -0
  3. tonable-0.5.2/PKG-INFO +229 -0
  4. tonable-0.5.2/README.md +207 -0
  5. tonable-0.5.2/THIRD_PARTY_NOTICES.md +75 -0
  6. tonable-0.5.2/assets/tonable-logo.svg +5 -0
  7. tonable-0.5.2/docs/clients.md +144 -0
  8. tonable-0.5.2/docs/plan.md +107 -0
  9. tonable-0.5.2/docs/publishing.md +139 -0
  10. tonable-0.5.2/docs/tools.md +159 -0
  11. tonable-0.5.2/probe/README.md +88 -0
  12. tonable-0.5.2/probe/TonableProbe/__init__.py +766 -0
  13. tonable-0.5.2/probe/install.py +50 -0
  14. tonable-0.5.2/probe/install.sh +6 -0
  15. tonable-0.5.2/pyproject.toml +74 -0
  16. tonable-0.5.2/remote_script/Tonable/__init__.py +146 -0
  17. tonable-0.5.2/remote_script/Tonable/arrangement.py +236 -0
  18. tonable-0.5.2/remote_script/Tonable/clips.py +364 -0
  19. tonable-0.5.2/remote_script/Tonable/devices.py +188 -0
  20. tonable-0.5.2/remote_script/Tonable/dispatch.py +160 -0
  21. tonable-0.5.2/remote_script/Tonable/edit.py +281 -0
  22. tonable-0.5.2/remote_script/Tonable/envelopes.py +195 -0
  23. tonable-0.5.2/remote_script/Tonable/library.py +300 -0
  24. tonable-0.5.2/remote_script/Tonable/objects.py +134 -0
  25. tonable-0.5.2/remote_script/Tonable/params.py +170 -0
  26. tonable-0.5.2/remote_script/Tonable/reading.py +289 -0
  27. tonable-0.5.2/remote_script/Tonable/server.py +347 -0
  28. tonable-0.5.2/remote_script/Tonable/song.py +304 -0
  29. tonable-0.5.2/remote_script/Tonable/version.py +2 -0
  30. tonable-0.5.2/scripts/check_distribution.py +215 -0
  31. tonable-0.5.2/scripts/check_registry.py +95 -0
  32. tonable-0.5.2/scripts/check_release.py +24 -0
  33. tonable-0.5.2/scripts/check_sdist.py +45 -0
  34. tonable-0.5.2/scripts/github_release.py +77 -0
  35. tonable-0.5.2/src/tonable/__init__.py +5 -0
  36. tonable-0.5.2/src/tonable/__main__.py +77 -0
  37. tonable-0.5.2/src/tonable/bridge.py +208 -0
  38. tonable-0.5.2/src/tonable/cli.py +353 -0
  39. tonable-0.5.2/src/tonable/presets.py +119 -0
  40. tonable-0.5.2/src/tonable/server.py +78 -0
  41. tonable-0.5.2/src/tonable/tools/__init__.py +144 -0
  42. tonable-0.5.2/src/tonable/tools/arrangement.py +62 -0
  43. tonable-0.5.2/src/tonable/tools/batch.py +53 -0
  44. tonable-0.5.2/src/tonable/tools/clips.py +179 -0
  45. tonable-0.5.2/src/tonable/tools/devices.py +207 -0
  46. tonable-0.5.2/src/tonable/tools/envelopes.py +76 -0
  47. tonable-0.5.2/src/tonable/tools/session.py +163 -0
  48. tonable-0.5.2/src/tonable/tools/tracks.py +129 -0
  49. tonable-0.5.2/tests/fake_live.py +291 -0
  50. tonable-0.5.2/tests/manual_checklist.md +50 -0
  51. tonable-0.5.2/tests/test_bridge.py +250 -0
  52. tonable-0.5.2/tests/test_cli.py +255 -0
  53. tonable-0.5.2/tests/test_clips.py +130 -0
  54. tonable-0.5.2/tests/test_package.py +18 -0
  55. tonable-0.5.2/tests/test_probe.py +109 -0
  56. tonable-0.5.2/tests/test_probe_install.py +55 -0
  57. tonable-0.5.2/tests/test_reading.py +221 -0
  58. tonable-0.5.2/tests/test_release.py +117 -0
  59. tonable-0.5.2/tests/test_stdio.py +36 -0
  60. tonable-0.5.2/tests/test_tools_schema.py +88 -0
  61. tonable-0.5.2/tests/test_writing.py +314 -0
  62. tonable-0.5.2/uv.lock +879 -0
@@ -0,0 +1,39 @@
1
+ .DS_Store
2
+ local/
3
+ .venv/
4
+ __pycache__/
5
+ .pytest_cache/
6
+ .ruff_cache/
7
+ dist/
8
+
9
+ # Python build and coverage artifacts
10
+ build/
11
+ *.egg-info/
12
+ *.py[cod]
13
+ .coverage
14
+ .coverage.*
15
+ htmlcov/
16
+ coverage.xml
17
+
18
+ # Local credentials, runtime discovery and diagnostic output
19
+ .env
20
+ .env.*
21
+ !.env.example
22
+ .tonable/
23
+ session.json
24
+ probe-report*.json
25
+ *.log
26
+ *.pem
27
+ *.key
28
+
29
+ # Machine-specific assistant configuration
30
+ .mcp.json
31
+ .codex/
32
+ .claude/
33
+
34
+ # Local Ableton projects and licensed content
35
+ *.als
36
+ *.alc
37
+ *.adg
38
+ *.adv
39
+ *.alp
tonable-0.5.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ilya Amursky
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
tonable-0.5.2/PKG-INFO ADDED
@@ -0,0 +1,229 @@
1
+ Metadata-Version: 2.5
2
+ Name: tonable
3
+ Version: 0.5.2
4
+ Summary: MCP server for Ableton Live 12: presets, devices, clips, envelopes and scenes
5
+ Project-URL: Source, https://github.com/iamursky/tonable
6
+ Project-URL: Issues, https://github.com/iamursky/tonable/issues
7
+ Project-URL: Releases, https://github.com/iamursky/tonable/releases
8
+ Author: Ilya Amursky
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ License-File: THIRD_PARTY_NOTICES.md
12
+ Keywords: ableton-live,automation,mcp,midi,music
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Operating System :: MacOS :: MacOS X
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Topic :: Multimedia :: Sound/Audio :: MIDI
19
+ Requires-Python: >=3.11
20
+ Requires-Dist: mcp<2,>=1.20
21
+ Description-Content-Type: text/markdown
22
+
23
+ # Tonable
24
+
25
+ ![Tonable — connect your assistant to Ableton Live](https://raw.githubusercontent.com/iamursky/tonable/v0.5.2/assets/tonable-logo.svg)
26
+
27
+ Tonable connects a local MCP assistant to **Ableton Live 12.4+**. Read a Live Set,
28
+ load devices and presets, write MIDI notes, shape automation and arrange scenes
29
+ through 24 tools. Tonable runs on your Mac: the assistant starts an MCP server over
30
+ stdio, and a Remote Script executes commands inside Live.
31
+
32
+ Version **0.5.2**. Earlier development runs exercised the tools in Live **12.4.16**;
33
+ see the [manual checklist](https://github.com/iamursky/tonable/blob/v0.5.2/tests/manual_checklist.md) for checks to repeat on your
34
+ installation. Tonable is an independent project, unaffiliated with Ableton AG.
35
+
36
+ ## What you can do
37
+
38
+ - Inspect tracks, rack chains, Drum Rack pads, parameters, clips and scenes.
39
+ - Search Core Library, Packs and User Library; load devices and presets.
40
+ - Change mixer settings, routing, device parameters and rack macros.
41
+ - Create and edit Session MIDI clips; transpose, shift and quantize notes.
42
+ - Read and write Session automation, including ramps, jumps and curves.
43
+ - Copy clips or entire scenes to Arrangement; create timeline clips and locators.
44
+ - Group edits into one undo step with `batch`; inspect `.adg` and `.adv` files
45
+ without opening Live.
46
+
47
+ See the [tool reference and examples](https://github.com/iamursky/tonable/blob/v0.5.2/docs/tools.md) for addresses, arguments and
48
+ limitations.
49
+
50
+ ## Requirements
51
+
52
+ - **macOS** for the validated Live workflow. The installer recognizes macOS and
53
+ Windows library locations and accepts an explicit path on any OS. Windows
54
+ discovery is unit-tested; end-to-end Live support on Windows is unverified.
55
+ Preset discovery still uses macOS Core Library paths.
56
+ - **Ableton Live 12.4 or newer**, installed and started at least once. Devices and
57
+ presets must be available in your Live edition and installed packs. Max for Live
58
+ is only needed for devices that require it.
59
+ - [uv](https://docs.astral.sh/uv/) with Python **3.11+**. The commands below ask uv
60
+ to provide Python 3.11 if needed; no separate Python setup is required.
61
+ - A local MCP client that can launch a **stdio** process under the same macOS user
62
+ as Live. Client accounts and subscriptions are separate from Tonable.
63
+
64
+ ## Install without a checkout
65
+
66
+ Get the wheel, source archive and SHA-256 checksums from the
67
+ [GitHub release](https://github.com/iamursky/tonable/releases/tag/v0.5.2).
68
+ CI builds and checks each release before publishing its files. You can run the
69
+ versioned wheel URL directly, without cloning the repository:
70
+
71
+
72
+ ```sh
73
+ uvx --python 3.11 --from https://github.com/iamursky/tonable/releases/download/v0.5.2/tonable-0.5.2-py3-none-any.whl tonable libraries
74
+ uvx --python 3.11 --from https://github.com/iamursky/tonable/releases/download/v0.5.2/tonable-0.5.2-py3-none-any.whl tonable install
75
+ ```
76
+
77
+ The installer lists existing libraries found in Live's preferences. If there are
78
+ several, select one; then confirm the displayed path. It only offers the existing
79
+ OS default when no configured path is known. An unavailable configured path is
80
+ reported; reconnect its drive or pass a verified path explicitly. The installer
81
+ never creates a guessed library. In unattended use, supply `--user-library PATH`; `--yes` can confirm a
82
+ single detected candidate but cannot resolve ambiguity.
83
+
84
+ To check a specific destination before copying, use the **User Library root**
85
+ from Live's **Settings → Library**, not the `Remote Scripts` folder:
86
+
87
+ ```sh
88
+ uvx --python 3.11 --from https://github.com/iamursky/tonable/releases/download/v0.5.2/tonable-0.5.2-py3-none-any.whl tonable install \
89
+ --user-library "/path/to/User Library" --dry-run
90
+ ```
91
+
92
+ Remove `--dry-run` to install. An explicit path can create a new library folder,
93
+ which is also useful for staging. Files are copied from the package into
94
+ `<User Library>/Remote Scripts/Tonable`. Existing Tonable files require
95
+ `--replace`; other Remote Scripts stay in place. Symlinked script destinations
96
+ are refused. Copying is staged before replacement. The installer does not change
97
+ Live preferences, select a Control Surface or contact Live unless you add
98
+ `--reload`. Close Live before replacing a component for a release check.
99
+
100
+ 1. Restart Live after installing.
101
+ 2. Open **Settings → Link, Tempo & MIDI → Control Surface** and choose **Tonable**.
102
+ Leave Input and Output set to **None**.
103
+ 3. Run `tonable doctor` using the persistent install below, or run `doctor` through
104
+ the same `uvx --from ... tonable` command. For a custom library, pass
105
+ `--user-library "/path/to/User Library"`. All checks should show `OK`.
106
+
107
+ For a persistent CLI, independent of both the checkout and the wheel's location:
108
+
109
+ ```sh
110
+ uv tool install --python 3.11 https://github.com/iamursky/tonable/releases/download/v0.5.2/tonable-0.5.2-py3-none-any.whl
111
+ uv tool dir --bin
112
+ ```
113
+
114
+ Use the `tonable` executable in that bin directory for setup and client commands.
115
+ You can replace the URL with an absolute path to a downloaded wheel. For `uvx`,
116
+ keep a local wheel at the configured path: its environment may need to be rebuilt.
117
+ See the [official uv tools guide](https://docs.astral.sh/uv/guides/tools/) for tool
118
+ isolation.
119
+
120
+ PyPI publication uses a separate Trusted Publishing job. Once version 0.5.2 is
121
+ listed on [the project's PyPI page](https://pypi.org/project/tonable/0.5.2/), you
122
+ can use a pinned registry source:
123
+
124
+ ```sh
125
+ uvx --python 3.11 --from 'tonable==0.5.2' tonable install
126
+ uvx --python 3.11 --from 'tonable==0.5.2' tonable serve
127
+ ```
128
+
129
+ The release workflow verifies the registry upload, file hashes and tool discovery.
130
+ If PyPI publication has not succeeded, use the GitHub wheel URL above.
131
+
132
+ ### Install from source for development
133
+
134
+ ```sh
135
+ uv sync --locked
136
+ uv run tonable install --dry-run
137
+ uv run tonable install
138
+ ```
139
+
140
+ ## Connect an assistant
141
+
142
+ Tonable exposes MCP over **stdio only**. Use the local setup for your client:
143
+
144
+ - [Codex CLI and IDE extension](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md#codex)
145
+ - [Claude Code](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md#claude-code)
146
+ - [Claude Desktop](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md#claude-desktop)
147
+ - [Other local MCP clients](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md#other-local-mcp-clients)
148
+
149
+ The examples follow official client documentation. They describe a compatible
150
+ transport; they do not certify every client version. Tonable has no HTTP/SSE
151
+ endpoint or hosted connector. The private loopback socket inside Live is not an
152
+ MCP URL. See [client setup](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md) for sources and verification steps.
153
+
154
+ Start with a read-only request:
155
+
156
+ > Use Tonable to check the Live connection and summarize the open Set. Do not edit it.
157
+
158
+ For an editing example, use a disposable empty Set:
159
+
160
+ > Create a MIDI track called Sketch. Add a four-bar Session clip with C3, E3 and G3
161
+ > on its first beat. Read the clip back and report any rejected notes. Do not start playback.
162
+
163
+ A MIDI clip needs an instrument before it produces sound. Ask the assistant to
164
+ read the current addresses before editing; track and device indices can change.
165
+
166
+ ## Updates and removal
167
+
168
+ Obtain the new trusted wheel, close Live, and replace the persistent package:
169
+
170
+ ```sh
171
+ uv tool install --force --python 3.11 /absolute/path/to/new-tonable.whl
172
+ tonable install --replace
173
+ tonable doctor
174
+ ```
175
+
176
+ Restart Live before running `doctor`, then reconnect the MCP server so the client
177
+ refreshes its tools. For an existing component from 0.3.0 onward,
178
+ `tonable install --replace --reload` can request a command-module reload. It does
179
+ not replace a restart for socket-layer changes or a failed reload. With a `uvx`
180
+ client configuration, update its wheel path as well.
181
+
182
+ To remove the component, run `tonable uninstall`, confirm the library and removal,
183
+ then set its Control Surface slot to **None** and remove the MCP client entry.
184
+ For unattended removal, use `tonable uninstall --user-library PATH --yes`.
185
+ `--dry-run` previews removal. To remove the persistent CLI, use
186
+ `uv tool uninstall tonable`. Runtime reports and `~/.tonable` are left in place.
187
+
188
+ ## Data and editing behavior
189
+
190
+ The Remote Script binds only to `127.0.0.1` on an OS-assigned port. It generates a
191
+ random access key and writes `~/.tonable/session.json` with owner-only permissions.
192
+ Tonable itself has no hosted service and requires no API key. Your MCP client may
193
+ send tool results, including Set names and preset paths, to its model provider.
194
+ Never share the session file or commit local reports without reviewing them.
195
+
196
+ Edits use Live's shared undo history. `batch` groups changes into one step but is
197
+ not a transaction: successful actions remain applied if another action fails.
198
+ After a timeout or lost connection, read the state before retrying an edit.
199
+ Saving Sets, exporting audio and freezing tracks are outside Tonable's API.
200
+
201
+ ## Development
202
+
203
+ ```sh
204
+ uv sync --locked
205
+ uv run pytest
206
+ uv run ruff check .
207
+ uv run ruff format --check .
208
+ uv build
209
+ uv run python scripts/check_distribution.py \
210
+ --wheel dist/tonable-0.5.2-py3-none-any.whl \
211
+ --sdist dist/tonable-0.5.2.tar.gz --python 3.11
212
+ ```
213
+
214
+ Tests use a fake Live API and local loopback sockets. They do not prove audio
215
+ quality or replace [checks inside Live](https://github.com/iamursky/tonable/blob/v0.5.2/tests/manual_checklist.md). The optional
216
+ [Live API probe](https://github.com/iamursky/tonable/blob/v0.5.2/probe/README.md) is developer diagnostics; normal installation
217
+ does not need it and the installed wheel excludes it.
218
+
219
+ See [architecture](https://github.com/iamursky/tonable/blob/v0.5.2/docs/plan.md) and [publication checks](https://github.com/iamursky/tonable/blob/v0.5.2/docs/publishing.md).
220
+
221
+ ## Acknowledgments and license
222
+
223
+ Tonable draws on techniques from
224
+ [ableton-live-mcp](https://github.com/wstierhout/ableton-live-mcp) and
225
+ [Producer Pal](https://github.com/adamjmurray/producer-pal). Attribution and their
226
+ MIT notices are in [THIRD_PARTY_NOTICES.md](https://github.com/iamursky/tonable/blob/v0.5.2/THIRD_PARTY_NOTICES.md).
227
+
228
+ Tonable is licensed under [MIT](https://github.com/iamursky/tonable/blob/v0.5.2/LICENSE), © 2026 Ilya Amursky. Ableton software and
229
+ content are not included and remain subject to their own licenses.
@@ -0,0 +1,207 @@
1
+ # Tonable
2
+
3
+ ![Tonable — connect your assistant to Ableton Live](https://raw.githubusercontent.com/iamursky/tonable/v0.5.2/assets/tonable-logo.svg)
4
+
5
+ Tonable connects a local MCP assistant to **Ableton Live 12.4+**. Read a Live Set,
6
+ load devices and presets, write MIDI notes, shape automation and arrange scenes
7
+ through 24 tools. Tonable runs on your Mac: the assistant starts an MCP server over
8
+ stdio, and a Remote Script executes commands inside Live.
9
+
10
+ Version **0.5.2**. Earlier development runs exercised the tools in Live **12.4.16**;
11
+ see the [manual checklist](https://github.com/iamursky/tonable/blob/v0.5.2/tests/manual_checklist.md) for checks to repeat on your
12
+ installation. Tonable is an independent project, unaffiliated with Ableton AG.
13
+
14
+ ## What you can do
15
+
16
+ - Inspect tracks, rack chains, Drum Rack pads, parameters, clips and scenes.
17
+ - Search Core Library, Packs and User Library; load devices and presets.
18
+ - Change mixer settings, routing, device parameters and rack macros.
19
+ - Create and edit Session MIDI clips; transpose, shift and quantize notes.
20
+ - Read and write Session automation, including ramps, jumps and curves.
21
+ - Copy clips or entire scenes to Arrangement; create timeline clips and locators.
22
+ - Group edits into one undo step with `batch`; inspect `.adg` and `.adv` files
23
+ without opening Live.
24
+
25
+ See the [tool reference and examples](https://github.com/iamursky/tonable/blob/v0.5.2/docs/tools.md) for addresses, arguments and
26
+ limitations.
27
+
28
+ ## Requirements
29
+
30
+ - **macOS** for the validated Live workflow. The installer recognizes macOS and
31
+ Windows library locations and accepts an explicit path on any OS. Windows
32
+ discovery is unit-tested; end-to-end Live support on Windows is unverified.
33
+ Preset discovery still uses macOS Core Library paths.
34
+ - **Ableton Live 12.4 or newer**, installed and started at least once. Devices and
35
+ presets must be available in your Live edition and installed packs. Max for Live
36
+ is only needed for devices that require it.
37
+ - [uv](https://docs.astral.sh/uv/) with Python **3.11+**. The commands below ask uv
38
+ to provide Python 3.11 if needed; no separate Python setup is required.
39
+ - A local MCP client that can launch a **stdio** process under the same macOS user
40
+ as Live. Client accounts and subscriptions are separate from Tonable.
41
+
42
+ ## Install without a checkout
43
+
44
+ Get the wheel, source archive and SHA-256 checksums from the
45
+ [GitHub release](https://github.com/iamursky/tonable/releases/tag/v0.5.2).
46
+ CI builds and checks each release before publishing its files. You can run the
47
+ versioned wheel URL directly, without cloning the repository:
48
+
49
+
50
+ ```sh
51
+ uvx --python 3.11 --from https://github.com/iamursky/tonable/releases/download/v0.5.2/tonable-0.5.2-py3-none-any.whl tonable libraries
52
+ uvx --python 3.11 --from https://github.com/iamursky/tonable/releases/download/v0.5.2/tonable-0.5.2-py3-none-any.whl tonable install
53
+ ```
54
+
55
+ The installer lists existing libraries found in Live's preferences. If there are
56
+ several, select one; then confirm the displayed path. It only offers the existing
57
+ OS default when no configured path is known. An unavailable configured path is
58
+ reported; reconnect its drive or pass a verified path explicitly. The installer
59
+ never creates a guessed library. In unattended use, supply `--user-library PATH`; `--yes` can confirm a
60
+ single detected candidate but cannot resolve ambiguity.
61
+
62
+ To check a specific destination before copying, use the **User Library root**
63
+ from Live's **Settings → Library**, not the `Remote Scripts` folder:
64
+
65
+ ```sh
66
+ uvx --python 3.11 --from https://github.com/iamursky/tonable/releases/download/v0.5.2/tonable-0.5.2-py3-none-any.whl tonable install \
67
+ --user-library "/path/to/User Library" --dry-run
68
+ ```
69
+
70
+ Remove `--dry-run` to install. An explicit path can create a new library folder,
71
+ which is also useful for staging. Files are copied from the package into
72
+ `<User Library>/Remote Scripts/Tonable`. Existing Tonable files require
73
+ `--replace`; other Remote Scripts stay in place. Symlinked script destinations
74
+ are refused. Copying is staged before replacement. The installer does not change
75
+ Live preferences, select a Control Surface or contact Live unless you add
76
+ `--reload`. Close Live before replacing a component for a release check.
77
+
78
+ 1. Restart Live after installing.
79
+ 2. Open **Settings → Link, Tempo & MIDI → Control Surface** and choose **Tonable**.
80
+ Leave Input and Output set to **None**.
81
+ 3. Run `tonable doctor` using the persistent install below, or run `doctor` through
82
+ the same `uvx --from ... tonable` command. For a custom library, pass
83
+ `--user-library "/path/to/User Library"`. All checks should show `OK`.
84
+
85
+ For a persistent CLI, independent of both the checkout and the wheel's location:
86
+
87
+ ```sh
88
+ uv tool install --python 3.11 https://github.com/iamursky/tonable/releases/download/v0.5.2/tonable-0.5.2-py3-none-any.whl
89
+ uv tool dir --bin
90
+ ```
91
+
92
+ Use the `tonable` executable in that bin directory for setup and client commands.
93
+ You can replace the URL with an absolute path to a downloaded wheel. For `uvx`,
94
+ keep a local wheel at the configured path: its environment may need to be rebuilt.
95
+ See the [official uv tools guide](https://docs.astral.sh/uv/guides/tools/) for tool
96
+ isolation.
97
+
98
+ PyPI publication uses a separate Trusted Publishing job. Once version 0.5.2 is
99
+ listed on [the project's PyPI page](https://pypi.org/project/tonable/0.5.2/), you
100
+ can use a pinned registry source:
101
+
102
+ ```sh
103
+ uvx --python 3.11 --from 'tonable==0.5.2' tonable install
104
+ uvx --python 3.11 --from 'tonable==0.5.2' tonable serve
105
+ ```
106
+
107
+ The release workflow verifies the registry upload, file hashes and tool discovery.
108
+ If PyPI publication has not succeeded, use the GitHub wheel URL above.
109
+
110
+ ### Install from source for development
111
+
112
+ ```sh
113
+ uv sync --locked
114
+ uv run tonable install --dry-run
115
+ uv run tonable install
116
+ ```
117
+
118
+ ## Connect an assistant
119
+
120
+ Tonable exposes MCP over **stdio only**. Use the local setup for your client:
121
+
122
+ - [Codex CLI and IDE extension](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md#codex)
123
+ - [Claude Code](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md#claude-code)
124
+ - [Claude Desktop](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md#claude-desktop)
125
+ - [Other local MCP clients](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md#other-local-mcp-clients)
126
+
127
+ The examples follow official client documentation. They describe a compatible
128
+ transport; they do not certify every client version. Tonable has no HTTP/SSE
129
+ endpoint or hosted connector. The private loopback socket inside Live is not an
130
+ MCP URL. See [client setup](https://github.com/iamursky/tonable/blob/v0.5.2/docs/clients.md) for sources and verification steps.
131
+
132
+ Start with a read-only request:
133
+
134
+ > Use Tonable to check the Live connection and summarize the open Set. Do not edit it.
135
+
136
+ For an editing example, use a disposable empty Set:
137
+
138
+ > Create a MIDI track called Sketch. Add a four-bar Session clip with C3, E3 and G3
139
+ > on its first beat. Read the clip back and report any rejected notes. Do not start playback.
140
+
141
+ A MIDI clip needs an instrument before it produces sound. Ask the assistant to
142
+ read the current addresses before editing; track and device indices can change.
143
+
144
+ ## Updates and removal
145
+
146
+ Obtain the new trusted wheel, close Live, and replace the persistent package:
147
+
148
+ ```sh
149
+ uv tool install --force --python 3.11 /absolute/path/to/new-tonable.whl
150
+ tonable install --replace
151
+ tonable doctor
152
+ ```
153
+
154
+ Restart Live before running `doctor`, then reconnect the MCP server so the client
155
+ refreshes its tools. For an existing component from 0.3.0 onward,
156
+ `tonable install --replace --reload` can request a command-module reload. It does
157
+ not replace a restart for socket-layer changes or a failed reload. With a `uvx`
158
+ client configuration, update its wheel path as well.
159
+
160
+ To remove the component, run `tonable uninstall`, confirm the library and removal,
161
+ then set its Control Surface slot to **None** and remove the MCP client entry.
162
+ For unattended removal, use `tonable uninstall --user-library PATH --yes`.
163
+ `--dry-run` previews removal. To remove the persistent CLI, use
164
+ `uv tool uninstall tonable`. Runtime reports and `~/.tonable` are left in place.
165
+
166
+ ## Data and editing behavior
167
+
168
+ The Remote Script binds only to `127.0.0.1` on an OS-assigned port. It generates a
169
+ random access key and writes `~/.tonable/session.json` with owner-only permissions.
170
+ Tonable itself has no hosted service and requires no API key. Your MCP client may
171
+ send tool results, including Set names and preset paths, to its model provider.
172
+ Never share the session file or commit local reports without reviewing them.
173
+
174
+ Edits use Live's shared undo history. `batch` groups changes into one step but is
175
+ not a transaction: successful actions remain applied if another action fails.
176
+ After a timeout or lost connection, read the state before retrying an edit.
177
+ Saving Sets, exporting audio and freezing tracks are outside Tonable's API.
178
+
179
+ ## Development
180
+
181
+ ```sh
182
+ uv sync --locked
183
+ uv run pytest
184
+ uv run ruff check .
185
+ uv run ruff format --check .
186
+ uv build
187
+ uv run python scripts/check_distribution.py \
188
+ --wheel dist/tonable-0.5.2-py3-none-any.whl \
189
+ --sdist dist/tonable-0.5.2.tar.gz --python 3.11
190
+ ```
191
+
192
+ Tests use a fake Live API and local loopback sockets. They do not prove audio
193
+ quality or replace [checks inside Live](https://github.com/iamursky/tonable/blob/v0.5.2/tests/manual_checklist.md). The optional
194
+ [Live API probe](https://github.com/iamursky/tonable/blob/v0.5.2/probe/README.md) is developer diagnostics; normal installation
195
+ does not need it and the installed wheel excludes it.
196
+
197
+ See [architecture](https://github.com/iamursky/tonable/blob/v0.5.2/docs/plan.md) and [publication checks](https://github.com/iamursky/tonable/blob/v0.5.2/docs/publishing.md).
198
+
199
+ ## Acknowledgments and license
200
+
201
+ Tonable draws on techniques from
202
+ [ableton-live-mcp](https://github.com/wstierhout/ableton-live-mcp) and
203
+ [Producer Pal](https://github.com/adamjmurray/producer-pal). Attribution and their
204
+ MIT notices are in [THIRD_PARTY_NOTICES.md](https://github.com/iamursky/tonable/blob/v0.5.2/THIRD_PARTY_NOTICES.md).
205
+
206
+ Tonable is licensed under [MIT](https://github.com/iamursky/tonable/blob/v0.5.2/LICENSE), © 2026 Ilya Amursky. Ableton software and
207
+ content are not included and remain subject to their own licenses.
@@ -0,0 +1,75 @@
1
+ # Third-party notices
2
+
3
+ Tonable is an independent project and is not affiliated with Ableton AG.
4
+ Ableton and Live are trademarks of Ableton AG.
5
+
6
+ The projects below informed Tonable's implementation. Their MIT license notices
7
+ are retained here. Source comments identify the relevant techniques, including
8
+ command timeout cancellation and automation event ordering. These notices do not
9
+ cover Ableton software, presets or packs; none are bundled with Tonable.
10
+
11
+ ## Attribution policy
12
+
13
+ When incorporating third-party code, identify its source in the affected file
14
+ and retain its copyright and license notice here. Keep upstream branding out of
15
+ Tonable's product name and artwork.
16
+
17
+ ## ableton-live-mcp
18
+
19
+ https://github.com/wstierhout/ableton-live-mcp
20
+
21
+ ```
22
+ MIT License
23
+
24
+ Copyright (c) 2025 Siddharth Ahuja
25
+ Copyright (c) 2026 wstierhout
26
+
27
+ Permission is hereby granted, free of charge, to any person obtaining a copy
28
+ of this software and associated documentation files (the "Software"), to deal
29
+ in the Software without restriction, including without limitation the rights
30
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
31
+ copies of the Software, and to permit persons to whom the Software is
32
+ furnished to do so, subject to the following conditions:
33
+
34
+ The above copyright notice and this permission notice shall be included in all
35
+ copies or substantial portions of the Software.
36
+
37
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
40
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
41
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
42
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
43
+ SOFTWARE.
44
+ ```
45
+
46
+ ## Producer Pal
47
+
48
+ https://github.com/adamjmurray/producer-pal
49
+
50
+ Producer Pal is a trademark. Tonable uses its own product name and artwork.
51
+
52
+ ```
53
+ MIT License
54
+
55
+ Copyright (c) 2025-2026 Adam Murray and Producer Pal contributors
56
+
57
+ Permission is hereby granted, free of charge, to any person obtaining a copy
58
+ of this software and associated documentation files (the "Software"), to deal
59
+ in the Software without restriction, including without limitation the rights
60
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
61
+ copies of the Software, and to permit persons to whom the Software is
62
+ furnished to do so, subject to the following conditions:
63
+
64
+ The above copyright notice and this permission notice shall be included in all
65
+ copies or substantial portions of the Software.
66
+
67
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
68
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
69
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
70
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
71
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
72
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
73
+ SOFTWARE.
74
+
75
+ ```
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1615 404" width="1615" height="404">
2
+ <title>tonable</title>
3
+ <path fill="#DCDCDC" d="M1438.12 367.22C1436.06 367.11 1433.42 366.90 1432.25 366.75C1427.39 366.17 1424.34 365.75 1423.75 365.60C1423.41 365.50 1422.06 365.23 1420.75 364.98C1415.78 364.03 1414.50 363.76 1413.33 363.42C1412.67 363.22 1411.62 362.93 1411.00 362.77C1410.38 362.61 1409.14 362.27 1408.25 362.01C1407.36 361.75 1406.01 361.36 1405.25 361.15C1404.49 360.93 1403.65 360.65 1403.38 360.51C1403.10 360.38 1402.14 360.03 1401.25 359.74C1394.82 357.64 1384.38 352.68 1378.55 348.95C1378.18 348.71 1377.59 348.35 1377.25 348.16C1374.41 346.53 1368.00 342.00 1364.88 339.41C1360.85 336.06 1354.72 330.01 1351.93 326.62C1351.25 325.80 1350.31 324.68 1349.86 324.12C1347.24 321.00 1343.19 315.44 1341.88 313.20C1338.18 306.88 1336.53 303.82 1335.39 301.25C1334.93 300.21 1334.20 298.58 1333.75 297.62C1332.20 294.28 1332.00 293.82 1332.00 293.64C1332.00 293.53 1331.84 293.10 1331.64 292.66C1331.22 291.76 1330.93 290.95 1329.34 286.25C1328.20 282.90 1327.89 281.84 1327.00 278.25C1325.17 270.94 1324.49 267.09 1323.61 259.25C1323.09 254.60 1322.86 240.87 1323.22 236.12C1323.83 228.24 1324.63 222.75 1326.02 217.00C1326.30 215.83 1326.68 214.20 1326.87 213.38C1327.06 212.55 1327.41 211.26 1327.63 210.50C1327.86 209.74 1328.27 208.34 1328.56 207.38C1328.84 206.41 1329.41 204.67 1329.81 203.50C1330.21 202.33 1330.70 200.87 1330.90 200.25C1331.10 199.63 1331.43 198.77 1331.63 198.34C1331.83 197.90 1332.00 197.43 1332.00 197.28C1332.00 197.13 1332.24 196.48 1332.53 195.82C1332.82 195.16 1333.20 194.29 1333.38 193.88C1335.70 188.51 1337.48 185.09 1341.88 177.55C1342.33 176.77 1345.47 172.14 1346.49 170.75C1347.05 169.99 1347.79 168.95 1348.14 168.42C1348.49 167.89 1349.48 166.66 1350.33 165.67C1351.18 164.68 1352.43 163.20 1353.12 162.37C1355.59 159.39 1363.50 151.77 1366.46 149.51C1367.10 149.02 1367.74 148.50 1367.88 148.35C1368.01 148.20 1368.57 147.75 1369.12 147.35C1370.53 146.33 1370.47 146.37 1372.05 145.13C1372.83 144.51 1373.53 144.00 1373.62 144.00C1373.70 144.00 1374.36 143.58 1375.08 143.06C1376.55 142.01 1376.95 141.75 1378.35 140.94C1380.01 139.97 1380.19 139.86 1380.54 139.59C1380.96 139.26 1384.96 137.13 1388.66 135.27C1391.30 133.94 1392.33 133.46 1394.62 132.49C1395.17 132.26 1396.16 131.83 1396.82 131.53C1397.48 131.24 1398.13 131.00 1398.28 131.00C1398.43 131.00 1398.90 130.84 1399.34 130.64C1400.24 130.22 1401.44 129.79 1404.62 128.74C1410.56 126.79 1414.55 125.71 1420.25 124.53C1425.44 123.45 1426.62 123.27 1434.91 122.25C1439.55 121.68 1450.16 121.43 1457.03 121.73C1460.79 121.89 1464.66 122.13 1465.62 122.25C1471.97 123.05 1473.68 123.29 1474.12 123.42C1474.39 123.50 1475.85 123.77 1477.37 124.02C1481.14 124.64 1483.43 125.11 1486.38 125.88C1487.75 126.25 1489.46 126.69 1490.17 126.87C1490.89 127.05 1491.96 127.37 1492.55 127.57C1493.14 127.78 1494.64 128.26 1495.88 128.65C1497.11 129.04 1498.41 129.50 1498.75 129.68C1499.09 129.85 1499.54 130.00 1499.75 130.01C1499.96 130.01 1500.58 130.23 1501.12 130.50C1501.67 130.77 1502.25 130.99 1502.41 130.99C1502.56 131.00 1503.35 131.29 1504.16 131.64C1504.96 132.00 1505.85 132.39 1506.12 132.50C1510.04 134.18 1512.84 135.47 1515.00 136.57C1519.32 138.80 1519.91 139.13 1522.74 140.98C1523.50 141.47 1524.23 141.93 1524.38 142.00C1525.29 142.43 1530.15 145.89 1532.66 147.90C1536.74 151.18 1539.00 153.23 1543.38 157.62C1547.83 162.09 1550.86 165.57 1553.38 169.11C1553.65 169.50 1554.11 170.11 1554.40 170.47C1555.46 171.78 1560.32 178.97 1561.10 180.38C1561.33 180.79 1561.72 181.46 1561.97 181.88C1563.31 184.07 1565.35 187.80 1566.47 190.12C1569.40 196.18 1569.85 197.18 1570.86 200.00C1571.08 200.62 1571.37 201.35 1571.50 201.62C1571.63 201.90 1571.92 202.63 1572.13 203.25C1574.24 209.22 1574.86 211.05 1575.14 212.12C1575.32 212.81 1575.71 214.28 1576.01 215.38C1577.03 219.21 1578.06 224.13 1578.76 228.50C1578.90 229.39 1579.19 231.00 1579.40 232.06C1579.83 234.29 1580.41 240.70 1580.75 246.88C1581.05 252.59 1581.06 263.31 1580.76 264.11L1580.51 264.75L1493.44 264.81L1406.38 264.88L1404.88 265.42C1404.05 265.71 1403.08 266.02 1402.72 266.10C1401.90 266.28 1401.76 266.88 1402.04 269.15C1402.38 271.96 1403.78 277.58 1404.90 280.62C1405.26 281.59 1405.71 282.82 1405.92 283.38C1406.67 285.42 1408.95 289.71 1410.63 292.25C1413.22 296.18 1418.47 301.27 1422.88 304.12C1424.11 304.92 1429.61 307.67 1430.66 308.00C1431.19 308.17 1431.74 308.40 1431.88 308.49C1432.21 308.73 1435.15 309.63 1437.62 310.26C1440.84 311.08 1446.55 311.75 1450.29 311.75C1453.41 311.75 1462.00 310.94 1462.57 310.58C1462.70 310.50 1463.66 310.24 1464.71 310.00C1466.75 309.53 1467.50 309.28 1469.88 308.31C1471.78 307.53 1473.60 306.65 1474.88 305.88C1475.42 305.54 1476.04 305.19 1476.25 305.09C1478.87 303.82 1486.32 296.97 1488.45 293.88C1490.62 290.73 1491.60 289.04 1492.64 286.62C1492.99 285.80 1493.38 284.94 1493.50 284.72C1493.62 284.50 1493.84 283.85 1493.99 283.27C1494.20 282.52 1494.45 282.16 1494.91 281.99C1495.90 281.61 1576.39 281.79 1576.77 282.17C1576.99 282.39 1576.94 282.79 1576.53 283.86C1576.24 284.62 1575.76 285.90 1575.47 286.69C1575.17 287.48 1574.79 288.46 1574.61 288.88C1574.43 289.29 1573.95 290.41 1573.53 291.38C1573.12 292.34 1572.06 294.53 1571.17 296.25C1569.67 299.18 1569.32 299.83 1567.96 302.19C1567.66 302.70 1567.30 303.35 1567.14 303.62C1566.56 304.67 1562.84 310.32 1561.37 312.38C1560.88 313.06 1560.22 314.02 1559.90 314.50C1559.57 314.98 1558.99 315.79 1558.59 316.29C1558.20 316.79 1557.65 317.51 1557.38 317.89C1557.10 318.27 1556.76 318.70 1556.62 318.85C1556.49 319.00 1555.53 320.14 1554.50 321.37C1549.60 327.25 1544.11 332.62 1537.66 337.86C1533.66 341.10 1533.10 341.51 1529.12 344.19C1526.36 346.05 1526.54 345.94 1523.96 347.45C1522.95 348.03 1521.96 348.62 1521.75 348.74C1519.21 350.29 1513.08 353.48 1510.62 354.53C1509.66 354.94 1508.51 355.44 1508.06 355.64C1507.62 355.84 1506.88 356.16 1506.44 356.36C1504.51 357.21 1499.80 359.00 1499.48 359.00C1499.28 359.00 1498.84 359.15 1498.50 359.32C1498.16 359.50 1496.86 359.96 1495.62 360.34C1494.39 360.72 1492.81 361.21 1492.12 361.42C1489.53 362.24 1483.98 363.61 1479.62 364.50C1474.63 365.53 1471.16 366.07 1465.25 366.74C1459.34 367.41 1445.93 367.65 1438.12 367.22ZM804.50 366.48C803.19 366.36 800.69 366.15 798.93 366.01C795.19 365.71 790.24 364.85 785.62 363.70C785.08 363.57 784.01 363.31 783.25 363.13C781.82 362.80 780.60 362.43 777.00 361.23C769.54 358.76 762.67 355.24 756.01 350.49C753.95 349.03 748.74 344.77 747.16 343.26C745.79 341.96 742.45 338.23 741.44 336.88C741.34 336.74 741.00 336.29 740.68 335.88C740.16 335.20 737.50 331.24 736.88 330.22C735.65 328.19 734.05 325.12 733.10 322.97C732.46 321.54 731.79 320.04 731.61 319.62C730.74 317.71 727.99 309.02 728.00 308.20C728.00 307.96 727.78 306.84 727.52 305.70C726.47 301.20 725.92 293.97 726.26 289.00C726.87 280.08 727.76 275.93 730.92 267.38C731.44 265.96 733.88 260.99 735.22 258.62C736.54 256.29 738.53 253.35 740.46 250.88C743.01 247.61 749.14 241.82 752.75 239.28C754.55 238.01 757.06 236.36 757.88 235.90C758.29 235.67 758.96 235.27 759.38 235.01C760.09 234.55 760.77 234.18 764.50 232.22C765.96 231.45 770.40 229.44 772.38 228.65C773.35 228.26 779.88 226.17 782.12 225.53C785.57 224.54 790.74 223.40 794.00 222.90C795.31 222.69 797.11 222.41 798.00 222.27C808.81 220.59 813.38 220.41 847.25 220.37C863.27 220.35 876.51 220.31 876.68 220.29C878.20 220.09 879.00 211.70 878.13 205.00C877.93 203.42 877.60 201.68 877.39 201.12C877.19 200.57 877.02 199.90 877.01 199.62C877.00 199.35 876.84 198.83 876.65 198.46C876.46 198.10 876.17 197.40 876.01 196.91C875.85 196.42 875.45 195.53 875.12 194.94C874.79 194.36 874.33 193.54 874.10 193.12C872.84 190.88 869.94 187.71 867.62 186.03C865.80 184.72 865.61 184.61 863.10 183.39C857.97 180.89 853.62 180.04 845.88 180.03C838.16 180.02 833.22 181.00 826.74 183.83C825.27 184.47 821.47 186.72 820.01 187.82C818.30 189.11 816.26 191.16 814.96 192.93C813.02 195.56 811.87 198.13 810.49 202.92C810.20 203.91 809.82 204.84 809.63 205.00C809.18 205.37 732.79 205.31 732.31 204.93C731.78 204.52 731.86 204.08 733.56 198.12C734.78 193.85 736.29 189.80 738.15 185.80C738.62 184.80 739.00 183.94 739.00 183.88C739.00 183.78 741.93 178.34 742.91 176.62C743.23 176.07 743.67 175.29 743.90 174.88C744.25 174.24 746.30 171.13 747.93 168.75C752.90 161.50 760.35 153.52 767.39 147.92C769.58 146.18 771.51 144.64 771.67 144.51C772.08 144.17 776.21 141.43 777.25 140.81C782.05 137.93 791.46 133.00 792.13 133.00C792.24 133.00 792.78 132.79 793.35 132.53C797.02 130.85 802.52 128.89 807.38 127.53C813.02 125.95 812.28 126.13 819.21 124.61C821.38 124.13 826.07 123.41 832.09 122.62C840.94 121.46 861.58 121.39 868.00 122.49C868.76 122.62 870.66 122.84 872.23 122.99C873.79 123.13 875.93 123.41 876.98 123.61C878.02 123.81 879.61 124.10 880.50 124.25C885.00 125.01 889.81 126.04 893.38 126.99C894.48 127.29 895.98 127.69 896.73 127.88C897.48 128.07 898.38 128.33 898.73 128.46C899.08 128.60 900.39 129.01 901.62 129.37C903.95 130.07 906.07 130.81 907.38 131.38C907.79 131.57 909.42 132.28 911.00 132.97C915.71 135.03 920.46 137.55 923.49 139.62C927.31 142.22 929.69 144.19 932.92 147.42C935.10 149.61 936.12 150.76 938.43 153.60C940.88 156.63 944.88 163.51 947.01 168.38C947.53 169.55 947.74 170.07 949.02 173.31C950.90 178.11 951.93 182.07 953.35 190.00C953.56 191.17 953.85 193.98 954.00 196.25C954.15 198.52 954.33 200.53 954.39 200.73C954.65 201.48 954.50 358.79 954.24 359.27C953.99 359.74 953.23 359.75 917.00 359.75C880.69 359.75 880.01 359.74 879.76 359.27C879.59 358.95 879.50 354.96 879.50 348.02L879.50 337.25L878.94 337.28C878.57 337.29 877.76 337.98 876.63 339.21C869.08 347.49 860.65 353.74 850.58 358.53C848.88 359.34 847.41 360.00 847.31 360.01C847.21 360.01 846.67 360.23 846.12 360.50C845.58 360.77 844.98 360.99 844.80 360.99C844.62 361.00 843.94 361.21 843.30 361.46C840.44 362.59 835.18 363.99 828.50 365.39C823.60 366.41 810.59 367.00 804.50 366.48ZM1105.62 366.15C1098.18 365.56 1091.26 364.02 1083.00 361.13C1081.01 360.43 1073.00 356.54 1071.60 355.59C1071.12 355.27 1070.67 355.00 1070.60 355.00C1070.54 355.00 1070.17 354.79 1069.80 354.53C1069.43 354.28 1068.13 353.42 1066.92 352.63C1062.40 349.69 1055.50 343.47 1051.85 339.04C1050.30 337.16 1049.55 336.55 1049.39 337.05C1049.33 337.23 1049.22 342.32 1049.15 348.37C1049.03 357.56 1048.95 359.42 1048.65 359.64C1048.16 359.99 974.36 359.96 974.00 359.60C973.62 359.22 973.66 34.79 974.03 34.34C974.26 34.06 980.58 34.00 1011.52 34.00C1034.28 34.00 1048.78 34.09 1048.86 34.23C1048.94 34.36 1049.04 61.47 1049.09 94.48C1049.13 127.49 1049.25 154.59 1049.35 154.69C1049.56 154.90 1050.61 153.75 1052.23 151.53C1052.83 150.70 1053.62 149.70 1053.98 149.30C1054.33 148.91 1055.24 147.86 1056.00 146.99C1059.45 142.98 1063.70 139.29 1068.88 135.81C1070.09 134.99 1070.17 134.94 1072.93 133.37C1079.29 129.74 1087.00 126.78 1094.12 125.24C1094.81 125.09 1096.04 124.80 1096.85 124.60C1097.66 124.39 1099.63 124.07 1101.23 123.87C1102.82 123.67 1104.86 123.40 1105.75 123.27C1110.56 122.53 1124.35 122.74 1130.20 123.63C1134.36 124.27 1138.56 125.05 1140.25 125.50C1143.43 126.35 1144.14 126.54 1145.60 126.90C1146.42 127.11 1147.39 127.44 1147.78 127.64C1148.16 127.84 1148.66 128.00 1148.89 128.00C1149.11 128.00 1149.65 128.17 1150.09 128.37C1150.52 128.57 1151.38 128.90 1152.00 129.10C1153.75 129.66 1155.28 130.24 1156.38 130.74C1156.92 130.99 1158.05 131.50 1158.88 131.87C1162.31 133.42 1165.38 135.04 1170.20 137.88C1171.08 138.39 1175.15 141.12 1175.78 141.61C1176.14 141.89 1176.69 142.29 1177.00 142.50C1178.18 143.28 1181.73 146.19 1184.55 148.70C1187.91 151.67 1192.87 156.92 1195.83 160.62C1198.86 164.41 1200.15 166.19 1202.67 170.00C1203.44 171.17 1204.27 172.42 1204.51 172.77C1205.03 173.52 1210.00 182.23 1210.00 182.38C1210.00 182.44 1210.63 183.81 1211.39 185.43C1213.49 189.87 1213.98 190.97 1215.50 194.75C1215.75 195.37 1216.19 196.46 1216.48 197.17C1216.76 197.88 1217.00 198.60 1217.00 198.76C1217.00 198.92 1217.16 199.40 1217.36 199.84C1218.24 201.76 1220.53 209.44 1221.47 213.62C1222.49 218.16 1222.74 219.42 1223.12 221.85C1223.34 223.20 1223.56 224.40 1223.62 224.50C1223.80 224.78 1224.51 231.99 1224.75 235.88C1225.03 240.33 1225.03 248.53 1224.75 252.25C1224.41 256.90 1223.77 262.49 1223.37 264.43C1223.17 265.42 1223.00 266.52 1223.00 266.88C1223.00 267.77 1221.49 274.50 1220.45 278.25C1219.18 282.84 1217.14 289.12 1215.99 292.00C1215.69 292.76 1215.29 293.79 1215.10 294.31C1214.41 296.16 1210.09 305.08 1208.56 307.78C1205.56 313.11 1205.42 313.33 1202.28 318.12C1201.38 319.50 1200.08 321.36 1199.38 322.27C1198.69 323.17 1197.84 324.29 1197.50 324.75C1197.16 325.20 1196.76 325.70 1196.62 325.85C1196.49 326.00 1195.82 326.80 1195.13 327.63C1191.63 331.84 1186.70 337.02 1182.91 340.46C1181.01 342.19 1176.67 345.67 1175.25 346.62C1174.63 347.04 1174.07 347.43 1174.00 347.51C1173.93 347.58 1173.26 348.03 1172.50 348.50C1171.74 348.98 1171.01 349.45 1170.88 349.56C1170.74 349.67 1169.88 350.23 1168.98 350.82C1168.07 351.40 1167.11 352.01 1166.85 352.18C1166.59 352.35 1165.98 352.70 1165.50 352.96C1165.02 353.21 1163.78 353.89 1162.75 354.46C1160.83 355.53 1158.00 356.92 1156.00 357.80C1155.38 358.07 1154.68 358.39 1154.44 358.52C1154.20 358.65 1153.58 358.91 1153.07 359.10C1152.55 359.29 1151.51 359.69 1150.75 359.99C1148.21 360.98 1142.99 362.67 1141.00 363.13C1140.24 363.31 1139.17 363.57 1138.62 363.70C1134.71 364.68 1129.21 365.66 1125.62 366.02C1121.52 366.43 1110.06 366.50 1105.62 366.15ZM123.38 359.73C118.23 359.42 113.71 358.69 109.38 357.47C106.41 356.63 103.41 355.66 102.75 355.32C102.41 355.15 101.97 355.00 101.79 355.00C101.60 355.00 101.15 354.84 100.79 354.64C100.42 354.45 99.45 353.99 98.62 353.63C96.62 352.75 94.71 351.75 94.23 351.34C94.01 351.15 93.77 351.00 93.69 351.00C93.52 351.00 90.43 349.10 89.43 348.38C83.35 344.01 79.95 340.83 75.54 335.42C72.90 332.17 69.14 326.36 67.77 323.38C65.64 318.76 65.35 318.04 64.26 314.79C61.98 307.96 61.27 304.02 60.52 294.00C60.39 292.13 60.35 271.69 60.43 243.11C60.53 206.98 60.49 195.21 60.27 194.79L59.98 194.25L46.79 194.25C36.86 194.25 33.53 194.18 33.30 193.95C33.07 193.72 33.00 186.17 33.00 161.50C33.00 136.83 33.07 129.28 33.30 129.05C33.53 128.82 36.86 128.75 46.79 128.75C59.80 128.75 59.99 128.74 60.25 128.24C60.44 127.89 60.56 118.48 60.63 97.00C60.69 75.54 60.81 66.11 61.00 65.76C61.27 65.25 61.34 65.25 98.88 65.25C135.80 65.25 136.49 65.26 136.74 65.73C136.92 66.06 137.00 76.32 137.00 97.18C137.00 120.94 137.07 128.22 137.30 128.45C137.53 128.68 144.80 128.75 168.50 128.75C192.20 128.75 199.47 128.82 199.70 129.05C199.93 129.28 200.00 136.80 200.00 161.39C200.00 190.89 199.97 193.47 199.59 193.78C199.24 194.07 194.03 194.14 168.28 194.19C147.41 194.24 137.31 194.34 137.13 194.52C136.77 194.88 136.64 267.00 136.99 273.25C137.13 275.79 137.41 278.61 137.61 279.50C137.80 280.39 138.07 281.63 138.21 282.25C138.61 284.04 139.28 286.35 139.49 286.62C139.59 286.76 139.80 287.24 139.95 287.69C140.64 289.73 143.41 292.92 145.60 294.17C148.08 295.59 151.00 296.63 154.62 297.40C156.70 297.83 158.48 297.88 177.00 298.00L197.12 298.12L197.26 314.00C197.43 332.51 197.26 359.08 196.97 359.54C196.82 359.80 189.72 359.86 161.33 359.87C141.83 359.87 124.75 359.81 123.38 359.73ZM501.69 359.81L486.26 359.75L486.12 359.19C486.05 358.88 486.02 307.21 486.06 244.38L486.12 130.12L524.00 130.12L561.88 130.12L562.00 143.79C562.07 151.31 562.21 157.54 562.31 157.64C562.56 157.89 563.46 157.05 563.94 156.13C565.04 153.99 569.96 148.01 573.39 144.63C574.98 143.07 577.30 140.97 578.50 140.00C579.26 139.39 580.04 138.75 580.25 138.57C581.10 137.84 582.21 137.05 583.62 136.14C584.45 135.62 585.52 134.93 586.00 134.62C589.50 132.37 596.13 129.18 600.25 127.77C603.17 126.76 604.87 126.23 606.16 125.90C606.97 125.70 608.08 125.42 608.62 125.29C611.30 124.61 613.37 124.22 616.00 123.88C617.58 123.68 619.66 123.38 620.62 123.23C622.98 122.84 636.02 122.83 638.75 123.21C639.92 123.37 642.02 123.66 643.42 123.86C648.56 124.57 658.54 127.18 661.66 128.63C662.10 128.83 662.61 129.00 662.79 129.00C662.98 129.00 663.36 129.15 663.63 129.34C663.90 129.53 664.41 129.77 664.75 129.87C665.92 130.23 672.11 133.34 674.88 134.95C676.39 135.84 677.85 136.69 678.12 136.85C679.33 137.54 682.80 139.96 683.12 140.34C683.26 140.49 684.33 141.43 685.50 142.41C691.68 147.59 696.96 153.97 702.35 162.75C703.74 165.00 705.50 168.50 707.03 172.00C707.72 173.58 708.38 175.10 708.50 175.38C709.01 176.52 710.00 179.26 710.63 181.25C711.01 182.42 711.40 183.60 711.52 183.88C712.29 185.73 714.07 193.82 715.18 200.50L715.86 204.62L715.93 281.98C715.97 324.53 715.91 359.44 715.80 359.55C715.53 359.82 637.49 359.84 637.22 359.57C637.10 359.45 636.98 329.10 636.94 292.12C636.88 227.99 636.85 224.75 636.41 222.25C635.07 214.63 634.32 212.15 631.90 207.29C630.34 204.17 629.18 202.63 626.00 199.48C622.73 196.24 619.91 194.34 615.62 192.48C613.50 191.56 609.97 190.63 607.00 190.22C604.26 189.83 596.08 190.09 593.75 190.63C591.72 191.10 587.86 192.22 587.25 192.52C587.04 192.62 585.75 193.25 584.38 193.91C578.56 196.71 573.40 201.27 569.72 206.88C568.75 208.34 567.00 211.43 567.00 211.67C567.00 211.78 566.82 212.21 566.60 212.62C566.39 213.04 566.04 213.82 565.83 214.38C563.57 220.37 562.71 224.51 562.25 231.62C562.13 233.55 562.02 263.11 562.01 297.32C562.00 349.40 561.94 359.54 561.66 359.65C561.26 359.80 523.71 359.90 501.69 359.81ZM1247.62 359.75L1236.12 359.62L1236.06 196.53C1236.02 94.67 1236.09 33.32 1236.24 33.14C1236.58 32.72 1313.14 32.59 1313.64 33.01C1313.95 33.27 1314.00 55.08 1314.00 196.39C1314.00 292.39 1313.91 359.53 1313.78 359.61C1313.47 359.80 1262.00 359.91 1247.62 359.75ZM843.62 311.41C844.59 311.18 845.83 310.87 846.38 310.74C848.77 310.16 850.29 309.70 850.94 309.36C851.31 309.16 851.76 309.00 851.93 309.00C852.37 309.00 856.16 307.27 857.88 306.29C863.46 303.10 868.48 297.55 871.82 290.88C873.22 288.08 874.00 286.38 874.00 286.14C874.00 286.03 874.17 285.60 874.37 285.16C876.03 281.67 878.73 266.73 877.97 265.22C877.80 264.88 876.81 264.80 870.45 264.67C861.69 264.48 832.46 264.63 828.75 264.87C827.31 264.97 825.21 265.26 824.09 265.52C822.97 265.79 821.89 266.00 821.69 266.00C821.23 266.00 817.20 267.25 816.88 267.50C816.74 267.60 816.34 267.77 816.00 267.88C814.59 268.30 811.39 270.40 809.62 272.06C807.45 274.08 806.03 275.95 805.13 278.00C804.91 278.48 804.63 279.06 804.51 279.29C804.38 279.52 804.02 280.75 803.70 282.04C802.87 285.43 802.87 291.15 803.72 294.38C804.04 295.61 804.39 296.74 804.50 296.88C804.60 297.01 804.77 297.41 804.87 297.75C805.19 298.81 807.64 302.81 808.73 304.05C811.09 306.72 814.69 308.98 818.75 310.33C820.45 310.90 821.55 311.15 825.00 311.76C825.62 311.86 829.67 311.93 834.00 311.90C840.42 311.85 842.20 311.76 843.62 311.41ZM1100.88 302.76C1101.42 302.63 1102.55 302.36 1103.38 302.16C1107.10 301.28 1111.65 299.50 1114.76 297.71C1121.92 293.59 1128.21 287.12 1133.19 278.75C1133.88 277.58 1136.30 272.75 1137.12 270.88C1138.06 268.73 1140.01 262.73 1140.00 261.99C1140.00 261.78 1140.17 260.94 1140.38 260.13C1140.80 258.52 1141.37 254.77 1141.78 250.88C1142.16 247.36 1141.92 235.65 1141.42 233.38C1141.22 232.41 1140.93 230.95 1140.79 230.12C1140.32 227.39 1139.75 224.89 1139.37 223.93C1139.17 223.41 1139.00 222.74 1138.99 222.43C1138.99 222.13 1138.77 221.43 1138.50 220.88C1138.23 220.32 1138.01 219.73 1138.01 219.55C1137.99 218.73 1135.37 212.88 1133.80 210.12C1129.90 203.31 1124.26 197.21 1118.63 193.74C1116.98 192.72 1116.72 192.58 1114.12 191.30C1109.47 189.00 1106.67 188.11 1101.38 187.24C1099.60 186.95 1091.64 186.96 1090.00 187.25C1083.31 188.46 1080.58 189.26 1076.30 191.29C1069.81 194.36 1063.81 199.67 1058.93 206.67C1058.06 207.92 1055.00 213.16 1055.00 213.41C1055.00 213.48 1054.71 214.17 1054.35 214.95C1053.43 216.99 1053.34 217.20 1052.66 219.00C1051.57 221.88 1050.00 227.11 1050.00 227.86C1050.00 228.15 1049.83 229.01 1049.63 229.76C1048.91 232.44 1048.43 240.39 1048.58 247.25C1048.76 255.48 1049.31 260.11 1050.65 264.62C1050.86 265.31 1051.26 266.66 1051.54 267.62C1052.25 270.03 1053.20 272.86 1053.67 273.96C1055.00 277.06 1058.26 283.19 1059.60 285.12C1062.53 289.32 1067.80 294.74 1071.05 296.91C1073.66 298.64 1078.08 300.78 1079.75 301.13C1080.23 301.23 1080.74 301.39 1080.88 301.49C1081.26 301.78 1085.89 302.79 1087.87 303.01C1090.09 303.27 1099.55 303.09 1100.88 302.76ZM1495.72 220.15C1496.37 219.74 1495.53 214.59 1494.12 210.38C1491.39 202.20 1488.14 196.72 1482.85 191.36C1478.96 187.41 1475.32 184.94 1470.38 182.87C1468.72 182.18 1465.19 181.08 1463.99 180.88C1463.38 180.78 1462.69 180.60 1462.47 180.48C1461.68 180.07 1451.72 179.21 1449.62 179.38C1444.74 179.76 1439.89 180.29 1439.52 180.48C1439.30 180.60 1438.62 180.78 1438.01 180.88C1436.58 181.11 1431.20 182.87 1430.06 183.48C1429.82 183.61 1428.64 184.18 1427.43 184.76C1425.66 185.61 1422.54 187.49 1421.12 188.55C1417.88 191.01 1415.02 193.64 1413.00 196.01C1412.24 196.90 1411.57 197.68 1411.50 197.75C1411.01 198.23 1409.18 200.92 1408.35 202.38C1407.32 204.19 1405.00 208.91 1405.00 209.20C1405.00 209.30 1404.85 209.66 1404.68 210.00C1403.77 211.76 1401.88 219.14 1402.15 219.85C1402.26 220.13 1402.76 220.25 1404.09 220.30C1408.69 220.49 1495.41 220.35 1495.72 220.15ZM328.12 152.70C328.05 152.52 328.02 149.61 328.06 146.25C328.12 141.00 328.18 140.12 328.50 140.12C328.82 140.12 328.88 141.00 328.88 146.48C328.88 151.34 328.80 152.86 328.56 152.94C328.39 152.99 328.19 152.89 328.12 152.70ZM328.12 117.70C328.05 117.51 328.02 115.28 328.06 112.74C328.11 108.84 328.18 108.12 328.50 108.12C328.82 108.12 328.88 108.83 328.88 112.98C328.88 116.64 328.80 117.86 328.56 117.94C328.39 117.99 328.19 117.89 328.12 117.70Z"/>
4
+ <path fill="#00BBE7" d="M351.00 105.43A132.67 132.67 0 1 1 329.00 105.53L329.00 168.44A71.11 71.11 0 1 0 351.00 168.37Z"/>
5
+ </svg>