回答編集履歴
2
誤記訂正
    
        answer	
    CHANGED
    
    | @@ -4,15 +4,15 @@ | |
| 4 4 |  | 
| 5 5 | 
             
            MIDIEvent_GetTime (pNoteOnEvent);
         | 
| 6 6 |  | 
| 7 | 
            -
            で曲の頭からの発音タイミングが得られそうです。それに基づき適当にX座標を決めるようにすればよいのではないでしょうか。なお、自分はお使いのライブラリーの仕様を知らないのですがMIDIの規格についていえば各MIDIイベントに記録されているのは絶対時間ではなく「ある可変の単位時間」によるカウント値 | 
| 7 | 
            +
            で曲の頭からの発音タイミングが得られそうです。それに基づき適当にX座標を決めるようにすればよいのではないでしょうか。なお、自分はお使いのライブラリーの仕様を知らないのですがMIDIの規格についていえば各MIDIイベントに記録されているのは絶対時間ではなく「ある可変の単位時間」によるカウント値のはずです。ですので、
         | 
| 8 8 |  | 
| 9 9 | 
             
            MIDIEvent_GetTime (pNoteOnEvent);
         | 
| 10 10 |  | 
| 11 11 | 
             
            の仕様を調べたり実験したりして適当な係数によりX座標を決めてやればよいでしょう。
         | 
| 12 12 |  | 
| 13 13 | 
             
            ---
         | 
| 14 | 
            -
             | 
| 14 | 
            +
            補足:
         | 
| 15 15 |  | 
| 16 | 
            -
            PineMatsuさんがコメントしておられるように、MIDI規格はプログラマーが誰でも知っているような規格ではないと思います。自分が知る限りではここteratailでMIDIプログラミングの経験がおありだろうと気づいた方はおひとりでした。実際にはご存知の方 | 
| 16 | 
            +
            PineMatsuさんがコメントしておられるように、MIDI規格はプログラマーが誰でも知っているような規格ではないと思います。自分が知る限りではここteratailでMIDIプログラミングの経験がおありだろうと気づいた方はおひとりでした。実際にはご存知の方がもう少しいらっしゃるかも知れませんがマイナーな分野であるのは間違いないと思います。
         | 
| 17 17 |  | 
| 18 18 | 
             
            こういうものについて取り組む場合はなるべく自分自身で解決方法を探れるよう「仕様書を探しそれを見て内容を把握する」というプロセスは不可欠だと思います。そういう心構えもしておいたほうがよいのではないでしょうか?
         | 
1
誤記訂正
    
        answer	
    CHANGED
    
    | @@ -1,10 +1,10 @@ | |
| 1 1 | 
             
            MIDIのトラックからMIDIイベント情報を拾ってきてそれで音符を描画というプログラムのようですが、「どの時点で発音するか」について考慮されておらず単純に「順番に一定の時間で発音する」という前提でコードを書いておられるのでご質問のような譜面になってしまいます。
         | 
| 2 2 |  | 
| 3 | 
            -
            ポイントは「そのノートが何時発音するべきものか」によってX座標を決めることです。
         | 
| 3 | 
            +
            ポイントは「そのノートが何時発音するべきものか」によってX座標を決めることです。ちょっと調べてみたところ
         | 
| 4 4 |  | 
| 5 5 | 
             
            MIDIEvent_GetTime (pNoteOnEvent);
         | 
| 6 6 |  | 
| 7 | 
            -
            で曲の頭からの発音タイミングが得られ | 
| 7 | 
            +
            で曲の頭からの発音タイミングが得られそうです。それに基づき適当にX座標を決めるようにすればよいのではないでしょうか。なお、自分はお使いのライブラリーの仕様を知らないのですがMIDIの規格についていえば各MIDIイベントに記録されているのは絶対時間ではなく「ある可変の単位時間」によるカウント値が格納されているはずです。ですので、
         | 
| 8 8 |  | 
| 9 9 | 
             
            MIDIEvent_GetTime (pNoteOnEvent);
         | 
| 10 10 |  | 
