• ベストアンサー

VB.6 midiファイル書き出し

VB.6でmidiファイル書き出すプログラムの組みかたがまかりません。SMFをバイナリエディタで手書きで書くことはぐらいの知識はあるのですが・・・ ご指導よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

割と初心者の方などでは軽く見られがちですが、 「データ型」は常に考えながらプログラムしましょう。 提示されたコードで、Putで書こうとしているのは「文字列」ですよ。 バイナリデータ(普通はByte型の配列とかを使う)を書かないと。 とりあえず、以下に、コマンドボタン Command1 を押すと ファイルに&h0~&hFFのデータを連続して書くプログラムを 付けておきます。 何らかの参考には なると思います。 Private Sub Command1_Click() Dim i As Integer Dim dat() As Byte 'ここでは敢えて動的配列にしてある Dim fn As Integer fn = FreeFile ReDim dat(255) For i = 0 To &HFF dat(i) = i Next Open "c:\Temp.dat" For Binary As #fn 'ファイル名は適宜変更を Put #fn, , dat Close #fn End Sub

betonamu2
質問者

お礼

K-Sogacchiさん 返事遅くなってすいませんでした。 無事SMFを作ることができました。 またよろしくお願いします

その他の回答 (1)

回答No.1

MIDIファイルに限らず、バイナリファイルを書き込むなら Openステートメントで(Binaryモードで)ファイルを開き、 Putステートメントで書きたいデータを書く…ってぐらいでしょうか? 基本的には そんな感じになるかと。 詳しくはVBのヘルプを見るとかネット検索するとかしてください。 …まさか「シーケンスソフトの作り方を教えてください」なんて レベルの話じゃないですよね…?

betonamu2
質問者

補足

K-Sogacchiさん回答どうもありがとうございます。 Openステートメントで(Binaryモードで)ファイルを開き、 Putステートメントで書きたいデータを書くぐらいです。 例えばバイナリエディタで ADDRESS 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 4D 54 68 64 00 00 00 06 00 00 00 01 00 01 4D 54 00000000 72 6B 00 00 00 0C 01 90 3C 40 04 80 3C 00 01 FF 00000000 2F 00 このようなデータのとき、 プログラムでは、 Private Sub Command1_Click() Dim intFileNo As Integer intFileNo = FreeFile Open FileDialog.FileName For Binary As #intFileNo Put #intFileNo, , "4D 54 68 64 00 00 00 06 00 00 00 01 00 01 4D 54 72 6B 00 00 00 0C 01 90 3C 40 04 80 3C 00 01 FF 2F 00" Close #intFileNo End Sub のようにして書きたいのですが、これではmidiにならなくて、、、 そこらへんを教えて下さいm(_ _)m