Blahtune player, version c Version C is an attempt to rectify the "raster bloom" problem. Its strategy is to process instructions ahead of time: - Decrement duration counter - If not yet zero then: o Process next instruction (with exceptions, see below) - If it is note/duration data, then skip. - If zero then o Process remaining instructions o Process new note/duration data, and reset duration counter So now, instead of processing all instructions at the same time, it spreads the processing across multiple calls to the player. Version C222 of the player can process more than one instruction at each pass -- see the README for details. There are a few wrinkles, though: o RESTART cannot be processed ahead of time, and will probably cause a raster bloom. To get around this, use some GOTOs to return to the beginning. o The STOP directive. Any instructions which immediately preceed the STOP will not get executed. You will have to put a HLD or something before a STOP if you want to e.g. GOFF before the STOP. o Direct modification of player variables. In order to do the looking ahead, the player uses some temporary variables which are copied into the actual variables on new notes. If something (a macro, an outside program, etc.) modifies certain player variables, it will not work, since the modifications will get overwritten. In particular, the active macro bits (MACBYTE1 etc.) get reset by the player.