MIDI入力を受けるには

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ゲスト

MIDI入力を受けるには

#1 投稿記事 by ゲスト »

ABでMIDI入力を受けるには
どのようにしたら良いのでしょうか。
ヘルプを読んではみたものの
MIDIの再生についての記述はあったのですが
肝心のMIDI信号の入力については全く分かりませんでした

ノートオンとノートオフが分かればよいのですが...
どなたかご教授願います。
NoWest
記事: 264
登録日時: 2005年5月31日(火) 10:52
お住まい: 高知
連絡する:

Re: MIDI入力を受けるには

#2 投稿記事 by NoWest »

> ABでMIDI入力を受けるには
> どのようにしたら良いのでしょうか。
> ヘルプを読んではみたものの
> MIDIの再生についての記述はあったのですが
> 肝心のMIDI信号の入力については全く分かりませんでした
>
> ノートオンとノートオフが分かればよいのですが...
> どなたかご教授願います。
どの程度ものが作りたいのかよく分かりませんが、ノートオン・オフを知りたいというのであれば下記のAPIを使用すればできます。

コード: 全て選択

Declare Function midiInOpen Lib "winmm" (phmi As *HMIDIIN, uDeviceID As DWord, dwCallback As DWord, dwInstance As DWord, fdwOpen As DWord) As MMRESULT
Declare Function midiInClose Lib "winmm" (hmi As HMIDIIN) As MMRESULT
Declare Function midiInPrepareHeader Lib "winmm" (hmi As HMIDIIN, pmh As *MIDIHDR, cbmh As DWord) As MMRESULT
Declare Function midiInUnprepareHeader Lib "winmm" (hmi As HMIDIIN, pmh As *MIDIHDR, cbmh As DWord) As MMRESULT
Declare Function midiInAddBuffer Lib "winmm" (hmi As HMIDIIN, pmh As *MIDIHDR, cbmh As DWord) As MMRESULT
Declare Function midiInStart Lib "winmm" (hmi As HMIDIIN) As MMRESULT
Declare Function midiInStop Lib "winmm" (hmi As HMIDIIN) As MMRESULT
詳しい使い方を乗っけたいのですが、時間が無いのと私自身このAPIを使ったことがないので何ともしがたい状況です。

ただ、wave~関連APIでの録音法とほとんど変わらないらしいという情報は手に入れています。
時間があればサンプルを乗っけに再度来ることもあるかもしれませんが、こちらにテストする環境がないので動作は保障できません。
※シンセでも買ってみるかな。。。
ゲスト

#3 投稿記事 by ゲスト »

返信ありがとうございます。

あと音の高さも分かると嬉しいカモ...
いや、贅沢な事は言っちゃいけないですね。
NoWestさんの返信を元に自分でも
いろいろと試してみようと思います
NoWest
記事: 264
登録日時: 2005年5月31日(火) 10:52
お住まい: 高知
連絡する:

#4 投稿記事 by NoWest »

> 返信ありがとうございます。
>
> あと音の高さも分かると嬉しいカモ...
> いや、贅沢な事は言っちゃいけないですね。
> NoWestさんの返信を元に自分でも
> いろいろと試してみようと思います
サンプルを作ってみたんですが、
先にも書きましたとおり、当方にはテストする環境が無いので、
そちらでぶっつけ本番となります。

あと作成したのはAB4.12ですので、
もし、別のバージョンで作成されているようでしたら
連絡してください。

サンプルはMIDI入力から読み込んだデータを
オウム返しにパソコンのMIDI出力から出すものです。

サンプル中ではデバイスのオープンにMIDI_MAPPERを指定していますが、
実際にはそのようにしないでください。
出力デバイスと入力デバイスが被ってしまうとどうなるか私には分かりません。
サンプルの実行には
ウィンドウモードでプロジェクトを作成(名前はmidiin)して
コマンドボタンを2つ貼り付けるだけで動くようにしています。
CommandButton1が入力開始でCommandButton2が停止です。



分からないことがあればまた質問してください。
返信する