見出し画像

Ableton Live用ワンタッチでVSTのプリセットを切り替えるくん

実現したこと

Ableton Liveをライブパフォーマンス用途で使う際に、VSTインストゥルメントのプリセットを簡単に切り替えられるようにした。

細かい説明いらない人向け手順

  1. VSTホスト「Kushview Element」をインストールする。

  2. MIDIトラックとしてKushview Elementを配置する。

  3. Bank切り替え用のClipを用意する。

  4. Kushview ElementのMIDI Inの後ろにScriptとして「バンクセレクトをプログラムチェンジに読み替えるスクリプト」(後述)を配置する。

  5. Scriptの後ろにプリセットを切り替えて使用したいVSTインストゥルメントを配置する。

  6. プログラムチェンジでプリセットを切り替える設定をする。

  7. (゚д゚)ウマー

バンクセレクトをプログラムチェンジに読み替えるスクリプト

--- Replace Bank Select to PC.
--
-- @script      bs2pc
-- @kind        DSP
-- @license     GPL v3
-- @author      ideal.exe

local bytes = require('kv.bytes')
local script = require('el.script')
local MidiBuffer = require('kv.MidiBuffer')

local output = MidiBuffer.new(128)
local pc = bytes.new(2)
bytes.set(pc, 1, 0xC0)
bytes.set(pc, 2, 0x00)

local function layout()
    return {
        audio = {0, 0},
        midi = {1, 1}
    }
end

local function process(audio, midi, params)
    local buf = midi:get(1)

    output:clear()
    for msg, frame in buf:messages() do
        if msg:iscontrollertype(0) then
            bytes.set(pc, 2, msg:controllervalue())
            output:addbytes(pc, 2, frame)
        elseif msg:iscontrollertype(32) then
            -- NOP
        else
            output:addmessage(msg, frame)
        end
    end

    buf:swap(output)
end

return {
    type = 'DSP',
    layout = layout,
    parameters = parameters,
    process = process
}

細かい説明

Ableton Liveの標準機能でClipを再生した時にMIDIのバンクセレクトを流すことができるので、VST側がそれに基づいてプリセットを切り替えられるような作りであれば簡単に対応できる。Native Instrumentsの製品などは対応している模様。問題はバンクセレクトに対応していないVSTで、今回はSteinbergのRetrologueというシンセを例として扱う。

実現のためのアイデアはシンプルで、バンクセレクトを捌けるVSTホストを間に噛ませてやるというもの。

この手の操作はBlue Cat's PatchWorkというVSTホストなら何でも出来そうなのだが、今回はお試しレベルのことなので無料のalternativeを探して見つけたKushview Elementというソフトを使う。

Kushview ElementはMIDIプログラムチェンジに基づいて、ホストしているVSTのプリセットを切り替えることが出来る。
ここで1つ問題があり、Ableton LiveがClip再生時に送れるのはあくまでバンクセレクト(CC0, CC32)なので、それをプログラムチェンジ(PC)に読み替えてやる必要があった。幸いKushview Elementの機能でLuaスクリプトを使って任意のMIDI操作を書くことができるので、用意されているドキュメントを読みながら突貫で先のスクリプトを実装した。
流れてきたMIDIメッセージのうち、CC0の値をPCとして読み替えて、CC32は無視、それ以外は変更せずに後ろに流すという実装。

以下、設定の流れ。
※Kushview Elementは標準の設定でインストールしてAbleton Liveで読み込まている前提。

Kushview ElementをMIDIトラックに配置すると初期画面が開く。
MIDI InにScriptをつなげて先述のスクリプトを貼り付け、Compileを押す。
Scriptの後ろにRetrologue(プリセットを切り替えながら使いたいVSTインストゥルメント)、その後ろにAudio Outputをつなぐ。
MIDIメニューからMIDI Programを有効にする。これによりVSTインストゥルメントの任意の状態をプログラムチェンジで切り替えられるようになる。

MIDI Program設定の参考動画

Kushview ElementのトラックにClipを配置し、Bankの値を押したときに切り替えたいMIDI Programの番号に設定する(QuantizeをNoneにしておくことで押したタイミングで即座に切り替わるようにしている)。

上記で設定完了。Clipをいくつか作って再生したものと対応するMIDI Programに切り替わっていればOK。

インスピレーションを刺激する酒代になります