質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

2回答

4143閲覧

NextMIDIというライブラリでMIDIキーボードの入力を取得するサンプルコードをください

rituta

総合スコア41

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2018/10/10 10:52

編集2018/10/12 11:12

Next MIDI ProjectというサイトでMIDIデータが操作できるライブラリが配布されており、使ってみたいと思ったのですが公式サイトにあるサンプルコードが少なすぎて自分の知識じゃやりたいことができませんでした。
C#が出来る方がいらっしゃれば是非サンプルコードを拝見させてください。

やりたいことは以下の内容です。

1.MIDIキーボードの鍵盤を押下したときに、なんらかの関数を実行するようにしたい。
2.MIDIキーボードのどの鍵盤が押下されたのか知りたい。

の2点です。
よろしくお願いいたします。

========以下追記=======
こちらでも色々試した後質問したわけで、丸投げしたつもりはないのですが
言い回しやコードを載せなかったのが問題だったようですね。
ということで、少しコードを載せておきます。

下記はMIDIポートの開放までを行ったものです。
MIDI機材のメーカー名等の情報は取れますが、鍵盤にアクションがあったときの情報が取れません。
おそらくイベントなるものが発生するようなのですが、デリゲートやイベントはあまり使わないため
よくわかりませんでした。

下記は鍵盤を押下するとOnReceived関数が実行されると思って書いたコードです。
しかし想定通りにはなりませんでした。
コードの原因がわかる方がいらっしゃれば是非ご教授いただきたいです。
よろしくお願いします。

csharp

1 void Start () 2 { 3 int portCount = MidiInPort.PortCount; 4 5 for(int i=0; i<portCount; i++) 6 { 7 port = new MidiInPort(i); 8 } 9 10 port.Open(); 11 12 Debug.Log("ポートが開いているか?:" + port.IsOpen); 13 14 Debug.Log(port.Name); 15 } 16 17 protected virtual void OnReceived(DataEventArgs<MidiEvent> e) 18 { 19 20 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2018/10/12 11:17

提示されたコードにイベントハンドラを登録している箇所がありませんが、登録してます?
rituta

2018/10/12 13:17

登録の仕方がわかりません。参照を辿ると、 // // 概要: // データを受信した時に発生します。 public event EventHandler<DataEventArgs<MidiEvent>> Received; というのがあって怪しいと思ってるのですがどうやったら使える状態になるのかがわかりません。
guest

回答2

0

イベントハンドラの追加方法が分からないとのことなので
イベントを捕捉するを参照してみてください。

ただ、Recivedイベントの発生が捉えられても、その中身までは知りません。

投稿2018/10/12 14:42

YAmaGNZ

総合スコア10266

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まず、「midi キーボード 接続」でぐぐってでてくるものを一通り読みましょう
PCとキーボードを接続するためにいろいろ電子工作や配線が必要です

それで接続した上で、通信はSerialPortクラスを使って行います

で、どの鍵盤を押したらどういうデータが来るのか、というのは
「midi規格書」でぐぐればそこらへんの資料がでてくるので、がんばって読みましょう

投稿2018/10/10 10:59

y_waiwai

総合スコア87784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rituta

2018/10/10 11:45

midiキーボードの接続はできています。電子工作や配線は必要ありませんでした。 質問にも書いていますが、鍵盤を押した際のデータ受信はNext MIDI Projectというライブラリを使うつもりです。 ですので、質問通りのサンプルコードを頂きたく思います。
len_souko

2018/10/11 00:26

1-1. teratailはサポートセンターではなく、思考するエンジニアの為のQ&Aコミュニティです https://teratail.com/help/question-tips#questionTips1-1 teratailを「サポートセンター」だとは思わないでください。 推奨していない質問 https://teratail.com/help/avoid-asking コードをください・デバッグしてください等の丸投げの質問 teratailの方針とは真っ向から対立する質問(?)のため、あなたの期待する回答はつかないと思います 実態に伴う正確な表現をすると、あなたの無償でのコード作成依頼をteratailというサービスを利用して達成することはできないと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問