LoginSignup
1
2

More than 1 year has passed since last update.

Steinberg HALion Script - DTMプログラミング言語探訪

Posted at

DTMプログラミング言語探訪

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の紹介となります。

プログラム例

ノートナンバー表示

押された鍵盤のノートナンバーをコンソール画面に表示します。

ShowNoteNumber.lua
function onNote(e)
  local id = postEvent(e)
  print(string.format("note = %d", e.note))
end

コンソール画面は右上の四角いアイコンをクリックすると表示されます。
hal7.png

デチューン

デチューンされた二つの音を鳴らす例です。デチューンの幅はノブで指定できるようパラメータとして定義しておきます。
ノブの作成手順は後述します。

Detune.lua
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を選択
hal1.png

プログラムツリーのプログラム名をスロットラックにドラッグ&ドロップ
hal2.png

これでとりあえず音が出るようになりました。

スクリプトの設定

プログラムツリーでプログラム名を右クリックしてNew → MIDI Module → Lua Scriptを選択
hal3.png
右側のプログラムツリーでLua Scriptを選択、画面中央ではEDITセクション、SOUNDエディターを選択します
hal4.png
eボタンを押すと内蔵エディタが開いてスクリプトを入力できます
hal5.png
OKボタンを押すとエディタが閉じてスクリプトが実行されます
ha10.png

GUIの設定

Open New Windowボタン → Macro Page Designer Extendedを選択
Macro Page Designerという選択肢もありますがMacro Page Designer Extendedの方が見通しが良くておすすめです。
hal8.png
右側のプログラムツリーでプログラム名を選択してから、左端のCreate New Macro Page/LibraryボタンのCreate HALion Sonic Macro Pageを選択
ha11.png
中央下のBROWSERでタイトル部をクリックしてBasic Controlsを選択
ha12.png
Knobsフォルダを開くとノブコントロールがいくつかあるのでデザイン画面にドラッグ&ドロップ
ha13.png
ノブのプロパティからラベル名をわかりやすい名前(ここではDetune)に変更
ha14.png

GUIとパラメータのひもづけ

Macro Page Designer Extended画面の右側にあるプログラムツリーでLua Scriptを選択
Lua Scriptを選択すると、左隣のパラメータリストにdefineParameter()で定義したパラメータが出てくる(ここではDetune)
そのパラメータをノブのプロパティのValue欄にドラッグ&ドロップ
ha15.png

これで完成です。
HALion本体のウィンドウのMACROセクションを選択するとノブが配置されたパネルが表示されて、ノブを操作すると音にデチューンがかかります。
ha16.png

感想

UVI Script同様、Lua言語であるため学習コストも低く、カスタマイズできるパラメータも多いためポテンシャルは非常に高い機能です。エンドユーザーにはあまり使われない機能にも関わらず、GUIの自由度も含めここまでしっかり作りこんであってドキュメントも充実しているのはさすがSteinbergという印象です。
HALionはサンプラーとしても必要十分な機能を備えており、またシンセサイザーの各種オシレーターも内蔵しているのでNI KONTAKTやUVI Falconに決して負けておらず、むしろ優位な点がいくつもあるソフトウェアです。
しかしながらHALionの現状の利用率を考えると、人気の高いKONTAKTから市場を奪うのはなかなか厳しい気がします。また、廉価版とはいえそれなりに高価なHALion Sonicではスクリプト機能が使えないのも残念です。

DTMプログラミング言語探訪

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2