スポンサーリンク

今話題のAbleton Live用ツール、Extensions SDK。実際どんなものなのか、素人でも使えるのか試してみた!

この記事は約19分で読めます。
この記事にはアフィリエイトなどPRが含まれています

つい先日「DTMソフト購入の新潮流——Ableton Live 12.4とRent-to-ownが変える制作環境」という記事でAbletonの動きを紹介したばかりでしたが、今度はExtensions Software Development Kit(SDK)なるものを6月2日に突然発表し、現在パブリックベータ版が公開されています。SNS上でも、国内外でいろいろな人が取り上げているので、興味を持った方も少なくないと思います。これ、一言でいってしまえばLiveの機能を拡張するための開発ツールキット。といっても、シンセやエフェクト機能を拡張するためのシステムはMax for Liveとして以前からあるので、そちらを使います。それに対し今回のExtensions SDKはたとえばMIDI生成AI機能とか、歌詞取得ツール、一括編集ツール、サンプル管理ツール……といったDAWそのものの機能を拡張するためのものなのです。

となると、これは一般ユーザーには関係ない話なのか……というと、そうでもないんです。世界中のユーザーがこのExtensions SDKで開発したいろいろなツールを自分のLiveに組み込んで使うこともできるし、いまはAIの時代ですからAIに協力してもらって自分で機能拡張の開発をすることも可能なのです。試しに私もそのAIを使った開発をちょっとだけ試してみたので、紹介してみたいと思います。

AbletonからExtention SDKが誕生

スポンサーリンク
スポンサーリンク

Extensions SDKとは何か

まず、このExtensions SDKが何者なのかをもう少し丁寧に説明しておきましょう。

Abletonには以前からMax for Liveという仕組みがあり、シンセやエフェクト、MIDIエフェクトなどをユーザーが自作できるようになっています。ただしMax for Liveはリアルタイムでオーディオ処理やMIDI処理をするための仕組みであり、作れるものはインストゥルメントやエフェクトといったものとなります。

それに対してExtensions SDKで作れるのは、もっとユーティリティ的なもの。具体的には以下のようなものが挙げられています。

選択したクリップを一括リネームするツール
MIDIクリップを自動生成するAI
Warp設定を一括変更するツール
オーディオを解析して無音部分を削除するツール
Web UIを持つ管理ツール
外部APIと連携するツール

逆に、リアルタイムのDSP処理や、VSTエフェクト、ソフトシンセ、MIDIエフェクトといったものは作れません。それらはMax for Liveの領域です。

技術的には、Node.jsとTypeScriptを使って開発するのがExtensions SDKの特徴です。Node.jsはWebアプリ開発などでもよく使われるJavaScript実行環境で、TypeScriptはそれに型付けの仕組みを追加したプログラミング言語。つまり、Web系の開発経験がある人であれば比較的とっつきやすい仕組みになっているわけです。

まず使ってみるには:ベータ登録とLive Beta版の入手

Extensions SDKを使うには、現時点ではいくつかの前準備が必要です。

まず、Ableton公式のベータプログラムへの登録が必要です。Abletonのサイトからベータユーザー登録を行い、承認されると専用のCentercode(ベータ管理プラットフォーム)へのアクセスが得られます。そこからExtensions SDK対応のLive 12 SuiteであるLive 12.4.5以上のベータ版をダウンロードし、これをインストールする必要があります。

Live 12.4.5Beta以上を使う必要がある

ここで大切なのはLive 12.4 Suiteなどをインストール済であったとしても、このLive 12.4.5 Betaを入手の上、インストールすることが必要であること。その際、製品版であるLive 12.4などをアンインストールする必要はなく、そのまま追加でLive 12.4.5 Betaをインストールすればいいいのです。

SDK本体はAbleton公式サイトのブログ記事内のリンクからZIPファイルとしてダウンロードできます。これを入手したら、作業用のフォルダなどを作って中身を展開しておきましょう。

Extensionsの設定画面

