前提・実現したいこと
プログラムを書くのはあまり慣れてないので、おかしな言葉を使うかもしれませんが見逃してください。openFrameworksのアドオン"ofxMidi"について質問です。
ofxMidiライブラリをダウンロードすると4種類のExampleデータが付いてきます。その中にmidiInputExampleというものがあり、それを実行すると、MIDI鍵盤を押した際の入力詳細が画面に出力されます。出力される入力詳細は以下の通りです。
0. - Note On/Off:これは鍵盤を押したらONになり、離したらOFFになる
0. - chan :これはmidiのチャンネル値
0. - pitch:これは鍵盤の位置を示す値
0. - vel :これは鍵盤を押した時の強さの値
※deltaという項目もありますが、今回は関係ないので置いておきます。
発生している問題・エラーメッセージ
この中で、2~4の項目はプログラム中の値(message.channelやmessage.pitchやmessage.valueなど)から条件式の値として使用できるのですが、1の項目だけそれができません。項目1は鍵盤を押しているか、離しているかの判別をしています。押したらON、離したらOFFと出力されます。この項目の出力、判定はofApp.cppの55行目にあります。
該当のソースコード
void ofApp::draw() { for(unsigned int i = 0; i < midiMessages.size(); ++i) { ofxMidiMessage &message = midiMessages[i]; stringstream text; //下の行でONOFFの出力をしています。出力内容はmassage.statusを使用しています。 text << ofxMidiMessage::getStatusString(message.status); //以下for文続き
ONOFFの判別はmassage.statusによってされています。
試したこと
massage.statusの値をコンソールに出力したくて、(例) printf("m = %s",massage.status);のように入力したのですが、charを使えとエラーが出ました。なので(例) printf("m = %c",massage.status);としたところ、「m = ?m = ?m = ?m = ?...m = ?」というように出力されました。これは一体どういうことなのでしょうか?ON/OFFという値はどこから手に入るのでしょうか?
回答よろしくお願いします。
(それと、「m = ?m = ?m = ?m = ?...m = ?」のようにたくさん出力されるのではなく、一回だけ出力させるのはどうすれば良いでしょうか...。プログラミング初心者なので教えていただけると幸いです。)
補足情報(FW/ツールのバージョンなど)
oprnFrameworksバージョン:0.10.1
環境:Mac, ターミナル
実行状況:make, make runで実行
回答1件
あなたの回答
tips
プレビュー