Mutable Instruments Braidsをprologue / minilogue xd / NTS-1(初代)に移植してみました。prologueやminilogue xdでは、Braidsをポリフォニックで鳴らせます。アナログ側とミックスしてもいい感じです。
この移植版では、Braidsのシンセシス・モデルの内、ウエーブテーブルを使う4つを除いた43個を利用することができます。メモリ容量の制約のため、ウエーブテーブルは割愛しました。オシレータは5つのユニットファイルに分割されています。
第1グループのLily-VAはバーチャルアナログオシレータで、最後のオシレータ15番はSwarmというSuperSawのシミュレーション波形になっています。
ちょっと余談になりますが、SuperSawはSaw波形を重ねているのですが、それだけではなく、単体のSaw波形に特徴があります。波形はエイリアスノイズ対策をしていないナイーブな波形で、当然エイリアスノイズが出るのですが、ハイパスフィルタを使ってこれをカットしています。正確には、エイリアスノイズの内の基本周波数より低い部分をカットしています。ちょっと逆転の発想ですね。Swarmはこの波形生成をエミュレートしており、ハイパスフィルタのカットオフもパラメータになっています。
第2グループのLily-DGはデジタル信号処理を活用したオシレータです。先頭の16番のオシレータは、鋸波をcombフィルタに通しているオシレータなのですが、これがRAM上にディレイラインを必要とするので結構メモリを使ってしまいます。後半は鋸波・矩形波・三角波に高次のサイン波を掛け合わせて波形を作るオシレータ(CASIOのPD音源)です。どのオシレータも、人工的な倍音でデジタルっぽい音が出せます。
第3グループのLily-FMは、フォルマント系とFM系のオシレータが含まれています。これらは、単純な減算方式とは異なる倍音分布を持つ音を生成します。
第4グループはレゾネータなど物理モデル音源およびパーカッションです。パーカッションはアナログVCOの音にアタック成分として付加するような使い方もできます。
第5グループはノイズ系で、これもアナログの音とミックスすると音に新しいテクスチャを加えることができます。
どのオシレータも、ShapeノブおよびShift+Shapeノブで音色を変化させることができます。パラメータとしては、シンセシス・モデルの選択、LFOで変調するパラメータの選択(ShapeまたはShift+Shape)、ノートオンからLFO変調までのディレイ時間、ピッチ微調整、量子化ビット数、サンプリング周波数を設定することができます。
バイナリは以下からダウンロードできます。
今回の移植版は、実際にはBraidsのNTS-1 mkIIへの移植版であるLilyをさらにNTS-1に移植したものです。NTS-1からNTS-1 mkIIへの移植については前回の記事で書きました。SDKの基本部分で、両者に実際には大きな違いはありません。従ってmkIIから初代NTS-1への移植も、処理速度や音声入力がネックにならなければ、ある程度は可能です。
BraidsはもともとSTM32F103で動作していましたから、NTS-1でも処理速度は十分なはずです。NTS-1 mkII移植版で搭載した、外部音声を使ったFM変調はできなくなりますが、これはこのオシレータにとってはあまり本質的な問題ではないと思います。
ただ、NTS-1は利用できるメモリが32KBで、mkIIの48KBに比べると狭いのが制約になります。その点、Braidsのウエーブテーブルは32KBには納まりませんので、早々にあきらめました。(ウエーブテーブル音源はPlaitsの移植版の中にありますしね)
Braidsをこのサイズ制限内に納まるように分割する作業は、NTS-1 mkIIへの移植の際にも行いましたが、制限サイズが変わったのでこの作業を再度行う必要がありました。Braidsのソフトウェアの構成上、オシレータの順番を変えるのはちょっと手間がかかるので、順番は変えずにグルーピングだけを変えています。
最終的には、NTS-1 mkIIではVAとFMの2つのオシレータユニットに分割していた28個のオシレータを、VA/DG/FMの3つに分けることにしました。一方、ウエーブテーブルを使っているWTは削除しました。
なお、以前の移植の際にサンプリング周波数を48KHzに変えた(Braidsは96KHz)ときの考慮漏れがありましたので、その辺も修正しています。ルックアップテーブルの一部に96KHz用のデータが残っていたり、信号処理でナイキスト周波数への考慮が足りていない部分がありました。
NTS-1 mkIIからの移植作業は、前述の記事の手順の逆をやればいいわけで、それほど難しくありません。
ただ、これは移植に限った話ではありませんが、prologueとminilogue XDとNTS-1は若干挙動が異なります。具体的には
・NTS-1のLFOは値が0~1.0、prologueとminilogue xdは-1.0~1.0
・NTS-1はパラメータの最小値が0より大きい場合、表示が値+1ではなく値をそのまま表示する
・prologueとminilogue xdはオシロの波形が上下逆になる
といった違いがありますので、機種によって実装を微調整しています。
ソースコードは以下のリポジトリで公開しています。
コメント