The pattern and note reading functionality has been implemented as described in the previously laid out objectives. The pattern loading is tied to each track. Each track contains a pattern structure which is initialized when a new pattern is loaded. When the pattern is loaded, it is processed on each interrupt call. The pattern handling looks for commands or notes. The simple pattern commands involving sequencing and looping have been implemented. The more complex pattern commands handling note manipulation still need work. The note reading is primitive until the majority of the macro commands are implemented.
While the initial objectives were actually quite simple to achieve, they revealed other obstacles and problems that need to be handled. I plan to solve some of these problems over the next few days and my goal is to have a functional player in the next few days. The timing system still needs some work. I’m still trying to find the best method to handle the track tempo and wait commands which will also satisfy the requirements of some of the macro commands. The other major difficulty arises in the handling of some of the more complicated note effects. Once I can clear up some of the issues regarding the note processing and some of the more important macros, I will be able to have a simple player with limited capabilities. With the midterm evaluation looming, I expect to have this ready shortly.