Version of plucking where sinusoid generator is a coroutine.

An advantage of this approach is that all state related to the unit
generator is encapsulated within a single function definition.  The
coroutine is implemented via a task + comm channel, which seems to
lead to buffer underruns.
Version of plucking where sinusoid generator is a coroutine, using a audio buffer.

Very similar to plucking_task, but here the coroutine is passed a
vector to fill out.  Since 1024 samples are calculated at once instead
of passing individual samples on the communication channel, this is
more efficient and succeeds at running in real time.