使用BinaryReader读取midi文件。(.net)
如何使用二进制读取器读取midi文件(格式规范如下) 我使用的是vb.net,但我愿意看到其他代码(主要是C#,我可以转换)。我正在做一个大项目,这有点像一个减速器 这是我目前的代码:使用BinaryReader读取midi文件。(.net),.net,midi,binaryreader,.net,Midi,Binaryreader,如何使用二进制读取器读取midi文件(格式规范如下) 我使用的是vb.net,但我愿意看到其他代码(主要是C#,我可以转换)。我正在做一个大项目,这有点像一个减速器 这是我目前的代码: Private Function convertCharArrayToString(ByVal chars() As Char) As String Dim tReturn As String = "" For Each v As Char In chars tReturn &am
Private Function convertCharArrayToString(ByVal chars() As Char) As String
Dim tReturn As String = ""
For Each v As Char In chars
tReturn &= v
Next
Return tReturn
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
midiStatus = "Reading..."
Dim midiStream As New StreamReader(midiFile)
Dim nBR As New BinaryReader(midiStream.BaseStream)
midiStatus = "Validating Midi File..."
Dim HeaderA As String = convertCharArrayToString(nBR.ReadChars(4))
If Not HeaderA = "MThd" Then Return
Dim HeaderB() As Byte = nBR.ReadBytes(4)
'Get Track Type
midiStatus = "Reading Header Data..."
Dim TrackType1 As Integer = nBR.ReadInt16()
Dim TrackType2 As Integer = nBR.ReadInt16()
MsgBox(TrackType1 & TrackType2)
End Sub
直到我开始读取实际的头数据时,一切都正常。我完全不知道如何继续下去。任何帮助或代码示例都很好 在类中编写解码逻辑,而不是直接在GUI中编写
为MIDI头定义一个结构,然后使用类似的方法进行设置。在类中编写解码逻辑,而不是直接在GUI中编写
为MIDI头定义一个结构,然后使用类似的方法进行设置。一次一个字节。问一个真实的问题。有更好的方法可以这样说。一次一个字节。问一个真实的问题。有更好的方法可以这样说。好吧,听起来不错。在我将此标记为已回答之前,为什么两个值(ff?)应该等于一?一种数据类型是这样的。它应该是(最后)0、1或2。(这些都来自于我包含的协议/格式信息。他们将其用作填充。它总是
00
,00 01
,或者00 02
。他们写得不是很清楚,我的第一个MIDI解码器就是用这种方法编写的(很抱歉,我花了这么长时间才找到它).好的,听起来不错。在我将其标记为已回答之前,为什么两个值(ff?)应该等于一?一种数据类型是这样的。它应该(最终)为0、1或2。(这些都来自于我包含的协议/格式信息。他们将其用作填充。它总是00
,00 01
,或者00 02
。他们写得不是很清楚,我的第一个MIDI解码器就是用这种方法编写的(很抱歉,我花了这么长时间才找到它)。