2
1

UVI Falcon UVI Script - DTMプログラミング言語探訪

Last updated at Posted at 2021-07-18

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

UVI Falcon UVI Script

概要

UVI社のシンセサイザーFalconはScript Processorモジュールを持っており、UVI Scriptでプログラミングができます。Falconの商用ライブラリはUVI Scriptでその挙動やGUIが作りこまれています。

用途

NoteOnイベントに対応してサウンドエンジンのパラメータをカスタマイズしたり、タイマーイベントで音を鳴らしたりするのが主な使い方です。

  • キースイッチなどによるアーティキュレーション切り替え
  • 乱数やラウンドロビンによるヒューマナイズ
  • スウィング
  • アルペジエーター
  • ストラミング
  • GUI

言語仕様

  • Lua言語
  • イベントコールバック
  • サウンドエンジンAPI
  • GUI API

Lua言語なので、記述能力は現代的な汎用プログラミング言語と同等です。
DAWの小節内位置など取得できるので表拍と裏拍で鳴らし方を変えるようなことも実現可能。

公式リファレンス
公式チュートリアル

Falconには、再生専用の無料版UVI Workstationも用意されています(KONTAKTに対するKONTAKT PLAYERに相当)。しかしながらUVI Workstationが読めるファイル形式はUFSサウンドバンク(.ufs)のみで、個別のプログラム(.uvip)やマルチ(.uvim)形式は読み込めないようです。UFSサウンドバンクを自作するにはライセンス契約が必要になります。
Falconユーザー同士であれば、プログラムやマルチ形式でライブラリを渡すことができます。

GUI仕様

ノブやボタンなどのコントローラーはサイズ、位置、背景色を自由に指定できます。画像を使った独自デザインのコントローラーも作成可能です。
UI全体の背景やロゴなどの画像を読み込んで表示することも可能。

FalconのUIは、EDITタブやEVENTSタブ選択時に表示される個別のUIと、INFOタブ選択時に表示される全体のUI(パフォーマンスビュー)があります。GUIパーツを配置すると個別UIに表示されます。プログラム中でmakePerformanceView()と記述するとそれがパフォーマンスビューにも反映されます。
UIの最大サイズはドキュメントによると720x480となっています。

個別のUI表示の例
falcon6.png

パフォーマンスビューに表示した例
falcon7.png

プログラム例

ノートナンバー表示

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

ShowNoteNumber.lua
function onNote(e)
  playNote(e.note, e.velocity)
  print(string.format("note = %d", e.note))
end

コンソール画面は画面右上の2番目のアイコンをクリックすると表示されます。
falcon8.png

デチューン

デチューンされた二つの音を鳴らす例です。デチューンの幅はノブで指定します。

Detune.lua
-- add knob
knobDetune = Knob("Detune", 0.1, 0, 0.5)

-- callback
function onNote(e)
  local voice1 = playNote(e.note, e.velocity)
  local voice2 = playNote(e.note, e.velocity)
  changeTune(voice1, knobDetune.value)
  changeTune(voice2, -knobDetune.value)
end

falcon6_noskin.png

同じスクリプトでGUIに画像や色を設定する例です。

Detune2.lua
-- setup panel
setSize(720, 120)
setBackground("panel.png")

-- add knob
knobDetune = Knob("Detune", 0.1, 0, 0.5)
knobDetune.size = {60, 60}
knobDetune.pos = {80, 30}
knobDetune.fillColour = "#eeee88"
knobDetune.outlineColour = "orange"

-- show performance view
makePerformanceView()

-- callback
function onNote(e)
  local voice1 = playNote(e.note, e.velocity)
  local voice2 = playNote(e.note, e.velocity)
  changeTune(voice1, knobDetune.value)
  changeTune(voice2, -knobDetune.value)
end

falcon6.png

使用方法

MASTERに適用する場合

あらかじめ.luaファイルを用意しておく。
EVENTSタブを選択
右上の+アイコンをクリック
Script Processor→Default
falcon1.png

左端のフォルダアイコンからLuaファイルを選択
内蔵エディタはありませんが、左から3番目のEditアイコンで外部エディタを呼び出せます
右端のWatchアイコンを有効状態にしておくと、ファイルを編集してセーブしたら自動的に適用されます。
falcon2.png

複数のスクリプトを適用することもできます。その場合画面の上側にあるスクリプトから順番に実行されます。
falcon3_2.png

各PARTに適用する場合

あらかじめ.luaファイルを用意しておく。
EDITタブを選択
PROGRAMのEVENTレーンで+アイコンをクリック
Script Processor→Default
falcon4_2.png

左端のフォルダアイコンからLuaファイルを選択
内蔵エディタはありませんが、左から3番目のEditアイコンで外部エディタを呼び出せます
右端のWatchアイコンを有効状態にしておくと、ファイルを編集してセーブしたら自動的に適用されます。
falcon5.png

感想

Lua言語であるため学習コストも低く、カスタマイズできるパラメータも多いため大きな可能性を感じます。ただ、Falcon自体の普及度とUVI Scriptの普及度が今のところネックになっているように思います。
サンプリング音源もオシレータとして使えてKONTAKTに近いことができるので(ただしUIはKONTAKTほどの自由度はない)、今後サードパーティーから今以上にライブラリがリリースされて市場が大きくなることに期待します。

ちなみにMOTU社のMachFiveというサンプラーソフトも、UVIエンジンを搭載しUVI Scriptに近いLuaベースのMachFiveScriptでプログラミングできます。しかしながら、2011年のバージョン3以降アップデートされておらず、MachFiveの実質的な後継がUVI Falcon2と見てよさそうです。

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

2
1
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
2
1