SDK対応のLive Betaをインストールして起動すると、環境設定(Preferences)に「Extensions」というタブが追加されています。ここにはDeveloper Modeのオン/オフスイッチがあり、開発中のExtensionを試すときはこれをオンにして使います。

PreferencesのExtensionsタブ

Developer ModeをオフにしてLiveを再起動した状態が、いわば「使う側」の通常モード。ここに.ablxという拡張子のExtensionファイルをドラッグ&ドロップするだけで、誰かが作ったExtensionを簡単にインストールして使えるようになります。

.ablxファイルをドラッグ&ドロップしてLiveを起動しなおすと機能追加されている

サードパーティ製Extensionを使う際のセキュリティに注意

.ablxファイルをインストールするだけで使えるというのは非常に手軽で魅力的です。実際、GitHubなどにはすでにさまざまなExtensionが公開されており、これを拾ってきてドラッグ&ドロップするだけで試せます。

Extention SDKのサイトからいくつかの拡張ソフトをダウンロードできるようになっている

ただし、ここで一点、重要な注意があります。

Extensions SDKは内部的にNode.jsをそのまま実行する仕組みになっており、インストールしたExtensionはPC上でかなり自由にコードを実行できます。悪意を持って作られたExtensionをインストールしてしまった場合、PC内のファイルにアクセスされたり、バックグラウンドで不正な処理が走る可能性がゼロではありません。

これはExtensions SDKに限った話ではなく、Max for Liveのデバイスや、野良のVSTプラグインにも共通するリスクです。しかしExtensions SDKはNode.jsベースということもあり、外部との通信を含むさまざまな処理が比較的容易に書けるという面があります。

信頼できる開発者・組織が配布しているものを使う、ソースコードが公開されているものを確認したうえで使う、といった基本的なリテラシーを持って使うことが大切です。現時点ではまだ黎明期であり、悪意ある.ablxが大量に出回っているわけではありませんが、今後Extensions SDKが普及するにつれてリスクも高まる可能性があります。手軽だからこそ、素性のわからないファイルは気軽に入れないよう心がけましょう。

自分で開発する場合の環境構築

続いて、自分でExtensionを開発してみたい場合の手順を紹介します。

開発をするにはNode.jsをインストールする必要がある

まず必要なのがNode.jsのインストールです。SDKのドキュメントによるとNode.js 24.14.1以上が必要とされています。Node.jsの公式サイトからインストーラーをダウンロードしてインストールしてください。インストール後、コマンドプロンプト(Windowsの場合)またはターミナル(Macの場合)で以下を実行して、バージョンが表示されれば準備OKです。

node -v

次に、SDKのZIPファイルを解凍したフォルダの中にあるableton-create-extension-1.0.0-beta.0.tgzというファイルを使って、新規プロジェクトを作成します。任意のフォルダを作成し、その中で以下を実行します(パスは実際のZIPファイルの場所に合わせてください)。

npx file:C:\path\to\ableton-create-extension-1.0.0-beta.0.tgz

するといくつかの質問が表示されます。

ターミナルからコマンドラインでいくつかの命令を実行する

Extension name(Extentionの名前)
Author(作者名)
Live Betaの場所(インストール先パス)
UIが必要かどうか

これらに答えるとプロジェクトの雛形が生成されます。あとは生成されたフォルダ内でnpm installを実行して依存パッケージをインストールし、npm startで開発サーバーを起動するとLiveと接続された状態になります。

Developer Modeをオンにしてオレンジに点灯させることで、自分で開発したプログラムをLive内で利用できるようになる

ひとつ、ハマりやすいポイントを先にお伝えしておくと、Liveを先に起動してからnpm startを実行する必要があります。逆の順序だと接続がうまくいかないことがあります。そして、先ほどの環境設定のExtentionsのところでDeveloper Modeをオンにしておくことも必須。これによって組み込んだ拡張機能(ablxファイル)は使えなくなる代わりに、自分で作ったプログラムが利用可能になるのです。

サンプルプログラムを試してみる

