@@ -104,13 +104,13 @@ function Parse_Internal( midiData )
104104 local ret = {}
105105 local head = 1
106106
107- if not isSameTable ( byteArray ( head , 4 ), { 77 , 84 , 104 , 100 } ) then
107+ if not isSameTable ( byteArray ( midiData , head , 4 ), { 77 , 84 , 104 , 100 } ) then
108108 error ( " input data seems not to be valid MIDI data" )
109109 end
110110 head = head + 4 -- header chunk magic number
111111 head = head + 4 -- header chunk length
112112
113- ret .format = bytesToNumber ( head , 2 )
113+ ret .format = bytesToNumber ( midiData , head , 2 )
114114
115115 if not ( ret .format == 0 or ret .format == 1 ) then
116116 error ( " not supported such format of MIDI" )
@@ -119,7 +119,7 @@ function Parse_Internal( midiData )
119119
120120 head = head + 2 -- trackCount
121121
122- ret .timebase = bytesToNumber ( head , 2 )
122+ ret .timebase = bytesToNumber ( midiData , head , 2 )
123123 head = head + 2 -- timeBase
124124
125125 ---- --------------------
@@ -129,13 +129,13 @@ function Parse_Internal( midiData )
129129 ret .tracks = {}
130130
131131 while head < string.len ( midiData ) do
132- if not isSameTable ( byteArray ( head , 4 ), { 77 , 84 , 114 , 107 } ) then -- if chunk is not track chunk
132+ if not isSameTable ( byteArray ( midiData , head , 4 ), { 77 , 84 , 114 , 107 } ) then -- if chunk is not track chunk
133133 head = head + 4 -- unknown chunk magic number
134- head = head + 4 + bytesToNumber ( head , 4 ) -- chunk length + chunk data
134+ head = head + 4 + bytesToNumber ( midiData , head , 4 ) -- chunk length + chunk data
135135 else
136136 head = head + 4 -- track chunk magic number
137137
138- local chunkLength = bytesToNumber ( head , 4 )
138+ local chunkLength = bytesToNumber ( midiData , head , 4 )
139139 head = head + 4 -- chunk length
140140 local chunkStart = head
141141
@@ -145,10 +145,10 @@ function Parse_Internal( midiData )
145145
146146 local status = 0
147147 while head < chunkStart + chunkLength do
148- local deltaTime , deltaHead = vlq ( head ) -- timing
148+ local deltaTime , deltaHead = vlq ( midiData , head ) -- timing
149149 head = head + deltaHead
150150
151- local tempStatus = byteArray ( head , 1 )[ 1 ]
151+ local tempStatus = byteArray ( midiData , head , 1 )[ 1 ]
152152
153153 if math.floor ( tempStatus / 128 ) == 1 then -- event, running status
154154 head = head + 1
@@ -159,7 +159,7 @@ function Parse_Internal( midiData )
159159 local channel = status - type * 16
160160
161161 if type == 8 then -- note off
162- local data = byteArray ( head , 2 )
162+ local data = byteArray ( midiData , head , 2 )
163163 head = head + 2
164164
165165 table.insert ( track .messages , {
@@ -170,7 +170,7 @@ function Parse_Internal( midiData )
170170 velocity = data [ 2 ]
171171 } )
172172 elseif type == 9 then -- note on
173- local data = byteArray ( head , 2 )
173+ local data = byteArray ( midiData , head , 2 )
174174 head = head + 2
175175
176176 table.insert ( track .messages , {
@@ -191,9 +191,9 @@ function Parse_Internal( midiData )
191191 elseif type == 14 then -- pitch bend
192192 head = head + 2
193193 elseif status == 255 then -- meta event
194- local metaType = byteArray ( head , 1 )[ 1 ]
194+ local metaType = byteArray ( midiData , head , 1 )[ 1 ]
195195 head = head + 1
196- local metaLength , metaHead = vlq ( head )
196+ local metaLength , metaHead = vlq ( midiData , head )
197197
198198 if metaType == 3 then -- track name
199199 head = head + metaHead
@@ -241,7 +241,7 @@ function Parse_Internal( midiData )
241241 elseif metaType == 81 then -- tempo
242242 head = head + 1
243243
244- local micros = bytesToNumber ( head , 3 )
244+ local micros = bytesToNumber ( midiData , head , 3 )
245245 head = head + 3
246246
247247 table.insert ( track .messages , {
@@ -253,7 +253,7 @@ function Parse_Internal( midiData )
253253 elseif metaType == 88 then -- time signature
254254 head = head + 1
255255
256- local sig = byteArray ( head , 4 )
256+ local sig = byteArray ( midiData , head , 4 )
257257 head = head + 4
258258
259259 table.insert ( track .messages , {
@@ -265,7 +265,7 @@ function Parse_Internal( midiData )
265265 elseif metaType == 89 then -- key signature
266266 head = head + 1
267267
268- local sig = byteArray ( head , 2 )
268+ local sig = byteArray ( midiData , head , 2 )
269269 head = head + 2
270270
271271 table.insert ( track .messages , {
@@ -294,23 +294,23 @@ function Parse_Internal( midiData )
294294 return ret
295295end
296296
297- function byteArray ( _start , _length )
297+ function byteArray ( midiData , _start , _length )
298298 local retArray = {}
299299 for i = 1 , _length do
300300 retArray [ i ] = string.byte ( midiData , i + _start - 1 )
301301 end
302302 return retArray
303303end
304304
305- function bytesToNumber ( _start , _length )
305+ function bytesToNumber ( midiData , _start , _length )
306306 local retNumber = 0
307307 for i = 1 , _length do
308308 retNumber = retNumber + string.byte ( midiData , i + _start - 1 ) * math.pow ( 256 , _length - i )
309309 end
310310 return retNumber
311311end
312312
313- function vlq ( _start ) -- Variable-length quantity
313+ function vlq ( midiData , _start ) -- Variable-length quantity
314314 local retNumber = 0
315315 local head = 0
316316 local byte = 0
0 commit comments