【ピコカキコ】波形メモリ音源(WAV13)の波形の作り方

※この記事はサービス終了した「ブロマガ」の記事をインポートして加筆・修正したものとなります

はじめに

まずはピコカキコエディタ(FlMML)の制作者のブログ、FlMML - GB波形メモリ音源の記事をご覧ください。

 

この記事の通り、GB波形メモリ音源(以後WAV10)は1周期を32段階、振幅方向を16段階で定義することができます。

それに対し、波形メモリ音源(以後WAV13)は1周期を最大1024段階、振幅方向を256段階で定義することができます。

「WAV10のすごいバージョンがWAV13」と覚えるといいかと思います。

ここで例を挙げます。

/*ピコカキコエディタに貼りつけて再生してみて下さい*/
@2-1 @e1,0,0,127,0 o4 a1

上記の画像は三角波(@2-1)の波形です。WAV10とWAV13を使ってこの波形に似せてみたいと思います。

  • WAV10の場合
/*ピコカキコエディタに貼りつけて再生してみて下さい*/
@10-0 @e1,0,0,127,0 o4 a1

/*波形定義*/
#WAV10 0, 89ABCDEF FEDCBA98 76543210 01234567

取れる値が少ないため、ご覧の通りカクカクしています。このカクカクを数えると、横方向が32段階、縦方向が16段階しかないのがお分かり頂けると思います。

  • WAV13の場合
/*ピコカキコエディタに貼りつけて再生してみて下さい*/
@13-0 @e1,0,0,127,0 o4 a1

/*波形定義*/
#WAV13 0, 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF FF FE FD FC FB FA F9 F8 F7 F6 F5 F4 F3 F2 F1 F0 EF EE ED EC EB EA E9 E8 E7 E6 E5 E4 E3 E2 E1 E0 DF DE DD DC DB DA D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 CF CE CD CC CB CA C9 C8 C7 C6 C5 C4 C3 C2 C1 C0 BF BE BD BC BB BA B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 AF AE AD AC AB AA A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 9F 9E 9D 9C 9B 9A 99 98 97 96 95 94 93 92 91 90 8F 8E 8D 8C 8B 8A 89 88 87 86 85 84 83 82 81 80 7F 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 57 56 55 54 53 52 51 50 4F 4E 4D 4C 4B 4A 49 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 38 37 36 35 34 33 32 31 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F

こちらはサンプルを細かく取れる分、元の波形により似せることができます。

最初に述べたとおり、振幅方向の位置は16進数2ケタの256段階(16×16=256)で表されます。また、この2ケタを1サンプルとし、最大1024サンプルまで取り扱うことができます。ちなみに今回は512サンプルでした。

 

この通り、WAV13は何かの波形に似せることを得意としています。そのため、楽器の音(生楽器やMIDI音源など)の波形を元にすれば、その楽器の音をピコカキコで使うことができます。

なお自分で1から手打ちで音作りすることも可能ですが、取れる値が多く音色の予測が困難なため、作るのは大変面倒です。

 

そしてWAV10(GB波形メモリ音源)は何かの波形に似せることには元々向いていません。GB音源らしい音を作る時に使います。

使用するアプリ

実際に波形を作るために4つソフトを用意する必要があります。以下の表を参照。デスクトップレコーダー以外は解説で使っています。


MIDIシーケンサ
今回は楽器の音に、Windows標準搭載の「Microsoft GS Wavetable SW Synth(通称MSGS)」を使用するので、その音を鳴らすために必要となります。

Dominoを初めて使う人はシーケンスソフト Domino の使い方メモの「最初にやっておくこと」と「音色を変えるには」を読んで下さい。

デスクトップレコーダー
MIDIシーケンサで鳴らした音を録音するために使用します。著者の録音方法は全然違うため(オーディオインターフェースのループバック録音機能を使用)、何かありましたら検索して下さい。

波形編集ソフト
録音した波形から1周期分だけ取り出します。他には音量調整したり8bitにしたり色々。

バイナリエディタ
これに突っ込んだファイルは16進数2ケタの文字列で表示されます。つまり録音したwavファイルなどを突っ込めば、波形に該当する部分だけコピペしてそのままピコカキコで使用することができます。

ちなみにバイナリエディタを使わずに、1周期分の波形を見て手打ちで文字列にすることも可能です。(気合いと根性があれば)

というわけで早速作ってみたいと思います。今回はトランペットの音色で挑戦します。

MIDIシーケンサでの操作


まず画像の赤枠で囲んだ部分をダブルクリックして、音色を「057 Trumpet」に変更します。そして十分なサンプルを取るため、ピアノロールに1小節分程度ノートを打ち込みます。音程は使うと思われる音域の中間あたりにしておくと良いと思います。今回はにC4のドにしました。