先ほど作ったプロジェクトの雛形で実際にプログラムが動くのか試してみましょう。先ほどはableton-testというフォルダに展開したのでコマンドラインで以下のようにしていきます。

cd ableton-test
npm install
npm start

サーバーとして起動し、Liveとのやりとりをすることで、Live側に拡張機能が追加される

Liveを起動した状態でこれを実行すると、オーディオクリップを右クリックしたときのコンテキストメニューに新しい項目が追加されます。

Extentionメニューの中に自分が開発した機能が表示される

これだけで「あ、本当にLiveの中に機能を足せるんだ」という感覚がつかめます。

ChatGPTと一緒に作ってみた:案1「クリップ情報の表示」

SDKの中にはいくつかサンプルプログラムが入っているのでこれらを動かしてもいいのですが、ここでは雛形が動いたので、これを土台にして自分でもちょっとしたExtensionを作ってみました。とはいっても私はTypeScriptの経験がほとんどないので、ChatGPTに相談しながら進めました。

まず作ったのが、オーディオクリップを右クリックして「Show Clip Info」を選ぶと、そのクリップの名前・カラー・長さをダイアログで表示するExtensionです。

オーディオクリップを選んで実行すると、オーディオクリップ情報が表示できるようになった

ソースコードはこちらです。

import {
  initialize,
  AudioClip,
  type ActivationContext,
  type Handle,
} from "@ableton-extensions/sdk";

function toHexColor(value: unknown): string {
  const num = Number(value);
  if (!Number.isFinite(num)) return "(unknown)";
  return "#" + num.toString(16).padStart(6, "0").toUpperCase();
}

function toNumber(value: unknown): number | null {
  const num = Number(value);
  return Number.isFinite(num) ? num : null;
}

export function activate(activation: ActivationContext) {
  const api = initialize(activation, "1.0.0");

  api.commands.registerCommand("clipInfo.show", async (args: unknown) => {
    const handle = args as Handle;
    const clip = api.getObjectFromHandle(handle, AudioClip) as any;

    const name = clip.name ?? "(no name)";
    const colorDecimal = clip.color ?? "(unknown)";
    const colorHex = toHexColor(clip.color);

    const startMarker = toNumber(clip.startMarker);
    const endMarker = toNumber(clip.endMarker);
    const lengthBeats =
      startMarker !== null && endMarker !== null
        ? endMarker - startMarker
        : null;

    const html = `
      <html>
        <body style="font-family: sans-serif; padding: 16px;">
          <h2>Audio Clip Info</h2>
          <p><b>Name:</b> ${name}</p>
          <p><b>Color:</b> ${colorHex} <small>(${colorDecimal})</small></p>
          <p><b>Start:</b> ${startMarker ?? "(unknown)"}</p>
          <p><b>End:</b> ${endMarker ?? "(unknown)"}</p>
          <p><b>Length:</b> ${lengthBeats ?? "(unknown)"} beats</p>
          <button onclick="window.close()">Close</button>
        </body>
      </html>
    `;

    await api.ui.showModalDialog(
      `data:text/html,${encodeURIComponent(html)}`,
      420,
      300
    );
  });

  api.ui.registerContextMenuAction(
    "AudioClip",
    "Show Clip Info",
    "clipInfo.show"
  );
}

やったこと自体はとってもシンプル。先ほどの雛形の中にはsrc(ソースコードを意味しています)というフォルダが生成されており、この中にプログラム本体であるextension.tsというものが入っています。これをテキストでエディタで、ChatGPTが生成してくれたプログラムに置き換えて、再度インストール、実行するだけ。

雛形が入ったフォルダ内のsrcフォルダにアクセスすると実際のソースコードが入っている

全体で60行程度。実際に動かすと、クリップの名前・カラーコード・長さ(ビート数)がダイアログに表示されました。「LiveのオブジェクトをTypeScriptから読み取れている」という事実がシンプルに感動的です。

ChatGPTと一緒に作ってみた:案2「MIDIトラックを8本一括生成」

