Closed newlandsvalley closed 8 years ago
I've re-added support but it's very, very inefficient and slow. In order to recognize a Running Status, you have to detect a data byte - i.e. it must be in the range 0x00-0x7F. At the moment , I use a parser named brange which basically builds the entire range as a list and uses the choice parser to scan the range. I attempted to use a regex parser but this gave a 'range out of order in character class' error. Leaving this open whilst I investigate.
Improved the performance by re-implementing in terms of Combine.Char.satisfy().
These are tricky because they depend on state. They can only be used (in a possible sequence) immediately after a channel voice or channel mode message and they inherit the status byte of that message. They only provide data (no status). I had to remove them because my naive parser accepted any input for this data and would have swallowed the TrackEnd messages.