投稿者 G  (社会人) 投稿日時 2010/6/6 12:10:06
あにす さん

どんな方法がw

コードを2008にもう一度コピーしなおして
フォームもやりなおしてしまいましたw

今度利用してみようと思いますw

るきおさん

MIDファイルではなく2008で実現できたキーボードをたたくと音が出るというシステムが死んでしまいましたw
 Declare Auto Function midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Int32, ByVal dwMsg As UInt32) As UInt32
    Declare Auto Function midiOutGetNumDevs Lib "winmm.dll" () As Int32
    Declare Auto Function midiOutOpen Lib "winmm.dll" (ByRef hmo As UInt32, ByVal iDeviceIO As Int32, ByVal dwCallback As Int32, ByVal dwCallbackInstance As Int32, ByVal dwFlags As Int32) As UInt32
    Declare Auto Function midiOutReset Lib "winmm.dll" (ByVal hMidiOut As Int32) As Int32
    Declare Auto Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As UInt32) As Int32

中略

  Private Sub midi_play(ByVal M1 As Integer, ByVal M2 As Integer, ByVal M3 As Integer, ByVal M4 As Integer)
        'M1音質   M2音階 M3オクターブ M4音量
 Dim ret As UInt32
        Dim dwMsg As UInt32
        Try
            midiOutShortMsg(hMidiOut, &HC0 + M1 * 256)
        Catch
              End Try
        Try
            dwMsg = &H3C90 + ((M2 + 12 * M3) * 256) + (M4 * 256 * 256)
            ret = midiOutShortMsg(hMidiOut, dwMsg)
        Catch
                   End Try
    End Sub '音を出す
かなり省きましたが問題は多分この辺だとおもいますが

エラーも出ずよく分からない状況です

オクターブは3を0としてありますのでこういう計算になってます



多分2010との仕様のちがいかなっておもいました


るさおさんのプログラムで作ったファイルは音が出ます


あの後いろいろ考えて

どれが音量でって言うのはわかりましたw

音量が172で維持されてたのでちょっと考えれば分かることでした^^;
すいません


数字の目的が分からなければ10進数にもどして自分のプログラムと照らし合わせれば良いだけの話でしたw

わからなかったところもなんとなくですがわかりました
いじれるほどというわけではないですけど


というわけで二つのバージョンを利用してみようかなとおもいました

2008から2010になるとなぜ出来なくなるのかは正直わかりません
恐らく技術とMIDの構造を完璧に理解してないからどこが悪いのかの判定ができないんだとおもいます

今回は完成させる事を重視して
今までのピアノプログラミングを改造してテキストを一定の場所に保存する機能を作り
2010でいただいたデータを元にテキストを解析してファイル化する能力をつけて
それを2008のピアノから直接起動させる方法を取ってみようかとおもいます
バージョンの違う二つのプログラムをつかって大変醜い状態ですがw


これならいま実現可能だとおもいます。

自分はどっちかというと分からないものでもとりあえず人に習って作ってそれをいじりながら覚えていくタイプだと思うのでとても助かりました
サンプルは私もかなり探したと思うのですが
VBでMIDのファイルを作ってるデータを公開してます
なんてサイトはほとんどなく
ほとんどは現存するMIDのデータを解析して音を鳴らすというものでした

それなら参照からDirectX.AudioVideoPlayback
とかを使えば簡単に再生できてしまうしとおもってしまったので^^;

とりあえずレベルが足りないから無理だといって諦めるのは嫌なんで
基本は完成させてみます

本とかのガイドなしに作るのはこれが実は初めてで
実力的に正直選択ミスだなとは思いましたw

こんなに難しいとはおもわなかった^^;