Buddy Comms - Software Manual Buddy Comms - Software Manual
Introduction
Buddy Comms is a light-weight, voice communication tool built by a gamer, for gamers. It was designed to get you and your buddies connected and communicating quickly and without the pain and frustration of traditional tools.

Buddy Comms runs on Windows, Mac and Linux. The application looks and runs the same on all three platforms and is cross-platform. That means Windows, Mac and Linux users can connect to the same hosts and communicate fully with each other.

Buddy Comms features high quality VoIP (Voice over Internet Protocol), powerful hosting, flexible security, file transfers, screen sharing, wave streaming, private channels, text chat and more. This software manual will explain the application in detail.
Requirements
Buddy Comms has been carefully engineered to run well on a wide range of hardware. From the mighty Intel and AMD multi-core beasts, down to battery powered, Linux ARM devices (e.g. $35 Raspberry Pi), the application delivers a great experience.
Installation
Buddy Comms is built on Java technology. The Windows and OS X installers come bundled with the required Java files but the Linux installer does not due to the variety of distributions and possible incompatibilities. Oracle JDK 7 or greater is recommended for Linux.

Windows icon Windows
Download the Windows installer. The installer works on Windows XP and newer. Follow the instructions on the download page.

Mac OS X icon Mac OS X
Download the Mac OS X installer. The installer works on OS 10.7 (Lion) and newer. For OS 10.5 (Leopard) and OS 10.6 (Snow Leopard), use the Java Archive (JAR) option. Follow the instructions on the download page.

Linux icon Linux
Download the Linux installer. Follow the instructions on the download page.

Java JAR icon Java Archive (JAR)
The Java Archive (JAR) requires Java 7 or greater and works on Windows (XP and newer), OS X (10.5 and newer) and Linux. Download the Java Archive (JAR) and follow the instructions on the download page.
Uninstall
On Windows, uninstall the application by opening the Control Panel, selecting Programs and Features, selecting Buddy Comms and clicking Uninstall.

On OS X, uninstall the application by opening the Applications folder and dragging Buddy Comms into the trash can.

On Linux, run the uninstall script found in the BuddyComms folder in your user directory (~/BuddyComms/uninstall).

For all platforms, a folder entitled BuddyComms is found in your user directory. It contains log files, native libraries, temporary file transfer data and wave streaming files. You can safely delete this folder after uninstalling the application.
Licensing
License reminder window
license reminder after evaluating for 30 days
The application comes with a full feature, time unlimited evaluation. You can evaluate Buddy Comms as long as you need; however, the software is not free. Please purchase a license (it is very affordable) as soon as you decide that Buddy Comms fits your needs.

This unlimited evaluation is an on-your-honor type of arrangement. The author has faith that the application is of such high quality that you will want to purchase a license.

After 30 days, you will be reminded to purchase a license whenever you launch Buddy Comms. If you need more time, you can continue to evaluate the software for free and without restrictions by clicking the Continue Evaluation button.

When you purchase a license, you receive a 10 digit key. To activate your license, click the Activate License button in the license reminder window (shown above) or go to the About tab and click the activate it link. Buddy Comms uses an activation service to authenticate your license key. You need to have an Internet connection and be able to send and receive UDP packets. A license can be activated on only one computer. Safeguard your license and do not share your key with others.
Connect
Buddy Comms is a client/server application. That means that you or one of your buddies hosts a server that the entire group connects to. The server coordinates the transfer of data between all of the connected clients. The Connect tab allows you to connect to a host and interact with other, connected users.
Connect tab
connect to a host and interact with users
Audio Settings
The main focus of Buddy Comms is VoIP (Voice over Internet Protocol). The playback (output) and recording (input) devices are chosen based on your platform's default settings. For help selecting your default device, follow the instructions on the download page specific to your platform (Windows, Mac OS X or Linux).

