Ableton Live用ワンタッチでVSTのプリセットを切り替えるくん
実現したこと
Ableton Liveをライブパフォーマンス用途で使う際に、VSTインストゥルメントのプリセットを簡単に切り替えられるようにした。
細かい説明いらない人向け手順
VSTホスト「Kushview Element」をインストールする。
MIDIトラックとしてKushview Elementを配置する。
Kushview ElementのMIDI Inの後ろにScriptとして「バンクセレクトをプログラムチェンジに読み替えるスクリプト」(後述)を配置する。
Scriptの後ろにプリセットを切り替えて使用したいVSTインストゥルメントを配置する。
(゚д゚)ウマー
バンクセレクトをプログラムチェンジに読み替えるスクリプト
--- 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で読み込まている前提。
MIDI Program設定の参考動画
上記で設定完了。Clipをいくつか作って再生したものと対応するMIDI Programに切り替わっていればOK。