I have tried the following failed attempts at creating a drum machine with accurate timing (something that I have only ever experienced while using MIDI objects and when looping samples using wave~) and that is polyphonic.
I started by using a the phasor~ object and scaling it so that it would go from 0 to 16 (representing 16th notes) in a specified amount of time. I then subtracted a number from it's current value at the time so that it would ramp between 0 1. This is so I could place the samples in an arrangement (the wave~ that has a signal with 8. subtracted from it driving it plays in the middle of the bar, for example). This only allows me to play samples of all the same length and only play each sample one at a time, although the timing is perfect.
The only other way I can think of doing this is to make poly~s filled with multiple instances of a groove~ (or play~, which I would assume is just as bad) that are sent 0 messages to cause groove~ to begin from the beginning of the sample. But one will see that if you do this and drive it using a metro object or a phasor~ object that uses a comparison operator and then edge~ to send out bangs, both will have hiccups in a short period of time, and very often after that. Yes I have both "scheduler in overdrive" and "In Audio Interrupt" checked.
Is it possible to get accurate timing using bangs that cause objects to play samples? I am just very concerned because I think for almost all music that is played by humans, timing is one of the most important factors in making something musical, not to mention playable. Only in the very abstract scores that one must themselves interpret is timing of little importance. You would think that a mechanical machine could repetitively accomplish a task with an unfaltering period (Hundreds of companies make drum machines that are polyphonic and never skip a beat and the processors contained inside are hundreds of times slower than those in virtually all personal computers!).
This is a very long winded post, but in a way it is also a complaint. I think achieving accurate timing should be one of the easiest things to do with MaxMSP, but instead in the 2 years that I have used it I have only by using very complicated means attained it.
Any help would be appreciated.