1月の活動記録(2022)

2022年最初の活動記録です。といっても実のところ今月は書けるようなことがびっくりするくらい無いですね。というのは、昨年末に書いた話ですが、いじっていたemscriptenまわりのやつとか、他にも何点かあるんですが、ほとんど全滅状態で、あとAndroidオーディオプラグインも、抜本的な仕切り直しを計画しながら現行コードをでかめにリファクタリングしていたりなどして、まだ進行中だし今月ネタになるようなことではないです。

Vital batch-import-wavetablesブランチとopen-vital-resources

今月は割とVitalの音作りで遊びながらソースコードを読み解いたりしていて、それはそれで調べものの結果ちょっとした資料はできつつあるのですが、文章にするほどまとまってもいなくてアウトプットにはならない感じです。

ただ、資料とは別のアウトプットの方向性として、Vitaloidを作ったのと関連して、OSSビルドでも利用可能なプリセット集合を作らないといけないな…という気持ちになっています。Vitalの「プリセット」を構成するのは、.vitalプリセット定義ファイルの他に、.vitaltableというウェーブテーブル定義と.vitallfoというLFO波形定義があり、これらが何一つOSS版に含まれていません。

これでは困るので、少なくともウェーブテーブルくらいはフリーのwavファイルから利用できるようにしてみよう、と思って、いろいろ試行錯誤しました。そもそもウェーブテーブルシンセサイザーにおけるウェーブテーブルの何たるかも知らないところからスタートしたので、たとえば「最大2048サンプルで…」みたいなところから「Serumのclmヘッダに情報が…」みたいな話とかまで習得したレベルです。これをVitalのコードリーディングと合わせて進めました。

それでVitalのフォーラム等で紹介されているフリーリソース(主にSerum用など)をもとに、Vitalの.vitaltableファイルを生成するツールを作ろうと思ったのですが、VitalがWAVファイルをGUI上でインポートした時にやっていることを全て自前で外部のツールから再実装するのは面倒だということに気付いたので(しばらくいろんな言語で試してみてから…)、むしろVitalのソースコードに手を加えてバッチインポート機能(WAVのあるディレクトリを指定してロードしたら全部.vitaltableにしてくれるやつ)を作ろう…となって、結果独自ソースツリーが出来上がりました(コード変更量は大したことないはず):

github.com

これをもとにCC0(現状)で公開されているリソースを取り込んだリポジトリを作ってあります:

github.com

フリーのウェーブテーブルリソースのほうはどう調達したかというと、まずWaveEditというエディタで作成されたウェーブテーブルがCC0で大量に公開されているのを全部取り込んでいます。大量と言っても凄まじい量というわけではないので程よく豊富だと思います。同様にkimurataro.comのFree WavetablesもCC0でWaveEditからいい感じの量で作られているので、これも取り込んであります。

あと、これは手作業で作ったものですが、LFO定義が何一つ存在しないのはさすがに不便極まりないので、直線や三角波、擬似サイン波などの.vitallfoファイルをいくつか作成しました。擬似ランダムなどはまあみんな自作できるでしょう…(適当に作っても良いのですが)。

本当はFactoryにあるBasic Shapesに相当するもの.vitalプリセットなどを作って含めても良いのですが(単純波形の組み合わせでしかない)、key frameをどう配置するか等でそれなりに工夫が効いてくる可能性もあるので、もうちょっと機械的に生成できる何かにするか、独自プリセット素材を作るか、考えてからがいいかなあと思っています。

あとは、ここまで書いてきたことを、もう少し誰にでも分かるように説明する資料を完成させたいところですが、これはいずれ機が熟したら…という感じです。