OMNi

OmniDAW API · 7 min

OmniDAW API

Steruj Omni z innych programów: asystenci AI przez MCP, skrypty, kontrolery i narzędzia testowe. Czym jest API, jak je włączyć i pierwsze wywołanie.

OmniDAW API pozwala innym programom sterować Omni: tworzyć tory, zapisywać nuty i akordy, ustawiać efekty, automatyzować parametry, odsłuchiwać wynik, masterować go i eksportować. Pierwszym użytkownikiem jest asystent AI (przez Model Context Protocol, MCP), ale API to zwykły JSON, więc skrypty, kontrolery sprzętowe, narzędzia testowe i Twoje własne programy korzystają z niego tak samo.

Ta sekcja zawiera wszystko, czego potrzebuje programista: pojęcia i pierwsze wywołanie na tej stronie, protokół, pełną referencję metod, poradnik budowy własnego serwera MCP, biblioteki klienckie, działające receptury oraz bezpieczeństwo i licencję.

UWAGA

Darmowe do budowania. API jest w całości opisane na tych stronach, a przykładowy kod (klient Pythona, przykładowy serwer MCP, małe klienty w Node.js i Ruście) możesz pobrać i używać za darmo na licencji MIT. Własny serwer MCP lub klienta dla Omni możesz zbudować i rozpowszechniać bez pytania o zgodę. Pobierz przykłady (zip).

Jak to się składa

code
 Klient AI (Claude Desktop, Claude Code, Cursor, ...)
      |  MCP przez stdio
      v
 omni-mcp                 serwer MCP: narzędzia, prompty i zasoby
      |                   zrobione z katalogu metod
      |  OmniDAW API: JSON-RPC 2.0, jeden obiekt w linii, TCP 127.0.0.1
      v
 Omni                     wątek nasłuchu -> wątek UI -> ten sam kod
      |                   co kliknięcie na ekranie
      |  komendy silnika
      v
 silnik audio             nietknięty: API nigdy nie działa na wątku audio

Całość trzymają cztery idee:

  1. Jeden katalog. Każda możliwość to metoda z opisem napisanym dla modelu, schematem JSON jej parametrów i gotowym przykładem. Narzędzia MCP, dokument api.methods i referencja są z niego generowane.
  2. Ta sama droga co użytkownik. Wywołanie robi to, co odpowiadające mu kliknięcie. Działa na wątku UI, więc wątek audio nigdy nie jest blokowany.
  3. Wszystko odwracalne. Każda edycja to jeden krok w Historii Cofania Omni z etykietą API: .... Użytkownik cofa to, co zrobił asystent, przez Ctrl+Z, a asystent może sam wywołać edit.undo.
  4. Uszy przed rękami. Wszystko, co zmienia dźwięk, można też zmierzyć: mierniki, głośność, widmo, szerokość stereo, maskowanie. Agent może sprawdzić własną pracę.

Co można zrobić

ObszarPrzykłady
KomponowanieSkale, akordy i progresje w 18 stylach z prowadzeniem głosów; melodie w 12 stylach; harmonizacja melodii; wzorce perkusji; efekty i generatory MIDI zrenderowane do nut
AranżacjaBudowa utworu ze scen, układanie i edycja klipów na osi czasu, markery, pętle, mapa tempa i zmiany metrum, groove
BrzmienieInstrumenty wbudowane i wtyczki wraz z presetami, każdy parametr instrumentów i efektów, ścieżki automatyki, wysyłki i returny
MiksŁańcuchy efektów na torach, returnach i masterze; mierniki na żywo; nagranie i analiza mastera lub toru; porównanie dwóch nagrań pod kątem maskowania
MasteringCele dostawy (Spotify, Apple Music, YouTube, EBU R128 i inne), werdykty, łańcuch masteringowy zbudowany z pomiaru, eksport do WAV
AudioImport audio, cięcie sampla i granie wzorców oraz melodii ze slice'ów, transkrypcja audio na nuty, rozdzielanie miksu na stemy

Metod jest 102 w 24 domenach. Referencja wymienia wszystkie.

Włącz

API jest domyślnie wyłączone, bo otwiera port na Twoim komputerze (osiągalny tylko z Twojej maszyny).

  1. W Omni otwórz Ustawienia, AI Create i włącz Enable OmniDAW API. Aby włączyć tylko na jedno uruchomienie, uruchom Omni z parametrem --api albo ustaw OMNI_API=1.
  2. Omni zapisuje w swoim folderze ustawień plik z numerem portu i świeżym tajnym tokenem, endpoint.json:
SystemFolder ustawień
Windows%APPDATA%\omni
macOS~/Library/Application Support/omni
Linux$XDG_CONFIG_HOME/omni, a jeśli brak, ~/.config/omni

Plik to api/endpoint.json w tym folderze i istnieje tylko wtedy, gdy Omni działa z włączonym API. Klienci czytają go, żeby znaleźć Omni; nic innego w sieci tego nie potrafi.

Pierwsze wywołanie