注意点としては、余りに低すぎると1周期の時間が長くなり、結果サンプル数が多くなって1024をオーバーすることがあります。

 

その後、デスクトップレコーダーを使って録音を開始します。ファイルの種類はSound Engineで扱える「.wav」にしておいて下さい。

また、サウンドレコーダーを使用する場合は、設定を「44.1kHz 8bit」にしておくと良いです。

波形編集ソフトでの操作

①チャンネルを1にする


録音したファイルをSound Engineに突っ込むと、このような波形が表示されます。

まずはチャンネル数を「1」にして下さい。すると「フォーマット変換」というダイアログが開くので「OK」ボタンを押します。

ノーマライズする(音量を上げる)


メニューバーの「音量」から「ノーマライズ(正規化)」を選択して音量を大きくします。この際、スピーカーの音量にはご注意下さい。

この操作を行わないと実際にピコカキコで使う時も音量が小さいままとなってしまいます。

③サンプルを取る部分を選択する


次に波形を拡大して1周期分を切り取ります。頭と終わりの黄緑で囲まれた部分は音色の変化が激しいため、真ん中あたりから切り取ります。「拡大」ボタンで最大まで拡大して下さい。

④1周期分を切り取る部分を決定する


このように同じ波が何度も連続しているのが分かると思います。この中から1周期分だけ切り取ります。切り取る位置はどこでも良いのですが、位相が0の部分(波が中心の線に触れているあたり)から切り取って下さい(矢印で指している部分)。ここから離れた位置から切り取るとプチノイズの原因となることがあります。

⑤1周期分を切り取る


1周期分をドラッグしてメニューバーの「編集」から「切り取り」を選択して切り取って下さい。その後、「ファイル」から「新規作成」を選択。ファイル保存ダイアログが出ますが、「いいえ」で問題ありません。

⑥1周期分の波形を貼り付ける&音量を上げる


「編集」→「貼り付け」で先ほど切り取った波形を貼り付けます。何も見えないため、また「拡大」ボタンで最大まで拡大します。すると画像のように1周期分だけ貼りつけられたことが分かります。

音量がまだ小さいので、また「音量」→「ノーマライズ(正規化)」で音量を上げておきましょう。

⑦8ビットにする


「ビット」を16ビットから8ビットに変更します。こうすると振幅方向が256段階になるのでWAV13での定義と同じになります。ちなみに8ビット=2の8乗=256です。

⑧サンプル数確認&保存


右上の「サンプル」のボタンを押してサンプル数を確認します。ここで1024以上になっていなければピコカキコで使用することが可能です。今回は170なので余裕ですね。
最後に「ファイル」→「名前を付けて保存」でwavファイルとして任意の名前で保存してください。

バイナリエディタでの操作

①ファイルをドラッグ&ドロップする


バイナリエディタ(ここではStirling)に先ほどのwavファイルをドラッグ&ドロップすると画像のように16進数2ケタの集まりで表示されます。

この中には波形情報以外の情報が先頭と末尾に記述されているので、それらを削除します。

②先頭の波形以外の要素を削除する

文字列の始めから「64 61 74 61 ** ** ** **」の部分までがいらないので削除します。「**」は不定なのでこのように表記しています。「64 61 74 61」の後の4サンプル分です。

③末尾の波形以外の要素を削除する

「4C 49 53 54」以降の文字列を削除します。

④文字列をコピーする

残った部分をコピーします。


あと波形についてですが、下の部分を00として上に上がっていくごとに1ずつ増え、中央は7Fと80の間、一番上でFFとなっいます。

今回の手順で作ったなら、始まりと終わりは大体70~8Fの間にはなっているはずです。

また、この波形を見ると00の後にいきなり83にはならないということがわかると思います。これら事も波形とそうでない部分を判断する材料にして下さい。

ピコカキコエディタでの操作

バイナリエディタでコピーした文字列を貼り付ける


「#WAV13 0,」の後にコピーしたものを貼り付けます。これで使用準備は終了です。

後は使用したいトラックで「@13-0」と記述すればトランペットの音色を扱えます。

 

※波形を複数用意した場合は「0」の部分を違う数字にして下さい。例えば2番目の波形を「#WAV13 1」としたなら、その波形を使う場合トラックで「@13-1」と記述します。

②再生する

というわけで作った波形の音色を早速聴いてみましょう。

/*ピコカキコエディタに貼りつけて再生してみて下さい*/
@13-0 @e1,0,0,127,0 o5 cdefgab<c

