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

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

ただいまの
回答率

90.32%

  • C#

    7714questions

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

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

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 210

rituta

score 23

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

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

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

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

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

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

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

    void Start ()
    {
        int portCount = MidiInPort.PortCount;

        for(int i=0; i<portCount; i++)
        {
            port = new MidiInPort(i);
        }

        port.Open();

        Debug.Log("ポートが開いているか?:" + port.IsOpen);

        Debug.Log(port.Name);
    }

    protected virtual void OnReceived(DataEventArgs<MidiEvent> e)
    {

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2018/10/12 10:54

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • YAmaGNZ

    2018/10/12 20:17

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

    キャンセル

  • rituta

    2018/10/12 22:17

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

    キャンセル

回答 2

0

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/10 20:45

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

    キャンセル

  • 2018/10/11 09:26

    1-1. teratailはサポートセンターではなく、思考するエンジニアの為のQ&Aコミュニティです
    https://teratail.com/help/question-tips#questionTips1-1
    teratailを「サポートセンター」だとは思わないでください。

    推奨していない質問
    https://teratail.com/help/avoid-asking
    コードをください・デバッグしてください等の丸投げの質問

    teratailの方針とは真っ向から対立する質問(?)のため、あなたの期待する回答はつかないと思います
    実態に伴う正確な表現をすると、あなたの無償でのコード作成依頼をteratailというサービスを利用して達成することはできないと思います

    キャンセル

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • C#

    7714questions

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

  • トップ
  • C#に関する質問
  • NextMIDIというライブラリでMIDIキーボードの入力を取得するサンプルコードをください