Najszybciej wejść przez klienta Pythona: jeden plik, który wymaga tylko niedawnego Pythona 3 (pobierz omnidaw.py):

python
from omnidaw import Omni

with Omni() as omni:
    print(omni.session.info())
    for track in omni.tracks.list():
        print(track["index"], track["name"], track["kind"])

Za tym stoi jedna linia JSON na wywołanie. Tak wygląda to, co klient wysyła zwykłym połączeniem TCP do 127.0.0.1:

json
{"jsonrpc":"2.0","id":2,"method":"session.info"}

i co wraca:

json
{"jsonrpc":"2.0","id":2,"result":{"api_version":"0.21.0","app_version":"0.1.0","dirty":false,"engine_running":true,"project_name":"My Song","project_path":"C:\\Music\\My Song.omni","return_bus_count":1,"sample_rate":48000,"scene_count":8,"track_count":5}}

(Wyniki rosną z nowymi wersjami; klient powinien ignorować pola, których nie zna.) Przed pierwszym wywołaniem połączenie musi przywitać się tokenem; uścisk dłoni pokazuje strona o protokole. Klient Pythona robi to za Ciebie.

Podłącz asystenta AI

Omni zawiera serwer MCP, omni-mcp, zbudowany z tego samego katalogu. Leży obok pliku wykonywalnego Omni. W Ustawieniach, AI Create, Copy MCP config daje wpis do wklejenia w konfiguracji asystenta:

json
{
  "mcpServers": {
    "omni": { "command": "C:\\path\\to\\omni-mcp.exe" }
  }
}

Dla Claude Code: claude mcp add omni -- C:\path\to\omni-mcp.exe.

Na Linuksie Omni jest AppImage, a omni-mcp jest w środku. Uruchom AppImage z --mcp, by wystartować serwer MCP (./Omni-x86_64.AppImage --mcp). Copy MCP config daje wtedy wpis ze ścieżką Twojego AppImage i tym parametrem; dla Claude Code: claude mcp add omni -- /path/to/Omni-x86_64.AppImage --mcp.

Serwer uruchamia się także wtedy, gdy Omni nie działa; narzędzia odpowiadają wtedy czytelnym błędem, a następne wywołanie łączy się samo, gdy tylko Omni wstanie, również po jego restarcie. Serwer oferuje też gotowe prompty (przegląd miksu, kontrola głośności, kontrola maskowania, mastering pod cel, aranżacja utworu, komponowanie pętli) i zasoby tylko do odczytu.

Chcesz inny serwer albo serwer w innym języku? Do tego służy Budowa serwera MCP.

Wersje

API ma wersję major.minor.patch. Klient zbudowany dla starszej wersji minor działa dalej, bo nowe wersje tylko dodają metody i pola. Omni przyjmuje każdego klienta z tym samym numerem major i wersją nie nowszą od własnej. Aktualna wersja: 0.21.

WersjaDodano
0.1Fundament: sesja, transport, tory, instrumenty, klipy sesji, mierniki na żywo, cofnij i ponów
0.2Teoria muzyki i progresje, transformacje klipów, sceny, usuwanie torów
0.3Zmiana instrumentu, przesuwanie torów, nazwy scen, długość klipu, analiza akordów i tonacji klipu
0.4Łańcuchy efektów na torach, returnach i masterze; mikser (wysyłki, returny, master)
0.5Słuchanie: zadania, nagranie i analiza mastera lub toru, porównanie maskowania
0.6Mastering: cele dostawy, werdykty, łańcuch masteringowy, analiza plików, eksport do WAV
0.7Aranżacja: utwory ze scen, klipy na osi czasu, markery, pętla
0.8Wzorce perkusji dla syntezatora perkusji TOMNIC
0.9Każdy parametr instrumentów i efektów, także wtyczek
0.10TOMNIC na osi czasu, zapis projektu
0.11Tworzenie i usuwanie szyn return, etykiety opcji parametrów wyboru
0.12Ścieżki automatyki
0.13Edycja, kopiowanie i usuwanie pojedynczych klipów na osi czasu
0.14Instrumenty-wtyczki i ich presety
0.15Generator melodii, harmonizacja, duplikowanie torów, ekspresja nut
0.16Efekty MIDI, wtyczki efektowe na każdym łańcuchu
0.17Szybki eksport offline, stemy, dithering
0.18Mapa tempa, zmiany metrum, groove
0.19Import audio, transkrypcja, rozdzielanie stemów, sampler i slicer
0.20Capabilities w uścisku dłoni, klient Python
0.21Renderowanie efektów i generatorów MIDI do klipów

Co dalej

  • Chcesz tylko spróbować? Przejdź receptury: pętla akordów z melodią, przemiatanie filtra, pętla masteringowa, krojenie breaka.
  • Budujesz serwer MCP? Przeczytaj Budowę serwera MCP, gdzie jest kompletny działający serwer w około 110 liniach.
  • Piszesz klienta w innym języku? Protokół jest mały: gniazda i JSON.
  • Szukasz metody? Referencja zawiera każdy parametr i gotowe zapytanie dla każdej metody.