Steinberg HALion Script
概要
Steinberg社のサンプラーソフトHALionの最上位版はLua Scriptモジュールを持っており、NoteOnイベントなどに応じた発音ロジックを記述することができます。
用途
NoteOnイベントに対応してサウンドエンジンのパラメータをカスタマイズしたり、タイマーイベントで音を鳴らしたりするのが主な使い方です。
- キースイッチなどによるアーティキュレーション切り替え
- 乱数やラウンドロビンによるヒューマナイズ
- スウィング
- アルペジエーター
- ストラミング
- GUI
言語仕様
- Lua言語
- イベントコールバック
- サウンドエンジンAPI
- パラメータ API
- MIDIファイルAPI
Lua言語なので、記述能力は現代的な汎用プログラミング言語と同等です。
DAWの小節内位置など取得できるので表拍と裏拍で鳴らし方を変えるようなことも実現可能。
GUIとは疎結合になっていて、値を取得するのにGUIエレメントを直接見るのではなく、パラメータレイヤを経由して参照します。
HALionには廉価版のHALion Sonicおよび無償版のHALion Sonic SEもありますが、HALion Scriptが使えるのは上位版のHALionだけのようです。
GUI仕様
GUIはMACRO Page DesignerというWYSIWYGエディタで作成します。
作成したGUIのValueプロパティにパラメータをひもづけることでパラメータがGUIから操作可能になります。
ノブ、ボタン、スライダー、メニュー、テキストフォーム、テーブル、波形表示、XYパッドなど。
パーツを自作画像に置き換えられるため、独自デザインのGUIを作ることができます。
UI全体の背景やロゴなどの画像を読み込んで表示することも可能。
HALionにはMIDI module scriptの他にUI scriptという表示に関するスクリプトもあります。今回は発音に関係するMIDI module scriptの紹介となります。
プログラム例
ノートナンバー表示
押された鍵盤のノートナンバーをコンソール画面に表示します。
function onNote(e)
local id = postEvent(e)
print(string.format("note = %d", e.note))
end
コンソール画面は右上の四角いアイコンをクリックすると表示されます。
デチューン
デチューンされた二つの音を鳴らす例です。デチューンの幅はノブで指定できるようパラメータとして定義しておきます。
ノブの作成手順は後述します。
defineParameter("Detune", "Detune width", 0.1, 0.1, 0.3, nil)
function onNote(event)
local id1 = playNote(event.note, event.velocity, -1, nil, 1.0, 0.0, Detune)
local id2 = playNote(event.note, event.velocity, -1, nil, 1.0, 0.0, -Detune)
waitForRelease()
releaseVoice(id1)
releaseVoice(id2)
end
使用方法
音源の設定
音が鳴らないとスクリプトの効果がわからないので、仮音源としてシンセサイザーのオシレーターを挿入しておきます。
プログラムツリーでプログラム名を右クリックしてNew → Zone → Synth Zoneを選択
プログラムツリーのプログラム名をスロットラックにドラッグ&ドロップ
これでとりあえず音が出るようになりました。
スクリプトの設定
プログラムツリーでプログラム名を右クリックしてNew → MIDI Module → Lua Scriptを選択
右側のプログラムツリーでLua Scriptを選択、画面中央ではEDITセクション、SOUNDエディターを選択します
eボタンを押すと内蔵エディタが開いてスクリプトを入力できます
OKボタンを押すとエディタが閉じてスクリプトが実行されます
GUIの設定
Open New Windowボタン → Macro Page Designer Extendedを選択
Macro Page Designerという選択肢もありますがMacro Page Designer Extendedの方が見通しが良くておすすめです。
右側のプログラムツリーでプログラム名を選択してから、左端のCreate New Macro Page/LibraryボタンのCreate HALion Sonic Macro Pageを選択
中央下のBROWSERでタイトル部をクリックしてBasic Controlsを選択
Knobsフォルダを開くとノブコントロールがいくつかあるのでデザイン画面にドラッグ&ドロップ
ノブのプロパティからラベル名をわかりやすい名前(ここではDetune)に変更
GUIとパラメータのひもづけ
Macro Page Designer Extended画面の右側にあるプログラムツリーでLua Scriptを選択
Lua Scriptを選択すると、左隣のパラメータリストにdefineParameter()で定義したパラメータが出てくる(ここではDetune)
そのパラメータをノブのプロパティのValue欄にドラッグ&ドロップ
これで完成です。
HALion本体のウィンドウのMACROセクションを選択するとノブが配置されたパネルが表示されて、ノブを操作すると音にデチューンがかかります。
感想
UVI Script同様、Lua言語であるため学習コストも低く、カスタマイズできるパラメータも多いためポテンシャルは非常に高い機能です。エンドユーザーにはあまり使われない機能にも関わらず、GUIの自由度も含めここまでしっかり作りこんであってドキュメントも充実しているのはさすがSteinbergという印象です。
HALionはサンプラーとしても必要十分な機能を備えており、またシンセサイザーの各種オシレーターも内蔵しているのでNI KONTAKTやUVI Falconに決して負けておらず、むしろ優位な点がいくつもあるソフトウェアです。
しかしながらHALionの現状の利用率を考えると、人気の高いKONTAKTから市場を奪うのはなかなか厳しい気がします。また、廉価版とはいえそれなりに高価なHALion Sonicではスクリプト機能が使えないのも残念です。