5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2021-07-19

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

dspreset

概要

dspresetはサンプラーソフトDecent Samplerのライブラリを定義するためのフォーマットです。テキストファイル(.dspreset)とひとつ以上のサンプルファイル(.wavなど)のセットで構成されます。
dspresetはプログラミング言語と呼べるほどのロジック記述能力はありません。基本的にどのサンプルファイルをどこの鍵盤にマッピングするかを指定する設定ファイルです。ループポイントの設定、ベロシティレイヤ、リリーストリガ、ラウンドロビン、そしてVolume、EG、LFOなどのパラメータとそのGUIの設定も記述できる言語になっています。

用途

  • サンプルとノートナンバーのマッピング
  • サンプルとベロシティのマッピング
  • エフェクトパラメータ設定
  • GUI

言語仕様

  • XMLベースの独自言語
  • マッピング設定
  • パラメータ設定
  • GUI設定

SFZと同様にあくまでもサンプラー用ライブラリの定義ファイルであり、チューリング完全を満たすプログラミング言語ではありません。SFZとの主な相違として、GUIが定義できる、変数の利用やキースイッチの設定ができないという点があげられます。

公式リファレンス

GUI仕様

背景画像、ラベル、ノブが用意されています。タブ切り替え用のタグもありますが、現状タブはひとつしか持てないとのことです。
ノブにstyle属性を設定することで円形だけでなく縦や横のスライダーも作成できます。ノブの色は設定可能、画像ファイルを使用した独自デザインのノブは作成できません。

プログラム例

ノートナンバーとサンプルのマッピング

ひとつのサンプルが鍵盤ひとつに対応している場合の書き方です。
loNote、hiNoteは省略可能な属性ですが省略すると0~127まで自動で割り当たってしまうために他の鍵盤に割り当てたくないときは明記する必要があります。

simple.dspreset
<?xml version="1.0" encoding="UTF-8"?>
<DecentSampler>
  <groups>
     <group>
        <sample rootNote="60" loNote="60" hiNote="60" path="c4.wav" />
        <sample rootNote="61" loNote="61" hiNote="61" path="c#4.wav" />
        <sample rootNote="62" loNote="62" hiNote="62" path="d4.wav" />
        <sample rootNote="63" loNote="63" hiNote="63" path="d#4.wav" />
        <sample rootNote="64" loNote="64" hiNote="64" path="e4.wav" />
     </group>
  </groups>
</DecentSampler>

ノートナンバー60-71の範囲はc4.wavを、ノートナンバー72-83の範囲はc5.wavを鳴らす範囲指定の例。

noterange.dspreset
<?xml version="1.0" encoding="UTF-8"?>
<DecentSampler>
  <groups>
     <group>
        <sample rootNote="60" loNote="60" hiNote="71" path="c4.wav" />
        <sample rootNote="72" loNote="72" hiNote="83" path="c5.wav" />
     </group>
  </groups>
</DecentSampler>

ベロシティとサンプルのマッピング

弱く弾いた場合と強く弾いた場合でサンプルを切り替える例。ベロシティ1-63はsoft.wavを、ベロシティ64-127のときはhard.wavを鳴らします。

velocity.dspreset
<?xml version="1.0" encoding="UTF-8"?>
<DecentSampler>
  <groups>
     <group>
        <sample rootNote="60" loNote="60" hiNote="83" loVel="1"  hiVel="63"  path="soft.wav" />
        <sample rootNote="60" loNote="60" hiNote="83" loVel="64" hiVel="127" path="hard.wav" />
     </group>
  </groups>
</DecentSampler>

GUI

背景画像とボリュームノブを配置する例です。
背景画像は812x375にしないとウィンドウいっぱいにうまく表示されないようです。

ui.dspreset
<?xml version="1.0" encoding="UTF-8"?>
<DecentSampler>
  <groups>
     <group>
        <sample rootNote="60" loNote="60" hiNote="71" path="c4.wav" />
        <sample rootNote="72" loNote="72" hiNote="83" path="c5.wav" />
     </group>
  </groups>
  <ui bgImage="panel2.png" width="812" height="375">
    <tab name="main">
      <labeled-knob x="350" y="40"
        label="VOLUME" textSize="20"
        type="float" minValue="0" maxValue="1" value="0.5">
        <binding type="amp" level="instrument" position="0" parameter="AMP_VOLUME" />
      </labeled-knob>
    </tab>
  </ui>
</DecentSampler>

表示例
dspreset.png

実行方法

あらかじめ.dspresetファイルと、そこで使用するサンプルファイルを用意しておきます。

右上のFILE...メニューからLoad...をクリックしてdspresetファイルを選択します。
dspreset2.png

dspresetファイルを編集するためのエディタ呼び出し機能はありません。

感想

SFZから機能を取捨選択して整理しなおしたようなコンパクトですっきりした仕様は好印象です。GUIが簡単に設定できるのはやはり大きいですね。
いまのところDecent Samplerしか対応アプリケーションがないものの、サードパーティのライブラリも徐々に増えているようなのでこの先要注目のフォーマットだと思います。
ここまで設計がきれいなわりにキースイッチの機能がないのは意図的なものだと思いますが、少し残念な気もします。

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?