The Audio Settings tab provides a variety of options to configure your audio settings. It is recommended that you use the Audio Wizard to determine your initial settings and then manually fine tune the settings later if necessary.
Audio settings tab
quickly configure your audio settings
Some sound cards come equipped with noise reduction and acoustic echo cancellation. You may be able to further improve your audio quality by enabling those features from within your operating system instead of within Buddy Comms.
Public Chat
Public chat tab
text chat with other users
The Chat tab makes it easy to communicate with all other connected users by text. This is useful when a user wants to send text based information to the entire group. Web links can be entered and are openable if they start with the protocol (e.g. http://). Valid links are displayed as white, underlined text. When clicked, they open in the system's default browser.

Advanced styling (images, colors, etc.) can be achieved with HTML; however, the HTML support is very limited.

The chat history is remembered by the server until the server is stopped. Whenever a client connects to the server, it receives the full chat log. Be careful not to enter anything that you do not want to remain and be viewable by others. Use the Private Chat feature in the Connect tab to communicate privately with other users.
Wave
Wave streaming is a fun feature that allows you to play pre-recorded audio clips. When streaming (playing), the wave audio takes the place of your microphone audio and is sent to the other users. This feature works with most .wav and .mp3 files.
Wave streaming tab
stream pre-recorded audio clips


Audio clips are organized into categories. Each category can have up to ten entries. There is no limit to the number of categories you can create or the size of the audio clips. Voice commands are a voice recognition technology that make it easier to play a clip when you are in game and do not know or remember the shortcut key. They work by comparing what you say against your recorded voice commands. The best match determines which wave is streamed.

Shortcut Keys - These keyboard shortcuts are found on the number pad of a standard keyboard.
For convenience, use an application like Audacity to edit your audio clips.
Host
Host tab
quickly host your own, secure server
Buddy Comms is a client/server application. The server coordinates the transfer of data between all of the connected clients. All communications go through a single UDP socket. The Host tab allows you to quickly host your own server.

With traditional tools, setting up a host is typically the most difficult part of the process. It usually involves obtaining and running a standalone server application, assigning a static IP address to the host machine, port forwarding from the router to the server, configuring the server's firewall, discovering the server's public IP address and providing the IP address and port number to the other users.

Buddy Comms has been carefully engineered to remove as much of that pain as possible. The application is both the client and server so there is no additional software to download and install. The local and public IP addresses are automatically obtained and displayed in the log when the server starts. The connection parameters can be broadcast on the local network to make it easy for local clients to scan for and connect to the host. And best of all, most users will be able to rapidly start a globally accessible server, with no router or firewall configuration necessary, through an integrated technology called Buddy Connect.

Buddy Connect is a proprietary, cloud based connection coordination service that helps clients find and connect to hosts without requiring any special router configuration. It works for both local area and wide area (Internet) network connections.

Be aware that Buddy Connect will fail to establish dynamic connections if either the client or server are behind network address translators (NAT) that assign port mappings unpredictably (a.k.a. Symmetric NAT).
About
The About tab provides a list of application features and links to the quick-start guide, this online software manual and the web site. It also displays links to purchase and activate a license. At the bottom of the window, you will find the build (version) number of the application. To connect to a host, the build number must match the build number of the host. When you launch Buddy Comms, the application will automatically inform you if a new build is available.

By default, Buddy Comms logs anonymous usage statistics to help the author improve the application. While harmless, you can disable this feature by deselecting the check box entitled Improve Buddy Comms by contributing anonymous usage statistics.
Private Channel
The private channel feature makes it easy to split into voice isolated teams. This is great for games that are strategic and team based. When in your private channel, only users who you have added to your private channel will hear your voice.

Private channel options
enable or disable the private channel feature
To enable this feature, open the Audio Settings tab and select the Enabled check box in the Private Channel section. To the right of the check box is a field that shows you the shortcut key that activates and deactivates the private channel. You can select a different shortcut key by clicking the green box and pressing a new key.
Private channel active
the private channel is active

When you press the shortcut key, you will hear a voice informing you that you are either in the public or private channel. You will see text to the right of the Connected Users label that informs you when you are in the private channel. When in the private channel, users who have not been added to your private channel will have lines drawn through their names.
Private channel button
the private channel button

To add users to or remove users from your private channel, open the Connect tab, select a user and click the Private Channel button. Users in your private channel will have the private channel icon Private channel icon to the right of their names.
Private Chat
Private chat makes it possible to communicate privately with another user.
Private chat button
the private chat button


To use this feature, open the Connect tab, select a user and press the Private Chat button. The Private Chat window will appear.
Private chat window
chat privately with another user
Web links can be entered and are openable if they start with the protocol (e.g. http://). Valid links are displayed as white, underlined text. When clicked, they open in the system's default browser.

Advanced styling (images, colors, etc.) can be achieved with HTML; however, HTML support is limited.
Screen Sharing
The Screen Sharing feature makes it easy to share your screen with another user. The intent is to make it easy for members of the group to help each other solve problems and get back to gaming as quickly as possible.
Screen share button
the share screen button


To share your screen, open the Connect tab, select the user that you want to share your screen with and press the Share Screen button. The user will be asked to accept the screen share. Once accepted, a window will appear that shows the user what you see on your screen.

Screen share window
sharing a screen with another user
This feature supports multiple displays. To select a screen, simply move the window (seen to the right) to the screen that you want to share. Only that screen will be shown to the user.

You can grant mouse and keyboard control to the user by selecting the Share mouse and keyboard control check box. The Press escape to take back control option allows you to quickly reclaim mouse and keyboard control. The viewing user can zoom in and out by holding control and rolling the mouse wheel. The user can also pan by holding control and clicking and dragging with the left mouse button.

Miscellaneous
Buddy Comms' support for screen sharing is powerful but limited. It is not intended to replace more comprehensive solutions. The application does not support advanced features like printer and system audio sharing. On some operating systems, system protected windows will not be visible and cannot be interacted with remotely.

Buddy Comms automatically adjusts image quality and frame rate based on network throughput. The frame rate is intentionally low to reduce CPU and bandwidth requirements.
File Transfer
File transfer button
the file transfer button
Buddy Comms makes it easy to send files to other users. To send a file, open the Connect tab, select a user and press the File Transfer button. A file window will appear. Browse for the file and click the Open button. You can also drag and drop a file from the file system onto the Connected Users area. The file transfer will begin and an audio effect will play once the transfer has completed.
File transfer window
transferring a file to a user

Miscellaneous
Buddy Comms automatically compresses and decompresses file data. Highly compressible files transfer quicker and use less bandwidth than incompressible files. The transfer rate is automatically adjusted based on available network bandwidth. Transfer speeds may be reduced when the communication channel is encrypted due to increased CPU usage.

To transfer multiple files at the same time, consider zipping the files.
Dedicated Hosting
You can host dedicated servers and even charge users to connect to them without paying any additional licensing or royalties. Buddy Connect simplifies the process in environments where NAT port mappings are predictable (most home networks). All you have to do is give your server a name, allow Buddy Connect to coordinate connections and click the Start Hosting button. Your guests simply connect to your server using its name.

Dedicated hosts, that charge users to connect, will likely want to use a configuration that does not rely on Buddy Connect or predictable NAT port mappings. For those advanced users, the author suggests the following:
  1. Obtain a static, public IP address
  2. Buy a domain name and point it to your public IP address
  3. Configure your server with a static, local IP address
  4. Port forward UDP traffic on the selected port to the server's local IP address
  5. Configure your firewall to allow UDP traffic on the selected port
  6. Have your guests connect to your server using the domain name
You can launch multiple instance of Buddy Comms by selecting unique port numbers for each server instance. The application is designed to make it easy to launch a server from the command line. To launch multiple servers at the same time, consider using a script (e.g. a .bat or .sh file).

The following parameters are available: For parameters that require a value, separate the name-value pairs with an asterisk (*). Escape parameters that have spaces with quotes.

Example:
java -jar BuddyComms.jar name*myServerName port*44221 "password*change me" maxusers*10 "blacklist*173.252.120.6, 199.59.148.10" welcomemessagetype*html welcommessagewidth*600 welcomemessageheight*400 "welcomemessagefile*C:\welcome file.html" welcomemessageenabled buddyconnect broadcast encrypt disablewavestreaming autostarthosting

Supplied parameters override saved preferences but do not overwrite them. Modifications to fields with supplied parameters are ignored (e.g. blacklist, welcome message, etc.).
Buddy Connect
Buddy Connect is a proprietary, cloud based connection coordination service that helps clients find and connect to hosts without requiring any special router configuration. It works for both local area and wide area (Internet) network connections.

When you host a server and select the Allow connections coordinated by Buddy Connect option, your server registers its name, local IP address and public IP address with Buddy Connect. When a client attempts to connect, it tries to connect locally first, publicly second and dynamically third.

Buddy Connect helps coordinate dynamic connections by informing your server of the client's desire to connect and helping both discover their NAT port mappings. When the port mappings are known, the client and server can directly connect to each other even though their network's NAT would normally be an obstacle.

Buddy Connect cannot succeed in coordinating dynamic connections when either the server or client sit behind a symmetric NAT due to the unpredictable nature of the port mappings; however, Buddy Connect can still help clients connect if the server is reachable locally or publicly.

Buddy Connect does not intercept any of your communications; it is purely a connection coordination service. It is recommended that you provide a server password to keep out unwanted guests when using Buddy Connect.
Technical
Buddy Comms is an advanced Java application featuring VoIP, file transfer, screen sharing, private channels, text chat, wave streaming and integrated hosting. Network communication goes through a single UDP socket. The datagram packets are optionally 128 bit encrypted. Hosting and connecting are greatly simplified through broadcasting connection parameters on the local network and via Buddy Connect, a cloud based registration and connection coordination service.

The recording (input) and playback (output) devices are selected based on your platform's default settings. The audio is single channel, 16 bit and 16,000 samples per second. Speex is used to compress, decompress and clean up the signal.

Buddy Comms works on Windows, Mac OS X, Linux and Linux on ARM (e.g. Raspberry Pi).

Log files, native libraries, temporary file transfer data and wave streaming files are found in a folder entitled BuddyComms in your user directory.

Dependencies and attribution:
Troubleshooting
Installation
How can I verify that the installer is safe?
Look for the MD5 signature at the top of the download page for your operating system (Windows, Mac OS X or Linux). Use a tool (try OnlineMD5) to obtain the MD5 signature for the installer in your possession. Verify that the signatures match. If they do not then you probably downloaded the installer from an unauthorized 3rd party that has modified it. Delete the installer and download it again from the Buddy Comms web site.
Why does my browser or operating system warn me about downloading or installing Buddy Comms?
Buddy Comms is a new application that browsers might not yet recognize as safe. As the application grows in popularity, the warnings will disappear, but until then, the application may be flagged as potentially dangerous.

Your browser or operating system may also warn you that the publisher is unknown. This is due to the application lacking a digital signature. Digital signatures are expensive and as a low cost application, the author has decided to wait to make that investment until the user base grows large enough to justify it.

If you downloaded Buddy Comms from this web site, it is safe to install.
Why does my virus scanner warn me about JNativeHook?
JNativeHook is a library that makes it possible to detect keystrokes even when an application other than Buddy Comms has focus. Buddy Comms needs that ability to detect when you press the voice activation key, private channel key and wave streaming shortcut keys. Buddy Comms does not log key strokes or perform any other type of malicious activity.
I cannot get the application to install and run, what should I do?
Closely follow the installation instructions on the download page for your operating system (Windows, Mac OS X or Linux). If you still cannot get it to run, contact the author.
I use an operating system other than Windows, Mac and Linux. Can I run Buddy Comms?
No. The application has dependencies that only work on the supported operating systems.
Can I use OpenJDK to run Buddy Comms?
You can certainly try and it might work. The author experienced audio and performance issues under OpenJDK that caused the application to fail. Researching the problem pointed to audio system bugs in OpenJDK that (at the time of writing) cannot be worked around. The Oracle JRE/JDK is recommended.
More memory (RAM) is used than I would expect for an application like this. Why?
The application reserves 128MB of RAM but typically uses less than 20MB. Most of the memory consumption that you see in your task manager is due to reserved heap space and the Java Virtual Machine (which is outside the author's control). Java 9 will introduce modularity that will make it possible to reduce the amount of memory dedicated to the JVM. Don't be too alarmed; your computer probably has more than enough memory to run Buddy Comms and your games.
Licensing
Where do I go to purchase a license?
Go to the license page.
How do I activate my license?
You can activate your license key by clicking Activate License on the license reminder screen or by going to the About tab and clicking the activate it link. A window will appear that will prompt you to enter your license key. You have to be connected to the Internet and be able to send and receive UDP packets.
Buddy Comms says my license key is invalid, why?
If you purchased a license from this web site then the key you received is valid. Be sure to enter it exactly as you received it (case sensitive). Contact the author for help if you cannot get it to work.
Buddy Comms says I have activated my license too many times. What can I do?
To prevent piracy, Buddy Comms uses an activation service to verify your license. Once activated, your license is associated with the computer that you activated it on. If you believe your license key has not been activated too many times, contact the author and make your case.
I purchased a license but lost my key. Can I get it back?
Contact the author and he will help you retrieve it. You will have to provide the email address that you used when you made the purchase. As a security measure, you will also need to be able to access the email account.
Connect
I am unable to connect to a server. What can I do?
To connect to a server, the client and server must be able to reach each other on the network. Make sure you have correctly entered the server IP address or name and make sure the port number is correct (matches the server). Ask the server host to use Buddy Connect to help coordinate your connection if it is not already enabled. If none of that works, refer to the top portion of the Dedicated Hosting section for additional ideas.
Why does my connection sometimes drop?
Your connection likely fails because your network connection or the server network connection is unstable. Buddy Comms will disconnect if communication is lost for an extended period of time (about 10 seconds).
Audio Settings
I do not want to manually configure my audio settings. What can I do?
Click the open audio wizard link in the Audio Settings tab to have Buddy Comms help you configure your audio settings.
My playback (output) or recording (input) device does not seem to be working, why?
Make sure your headset or microphone and speakers are correctly plugged into your computer and powered on. The microphone port is usually red and the speaker port is usually green. Make sure the playback and recording devices are not muted and the volume is turned up. You may have an inline volume control that is turned down or muted.

Buddy Comms relies on your system's default playback and recording devices. Make sure the correct devices are selected. Follow the installation instructions for your operating system (Windows, Mac OS X or Linux).
Voice activation is not working properly. How do I set it up correctly?
Use the voice activation slider to set the correct activation level (usually around 2%). Make sure the Microphone activation key option is disabled. Refer to the Audio Settings section for additional details.
My microphone is too quiet. How can I make it louder?
Make sure the microphone is close enough to your mouth. You can also increase the Microphone Amplification level. If that does not give you enough amplification, turn up your microphone volume or enable mic boost in your system settings.
My microphone is too loud. How can I make it quieter?
Decrease the Microphone Amplification level.
My microphone produces too much noise (hiss, hum, static, etc.). How can I fix it?
Enable the Microphone Noise Reduction feature. This feature is built to adapt to your microphone's noise profile and greatly reduce it. You may also be able to enable noise reduction within the sound settings of your operating system.
I hear my voice (echo) when I speak. Can this be prevented?
Check the most obvious thing first by making sure the Listen to microphone option is not selected. Also check your sound settings at the operating system level to ensure that you are not listening to your microphone.

Next, determine which user is picking up your voice and transmitting it back to you. Look at the Connected Users section while you speak. The microphone icon next to your user name will turn green to indicate that you are transmitting voice data. Look for the other user whose icon turns green while you speak. That user is causing the echo. Ask the user to enable Acoustic Echo Cancellation. This feature detects and reduces echo. The user may also be able to enable acoustic noise cancellation within the sound settings of the operating system.
Acoustic Echo Cancellation is not working properly. How can I fix it?
Acoustic Echo Cancellation requires accurate timings to work properly. Click the open AEC calibration wizard link and follow the instructions carefully. If it still does not work correctly after calibration has finished, try the Manual Calibration option in the wizard. You may also be able to enable acoustic echo cancellation within the sound settings of your operating system.

If the echo persists, consider turning down your volume, moving your microphone further away from your speakers or using a high quality headset.
The voices of other users cut in and out and sound bad. What can I do?
What you are likely experiencing is packet delay caused by your network. The Playback Buffer helps reduce this phenomenon. Increase the buffer amount until the problem goes away.

If the problem persists, you may be experiencing packet loss due to an overwhelmed network. The solution to this problem is improving your network connection. If the problem lies on the server side then there is not much you can do about it other than ask the administrator to upgrade his network connection.

The least likely scenario is that your computer is overwhelmed and cannot process and playback the audio quickly enough. You can verify this condition by opening your task manager and seeing if your CPU is under heavy load. If this is the case, shut down the processes that are hogging your CPU.
The voice quality is really awful. Why?
Buddy Comms reduces network load by compressing voice data. When compression is high, voice quality is low. Make sure the Voice Quality setting is not adjusted too low. The default value is 3.7 KB/s.
I turned on Voice Isolation and now my voice sounds funny. What can I do to improve it?
Voice isolation allows you to filter out unwanted frequencies. Adjust the range or turn off voice isolation. Human voice typically ranges from 300 Hz to 3,000 Hz with some sounds (S, T, SH) peaking up to 8,000 Hz.
Public Chat
I wrote something that I regret in the Chat tab and now everybody sees it. Can I erase it?
The chat log persists until the server is stopped or restarted. Consider using private chat in the future.
How do I style messages and add picture?
The chat window supports limited HTML. Use HTML scripting to style your text and add images. Buddy Comms does not serve images so the source has to be to a valid URL somewhere on the network.
Wave
The audio file that I am trying to open is not supported. Why?
Buddy Comms supports most .wav and .mp3 files; however, there are some formats that the application does not understand and cannot open.
Why can I not get the voice command feature to work?
Take a look at the Wave section for details on how to get the most out of this feature.
Can I set custom shortcut keys?
Custom shortcut keys are not yet supported. Contact the author and let him know that you want this feature. If enough people want it, he will likely build it.
How can I edit my audio clips?
Use a tool like Audacity to edit your audio clips.
Host
I want to host a server but don't know where to start. Is it hard to figure out?
Hosting a server is not difficult. Take a look at the Host section.
I want to host a dedicated server. How can I do that?
Take a look at the Dedicated Hosting section.
How strong is the encryption?
The encryption is password based and 128 bits. The server is built to slow down brute force password guessing but it is still important to choose a robust password. The encryption is very strong when a good password is used.
My server is broadcasting on the local network but local clients can't find it when scanning. Why?
This can be caused by a variety of factors. Firewalls and routers might block the multicast packets. Being on the wrong subnet will also cause issues. Multiple network interfaces could also be the cause of the problem. Consider disabling network interfaces that you do not need.
Why is Buddy Connect failing on my server?
Buddy Connect cannot coordinate dynamic connections when the server is behind a symmetric NAT due to unpredictable port mappings. It also requires that your server name is unique; meaning, it is not already taken by a another server. See the Dedicated Hosting section for help.
Private Channel
How do I use the Private Channel feature?
The Private Channel features makes it possible to split into voice isolated teams. See the Private Channel section for details.
Private Chat
How do I chat privately with another user?
You can communicate privately by text with another user via the Private Chat feature. See the Private Chat section for details.
Screen Sharing
How do I share a screen with another user?
Buddy Comms makes it easy to share your screen with another user. See the Screen Sharing section for details.
How do I share my screen with a user on a different operating system?
You can share your screen with users on other operating systems the same way you would with users on your own operating system.
How can I improve the image quality or frame rate?
The application automatically adjusts the image quality and frame rate based on your network's available bandwidth. All communications go through the host so if the host has very limited bandwidth then the quality and frame rate will be affected.
File Transfer
What is the maximum file size?
That is determined by the maximum file size supported by your operating system and the operating system of the recipient.
How can I speed up the transfer rate?
The application automatically adjusts the transfer rate based on network load. Pausing concurrent network activities (e.g. Steam updates) will improve the transfer rate. The transfer rate may be reduced when the connection is encrypted.
Sometimes I transfer a file and less data than expected is transmitted but the recipient receives the file just fine, why?
Buddy Comms automatically compresses the data while transferring it. Highly compressible files shrink dramatically and move across the network faster.
Contact
Direct inquiries to Matt (the author) at .