I must confess that I am surprised by how "easy" it was to get some solid proof-of-concept voice chat working in BitWise. It's only been a few days that I've spent any time playing with it (probably 2 solid days or so), but with impressive results. Today, my old friend Matt in Houston, TX, spoke (literally) to me over BitWise. He came through loud and clear, without any hiccups (though unfortunately I couldn't talk back at him due to a firewall). The bitrate was hardcoded at about 4k/sec, though obviously in a final version the bitrate will be flexible, as will several quality settings.
Some details of what has actually been done: Using the PortAudio engine, audio is captured using DirectX (on Windows, an MME module is also available, I'm not sure which is going to be better), and then compressed using the Speex algorithm. After being bundled and packetized, the encoded data is sent over UDP. The receiving computer receives the UDP data, decodes the data (using Speex) and then plays the audio using PortAudio (again with DirectX, MME is also available). There's no GUI yet, and no way to specify your own parameters, but it worked great! It looks like voice is definitely possible, and without months and months of work (much to my delight). I've compiled both Speex and PortAudio on both OS X and Linux, so getting Linux and OS X support should be straightforward (as straightforward as cross-platform programming can be, anyway).
Some people have expressed concern over file size. I am delighted to report that the file size increase so far is only 36k, and that is using the debug version of Speex (though it may be optimizing out the debug code already). In any event, even with a GUI and options, the voice option is certainly not going to be the size bloat that some people were concerned about.
All in all, a most excellent day! It's exciting to have some major new BitWise things in the works, and it's also just such a thrill when you overcome programming obstacles and something new works. Sure, there's a lot to be done yet, like encrypting the voice data, getting it working on Linux and OS X, optimizing for modems, general testing, etc, but the first steps are the most important (and in this case also very encouraging!).
If you'd like to help discuss the GUI, I welcome you to join us in the forums in this thread (please keep GUI discussion in the forums, rather than here in the blog).
More soon!
Congrats! This is going to make BW /the/ next generation IM solution. Looking forward to the IPO? ;)