Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
MIDIファイルの作り方
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9658#CommentId14934
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
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
こんなに難しいとはおもわなかった^^;