Win a copy of Kotlin in Action this week in the Kotlin forum!
  • 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.
Don't get me started about those stupid light bulbs.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!