/*波形定義*/
#WAV13 0, 83 86 87 88 87 87 85 83 81 7F 7D 7C 7A 79 78 77 76 75 74 74 73 72 72 71 70 70 70 70 70 71 71 72 73 74 75 77 78 79 7A 7B 7C 7D 7E 7E 7E 7F 7F 7F 7F 7F 7F 7F 7E 7D 7D 7C 7C 7B 7A 7A 79 79 79 78 78 78 78 78 78 78 77 77 76 76 75 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 68 67 67 67 67 67 68 69 6B 6D 6F 72 75 78 7C 80 84 88 8D 91 96 9B 9F A4 A9 AE B2 B7 BB C1 C5 CB CF D5 DA E0 E4 EA EE F2 F6 FA FC FD FE FC F9 F4 ED E3 D6 C5 B2 9C 83 6A 51 3A 27 17 0B 04 00 00 03 07 0E 16 1F 29 33 3D 48 52 5C 64 6D 74 7B 80 84

微妙な感じもしますが、それっぽくなりました。

 

/*ピコカキコエディタに貼りつけて再生してみて下さい*/
/*テンポ*/
t91;

/*マクロ定義。トラック内で$Aと書くと$Aの中身が記述されのと同じことになる*/
$A=/:f8 b-8.fb-r <c4>fr <d8.e-fr f4. e-4e-r e-8.dcr >b-4<dr >b-4:/r8;

/*--トランペット--*/
/*1ループ目は普通に*/
@13-0 @e1,0,8,102,18 o5 @v127 l16 q12
$A
/*間をおく*/
r1
/*2ループ目からディレイ音とLFOビブラートを追加*/
@l30,30,0,25
$A
;

/*--ディレイ音用トラック--*/
/*1ループ目では鳴らさないので休み*/
r8/:8r2.:/r1
/*16分音符分ずらして音量も下げる*/
r16 @v37
@13-0 @e1,0,8,102,18 o5 l16 q12 @d-4 @l30,30,0,25
$A
;

/*波形定義*/
#WAV13 0, 83 86 87 88 87 87 85 83 81 7F 7D 7C 7A 79 78 77 76 75 74 74 73 72 72 71 70 70 70 70 70 71 71 72 73 74 75 77 78 79 7A 7B 7C 7D 7E 7E 7E 7F 7F 7F 7F 7F 7F 7F 7E 7D 7D 7C 7C 7B 7A 7A 79 79 79 78 78 78 78 78 78 78 77 77 76 76 75 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 68 67 67 67 67 67 68 69 6B 6D 6F 72 75 78 7C 80 84 88 8D 91 96 9B 9F A4 A9 AE B2 B7 BB C1 C5 CB CF D5 DA E0 E4 EA EE F2 F6 FA FC FD FE FC F9 F4 ED E3 D6 C5 B2 9C 83 6A 51 3A 27 17 0B 04 00 00 03 07 0E 16 1F 29 33 3D 48 52 5C 64 6D 74 7B 80 84

天空の城ラピュタより、「ハトと少年」です。1ループ目は普通に打ち込んだもの、2ループ目は残響とビブラートを追加したものです。ちょっと凝ってみると更にそれっぽくなります。


ちなみに今回作った波形と元の波形を比較すると以下の画像のようになります。


大体一緒ですね。

似せにくい音

ブラス系の音色やオルガンなどは似せやすいですが、音色によってはこの手順で作ってもあまり似ないことがあります。以下がその例となります。

波形が常に変化している

ストリングスやシンセのSuperSawなど。


画像はMSGSのストリングスの波形ですが、ご覧の通り徐々に波形が変わっています。そのため、この中から1周期分を切り出しても同じ音にはなりません。

アタックに特徴がある

尺八やギターなど。

音の出だしに特徴があるものを今回のように作ると、何の音か分からなくなるものもあります。フィルタとフィルタエンベロープを使用すれば何とかなることもあります。

ワンショット系

オーケストラヒットやスチールドラムなど。

これらはむしろDPCMに変換して使った方がいいです。

最後に

今回の作り方はピコカキコについて語るスレの#872-#875を頼りにして手順化したものとなります。もっと簡単な方法があるかもしれません。


また、参考になるピコカキコとして、

などがある、と書きたかったのですが、WAV13を使ったトラックをよく見ると更にFM変調(@iや@o)を使用しているので正直よくわかりません。(デチューンさせて厚みを持たせている?)


著者が作ったピコカキコですと、

でWAV13を多く使っています。トランペットとヴィブラフォン、チューバにエレピがそうです。

ヴィブラフォンはフィルタとフィルタエンベロープを使用し、アタックに特徴をつけています。

また、エレピはオルガンの波形を使っています。音量エンベロープで減衰させればエレピっぽくなるかと思い試してみたら意外と良い感じだったのでそのまま採用しました。

 

このような感じで手順は面倒ですが、WAV13を使えるようになるとピコカキコ制作の幅が一気に広がるため、ぜひ参考にして頂ければ幸いです。