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

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

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

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

Q&A

1回答

276閲覧

おーぷんMIDIIOライブラリ1.1

zakky79

総合スコア23

C++

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

0グッド

0クリップ

投稿2017/10/31 09:03

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

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

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

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

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

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

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

guest

回答1

0

電子ドラムを叩いて、その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 09:52

編集2017/10/31 10:26
KSwordOfHaste

総合スコア18394

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

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

zakky79

2017/10/31 10:07

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

2017/10/31 10:19

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

2017/10/31 13:12

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

2017/10/31 13:26 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問