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

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

ただいまの
回答率

91.02%

  • C++

    2929questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

おーぷんMIDIIOライブラリ1.1

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 164

zakky79

score 7

おーぷんMIDIぷろじぇくとのMIDIIOライブラリ1.1を使用し、電子ドラムを叩き、MIDI出力をしようと考えています。サンプルの3秒間ドの音を鳴らすことはできましたが、ライブラリを使用したプログラムを試行錯誤しながらビルドしてますが、ローカル関数の定義が正しくないなどエラーが出てわかりません。

目的は電子ドラムを叩いて、そのMIDIを獲得することなんですが、それはこのMIDIIOライブラリ1.1で実現は可能なんでしょうか。
よろしくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

+1

電子ドラムを叩いて、そのMIDIを獲得する

この辺りの言い方が若干曖昧に感じます。

(1) 電子ドラムとパソコンをMIDIケーブルでつなぐ
(2) アプリケーションからパソコン内部のMIDI-INからデーターをリアルタイムで読み込む

ここまではこのライブラリーで実現可能と思います。「MIDIを獲得する」というのが「自分で演奏した内容をリアルタイムにMIDIデータとして読み込むこと」ならこれでできるわけですが、ただ読み込むだけではそのデータは電子の海に消えてゆくだけなので、それだけではなく何か有用なことをしたいはずです。

(A) 演奏データ(MIDIデータ)を後から再現できるように(MIDIファイルなどに)保存する
(B) 演奏データ(MIDIデータ)をシンセサイザーへ出力して音を出す

こうしたことを狙っているのではないでしょうか?本家のページをちょっと見てみましたが、ダウンロードして中のドキュメントをみないとどんな機能があるかわかりませんでした。ドキュメントをよく読んでみてください。なお、(B)はWindowsの内臓シンセサイザーをOPENしてそこへMIDIメッセージを送信する例が載っているので多分できると思います。


追記:

回答コメントを拝見した上での追記です。

ドキュメントをみてないので推測になりますが・・・このライブラリーにはもしかしたらMIDIファイルへ出力する機能ならあるかも知れませんが、「楽譜」に起こす機能はまずないと思います。
ここでいう楽譜には2種類考えられます。

(C1) 所謂五線譜
(C2) 一般のMIDI編集ソフトによくあるピアノロール

機能の実現という面では(C1)は非常に高度です。任意のタイミングで発音・消音するものを五線譜に起こすことは機械的にやるのが難しいためです。一方(C2)なら一旦(A)でMIDIファイルを出力すれば別途MIDI編集ソフトでそれを読み込み表示できます。フリーのMIDI編集ソフトも色々あると思いますし、このプロジェクトでも世界樹というソフトが配布されているのでそれも使えると思います。

いずれにせよ、MIDIファイル(多分FORMAT0/1どちらでもOKと思います)を出力する機能があるかどうかが要点になると思います。その機能があるかどうか確認してみてください。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/10/31 19:07

    (B)の実装は考えてないです。(A)を実現して、そのMIDIデータを楽譜に表示したいと考えてます。そのためにまずMIDIデータを電子ドラムから読み込もうと考えています。

    キャンセル

  • 2017/10/31 19:19

    なるほどわかりました。ちょっと回答へ補足してみます。

    キャンセル

  • 2017/10/31 22:12

    返信ありがとうございます!
    楽譜の表示はopencvなどを使おうと思ってますが、まだ勉強中なのでとりあえず置いておきます!
    プログラムで動かしたいので、ソフトは使わないつもりです。なので世界樹も使わないで進めるつもりです。
    ライブラリの中も見てるんですが、プログラムの勉強も進めつつやってるので、関数エラーなど出てどうしたらいいのやらってなってしまってます…

    キャンセル

  • 2017/10/31 22:26 編集

    ピアノロールのようなものでなく、楽譜(五線譜)ということでしょうかね・・・
    回答にも書きましたが、任意のタイミングで発音・消音するものを楽譜に起こすのは難しい気がしますが、それはそれとして、音の長さをどうとらえるかがかなり面白い題材だと思いました(MIDIなのでピッチは気にしなくていいのでですが、音の長さが難しいと思ったのです)。例えば四分音符のスタッカートなのか八分音符とすべきかは人間が聞いても「この楽譜なんでこういう指示なんだろう」と思ってしまいます。また人間の演奏では、テンポの微妙なゆれもあるのでそれをどうとらえるかなど、とても興味深いところです。それを賢く判断して楽譜に表現してくれれば、ありふれたピアノロールの編集ソフトとは一線を画すものになるのではないでしょうか!

    キャンセル

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

  • ただいまの回答率 91.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • C++

    2929questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。