neilbaldwin, please don't bow out. At this point, I am going to give you the basic engine and let you continue developing patterns. My idea is that you write them for the core engine, but not using my whole framework, so that you aren't limited to what it can do. I figure that using the core engine will allow me to port your work over to the framework easily enough. This way you can be much more flexible, yet still collaborate. Please do pass along your code, so I can get a better idea of your style and cater what I send to that. Anyway, I'm going to put together that and at least let you give it a try, no obligation. I'm hoping this is just the beginning pattern-wise. Now that the framework is really featured, we can add many more patterns and transitions, and shapes.
arfink, yeah, I changed it to MMC1, but, it will work fine with UNROM like before. I merely did this because many emulators and perhaps the PowerPak won't enable SRAM and won't battery-back it if it's UNROM. My devcart is only UNROM, and it works fine there. I specifically ensured it would work with UNROM because someone mentioned making it into a physical cart, and I wanted to be sure that wouldn't be hampered. If you lack battery-backed RAM, then it will of course start with the default pattern setup. You can hold any button and press reset to configure it. Pressing reset does NOT reset the pattern setup, so you can always adjust the setup with reset at any time.
Regarding the tempo tap feature. I've gotten it to sync really well with music. I've found that the best way to use it is to tap out the first 8 or so beats of music (more don't help), then say ten or so seconds later, tap a couple of beats (but not more than 4). Then ten or so seconds later, a couple more. After about a minute of this, it stays synced quite well without any help. The idea is to just tap a couple of fine-tune beats every once in a while, when you have a free moment. The way the algorithm works, it remembers the first beat of the 8-beat initial taps, and remembers how many beats there have been since then, so that it can divide the total time by the number of beats (which will be over a hundred after a minute), giving a very accurate internal BPM. If it's ever not getting the beat, or the tempo changed, you can always just start over and tap out 8 or so beats again to start with a fresh internal BPM. I'm pleased with how robust this algorithm has worked out in testing.
Also, it might not be evident, but the second configuration screen allows the list of patterns to be contracted in case you don't want some patterns to ever show, or expanded in case you want a pattern more than once in the sequence, or want it to be more likely to be selected by the random pattern function (A + Select).
Last edited by blargg (Jul 20, 2010 4:16 am)