エスウインドウギターも紹介してもらいましたm(_._)m
しかも26日の一番先頭で(^^)v 更新時間順でしょうか?!
先頭で紹介してもらったおかげで、窓の杜で紹介してもらった時も越えて
過去最高のアクセス数(893アクセス)を記録しました~
GM.DLSのフォーマット調査の続きです。
RIFF nnnnnnnn
ファイルヘッダー
DLS colh nnnnnnnn
コレクション数(4byte)
vers nnnnnnnn
バージョン(8byte)
<lins チャンク>
ins insh nnnnnnnn
音色プログラム毎の設定(12byte)
nnnnnnnn 設定数
nnnnnnnn バンク
nnnnnnnn 音色番号(MIDIのプログラムチェンジCxの番号)
<rgn チャンク>
rgnh nnnnnnnn
設定対象の設定(12byte)
nnnn 設定対象のノート番号下限
nnnn 設定対象のノート番号上限
nnnn 設定対象のノート番号下限
nnnn 設定対象のノート番号上限
nnnn (オプション?)
nnnn (キーグループ?)
wlnk nnnnnnnn
設定対象のWAVEデータ割当て(12byte)
nnnnnnnn ?
nnnnnnnn ?
nnnnnnnn wvplチャンクに格納されたWAVEデータの順番
<ptblチャンク>
WAVEデータへのポインタが列挙されている
08000000 構造体サイズ(8)
nnnnnnnn WAVEデータの数
nnnnnnnn… ポインタ
ソフト整理により、公開終了です。
画面に表示された6本の線をペンでなぞって音を出すギターです。
windowsの標準音色フォント(GM.DLSファイル)に対応しました。
適当なフォルダにEXE、DLL、GIFファイルを置いて下さい。
http://www.ne.jp/asahi/phs/phs/blog/eswinguitar2.lzh
<使い方>
画面の6弦をペンでなぞると音が出ます。数字キーはC~Bのコードに対応していて、キーを押しながら弦をなぞると音が変わります。
画面タップ音は自動でオフにする方法がわからなかったので、ソフト使用前にZero3の設定でタップ音をオフにしてから使ってください。
新品での使用はお勧めしません(^^; esだと反応が悪目なので、あまり強くやりすぎて画面を傷つけないよう気をつけて下さい。
<音色設定>
デフォルトでは、減衰系の電子音が鳴ります。ギターとはほど遠い音です(^^;
GM.DLSファイルをプログラムと同じフォルダに置くとギターの音色で再生します。
GM.DLSは、MIDIが再生できるパソコンのWindowsフォルダを検索してください。
(XPでは「C:\WINDOWS\system32\drivers」にあります。)
XP以外のGM.DLSファイルでは動作確認していないので、動作確認もらえるとありがたいです。
見つからない場合や音がおかしい場合は、このWAVファイルをプログラムと同じフォルダに置いてみてください。
http://www.ne.jp/asahi/phs/phs/blog/1.wav
正弦波テーブルの代わりに、このWAVEをソフト(エスウインドウギター)に組み込んでみたところ、ギターっぽい音が鳴るようになった。
Windows標準の音色ファイルであるGM.DLSのフォーマットについて調べました。
wvplチャンクに音色データとして複数のWAVEファイルが埋め込まれています。
WAVEデータ部分だけ抜粋して解析。
<wvplチャンク>
wvpl
LIST・・・ 音色1(WAVE部分の全体構造参照)
LIST・・・ 音色2
・・・
<WAVE部分の全体構造>
LIST nnnnnnnn
WAVデータのブロックサイズ
wavefmt\20 12000000
waveフォーマットデータチャンク[0x12=20byte]
内容はwaveファイルのWAVEfmt\20と共通
wsmp 24000000
音色情報チャンク[0x24=36byte]
data nnnnnnnn
データチャンク
LIST…
以下著作権情報チャンクの列挙
DLSファイルから以上の部分を抜き出して、先頭のLISTをRIFF、wavefmtをWAVEfmtに変更すればエクスプローラのプロパティでWAVEファイルとして認識しました。
<音色情報(wsmp)チャンクのデータ部>
※英語のコメントはMIDI Manufacturers Association公開のdls.hより転記
次の2つのブロックに分かれています。
14000000 自身を含むサイズ(20byte)
nnnn 基準ノートNo
nnnn 基準ノートからのオフセットピッチ(符号型)
Specifies the tuning offset from the usUnityNote in 16 bit relative pitch.
nnnnnnnn 音量のオフセット減衰量?
Specifies the attenuation to be applied to this sample in 32 bit relative gain.
00000000 フラグオプション(1=F_WSMP_NO_TRUNCATION 2=F_WSMP_NO_COMPRESSION)
0n000000 ループ種別(0=ループしない/1=ループする/2~未定義)
(ループする場合のみ)
10000000 自身を含むサイズ(16byte)
00000000 ループ種別(0固定=WLOOP_TYPE_FORWARD)
nnnnnnnn ループ開始サンプル数(16bitの場合は、1サンプル=2byte)
nnnnnnnn ループする長さ(ループ開始位置からのサンプル数)
http://www.midi.org/about-midi/dls/abtdls.shtml
MIDI Manufacturers Association