• Post Reply Bookmark Topic Watch Topic
  • New Topic

Javasound + latency  RSS feed

Christopher Arthur
Ranch Hand
Posts: 149
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

I'm experimenting with a little applet that makes the keyboard function as a musical keyboard. I'm wondering what is the most effective way to do this, so to keep the latency to a minimum (i.e., the time between pushing a key and hearing the sound).

Presently, I have a waveform stored in an int[] array, and when I want to hear it, I just cycle through it. When I want to change the pitch, I cycle through at some fixed number of steps. The waveform is pre-rendered to a very high resolution so that this skipping through it doesn't produce noticable distortion.

My dataline is opened with a buffer of 2/10ths of a second worth of bytes, and there is a loop that writes to the buffer a total of 1/10th-sec of bytes with each iteration, copying into the buffer my waveform in 1/10th sec blocks.

If you have worked with sound, probably you can guess that this technique causes a bit of latency. If I try to make the buffers any smaller, though, the sounds get chopped up.

Somehow there needs to be a balance between size of buffer, which gives more continuity in the sound, and immediacy of response, so that the user can feel like he's playing an instrument.
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!