もうひとつ作ったのが、MIDIトラックを8本まとめて生成するExtensionです。情報を読み取るだけでなく、Live Setのデータを実際に書き換えるという、より実践的な内容に挑戦しました。プログラム自体は以下のようなものです。

import {
  initialize,
  MidiTrack,
  type ActivationContext,
  type Handle,
} from "@ableton-extensions/sdk";

export function activate(activation: ActivationContext) {
  const api = initialize(activation, "1.0.0");

  api.commands.registerCommand("tracks.createMidiTracks", async () => {
    const song = api.application.song;

    await api.withinTransaction(() => {
      for (let i = 0; i < 8; i++) {
        song.createMidiTrack();
      }
    });

    const html = `
      <html>
        <body style="font-family: sans-serif; padding: 16px;">
          <h2>MIDI Tracks Created</h2>
          <p>Created 8 MIDI tracks.</p>
          <button onclick="window.close()">Close</button>
        </body>
      </html>
    `;

    await api.ui.showModalDialog(
      `data:text/html,${encodeURIComponent(html)}`,
      360,
      180
    );
  });

  api.ui.registerContextMenuAction(
    "MidiTrack",
    "Create 8 MIDI Tracks",
    "tracks.createMidiTracks"
  );
}

これを実行してMIDIトラック上で右クリックするとコンテキストメニューにExtentionsというメニューが現れ、この中にいま作ったツールが入っています。これを実行すると以下のようにMIDIトラックが8つ増えるのです。

今度はMIDIトラックを8つ追加する機能が搭載された

こちらも50行前後のコードです。song.createMidiTrack()をループで8回呼ぶというシンプルな処理ですが、実際にLive上でMIDIトラックが3本から10本に増えたときは「本当に書き換えられた」という達成感がありました。

なお、こうして作ったプログラム、動作を確認できたら、

npm run package

のようにすることで、前述の.ablxというファイルが生成され、これを配布することで誰もが利用できるようになっているのです。

TypeScript未経験でも、AIがあれば作れる

今回試してみた感想として、TypeScriptやNode.jsの経験がほとんどない私でも、ChatGPTと相談しながら進めることで動くExtensionを作れた、という点は大きな発見でした。

もちろん、エラーが出たり、思い通りに動かなかったりすることは何度もありました。そのたびにエラーメッセージをAIに貼り付けて「どういう意味?」「どう直せばいい?」と聞きながら進めていく形になります。慣れない作業ではありますが、「ゼロから一人でドキュメントを読み込んで開発する」のとは難易度が大きく違います。

Extensions SDKはまだパブリックベータの段階であり、ドキュメントも発展途上です。しかし、20〜30行程度のTypeScriptでLiveのオブジェクトを読み書きできるという事実は、今後さまざまなExtensionが登場することへの期待を高めてくれます。

Rent-to-ownなど世の中の新しい動きを積極的に取り入れているAbletonですが。一般ユーザーでもAIを使って簡単にプログラミングできるようになった今だからこそ、Extention SDKという「自分でLiveの機能を拡張できる」機能をLiveに搭載した、ということなのだと思います。プログラム経験がない方でも簡単にこうしたことができるので、興味を持った方はぜひチャレンジしてみてはいかがですか?

【関連情報】
Extensions SDK: Liveの新しい実験空間
Extensions SDKをはじめる

【関連記事】
DTMソフト購入の新潮流——Ableton Live 12.4とRent-to-ownが変える制作環境

この記事を書いた人

DTM、デジタルレコーディング、デジタルオーディオを中心に執筆するライター。インプレスのAV WatchでもDigital Audio Laboratoryを2001年より連載。「Cubase徹底操作ガイド」(リットーミュージック)、「ボーカロイド技術論」(ヤマハミュージックメディア)などの著書も多数ある。趣味は太陽光発電、2004年より自宅の電気を太陽光発電で賄うほか、現在3つの発電所を運用する発電所長でもある。

藤本 健をフォローする
Ableton Live

コメント