えっと、MIDIのキーボードを作成するにあたって、
MIDIデバイスが開かれているときにも使えたらいいと思うので、
デバイスが使えなければ、waveで代用しようと思うんですけど…。
そのときの再生時の音階を変えたりしてできませんか?
キーボードなので、なるべく早くできることで済ませたいです。
ぁ、ログのなかに、こんなAPIを見つけました^^;
waveOutGetPitch
これで解決したら、するかもしれません。
8オクターブ12音すべての音をとってwaveデータにして詰めて…。
と言う強引なマネだけはしたくないものです^^;
何だか、すごいことになってますね。
要はMidi音源を自分でつくりたい、ってことでしょうか。
その場合、当然waveOut系のAPIで再生すれば
waveOutSetPitchでピッチの変更もできますが
MSDNには以下のような記述もあります。
> すべてのデバイスがピッチ変更機能をサポートしているわけではありません。
なので、ピッチ変更機能をサポートしてない場合、
どうするのかっていう話しもあります。
後、Midiで言うなら、複数の鍵盤が押された状態をサポートするのに
Wave音声を合成する必要もでてくると思いますが・・・。
う〜ん、大変そう。
> 後、Midiで言うなら、複数の鍵盤が押された状態をサポートするのに
> Wave音声を合成する必要もでてくると思いますが・・・。
あうう…。そっか…。
そんなのもありましたねぇ…。
MIDI音源を作るようなほどのことは、しなくてもいいかなとは思うんですけど…。
あくまで、シーケンサを使うその横で使う道具なので、
MIDIデバイスが使えなくても動きはするくらいのものはほしいし…。
それだけのためぐらいでいいし…。
やっぱりすべての音階のWAVEファイルをとって、
再生するのがいちばん簡単なのでしょうかねぇ…?
波形加工とか、いろいろな加工をすれば、全部の音で2,30キロほどには押さえられるだろうし…。
でも、その音はいったいどこから?
マイクはなぜか、キーボードの音だけ受け付けないし、
MIDI音源から取ってもなんだかいやだし、
一定の音を合成すれば可能だって、誰かが言っていたというウワサはありますけど…。
まぁ、用途によりけりなんでしょうが、
トラック毎に楽器が異なる場合等、
どのトラックをどういう風に
演奏していくかもポイントになるでしょうね。
Waveファイルがデータである以上、
そのデータ構造を知れば、書き換えは可能でしょうが・・・。
サンプルで、テンポ値を無理矢理書き換えて変更する、
ってのを見たことがありますし、それと似たようなものでしょう。
高さを用意するより、音の種類を用意して
様々な楽器を使用されてもそれなりに聞こえるぐらいの
数は用意しておく必要があるかと。
えっと、まあ、結局自分のいやがってたことをしているわけですけど…。
> Waveファイルがデータである以上、
> そのデータ構造を知れば、書き換えは可能でしょうが・・・。
> サンプルで、テンポ値を無理矢理書き換えて変更する、
> ってのを見たことがありますし、それと似たようなものでしょう。
それは難しいでしょうねぇ^^;
ふつうに波形加工のソフトで、少しずつやっていきます。
小さいWAVEデータなら、修正もラクだと思うし。
MIDIデバイスを使った演奏を主体にするつもりなので、
とりあえず、グランドピアノほか、ストリングとか、それくらい、
よく使うであろう楽器の音だけでいいと思うので^^;
後は、リソースには入れず、ユーザーがいれかえられるようにするとか。
ただ、そのWAVEデータをどこからとってくるかは問題ですねぇ…。
ここのWAVE作成のも使ってみますけど…。
よくわからないけど、"出来るかも"と言うことが分かりました。
"テンポを変えて再生"と言うサンプルを見たんですけど、
同じ要領でWAVEバイナリファイルを書き換えれば可能かもしれません。
さぁ〜て、どこを変えましょう^^;
仕様が分からなければ、どこを変えればいいかも分かりません^^;
どこを変えればいいんでしょうか?
"日本語の"仕様書ってありませんか?
(やっぱり英語だと、序文を翻訳するだけでも一苦労…)