Top

あちゃぴーの自転車通勤
u-he UHM言語 学習08 Export

uhmのウェーブテーブルをオーディオのwavファイルに書き出すことができる。 その内容を見ていくことにする。 まずは下の1フレームだけのサイン波のスクリプトをHiveに読み込むと、 uhmファイルがある同じフォルダにmyFile.wavというオーディオファイルが書き出される。

Info "1111"
NumFrames =1
Wave "sin(2*pi*phase)"
Export "myFile.wav"

バイナリエディタで中身を覗く

次に、このmyFile.wavファイルをバイナリエディタに読み込むと、はじめの数行は以下のようになっている。

 52 49 46 46 3C 21 00 00 57 41 56 45 66 6D 74 20 
 10 00 00 00 03 00 01 00 44 AC 00 00 00 00 00 00 
 04 00 20 00 75 68 57 54 10 01 00 00 00 00 00 00 
 01 00 00 00 00 08 00 00 00 00 00 00 31 31 31 31 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 ・・・・・・
 ・・・・・・
 00 00 00 00 00 00 00 00 00 00 00 00 64 61 74 61
 00 20 00 00 00 00 00 00 C6 0F 49 3B 88 0F C9 3B

ヘッダと言われる部分で、このファイルが何なのかという情報が入っている。 詳細は割愛するが、重要なところとしては、

1行目の57 41 56 45がwavファイル。

2行目の03 00はIEEE floatなので32bit float、01 00はモノラル、44 AC 00 00はサンプリング周波数が44100Hzであることを示している。

3行目の 31 31 31 31 は、Info "1111"の部分。0x31はASCIIコードで数字の「1」に当たる。

最後から2行目にある64 61 74 61はDATAという意味で、これ以降が波形のデータとなっている。

AudacityでWavファイルを開いてみる

バイナリファイルを見て分かることは一般的なオーディオ用wavファイルとしては不完全なヘッダファイルなので、多くのプレーヤーでは再生できないと思う。 ただし、Audacityなどの波形編集ソフトで開くことは出来る。 Audacityの場合はファイルをドラッグするだけで開けるので便利。下が開いたところ。 ちゃんとサイン波が1フレーム分(1周期分2048サンプル)確認できる。

ウェーブテーブルなので、サンプリング周波数はあまり関係ないのだけど、44100Hzとした場合2048サンプルを1周期としたサイン波は21.53Hzとなる。実際Audacityで再生するには1波形では短すぎてブチとしか鳴らないが、ループ再生すればブーンとやたら低い音が鳴っているのは確認できる。

u-he uhm

Vitalに読み込んでみる

uhmからwavへのエクスポートを何に使うかというと、現状では他のウェーブテーブルシンセに持って行きたいときだろうか。SerumやVitalであれば、サンプル数とフレーム数が同じなので、そのまま利用できる。

名前は知っているのだけど、ウェーブテーブルシンセの筆頭Serum、そのクローンぽいVitalも使ったことがなかった。 今回uhmを試すためにVital無料版をダウンロードして試したのだが、ビジュアル面が素晴らしく使いやすく今風だと思った。でも負荷が高すぎる・・・ビジュアルにマシンパワー使われている感じ。

u-he uhm

スクリプトは以下のものを使っている。やってみて分かったのだが、Hiveでの再生は問題なくてもwavに変換したとき、音が割れる傾向にある。レベルの調整は必須。Normalizeを使うのが無難。

Spectrum lowest=1 highest=60 "(0.2/ index)"
Wave "lowpass(x, 1-table, 0.5)"
Export "myFile.wav"

下はVitalに読み込んでフレームを3D表示して再生したときの状態。

u-he uhm

SerumやVitalのウェーブテーブルをプログラム的に作りたい人はuhmを使うのもありかもしれない。

調べてないので知らないのだが、ウェーブテーブルを作る専用言語ってあるのかな?  専用ビジュアルエディタというのは、いくつかあるようだけど・・・使いやすいツールほど限界が見えやすい。 可能性無限大という意味ではC言語などの汎用言語が最強だろうけど、何を作るにしても面倒で時間がかかる。そういう意味ではUHMはとてもお手軽で強力!

uhm言語